Newer
Older
// Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package policy;
import "context.proto";
import "policy-condition.proto";
import "policy-action.proto";
service PolicyService {
rpc PolicyAdd (PolicyRule) returns (PolicyRuleState) {}
rpc PolicyUpdate (PolicyRule) returns (PolicyRuleState) {}
rpc PolicyDelete (PolicyRule) returns (PolicyRuleState) {}
rpc GetPolicy (PolicyRuleId) returns (PolicyRule) {}
rpc GetPolicyByDeviceId (context.DeviceId) returns (PolicyRuleList) {}
rpc GetPolicyByServiceId (context.ServiceId) returns (PolicyRuleList) {}
enum RuleState {
POLICY_INACTIVE = 0; // Rule is currently inactive
POLICY_PLANNED = 1; // Rule installation planned
POLICY_ACTIVE = 2; // Rule is currently active
enum PolicyRuleType {
POLICYTYPE_DEVICE = 0; // Device-level
POLICYTYPE_NETWORK = 1; // Network-wide
message PolicyRuleState {
context.Uuid policyRuleId = 1;
RuleState policyRuleState = 2;
}
// IETF draft: Framework for Use of ECA (Event Condition Action) in Network Self Management
// Source: https://datatracker.ietf.org/doc/draft-bwd-netmod-eca-framework/
// Event
message PolicyRuleEvent {
context.Event event = 1;
}
// Policy rule partially complies with IETF’s:
// RFC 3060: https://datatracker.ietf.org/doc/html/rfc3060
// RFC 3460: https://datatracker.ietf.org/doc/html/rfc3460
// Enhanced with a policy rule event according to the ECA model
message PolicyRule {
// Basic policy rule attributes
PolicyRuleId policyRuleId = 1;
PolicyRuleType policyRuleType = 2;
PolicyRuleEvent event = 4; // A single event triggers the policy
repeated PolicyRuleCondition conditionList = 5; // One or more conditions must be met
BooleanOperator booleanOperator = 6; // Evaluation operator to be used
repeated PolicyRuleAction actionList = 7; // One or more actions should be applied
// Affected service and devices
context.ServiceId serviceId = 8;
repeated context.DeviceId deviceList = 9;
// A list of policy rules
message PolicyRuleList {
repeated PolicyRule policyRuleList = 1;
// A list of policy rule Ids
message PolicyRuleIdList {
repeated PolicyRuleId policyRuleIds = 1;
}