Loading src/nbi/service/ietf_acl/Acls.py +15 −14 Original line number Diff line number Diff line Loading @@ -46,12 +46,11 @@ def compose_interface_direction_acl_rules( if acl_set is None: MSG = 'Interface({:s})/{:s}/AclSet({:s}) not found' raise NotFound(MSG.format( str(interface_name), acl_direction_title, str(acl_set_name) str(interface_name), acl_direction_title, str(acl_set_name) )) acl_config_rule = config_rule_from_ietf_acl( device_name, interface_name, acl_set device_name, interface_name, acl_direction, acl_set ) MSG = 'Adding {:s} ACL Config Rule: {:s}' LOGGER.info(MSG.format( Loading Loading @@ -114,12 +113,14 @@ class Acls(Resource): interface_data = interface_name__to__interface_data.get(interface_name) if interface_data is None: continue if 'ingress' in interface_data: ingress_acl_config_rules = compose_interface_direction_acl_rules( device_name, interface_name, interface_data, AclDirectionEnum.INGRESS, acl_name__to__acl_data ) device.device_config.config_rules.extend(ingress_acl_config_rules) if 'egress' in interface_data: egress_acl_config_rules = compose_interface_direction_acl_rules( device_name, interface_name, interface_data, AclDirectionEnum.EGRESS, acl_name__to__acl_data Loading src/nbi/service/ietf_acl/ietf_acl_parser.py +13 −3 Original line number Diff line number Diff line Loading @@ -17,10 +17,11 @@ from typing import List, Dict, Optional from pydantic import BaseModel, Field from werkzeug.exceptions import NotImplemented from common.proto.acl_pb2 import AclForwardActionEnum, AclRuleTypeEnum, AclEntry from common.proto.context_pb2 import ConfigActionEnum, ConfigRule from common.proto.context_pb2 import ConfigActionEnum, ConfigRule, AclDirectionEnum as Proto_AclDirectionEnum class AclDirectionEnum(Enum): BOTH = 'both' INGRESS = 'ingress' EGRESS = 'egress' Loading Loading @@ -132,14 +133,23 @@ TFS_IETF_FORWARDING_ACTION_MAPPING = { def config_rule_from_ietf_acl( device_name: str, endpoint_name: str, acl_set_data: Dict device_name : str, endpoint_name : str, acl_direction : AclDirectionEnum, acl_set_data : Dict ) -> ConfigRule: acl_config_rule = ConfigRule() acl_config_rule.action = ConfigActionEnum.CONFIGACTION_SET acl_endpoint_id = acl_config_rule.acl.endpoint_id acl_endpoint_id.device_id.device_uuid.uuid = device_name acl_endpoint_id.endpoint_uuid.uuid = endpoint_name if acl_direction == AclDirectionEnum.INGRESS: acl_config_rule.acl.direction = Proto_AclDirectionEnum.ACLDIRECTION_INGRESS elif acl_direction == AclDirectionEnum.EGRESS: acl_config_rule.acl.direction = Proto_AclDirectionEnum.ACLDIRECTION_EGRESS else: acl_config_rule.acl.direction = Proto_AclDirectionEnum.ACLDIRECTION_BOTH acl_name = acl_set_data['name'] acl_type = acl_set_data['type'] if acl_type.startswith('ietf-access-control-list:'): Loading Loading
src/nbi/service/ietf_acl/Acls.py +15 −14 Original line number Diff line number Diff line Loading @@ -46,12 +46,11 @@ def compose_interface_direction_acl_rules( if acl_set is None: MSG = 'Interface({:s})/{:s}/AclSet({:s}) not found' raise NotFound(MSG.format( str(interface_name), acl_direction_title, str(acl_set_name) str(interface_name), acl_direction_title, str(acl_set_name) )) acl_config_rule = config_rule_from_ietf_acl( device_name, interface_name, acl_set device_name, interface_name, acl_direction, acl_set ) MSG = 'Adding {:s} ACL Config Rule: {:s}' LOGGER.info(MSG.format( Loading Loading @@ -114,12 +113,14 @@ class Acls(Resource): interface_data = interface_name__to__interface_data.get(interface_name) if interface_data is None: continue if 'ingress' in interface_data: ingress_acl_config_rules = compose_interface_direction_acl_rules( device_name, interface_name, interface_data, AclDirectionEnum.INGRESS, acl_name__to__acl_data ) device.device_config.config_rules.extend(ingress_acl_config_rules) if 'egress' in interface_data: egress_acl_config_rules = compose_interface_direction_acl_rules( device_name, interface_name, interface_data, AclDirectionEnum.EGRESS, acl_name__to__acl_data Loading
src/nbi/service/ietf_acl/ietf_acl_parser.py +13 −3 Original line number Diff line number Diff line Loading @@ -17,10 +17,11 @@ from typing import List, Dict, Optional from pydantic import BaseModel, Field from werkzeug.exceptions import NotImplemented from common.proto.acl_pb2 import AclForwardActionEnum, AclRuleTypeEnum, AclEntry from common.proto.context_pb2 import ConfigActionEnum, ConfigRule from common.proto.context_pb2 import ConfigActionEnum, ConfigRule, AclDirectionEnum as Proto_AclDirectionEnum class AclDirectionEnum(Enum): BOTH = 'both' INGRESS = 'ingress' EGRESS = 'egress' Loading Loading @@ -132,14 +133,23 @@ TFS_IETF_FORWARDING_ACTION_MAPPING = { def config_rule_from_ietf_acl( device_name: str, endpoint_name: str, acl_set_data: Dict device_name : str, endpoint_name : str, acl_direction : AclDirectionEnum, acl_set_data : Dict ) -> ConfigRule: acl_config_rule = ConfigRule() acl_config_rule.action = ConfigActionEnum.CONFIGACTION_SET acl_endpoint_id = acl_config_rule.acl.endpoint_id acl_endpoint_id.device_id.device_uuid.uuid = device_name acl_endpoint_id.endpoint_uuid.uuid = endpoint_name if acl_direction == AclDirectionEnum.INGRESS: acl_config_rule.acl.direction = Proto_AclDirectionEnum.ACLDIRECTION_INGRESS elif acl_direction == AclDirectionEnum.EGRESS: acl_config_rule.acl.direction = Proto_AclDirectionEnum.ACLDIRECTION_EGRESS else: acl_config_rule.acl.direction = Proto_AclDirectionEnum.ACLDIRECTION_BOTH acl_name = acl_set_data['name'] acl_type = acl_set_data['type'] if acl_type.startswith('ietf-access-control-list:'): Loading