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