diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/YangHandler.py b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/YangHandler.py index af358532b7e55c2f3cfef0dcf3194c9076c1f0e8..1ee82a37de9e68bead1aeba97bad7275c243efda 100644 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/YangHandler.py +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_sap_topology/YangHandler.py @@ -80,16 +80,30 @@ class YangHandler: def compose_node(self, dev: Device, name_mappings: NameMappings, network: Any, connected_tps: set) -> None: + + device_name = dev.name name_mappings.store_device_name(dev) - node = network.create_path(f'node[node-id="{device_name}"]') - node.create_path('node-id', device_name) + context_client = ContextClient() + device = context_client.GetDevice(DeviceId(**json_device_id(device_name))) + + + for config in device.device_config.config_rules: + if config.WhichOneof('config_rule') == 'custom' and config.custom.resource_key == '_connect/settings': + try: + settings_data = json.loads(config.custom.resource_value) + sap_device = settings_data.get('sap_id') + except ValueError: + sap_device = "ERROR" + break + sap_device = "SAP"+ str(sap_device) + + node = network.create_path(f'node[node-id="{sap_device}"]') + node.create_path('node-id', sap_device) - context_client = ContextClient() - device = context_client.GetDevice(DeviceId(**json_device_id(device_name))) for endpoint in device.device_endpoints: name_mappings.store_endpoint_name(dev, endpoint) @@ -97,25 +111,16 @@ class YangHandler: - self._process_device_config(device, node, connected_tps) + self._process_device_config(device, node, connected_tps, sap_device) - def _process_device_config(self, device: Device, node: Any, connected_tps: set) -> None: + def _process_device_config(self, device: Device, node: Any, connected_tps: set, sap_device: str) -> None: #sLOGGER.info(f"Métodos disponibles en 'node': {dir(node)}") #LOGGER.info(f"Métodos disponibles en 'nedevice': {dir(device)}") - sap_device = "" - for config in device.device_config.config_rules: - - if config.WhichOneof('config_rule') == 'custom' and config.custom.resource_key == '_connect/settings': - try: - settings_data = json.loads(config.custom.resource_value) - sap_device = settings_data.get('sap_id', "") - except ValueError: - sap_device = "ERROR" - - break + sap_device = sap_device + for config in device.device_config.config_rules: