diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/YangHandler.py b/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/YangHandler.py index 33611adcf6662e17af17efa86c56af0b80e09cf0..7662261e97b35958f036dc0e69913af7947b9403 100644 --- a/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/YangHandler.py +++ b/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/YangHandler.py @@ -46,60 +46,45 @@ class YangHandler: dnode.free() return message - @staticmethod def convert_to_iso_date(date_str: str) -> Optional[str]: date_str = date_str.strip('"') - # Define the regex pattern for ISO 8601 date format pattern = r"\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[\+\-]\d{2}:\d{2})" - # Check if the input date string matches the pattern if re.match(pattern, date_str): - return date_str # Already in ISO format + return date_str else: try: - # Parse the input date string as a datetime object datetime_obj = datetime.datetime.strptime(date_str, "%Y-%m-%d") - # Convert to ISO format iso_date = datetime_obj.isoformat() + "Z" return iso_date except ValueError: - return None # Invalid date format - + return None def compose(self, device : Device) -> Dict: hardware = self._yang_context.create_data_path('/ietf-network-hardware-inventory:network-hardware-inventory') network_elements = hardware.create_path('network-elements') - + network_element = network_elements.create_path('network-element[uuid="{:s}"]'.format(device.device_id.device_uuid.uuid)) network_element.create_path('uuid', device.device_id.device_uuid.uuid) network_element.create_path('name', device.name) components = network_element.create_path('components') physical_index = 1 - + for component in device.components: attributes = component.attributes - component_new = components.create_path('component[uuid="{:s}"]'.format(component.component_uuid.uuid)) component_new.create_path('name', component.name) - - #Cambiar las clases especiales, su formato y añadir isfru component_type = component.type if component_type == "TRANSCEIVER" : component_type = "module" - if component_type == "FRU" : component_type = "slack" component_type = component_type.replace("_", "-").lower() component_type = 'iana-hardware:' + component_type component_new.create_path('class', component_type) - - #Añadir resto de atributos en IETF - physical_index += 1 - component_new.create_path('description', attributes["description"].replace('/"',"")) - if "CHASSIS" not in component.type: parent_component_references = component_new.create_path('parent-component-references') parent = parent_component_references.create_path('component-reference[index="{:d}"]'.format(physical_index)) @@ -107,7 +92,6 @@ class YangHandler: if component.parent == component_parent.name : parent.create_path('uuid', component_parent.component_uuid.uuid) break - if attributes["mfg-date"] != "": mfg_date = self.convert_to_iso_date(attributes["mfg-date"]) component_new.create_path('mfg-date', mfg_date) @@ -137,7 +121,6 @@ class YangHandler: component_new.create_path('uri', component.name) component_new.create_path('uuid', component.component_uuid.uuid) - for child in device.components: if component.name == child.parent : component_new.create_path('contained-child', child.component_uuid.uuid) diff --git a/src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py b/src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py index 1f667f13466f98bb90e24c6f76854fc1362d0347..41e8ff1ea634869e69258c20f81f7c3db9767eb5 100644 --- a/src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py +++ b/src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py @@ -13,7 +13,6 @@ # limitations under the License. from nbi.service.rest_server.RestServer import RestServer -from nbi.service.rest_server.nbi_plugins.ietf_hardware import Hardware, HardwareMultipleDevices from .Resources import ( Connection, ConnectionIds, Connections, Context, ContextIds, Contexts, @@ -51,7 +50,7 @@ RESOURCES = [ ('api.device_ids', DeviceIds, '/device_ids'), ('api.devices', Devices, '/devices'), ('api.device', Device, '/device/<path:device_uuid>'), - + ('api.link_ids', LinkIds, '/link_ids'), ('api.links', Links, '/links'), ('api.link', Link, '/link/<path:link_uuid>'),