From bc7b4ee5b64721b4ea75106030db8eec3eed7b62 Mon Sep 17 00:00:00 2001 From: PedroDuarte536 <pedro.dld536@gmail.com> Date: Wed, 7 May 2025 18:35:58 +0100 Subject: [PATCH] accept gnmi connections via PROTO --- .../service/drivers/gnmi_openconfig/GnmiSessionHandler.py | 3 ++- .../service/drivers/gnmi_openconfig/tools/Capabilities.py | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/device/service/drivers/gnmi_openconfig/GnmiSessionHandler.py b/src/device/service/drivers/gnmi_openconfig/GnmiSessionHandler.py index 03a55f472..85967e019 100644 --- a/src/device/service/drivers/gnmi_openconfig/GnmiSessionHandler.py +++ b/src/device/service/drivers/gnmi_openconfig/GnmiSessionHandler.py @@ -38,6 +38,7 @@ class GnmiSessionHandler: self._username = settings.get('username') self._password = settings.get('password') self._use_tls = settings.get('use_tls', False) + self._encoding = settings.get('encoding') self._channel : Optional[grpc.Channel] = None self._stub : Optional[gNMIStub] = None self._monit_thread = None @@ -90,7 +91,7 @@ class GnmiSessionHandler: get_request = GetRequest() get_request.type = GetRequest.DataType.ALL - get_request.encoding = Encoding.JSON_IETF + get_request.encoding = Encoding.Value(self._encoding) if self._encoding else Encoding.JSON_IETF #get_request.use_models.add() # kept empty: return for all models supported for i,resource_key in enumerate(resource_keys): str_resource_name = 'resource_key[#{:d}]'.format(i) diff --git a/src/device/service/drivers/gnmi_openconfig/tools/Capabilities.py b/src/device/service/drivers/gnmi_openconfig/tools/Capabilities.py index a57f0d731..3f0afda11 100644 --- a/src/device/service/drivers/gnmi_openconfig/tools/Capabilities.py +++ b/src/device/service/drivers/gnmi_openconfig/tools/Capabilities.py @@ -44,6 +44,6 @@ def check_capabilities( if len(supported_encodings) == 0: # pylint: disable=broad-exception-raised raise Exception('No supported encodings found') - if 'JSON_IETF' not in supported_encodings: + if len({'JSON_IETF', 'PROTO'}.intersection(supported_encodings)) == 0: # pylint: disable=broad-exception-raised - raise Exception('JSON_IETF encoding not supported') + raise Exception('JSON_IETF or PROTO encodings not supported') -- GitLab