Loading src/nbi/service/rest_server/nbi_plugins/ietf_hardware/YangHandler.py +28 −24 Original line number Diff line number Diff line Loading @@ -12,13 +12,14 @@ # See the License for the specific language governing permissions and # limitations under the License. import libyang, os from common.proto.context_pb2 import Device from typing import Dict, Optional import datetime import json import logging import libyang import os import re import datetime LOGGER = logging.getLogger(__name__) YANG_DIR = os.path.join(os.path.dirname(__file__), 'yang') Loading Loading @@ -88,9 +89,6 @@ class YangHandler: if component_type == "FRU" : component_type = "slack" component_new.create_path('is-fru', True) else : component_new.create_path('is-fru', False) component_type = component_type.replace("_", "-").lower() component_type = 'iana-hardware:' + component_type Loading @@ -101,13 +99,14 @@ class YangHandler: physical_index += 1 component_new.create_path('description', attributes["description"]) 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)) for component2 in device.components: if component.parent == component2.name : parent.create_path('uuid', component2.component_uuid.uuid) for component_parent in device.components: if component.parent == component_parent.name : parent.create_path('uuid', component_parent.component_uuid.uuid) break if attributes["mfg-date"] != "": Loading @@ -119,11 +118,22 @@ class YangHandler: component_new.create_path('firmware-rev', attributes["firmware-version"]) component_new.create_path('serial-num', attributes["serial-num"]) component_new.create_path('mfg-name', attributes["mfg-name"]) if attributes["removable"]: removable = attributes["removable"].lower() if 'true' in removable: component_new.create_path('is-fru', True) elif 'false' in removable: component_new.create_path('is-fru', False) if attributes["id"]: try: if "CHASSIS" in component.type : component_new.create_path('parent-rel-pos', 0) else: parent_rel_pos = int(attributes["id"].replace("\"", "")) component_new.create_path('parent-rel-pos', parent_rel_pos) except ValueError: LOGGER.info('ERROR:{:s} '.format(component.name )) continue component_new.create_path('uri', component.name) Loading @@ -131,15 +141,9 @@ class YangHandler: component_new.create_path('uuid', component.component_uuid.uuid) contained_child = [] for component2 in device.components: if component.name == component2.parent : child_uuid = component2.component_uuid.uuid.strip("'") contained_child.append(child_uuid) LOGGER.info('parent: {:s}'.format(str(component))) LOGGER.info('child: {:s}'.format(str(component2))) component_new.create_path('contained-child', contained_child) for child in device.components: if component.name == child.parent : component_new.create_path('contained-child', child.component_uuid.uuid) return json.loads(hardware.print_mem('json')) Loading Loading
src/nbi/service/rest_server/nbi_plugins/ietf_hardware/YangHandler.py +28 −24 Original line number Diff line number Diff line Loading @@ -12,13 +12,14 @@ # See the License for the specific language governing permissions and # limitations under the License. import libyang, os from common.proto.context_pb2 import Device from typing import Dict, Optional import datetime import json import logging import libyang import os import re import datetime LOGGER = logging.getLogger(__name__) YANG_DIR = os.path.join(os.path.dirname(__file__), 'yang') Loading Loading @@ -88,9 +89,6 @@ class YangHandler: if component_type == "FRU" : component_type = "slack" component_new.create_path('is-fru', True) else : component_new.create_path('is-fru', False) component_type = component_type.replace("_", "-").lower() component_type = 'iana-hardware:' + component_type Loading @@ -101,13 +99,14 @@ class YangHandler: physical_index += 1 component_new.create_path('description', attributes["description"]) 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)) for component2 in device.components: if component.parent == component2.name : parent.create_path('uuid', component2.component_uuid.uuid) for component_parent in device.components: if component.parent == component_parent.name : parent.create_path('uuid', component_parent.component_uuid.uuid) break if attributes["mfg-date"] != "": Loading @@ -119,11 +118,22 @@ class YangHandler: component_new.create_path('firmware-rev', attributes["firmware-version"]) component_new.create_path('serial-num', attributes["serial-num"]) component_new.create_path('mfg-name', attributes["mfg-name"]) if attributes["removable"]: removable = attributes["removable"].lower() if 'true' in removable: component_new.create_path('is-fru', True) elif 'false' in removable: component_new.create_path('is-fru', False) if attributes["id"]: try: if "CHASSIS" in component.type : component_new.create_path('parent-rel-pos', 0) else: parent_rel_pos = int(attributes["id"].replace("\"", "")) component_new.create_path('parent-rel-pos', parent_rel_pos) except ValueError: LOGGER.info('ERROR:{:s} '.format(component.name )) continue component_new.create_path('uri', component.name) Loading @@ -131,15 +141,9 @@ class YangHandler: component_new.create_path('uuid', component.component_uuid.uuid) contained_child = [] for component2 in device.components: if component.name == component2.parent : child_uuid = component2.component_uuid.uuid.strip("'") contained_child.append(child_uuid) LOGGER.info('parent: {:s}'.format(str(component))) LOGGER.info('child: {:s}'.format(str(component2))) component_new.create_path('contained-child', contained_child) for child in device.components: if component.name == child.parent : component_new.create_path('contained-child', child.component_uuid.uuid) return json.loads(hardware.print_mem('json')) Loading