diff --git a/src/device/service/drivers/gnmi_openconfig/GnmiSessionHandler.py b/src/device/service/drivers/gnmi_openconfig/GnmiSessionHandler.py index 03a55f472d2d4d4cd6726795fe6000c4fb68f95b..85967e0195e3c08b5e6585eb005acae43280efac 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 a57f0d731667364693c0e337ca2bda92e68068a8..3f0afda114ef85e357f51263e6b576b940de74ea 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')