From 652038ee7d31271783f75c3b9318a26065b32192 Mon Sep 17 00:00:00 2001 From: gifrerenom Date: Thu, 30 May 2024 18:44:57 +0000 Subject: [PATCH] Device - gNMI OpenConfig Driver: - Corrected removal of Network Instance Interface, Protocol, and Static Route - Corrected destroy of GnmiSessionHandler --- .../drivers/gnmi_openconfig/GnmiSessionHandler.py | 12 +++++++----- .../handlers/NetworkInstanceInterface.py | 5 ++--- .../handlers/NetworkInstanceProtocol.py | 1 - .../handlers/NetworkInstanceStaticRoute.py | 7 +++---- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/device/service/drivers/gnmi_openconfig/GnmiSessionHandler.py b/src/device/service/drivers/gnmi_openconfig/GnmiSessionHandler.py index 671182b1c..ff304d144 100644 --- a/src/device/service/drivers/gnmi_openconfig/GnmiSessionHandler.py +++ b/src/device/service/drivers/gnmi_openconfig/GnmiSessionHandler.py @@ -40,18 +40,20 @@ class GnmiSessionHandler: self._use_tls = settings.get('use_tls', False) self._channel : Optional[grpc.Channel] = None self._stub : Optional[gNMIStub] = None - self._yang_handler = YangHandler() + self._yang_handler = None self._monit_thread = None + self._yang_handler = YangHandler() self._subscriptions = Subscriptions() self._in_subscriptions = queue.Queue() self._out_samples = queue.Queue() def __del__(self) -> None: self._logger.warning('Destroying YangValidator...') - self._logger.warning('yang_validator.data:') - for path, dnode in self._yang_handler.get_data_paths().items(): - self._logger.warning(' {:s}: {:s}'.format(str(path), json.dumps(dnode.print_dict()))) - self._yang_handler.destroy() + if self._yang_handler is not None: + self._logger.warning('yang_validator.data:') + for path, dnode in self._yang_handler.get_data_paths().items(): + self._logger.warning(' {:s}: {:s}'.format(str(path), json.dumps(dnode.print_dict()))) + self._yang_handler.destroy() self._logger.warning('DONE') @property diff --git a/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceInterface.py b/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceInterface.py index 4cf0b275c..ed5e04087 100644 --- a/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceInterface.py +++ b/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceInterface.py @@ -37,9 +37,8 @@ class NetworkInstanceInterfaceHandler(_Handler): if IS_CEOS: ni_if_id = if_name if delete: - #PATH_TMPL = '/network-instances/network-instance[name={:s}]/interfaces/interface[id={:s}]' - #str_path = PATH_TMPL.format(ni_name, ni_if_id) - str_path = None # nothing to delete + PATH_TMPL = '/network-instances/network-instance[name={:s}]/interfaces/interface[id={:s}]' + str_path = PATH_TMPL.format(ni_name, ni_if_id) str_data = json.dumps({}) return str_path, str_data diff --git a/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceProtocol.py b/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceProtocol.py index a54c40b4a..f45646192 100644 --- a/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceProtocol.py +++ b/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceProtocol.py @@ -38,7 +38,6 @@ class NetworkInstanceProtocolHandler(_Handler): str_path = PATH_TMPL.format(ni_name, identifier, proto_name) if delete: - str_path = None # nothing to delete str_data = json.dumps({}) return str_path, str_data diff --git a/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceStaticRoute.py b/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceStaticRoute.py index 3d1c240e3..ad1ef8b70 100644 --- a/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceStaticRoute.py +++ b/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceStaticRoute.py @@ -37,10 +37,9 @@ class NetworkInstanceStaticRouteHandler(_Handler): identifier = 'openconfig-policy-types:{:s}'.format(identifier) if delete: - #PATH_TMPL = '/network-instances/network-instance[name={:s}]/protocols' - #PATH_TMPL += '/protocol[identifier={:s}][name={:s}]/static-routes/static[prefix={:s}]' - #str_path = PATH_TMPL.format(ni_name, identifier, proto_name, prefix) - str_path = None # nothing to delete + PATH_TMPL = '/network-instances/network-instance[name={:s}]/protocols' + PATH_TMPL += '/protocol[identifier={:s}][name={:s}]/static-routes/static[prefix={:s}]' + str_path = PATH_TMPL.format(ni_name, identifier, proto_name, prefix) str_data = json.dumps({}) return str_path, str_data -- GitLab