From ded005deb1304f6943c160d0974e2acee305e576 Mon Sep 17 00:00:00 2001 From: Armingol <pablo.armingolrobles@telefonica.com> Date: Thu, 26 Oct 2023 17:46:28 +0200 Subject: [PATCH] Add support for new vendor in Openconfig Driver --- .../service/drivers/openconfig/OpenConfigDriver.py | 13 ++++++++++++- .../drivers/openconfig/templates/Inventory.py | 4 +--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/device/service/drivers/openconfig/OpenConfigDriver.py b/src/device/service/drivers/openconfig/OpenConfigDriver.py index b34efbc8f..00e99d934 100644 --- a/src/device/service/drivers/openconfig/OpenConfigDriver.py +++ b/src/device/service/drivers/openconfig/OpenConfigDriver.py @@ -53,6 +53,8 @@ MAX_RETRIES = 15 DELAY_FUNCTION = delay_exponential(initial=0.01, increment=2.0, maximum=5.0) RETRY_DECORATOR = retry(max_retries=MAX_RETRIES, delay_function=DELAY_FUNCTION, prepare_method_name='connect') +LOGGER = logging.getLogger(__name__) + class NetconfSessionHandler: def __init__(self, address : str, port : int, **settings) -> None: self.__lock = threading.RLock() @@ -109,7 +111,16 @@ class NetconfSessionHandler: @RETRY_DECORATOR def get(self, filter=None, with_defaults=None): # pylint: disable=redefined-builtin with self.__lock: - return self.__manager.get(filter=filter, with_defaults=with_defaults) + if self.__vendor == 'JUNIPER'and not 'component' in str(filter): + LOGGER.info('filtros = {:s}'.format(str(filter))) + data = self.__manager.get_config(source="running", filter=filter, with_defaults=with_defaults) + LOGGER.info('resultado = {:s}'.format(str(data))) + return self.__manager.get_config(source="running", filter=filter, with_defaults=with_defaults) + else: + LOGGER.info('filtros2 = {:s}'.format(str(filter))) + data = self.__manager.get(filter=filter, with_defaults=with_defaults) + LOGGER.info('resultado2 = {:s}'.format(str(data))) + return self.__manager.get(filter=filter, with_defaults=with_defaults) @RETRY_DECORATOR def edit_config( diff --git a/src/device/service/drivers/openconfig/templates/Inventory.py b/src/device/service/drivers/openconfig/templates/Inventory.py index 0d98d7288..2ae67ba47 100644 --- a/src/device/service/drivers/openconfig/templates/Inventory.py +++ b/src/device/service/drivers/openconfig/templates/Inventory.py @@ -89,9 +89,7 @@ def parse(xml_data : ET.Element) -> List[Tuple[str, Dict[str, Any]]]: add_value_from_tag(inventory['attributes'], 'empty', component_empty) component_parent = xml_component.find('ocp:state/ocp:parent', namespaces=NAMESPACES) - if component_parent is None or component_parent.text is None: - add_value_from_tag(inventory, 'parent-component-references', component_type) - else: + if not component_parent is None: add_value_from_tag(inventory, 'parent-component-references', component_parent) component_HW = xml_component.find('ocp:state/ocp:hardware-version', namespaces=NAMESPACES) -- GitLab