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.
import logging
from typing import Dict, List, Optional
from common.proto.policy_condition_pb2 import BooleanOperator
def json_policy_rule_id(policy_rule_uuid : str) -> Dict:
return {'uuid': {'uuid': policy_rule_uuid}}
def json_policy_rule(
policy_rule_uuid : str, policy_priority : int = 1,
boolean_operator : BooleanOperator = BooleanOperator.POLICYRULE_CONDITION_BOOLEAN_AND,
condition_list : List[Dict] = [], action_list : List[Dict] = [],
service_id : Optional[Dict] = None, device_id_list : List[Dict] = []
) -> Dict:
'policyRuleId': json_policy_rule_id(policy_rule_uuid),
'priority': policy_priority,
'conditionList': condition_list,
'booleanOperator': boolean_operator,
'actionList': action_list,
result = {}
if service_id is not None:
policy_rule_type = 'service'
result[policy_rule_type] = {'policyRuleBasic': basic}
result[policy_rule_type]['serviceId'] = service_id
policy_rule_type = 'device'
result[policy_rule_type] = {'policyRuleBasic': basic}
result[policy_rule_type]['deviceList'] = device_id_list