From b06cbae91baff402638f7fa4805c8abd0234a3c1 Mon Sep 17 00:00:00 2001 From: hajipour <shajipour@cttc.es> Date: Wed, 1 Jan 2025 18:24:49 +0100 Subject: [PATCH] debug: - service id extraction from l3vpn data model in l3vpn driver fixed - service id extraction from ietf slice data model in l3vpn service handler fixed --- .../service/drivers/ietf_l3vpn/driver.py | 17 +++++++------ .../L3NM_IETFL3VPN_ServiceHandler.py | 24 ++++++++++++------- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/src/device/service/drivers/ietf_l3vpn/driver.py b/src/device/service/drivers/ietf_l3vpn/driver.py index 45542527a..cdab75625 100644 --- a/src/device/service/drivers/ietf_l3vpn/driver.py +++ b/src/device/service/drivers/ietf_l3vpn/driver.py @@ -235,7 +235,6 @@ class IetfL3VpnDriver(_Driver): try: resource_value = json.loads(resource_value) - # if service_exists(self.__tfs_nbi_root, self.__auth, service_uuid): # exc = NotImplementedError( # "IETF L3VPN Service Update is still not supported" @@ -243,16 +242,20 @@ class IetfL3VpnDriver(_Driver): # results.append((resource[0], exc)) # continue if operation_type == "create": - service_id = resource_value["network-slice-services"]["slice-service"][0]["id"] + service_id = resource_value["ietf-l3vpn-svc:l3vpn-svc"][ + "vpn-services" + ]["vpn-service"][0]["vpn-id"] l3vpn_datamodel = create_l3vpn_datamodel( - service_id, resource_value, operation_type - ) + service_id, resource_value, operation_type + ) self.tac.create_connectivity_service(l3vpn_datamodel) elif operation_type == "update": - service_id = resource_value["network-slice-services"]["slice-service"][0]["id"] + service_id = resource_value["ietf-l3vpn-svc:l3vpn-svc"][ + "vpn-services" + ]["vpn-service"][0]["vpn-id"] l3vpn_datamodel = create_l3vpn_datamodel( - service_id, resource_value, operation_type - ) + service_id, resource_value, operation_type + ) self.tac.update_connectivity_service(l3vpn_datamodel) else: raise Exception("operation type not supported") diff --git a/src/service/service/service_handlers/l3nm_ietfl3vpn/L3NM_IETFL3VPN_ServiceHandler.py b/src/service/service/service_handlers/l3nm_ietfl3vpn/L3NM_IETFL3VPN_ServiceHandler.py index a1bbe7557..2d9f369fa 100644 --- a/src/service/service/service_handlers/l3nm_ietfl3vpn/L3NM_IETFL3VPN_ServiceHandler.py +++ b/src/service/service/service_handlers/l3nm_ietfl3vpn/L3NM_IETFL3VPN_ServiceHandler.py @@ -168,7 +168,6 @@ class L3NM_IETFL3VPN_ServiceHandler(_ServiceHandler): if len(endpoints) < 2: return [] results = [] - service_uuid = self.__service.service_id.service_uuid.uuid service_config = self.__service.service_config try: ( @@ -178,8 +177,6 @@ class L3NM_IETFL3VPN_ServiceHandler(_ServiceHandler): dst_endpoint_uuid, controller, ) = self.__find_IP_transport_edge_endpoints(endpoints) - service_uuid = self.__service.service_id.service_uuid.uuid - service_config = self.__service.service_config src_device_obj = self.__task_executor.get_device( DeviceId(**json_device_id(src_device_uuid)) ) @@ -229,6 +226,7 @@ class L3NM_IETFL3VPN_ServiceHandler(_ServiceHandler): running_candidate_diff = get_running_candidate_ietf_slice_data_diff( service_config ) + service_id = candidate_resource_value_dict["network-slice-services"]["slice-service"][0]["id"] if not running_candidate_diff: operation_type = "create" elif "values_changed" in running_candidate_diff: @@ -278,7 +276,7 @@ class L3NM_IETFL3VPN_ServiceHandler(_ServiceHandler): dst_pe_address = dst_ce_address dst_ce_address_prefix = dst_endpoint_settings["address_prefix"] resource_value_dict = { - "uuid": service_uuid, + "uuid": service_id, "src_device_name": src_device_name, "src_endpoint_name": src_endpoint_obj.name, "src_site_location": src_endpoint_settings["site_location"], @@ -296,14 +294,14 @@ class L3NM_IETFL3VPN_ServiceHandler(_ServiceHandler): "dst_ce_pe_network_prefix": dst_ce_address_prefix, "dst_mtu": MTU, } - json_config_rules = setup_config_rules(service_uuid, resource_value_dict, operation_type) + json_config_rules = setup_config_rules(service_id, resource_value_dict, operation_type) 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 LOGGER.exception( - "Unable to SetEndpoint for Service({:s})".format(str(service_uuid)) + "Unable to SetEndpoint for Service({:s})".format(str(service_id)) ) results.append(e) @@ -319,7 +317,15 @@ class L3NM_IETFL3VPN_ServiceHandler(_ServiceHandler): if len(endpoints) < 2: return [] - service_uuid = self.__service.service_id.service_uuid.uuid + service_config = self.__service.service_config + + ietf_slice_candidate_cr = get_custom_config_rule( + service_config, CANDIDATE_RESOURCE_KEY + ) + candidate_resource_value_dict = json.loads( + ietf_slice_candidate_cr.custom.resource_value + ) + service_id = candidate_resource_value_dict["network-slice-services"]["slice-service"][0]["id"] results = [] try: @@ -342,7 +348,7 @@ class L3NM_IETFL3VPN_ServiceHandler(_ServiceHandler): controller = src_controller json_config_rule = json_config_rule_delete( - "/services/service[{:s}]".format(service_uuid), {"uuid": service_uuid} + "/services/service[{:s}]".format(service_id), {"uuid": service_id} ) del controller.device_config.config_rules[:] controller.device_config.config_rules.append(ConfigRule(**json_config_rule)) @@ -350,7 +356,7 @@ class L3NM_IETFL3VPN_ServiceHandler(_ServiceHandler): results.append(True) except Exception as e: # pylint: disable=broad-except LOGGER.exception( - "Unable to DeleteEndpoint for Service({:s})".format(str(service_uuid)) + "Unable to DeleteEndpoint for Service({:s})".format(str(service_id)) ) results.append(e) -- GitLab