Loading src/service/service/service_handlers/l3nm_nce/ConfigRules.py +0 −1 Original line number Diff line number Diff line Loading @@ -18,7 +18,6 @@ from common.tools.object_factory.ConfigRule import ( json_config_rule_delete, json_config_rule_set, ) from service.service.service_handler_api.AnyTreeTools import TreeNode def setup_config_rules(service_uuid: str, json_settings: Dict) -> List[Dict]: Loading src/service/service/service_handlers/l3nm_nce/L3NMNCEServiceHandler.py +257 −238 Original line number Diff line number Diff line Loading @@ -29,7 +29,6 @@ from service.service.service_handler_api._ServiceHandler import _ServiceHandler from service.service.service_handler_api.SettingsHandler import SettingsHandler from service.service.service_handler_api.Tools import ( get_device_endpoint_uuids, get_endpoint_matching, ) from service.service.task_scheduler.TaskExecutor import TaskExecutor Loading Loading @@ -104,8 +103,9 @@ class L3NMNCEServiceHandler(_ServiceHandler): chk_type("endpoints", endpoints, list) if len(endpoints) == 0: return [] results = [] try: context_client = ContextClient() service_uuid = self.__service.service_id.service_uuid.uuid service_name = self.__service.name service_config = self.__service.service_config settings = self.__settings_handler.get("/settings") Loading Loading @@ -133,15 +133,16 @@ class L3NMNCEServiceHandler(_ServiceHandler): running_resource_value_dict = json.loads( running_ietf_slice_cr.custom.resource_value ) LOGGER.debug(f"P70: {running_candidate_diff}") if not running_candidate_diff: # Slice Creation operation_type = "create" slice_services = candidate_resource_value_dict["network-slice-services"][ "slice-service" ] slice_services = candidate_resource_value_dict[ "network-slice-services" ]["slice-service"] slice_service = slice_services[0] sdps = slice_service["sdps"]["sdp"] connection_groups = slice_service["connection-groups"]["connection-group"] connection_groups = slice_service["connection-groups"][ "connection-group" ] sdp_ids = [sdp["id"] for sdp in sdps] for sdp in sdps: node_id = sdp["node-id"] Loading @@ -149,9 +150,10 @@ class L3NMNCEServiceHandler(_ServiceHandler): device_controller = self.__task_executor.get_device_controller( device_obj ) LOGGER.debug(f"P71: {controller}") LOGGER.debug(f"P72: {device_controller}") if device_controller is None or controller.name != device_controller.name: if ( device_controller is None or controller.name != device_controller.name ): continue src_sdp_idx = sdp_ids.pop(sdp_ids.index(sdp["id"])) dst_sdp_idx = sdp_ids[0] Loading @@ -162,12 +164,14 @@ class L3NMNCEServiceHandler(_ServiceHandler): else: raise Exception("connection group id not found") elif "iterable_item_added" in running_candidate_diff: # new SDP added slice_services = candidate_resource_value_dict["network-slice-services"][ "slice-service" ] slice_services = candidate_resource_value_dict[ "network-slice-services" ]["slice-service"] slice_service = slice_services[0] sdps = slice_service["sdps"]["sdp"] connection_groups = slice_service["connection-groups"]["connection-group"] connection_groups = slice_service["connection-groups"][ "connection-group" ] operation_type = "create" added_items = { "sdp": {"sdp_idx": None, "value": {}}, Loading @@ -191,13 +195,17 @@ class L3NMNCEServiceHandler(_ServiceHandler): } elif connection_group_match: added_items["connection_group"] = { "connection_group_idx": int(connection_group_match.groups()[0]), "connection_group_idx": int( connection_group_match.groups()[0] ), "value": added_value, } elif match_criterion_match: added_items["match_criterion"] = { "sdp_idx": int(match_criterion_match.groups()[0]), "match_criterion_idx": int(match_criterion_match.groups()[1]), "match_criterion_idx": int( match_criterion_match.groups()[1] ), "value": added_value, } new_sdp = sdps[added_items["sdp"]["sdp_idx"]] Loading @@ -208,7 +216,9 @@ class L3NMNCEServiceHandler(_ServiceHandler): ]["id"] if ( connection_grp_id != added_items["match_criterion"]["value"]["target-connection-group-id"] != added_items["match_criterion"]["value"][ "target-connection-group-id" ] ): raise Exception( "connection group missmatch in destination sdp and added connection group" Loading @@ -221,7 +231,9 @@ class L3NMNCEServiceHandler(_ServiceHandler): ] slice_service = slice_services[0] sdps = slice_service["sdps"]["sdp"] connection_groups = slice_service["connection-groups"]["connection-group"] connection_groups = slice_service["connection-groups"][ "connection-group" ] operation_type = "delete" added_items = { "sdp": {"sdp_idx": None, "value": {}}, Loading @@ -245,13 +257,17 @@ class L3NMNCEServiceHandler(_ServiceHandler): } elif connection_group_match: added_items["connection_group"] = { "connection_group_idx": int(connection_group_match.groups()[0]), "connection_group_idx": int( connection_group_match.groups()[0] ), "value": added_value, } elif match_criterion_match: added_items["match_criterion"] = { "sdp_idx": int(match_criterion_match.groups()[0]), "match_criterion_idx": int(match_criterion_match.groups()[1]), "match_criterion_idx": int( match_criterion_match.groups()[1] ), "value": added_value, } new_sdp = sdps[added_items["sdp"]["sdp_idx"]] Loading @@ -275,13 +291,15 @@ class L3NMNCEServiceHandler(_ServiceHandler): if type_value["type"] == "ietf-network-slice-service:source-ip-prefix": src_ip = type_value["value"][0].split("/")[0] elif ( type_value["type"] == "ietf-network-slice-service:destination-ip-prefix" type_value["type"] == "ietf-network-slice-service:destination-ip-prefix" ): dst_ip = type_value["value"][0].split("/")[0] elif type_value["type"] == "ietf-network-slice-service:source-tcp-port": src_port = type_value["value"][0] elif ( type_value["type"] == "ietf-network-slice-service:destination-tcp-port" type_value["type"] == "ietf-network-slice-service:destination-tcp-port" ): dst_port = type_value["value"][0] qos_info = { Loading Loading @@ -328,9 +346,8 @@ class L3NMNCEServiceHandler(_ServiceHandler): "percentile-value" ] break results = [] resource_value_dict = { "uuid": service_uuid, "uuid": service_name, "operation_type": operation_type, "app_flow_id": f"{src_sdp_idx}_{dst_sdp_idx}_{service_name}", "app_flow_user_id": str(uuid4()), Loading @@ -346,11 +363,13 @@ class L3NMNCEServiceHandler(_ServiceHandler): "dst_ip": dst_ip, "dst_port": dst_port, } json_config_rules = setup_config_rules(service_uuid, resource_value_dict) json_config_rules = setup_config_rules(service_name, resource_value_dict) del controller.device_config.config_rules[:] for jcr in json_config_rules: controller.device_config.config_rules.append(ConfigRule(**jcr)) self.__task_executor.configure_device(controller) except Exception as e: # pylint: disable=broad-except results.append(e) return results @metered_subclass_method(METRICS_POOL) Loading Loading
src/service/service/service_handlers/l3nm_nce/ConfigRules.py +0 −1 Original line number Diff line number Diff line Loading @@ -18,7 +18,6 @@ from common.tools.object_factory.ConfigRule import ( json_config_rule_delete, json_config_rule_set, ) from service.service.service_handler_api.AnyTreeTools import TreeNode def setup_config_rules(service_uuid: str, json_settings: Dict) -> List[Dict]: Loading
src/service/service/service_handlers/l3nm_nce/L3NMNCEServiceHandler.py +257 −238 Original line number Diff line number Diff line Loading @@ -29,7 +29,6 @@ from service.service.service_handler_api._ServiceHandler import _ServiceHandler from service.service.service_handler_api.SettingsHandler import SettingsHandler from service.service.service_handler_api.Tools import ( get_device_endpoint_uuids, get_endpoint_matching, ) from service.service.task_scheduler.TaskExecutor import TaskExecutor Loading Loading @@ -104,8 +103,9 @@ class L3NMNCEServiceHandler(_ServiceHandler): chk_type("endpoints", endpoints, list) if len(endpoints) == 0: return [] results = [] try: context_client = ContextClient() service_uuid = self.__service.service_id.service_uuid.uuid service_name = self.__service.name service_config = self.__service.service_config settings = self.__settings_handler.get("/settings") Loading Loading @@ -133,15 +133,16 @@ class L3NMNCEServiceHandler(_ServiceHandler): running_resource_value_dict = json.loads( running_ietf_slice_cr.custom.resource_value ) LOGGER.debug(f"P70: {running_candidate_diff}") if not running_candidate_diff: # Slice Creation operation_type = "create" slice_services = candidate_resource_value_dict["network-slice-services"][ "slice-service" ] slice_services = candidate_resource_value_dict[ "network-slice-services" ]["slice-service"] slice_service = slice_services[0] sdps = slice_service["sdps"]["sdp"] connection_groups = slice_service["connection-groups"]["connection-group"] connection_groups = slice_service["connection-groups"][ "connection-group" ] sdp_ids = [sdp["id"] for sdp in sdps] for sdp in sdps: node_id = sdp["node-id"] Loading @@ -149,9 +150,10 @@ class L3NMNCEServiceHandler(_ServiceHandler): device_controller = self.__task_executor.get_device_controller( device_obj ) LOGGER.debug(f"P71: {controller}") LOGGER.debug(f"P72: {device_controller}") if device_controller is None or controller.name != device_controller.name: if ( device_controller is None or controller.name != device_controller.name ): continue src_sdp_idx = sdp_ids.pop(sdp_ids.index(sdp["id"])) dst_sdp_idx = sdp_ids[0] Loading @@ -162,12 +164,14 @@ class L3NMNCEServiceHandler(_ServiceHandler): else: raise Exception("connection group id not found") elif "iterable_item_added" in running_candidate_diff: # new SDP added slice_services = candidate_resource_value_dict["network-slice-services"][ "slice-service" ] slice_services = candidate_resource_value_dict[ "network-slice-services" ]["slice-service"] slice_service = slice_services[0] sdps = slice_service["sdps"]["sdp"] connection_groups = slice_service["connection-groups"]["connection-group"] connection_groups = slice_service["connection-groups"][ "connection-group" ] operation_type = "create" added_items = { "sdp": {"sdp_idx": None, "value": {}}, Loading @@ -191,13 +195,17 @@ class L3NMNCEServiceHandler(_ServiceHandler): } elif connection_group_match: added_items["connection_group"] = { "connection_group_idx": int(connection_group_match.groups()[0]), "connection_group_idx": int( connection_group_match.groups()[0] ), "value": added_value, } elif match_criterion_match: added_items["match_criterion"] = { "sdp_idx": int(match_criterion_match.groups()[0]), "match_criterion_idx": int(match_criterion_match.groups()[1]), "match_criterion_idx": int( match_criterion_match.groups()[1] ), "value": added_value, } new_sdp = sdps[added_items["sdp"]["sdp_idx"]] Loading @@ -208,7 +216,9 @@ class L3NMNCEServiceHandler(_ServiceHandler): ]["id"] if ( connection_grp_id != added_items["match_criterion"]["value"]["target-connection-group-id"] != added_items["match_criterion"]["value"][ "target-connection-group-id" ] ): raise Exception( "connection group missmatch in destination sdp and added connection group" Loading @@ -221,7 +231,9 @@ class L3NMNCEServiceHandler(_ServiceHandler): ] slice_service = slice_services[0] sdps = slice_service["sdps"]["sdp"] connection_groups = slice_service["connection-groups"]["connection-group"] connection_groups = slice_service["connection-groups"][ "connection-group" ] operation_type = "delete" added_items = { "sdp": {"sdp_idx": None, "value": {}}, Loading @@ -245,13 +257,17 @@ class L3NMNCEServiceHandler(_ServiceHandler): } elif connection_group_match: added_items["connection_group"] = { "connection_group_idx": int(connection_group_match.groups()[0]), "connection_group_idx": int( connection_group_match.groups()[0] ), "value": added_value, } elif match_criterion_match: added_items["match_criterion"] = { "sdp_idx": int(match_criterion_match.groups()[0]), "match_criterion_idx": int(match_criterion_match.groups()[1]), "match_criterion_idx": int( match_criterion_match.groups()[1] ), "value": added_value, } new_sdp = sdps[added_items["sdp"]["sdp_idx"]] Loading @@ -275,13 +291,15 @@ class L3NMNCEServiceHandler(_ServiceHandler): if type_value["type"] == "ietf-network-slice-service:source-ip-prefix": src_ip = type_value["value"][0].split("/")[0] elif ( type_value["type"] == "ietf-network-slice-service:destination-ip-prefix" type_value["type"] == "ietf-network-slice-service:destination-ip-prefix" ): dst_ip = type_value["value"][0].split("/")[0] elif type_value["type"] == "ietf-network-slice-service:source-tcp-port": src_port = type_value["value"][0] elif ( type_value["type"] == "ietf-network-slice-service:destination-tcp-port" type_value["type"] == "ietf-network-slice-service:destination-tcp-port" ): dst_port = type_value["value"][0] qos_info = { Loading Loading @@ -328,9 +346,8 @@ class L3NMNCEServiceHandler(_ServiceHandler): "percentile-value" ] break results = [] resource_value_dict = { "uuid": service_uuid, "uuid": service_name, "operation_type": operation_type, "app_flow_id": f"{src_sdp_idx}_{dst_sdp_idx}_{service_name}", "app_flow_user_id": str(uuid4()), Loading @@ -346,11 +363,13 @@ class L3NMNCEServiceHandler(_ServiceHandler): "dst_ip": dst_ip, "dst_port": dst_port, } json_config_rules = setup_config_rules(service_uuid, resource_value_dict) json_config_rules = setup_config_rules(service_name, resource_value_dict) del controller.device_config.config_rules[:] for jcr in json_config_rules: controller.device_config.config_rules.append(ConfigRule(**jcr)) self.__task_executor.configure_device(controller) except Exception as e: # pylint: disable=broad-except results.append(e) return results @metered_subclass_method(METRICS_POOL) Loading