Loading src/nbi/service/rest_server/nbi_plugins/ietf_hardware/YangHandler.py +4 −21 Original line number Diff line number Diff line Loading @@ -46,25 +46,19 @@ 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') Loading @@ -78,28 +72,19 @@ class YangHandler: 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)) Loading @@ -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) Loading Loading @@ -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) Loading src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py +1 −2 Original line number Diff line number Diff line Loading @@ -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, Loading Loading
src/nbi/service/rest_server/nbi_plugins/ietf_hardware/YangHandler.py +4 −21 Original line number Diff line number Diff line Loading @@ -46,25 +46,19 @@ 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') Loading @@ -78,28 +72,19 @@ class YangHandler: 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)) Loading @@ -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) Loading Loading @@ -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) Loading
src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py +1 −2 Original line number Diff line number Diff line Loading @@ -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, Loading