VOL-3448: Introduce returning error for GetHWComponentInfo , GetMetric , GetSoftwareVersion APIs

Change-Id: Ia592bcc642ad5aa3b3891b8bdd1f9cf21bd51da2
diff --git a/python/dmi/hw_events_mgmt_service_pb2_grpc.py b/python/dmi/hw_events_mgmt_service_pb2_grpc.py
index 2452017..213d4f5 100644
--- a/python/dmi/hw_events_mgmt_service_pb2_grpc.py
+++ b/python/dmi/hw_events_mgmt_service_pb2_grpc.py
@@ -39,7 +39,7 @@
 
     def UpdateEventsConfiguration(self, request, context):
         """Updates the configuration of the list of events in the request

-        The default behaviour of the device is to report all the supported events

+        The default behavior of the device is to report all the supported events

         This configuration is persisted across reboots of the device or the device manager

         """
         context.set_code(grpc.StatusCode.UNIMPLEMENTED)
diff --git a/python/dmi/hw_management_service_pb2.py b/python/dmi/hw_management_service_pb2.py
index b84cf1a..1443583 100644
--- a/python/dmi/hw_management_service_pb2.py
+++ b/python/dmi/hw_management_service_pb2.py
@@ -21,7 +21,7 @@
   syntax='proto3',
   serialized_options=b'Z9github.com/opencord/device-management-interface/v3/go/dmi',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x1f\x64mi/hw_management_service.proto\x12\x03\x64mi\x1a\x11\x64mi/commons.proto\x1a\x0c\x64mi/hw.proto\":\n\x18PhysicalInventoryRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\"w\n\x19PhysicalInventoryResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x1b\n\x06reason\x18\x02 \x01(\x0e\x32\x0b.dmi.Reason\x12 \n\tinventory\x18\x03 \x01(\x0b\x32\r.dmi.Hardware\"v\n\x19HWComponentInfoGetRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12!\n\x0e\x63omponent_uuid\x18\x02 \x01(\x0b\x32\t.dmi.Uuid\x12\x16\n\x0e\x63omponent_name\x18\x03 \x01(\t\"\xa1\x01\n\x19HWComponentInfoSetRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12!\n\x0e\x63omponent_uuid\x18\x02 \x01(\x0b\x32\t.dmi.Uuid\x12\x16\n\x0e\x63omponent_name\x18\x03 \x01(\t\x12)\n\x07\x63hanges\x18\x04 \x01(\x0b\x32\x18.dmi.ModifiableComponent\"V\n\x1aHWComponentInfoSetResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x1b\n\x06reason\x18\x02 \x01(\x0e\x32\x0b.dmi.Reason\"w\n\x1bStartManagingDeviceResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x1b\n\x06reason\x18\x02 \x01(\x0e\x32\x0b.dmi.Reason\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x03 \x01(\x0b\x32\t.dmi.Uuid\")\n\x19StopManagingDeviceRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"V\n\x1aStopManagingDeviceResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x1b\n\x06reason\x18\x02 \x01(\x0e\x32\x0b.dmi.Reason2\xbf\x03\n\x19NativeHWManagementService\x12S\n\x13StartManagingDevice\x12\x18.dmi.ModifiableComponent\x1a .dmi.StartManagingDeviceResponse0\x01\x12U\n\x12StopManagingDevice\x12\x1e.dmi.StopManagingDeviceRequest\x1a\x1f.dmi.StopManagingDeviceResponse\x12W\n\x14GetPhysicalInventory\x12\x1d.dmi.PhysicalInventoryRequest\x1a\x1e.dmi.PhysicalInventoryResponse0\x01\x12\x46\n\x12GetHWComponentInfo\x12\x1e.dmi.HWComponentInfoGetRequest\x1a\x0e.dmi.Component0\x01\x12U\n\x12SetHWComponentInfo\x12\x1e.dmi.HWComponentInfoSetRequest\x1a\x1f.dmi.HWComponentInfoSetResponseB;Z9github.com/opencord/device-management-interface/v3/go/dmib\x06proto3'
+  serialized_pb=b'\n\x1f\x64mi/hw_management_service.proto\x12\x03\x64mi\x1a\x11\x64mi/commons.proto\x1a\x0c\x64mi/hw.proto\":\n\x18PhysicalInventoryRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\"w\n\x19PhysicalInventoryResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x1b\n\x06reason\x18\x02 \x01(\x0e\x32\x0b.dmi.Reason\x12 \n\tinventory\x18\x03 \x01(\x0b\x32\r.dmi.Hardware\"v\n\x19HWComponentInfoGetRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12!\n\x0e\x63omponent_uuid\x18\x02 \x01(\x0b\x32\t.dmi.Uuid\x12\x16\n\x0e\x63omponent_name\x18\x03 \x01(\t\"y\n\x1aHWComponentInfoGetResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x1b\n\x06reason\x18\x02 \x01(\x0e\x32\x0b.dmi.Reason\x12!\n\tcomponent\x18\x03 \x01(\x0b\x32\x0e.dmi.Component\"\xa1\x01\n\x19HWComponentInfoSetRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12!\n\x0e\x63omponent_uuid\x18\x02 \x01(\x0b\x32\t.dmi.Uuid\x12\x16\n\x0e\x63omponent_name\x18\x03 \x01(\t\x12)\n\x07\x63hanges\x18\x04 \x01(\x0b\x32\x18.dmi.ModifiableComponent\"V\n\x1aHWComponentInfoSetResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x1b\n\x06reason\x18\x02 \x01(\x0e\x32\x0b.dmi.Reason\"w\n\x1bStartManagingDeviceResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x1b\n\x06reason\x18\x02 \x01(\x0e\x32\x0b.dmi.Reason\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x03 \x01(\x0b\x32\t.dmi.Uuid\")\n\x19StopManagingDeviceRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"V\n\x1aStopManagingDeviceResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x1b\n\x06reason\x18\x02 \x01(\x0e\x32\x0b.dmi.Reason2\xd0\x03\n\x19NativeHWManagementService\x12S\n\x13StartManagingDevice\x12\x18.dmi.ModifiableComponent\x1a .dmi.StartManagingDeviceResponse0\x01\x12U\n\x12StopManagingDevice\x12\x1e.dmi.StopManagingDeviceRequest\x1a\x1f.dmi.StopManagingDeviceResponse\x12W\n\x14GetPhysicalInventory\x12\x1d.dmi.PhysicalInventoryRequest\x1a\x1e.dmi.PhysicalInventoryResponse0\x01\x12W\n\x12GetHWComponentInfo\x12\x1e.dmi.HWComponentInfoGetRequest\x1a\x1f.dmi.HWComponentInfoGetResponse0\x01\x12U\n\x12SetHWComponentInfo\x12\x1e.dmi.HWComponentInfoSetRequest\x1a\x1f.dmi.HWComponentInfoSetResponseB;Z9github.com/opencord/device-management-interface/v3/go/dmib\x06proto3'
   ,
   dependencies=[dmi_dot_commons__pb2.DESCRIPTOR,dmi_dot_hw__pb2.DESCRIPTOR,])
 
@@ -152,6 +152,52 @@
 )
 
 
+_HWCOMPONENTINFOGETRESPONSE = _descriptor.Descriptor(
+  name='HWComponentInfoGetResponse',
+  full_name='dmi.HWComponentInfoGetResponse',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='status', full_name='dmi.HWComponentInfoGetResponse.status', index=0,
+      number=1, type=14, cpp_type=8, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='reason', full_name='dmi.HWComponentInfoGetResponse.reason', index=1,
+      number=2, type=14, cpp_type=8, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='component', full_name='dmi.HWComponentInfoGetResponse.component', index=2,
+      number=3, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=374,
+  serialized_end=495,
+)
+
+
 _HWCOMPONENTINFOSETREQUEST = _descriptor.Descriptor(
   name='HWComponentInfoSetRequest',
   full_name='dmi.HWComponentInfoSetRequest',
@@ -200,8 +246,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=375,
-  serialized_end=536,
+  serialized_start=498,
+  serialized_end=659,
 )
 
 
@@ -239,8 +285,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=538,
-  serialized_end=624,
+  serialized_start=661,
+  serialized_end=747,
 )
 
 
@@ -285,8 +331,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=626,
-  serialized_end=745,
+  serialized_start=749,
+  serialized_end=868,
 )
 
 
@@ -317,8 +363,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=747,
-  serialized_end=788,
+  serialized_start=870,
+  serialized_end=911,
 )
 
 
@@ -356,8 +402,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=790,
-  serialized_end=876,
+  serialized_start=913,
+  serialized_end=999,
 )
 
 _PHYSICALINVENTORYREQUEST.fields_by_name['device_uuid'].message_type = dmi_dot_hw__pb2._UUID
@@ -366,6 +412,9 @@
 _PHYSICALINVENTORYRESPONSE.fields_by_name['inventory'].message_type = dmi_dot_hw__pb2._HARDWARE
 _HWCOMPONENTINFOGETREQUEST.fields_by_name['device_uuid'].message_type = dmi_dot_hw__pb2._UUID
 _HWCOMPONENTINFOGETREQUEST.fields_by_name['component_uuid'].message_type = dmi_dot_hw__pb2._UUID
+_HWCOMPONENTINFOGETRESPONSE.fields_by_name['status'].enum_type = dmi_dot_commons__pb2._STATUS
+_HWCOMPONENTINFOGETRESPONSE.fields_by_name['reason'].enum_type = dmi_dot_commons__pb2._REASON
+_HWCOMPONENTINFOGETRESPONSE.fields_by_name['component'].message_type = dmi_dot_hw__pb2._COMPONENT
 _HWCOMPONENTINFOSETREQUEST.fields_by_name['device_uuid'].message_type = dmi_dot_hw__pb2._UUID
 _HWCOMPONENTINFOSETREQUEST.fields_by_name['component_uuid'].message_type = dmi_dot_hw__pb2._UUID
 _HWCOMPONENTINFOSETREQUEST.fields_by_name['changes'].message_type = dmi_dot_hw__pb2._MODIFIABLECOMPONENT
@@ -379,6 +428,7 @@
 DESCRIPTOR.message_types_by_name['PhysicalInventoryRequest'] = _PHYSICALINVENTORYREQUEST
 DESCRIPTOR.message_types_by_name['PhysicalInventoryResponse'] = _PHYSICALINVENTORYRESPONSE
 DESCRIPTOR.message_types_by_name['HWComponentInfoGetRequest'] = _HWCOMPONENTINFOGETREQUEST
+DESCRIPTOR.message_types_by_name['HWComponentInfoGetResponse'] = _HWCOMPONENTINFOGETRESPONSE
 DESCRIPTOR.message_types_by_name['HWComponentInfoSetRequest'] = _HWCOMPONENTINFOSETREQUEST
 DESCRIPTOR.message_types_by_name['HWComponentInfoSetResponse'] = _HWCOMPONENTINFOSETRESPONSE
 DESCRIPTOR.message_types_by_name['StartManagingDeviceResponse'] = _STARTMANAGINGDEVICERESPONSE
@@ -407,6 +457,13 @@
   })
 _sym_db.RegisterMessage(HWComponentInfoGetRequest)
 
+HWComponentInfoGetResponse = _reflection.GeneratedProtocolMessageType('HWComponentInfoGetResponse', (_message.Message,), {
+  'DESCRIPTOR' : _HWCOMPONENTINFOGETRESPONSE,
+  '__module__' : 'dmi.hw_management_service_pb2'
+  # @@protoc_insertion_point(class_scope:dmi.HWComponentInfoGetResponse)
+  })
+_sym_db.RegisterMessage(HWComponentInfoGetResponse)
+
 HWComponentInfoSetRequest = _reflection.GeneratedProtocolMessageType('HWComponentInfoSetRequest', (_message.Message,), {
   'DESCRIPTOR' : _HWCOMPONENTINFOSETREQUEST,
   '__module__' : 'dmi.hw_management_service_pb2'
@@ -452,8 +509,8 @@
   index=0,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=879,
-  serialized_end=1326,
+  serialized_start=1002,
+  serialized_end=1466,
   methods=[
   _descriptor.MethodDescriptor(
     name='StartManagingDevice',
@@ -491,7 +548,7 @@
     index=3,
     containing_service=None,
     input_type=_HWCOMPONENTINFOGETREQUEST,
-    output_type=dmi_dot_hw__pb2._COMPONENT,
+    output_type=_HWCOMPONENTINFOGETRESPONSE,
     serialized_options=None,
     create_key=_descriptor._internal_create_key,
   ),
diff --git a/python/dmi/hw_management_service_pb2_grpc.py b/python/dmi/hw_management_service_pb2_grpc.py
index bead6fb..4596281 100644
--- a/python/dmi/hw_management_service_pb2_grpc.py
+++ b/python/dmi/hw_management_service_pb2_grpc.py
@@ -33,7 +33,7 @@
         self.GetHWComponentInfo = channel.unary_stream(
                 '/dmi.NativeHWManagementService/GetHWComponentInfo',
                 request_serializer=dmi_dot_hw__management__service__pb2.HWComponentInfoGetRequest.SerializeToString,
-                response_deserializer=dmi_dot_hw__pb2.Component.FromString,
+                response_deserializer=dmi_dot_hw__management__service__pb2.HWComponentInfoGetResponse.FromString,
                 )
         self.SetHWComponentInfo = channel.unary_unary(
                 '/dmi.NativeHWManagementService/SetHWComponentInfo',
@@ -109,7 +109,7 @@
             'GetHWComponentInfo': grpc.unary_stream_rpc_method_handler(
                     servicer.GetHWComponentInfo,
                     request_deserializer=dmi_dot_hw__management__service__pb2.HWComponentInfoGetRequest.FromString,
-                    response_serializer=dmi_dot_hw__pb2.Component.SerializeToString,
+                    response_serializer=dmi_dot_hw__management__service__pb2.HWComponentInfoGetResponse.SerializeToString,
             ),
             'SetHWComponentInfo': grpc.unary_unary_rpc_method_handler(
                     servicer.SetHWComponentInfo,
@@ -190,7 +190,7 @@
             metadata=None):
         return grpc.experimental.unary_stream(request, target, '/dmi.NativeHWManagementService/GetHWComponentInfo',
             dmi_dot_hw__management__service__pb2.HWComponentInfoGetRequest.SerializeToString,
-            dmi_dot_hw__pb2.Component.FromString,
+            dmi_dot_hw__management__service__pb2.HWComponentInfoGetResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
diff --git a/python/dmi/hw_metrics_mgmt_service_pb2.py b/python/dmi/hw_metrics_mgmt_service_pb2.py
index 060606b..843bbf0 100644
--- a/python/dmi/hw_metrics_mgmt_service_pb2.py
+++ b/python/dmi/hw_metrics_mgmt_service_pb2.py
@@ -22,7 +22,7 @@
   syntax='proto3',
   serialized_options=b'Z9github.com/opencord/device-management-interface/v3/go/dmi',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n!dmi/hw_metrics_mgmt_service.proto\x12\x03\x64mi\x1a\x11\x64mi/commons.proto\x1a\x0c\x64mi/hw.proto\"a\n\x0cMetricConfig\x12#\n\tmetric_id\x18\x01 \x01(\x0e\x32\x10.dmi.MetricNames\x12\x15\n\ris_configured\x18\x02 \x01(\x08\x12\x15\n\rpoll_interval\x18\x03 \x01(\r\"3\n\rMetricsConfig\x12\"\n\x07metrics\x18\x01 \x03(\x0b\x32\x11.dmi.MetricConfig\"t\n\x13ListMetricsResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x1b\n\x06reason\x18\x02 \x01(\x0e\x32\x0b.dmi.Reason\x12#\n\x07metrics\x18\x03 \x01(\x0b\x32\x12.dmi.MetricsConfig\"\x8d\x01\n\x1bMetricsConfigurationRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12%\n\x07\x63hanges\x18\x02 \x01(\x0b\x32\x12.dmi.MetricsConfigH\x00\x12\x1a\n\x10reset_to_default\x18\x03 \x01(\x08H\x00\x42\x0b\n\toperation\"X\n\x1cMetricsConfigurationResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x1b\n\x06reason\x18\x02 \x01(\x0e\x32\x0b.dmi.Reason\"k\n\x0eMetricMetaData\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12!\n\x0e\x63omponent_uuid\x18\x02 \x01(\x0b\x32\t.dmi.Uuid\x12\x16\n\x0e\x63omponent_name\x18\x03 \x01(\t\"\x84\x01\n\x06Metric\x12#\n\tmetric_id\x18\x01 \x01(\x0e\x32\x10.dmi.MetricNames\x12,\n\x0fmetric_metadata\x18\x02 \x01(\x0b\x32\x13.dmi.MetricMetaData\x12\'\n\x05value\x18\x03 \x01(\x0b\x32\x18.dmi.ComponentSensorData\"_\n\x10GetMetricRequest\x12&\n\tmeta_data\x18\x01 \x01(\x0b\x32\x13.dmi.MetricMetaData\x12#\n\tmetric_id\x18\x02 \x01(\x0e\x32\x10.dmi.MetricNames*\xd9\x05\n\x0bMetricNames\x12\x19\n\x15METRIC_NAME_UNDEFINED\x10\x00\x12\x14\n\x10METRIC_FAN_SPEED\x10\x01\x12\x13\n\x0fMETRIC_CPU_TEMP\x10\x64\x12\x1f\n\x1bMETRIC_CPU_USAGE_PERCENTAGE\x10\x65\x12\x1c\n\x17METRIC_TRANSCEIVER_TEMP\x10\xc8\x01\x12\x1f\n\x1aMETRIC_TRANSCEIVER_VOLTAGE\x10\xc9\x01\x12\x1c\n\x17METRIC_TRANSCEIVER_BIAS\x10\xca\x01\x12 \n\x1bMETRIC_TRANSCEIVER_RX_POWER\x10\xcb\x01\x12 \n\x1bMETRIC_TRANSCEIVER_TX_POWER\x10\xcc\x01\x12\"\n\x1dMETRIC_TRANSCEIVER_WAVELENGTH\x10\xcd\x01\x12\x15\n\x10METRIC_DISK_TEMP\x10\xac\x02\x12\x19\n\x14METRIC_DISK_CAPACITY\x10\xad\x02\x12\x16\n\x11METRIC_DISK_USAGE\x10\xae\x02\x12!\n\x1cMETRIC_DISK_USAGE_PERCENTAGE\x10\xaf\x02\x12&\n!METRIC_DISK_READ_WRITE_PERCENTAGE\x10\xb0\x02\x12(\n#METRIC_DISK_FAULTY_CELLS_PERCENTAGE\x10\xb1\x02\x12\x14\n\x0fMETRIC_RAM_TEMP\x10\x90\x03\x12\x18\n\x13METRIC_RAM_CAPACITY\x10\x91\x03\x12\x15\n\x10METRIC_RAM_USAGE\x10\x92\x03\x12 \n\x1bMETRIC_RAM_USAGE_PERCENTAGE\x10\x93\x03\x12\x15\n\x10METRIC_POWER_MAX\x10\xf4\x03\x12\x17\n\x12METRIC_POWER_USAGE\x10\xf5\x03\x12\"\n\x1dMETRIC_POWER_USAGE_PERCENTAGE\x10\xf6\x03\x12\"\n\x1dMETRIC_INNER_SURROUNDING_TEMP\x10\xd8\x04\x32\xee\x01\n\x1eNativeMetricsManagementService\x12\x38\n\x0bListMetrics\x12\x0f.dmi.HardwareID\x1a\x18.dmi.ListMetricsResponse\x12\x61\n\x1aUpdateMetricsConfiguration\x12 .dmi.MetricsConfigurationRequest\x1a!.dmi.MetricsConfigurationResponse\x12/\n\tGetMetric\x12\x15.dmi.GetMetricRequest\x1a\x0b.dmi.MetricB;Z9github.com/opencord/device-management-interface/v3/go/dmib\x06proto3'
+  serialized_pb=b'\n!dmi/hw_metrics_mgmt_service.proto\x12\x03\x64mi\x1a\x11\x64mi/commons.proto\x1a\x0c\x64mi/hw.proto\"a\n\x0cMetricConfig\x12#\n\tmetric_id\x18\x01 \x01(\x0e\x32\x10.dmi.MetricNames\x12\x15\n\ris_configured\x18\x02 \x01(\x08\x12\x15\n\rpoll_interval\x18\x03 \x01(\r\"3\n\rMetricsConfig\x12\"\n\x07metrics\x18\x01 \x03(\x0b\x32\x11.dmi.MetricConfig\"t\n\x13ListMetricsResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x1b\n\x06reason\x18\x02 \x01(\x0e\x32\x0b.dmi.Reason\x12#\n\x07metrics\x18\x03 \x01(\x0b\x32\x12.dmi.MetricsConfig\"\x8d\x01\n\x1bMetricsConfigurationRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12%\n\x07\x63hanges\x18\x02 \x01(\x0b\x32\x12.dmi.MetricsConfigH\x00\x12\x1a\n\x10reset_to_default\x18\x03 \x01(\x08H\x00\x42\x0b\n\toperation\"X\n\x1cMetricsConfigurationResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x1b\n\x06reason\x18\x02 \x01(\x0e\x32\x0b.dmi.Reason\"k\n\x0eMetricMetaData\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12!\n\x0e\x63omponent_uuid\x18\x02 \x01(\x0b\x32\t.dmi.Uuid\x12\x16\n\x0e\x63omponent_name\x18\x03 \x01(\t\"\x84\x01\n\x06Metric\x12#\n\tmetric_id\x18\x01 \x01(\x0e\x32\x10.dmi.MetricNames\x12,\n\x0fmetric_metadata\x18\x02 \x01(\x0b\x32\x13.dmi.MetricMetaData\x12\'\n\x05value\x18\x03 \x01(\x0b\x32\x18.dmi.ComponentSensorData\"_\n\x10GetMetricRequest\x12&\n\tmeta_data\x18\x01 \x01(\x0b\x32\x13.dmi.MetricMetaData\x12#\n\tmetric_id\x18\x02 \x01(\x0e\x32\x10.dmi.MetricNames\"j\n\x11GetMetricResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x1b\n\x06reason\x18\x02 \x01(\x0e\x32\x0b.dmi.Reason\x12\x1b\n\x06metric\x18\x03 \x01(\x0b\x32\x0b.dmi.Metric*\xd9\x05\n\x0bMetricNames\x12\x19\n\x15METRIC_NAME_UNDEFINED\x10\x00\x12\x14\n\x10METRIC_FAN_SPEED\x10\x01\x12\x13\n\x0fMETRIC_CPU_TEMP\x10\x64\x12\x1f\n\x1bMETRIC_CPU_USAGE_PERCENTAGE\x10\x65\x12\x1c\n\x17METRIC_TRANSCEIVER_TEMP\x10\xc8\x01\x12\x1f\n\x1aMETRIC_TRANSCEIVER_VOLTAGE\x10\xc9\x01\x12\x1c\n\x17METRIC_TRANSCEIVER_BIAS\x10\xca\x01\x12 \n\x1bMETRIC_TRANSCEIVER_RX_POWER\x10\xcb\x01\x12 \n\x1bMETRIC_TRANSCEIVER_TX_POWER\x10\xcc\x01\x12\"\n\x1dMETRIC_TRANSCEIVER_WAVELENGTH\x10\xcd\x01\x12\x15\n\x10METRIC_DISK_TEMP\x10\xac\x02\x12\x19\n\x14METRIC_DISK_CAPACITY\x10\xad\x02\x12\x16\n\x11METRIC_DISK_USAGE\x10\xae\x02\x12!\n\x1cMETRIC_DISK_USAGE_PERCENTAGE\x10\xaf\x02\x12&\n!METRIC_DISK_READ_WRITE_PERCENTAGE\x10\xb0\x02\x12(\n#METRIC_DISK_FAULTY_CELLS_PERCENTAGE\x10\xb1\x02\x12\x14\n\x0fMETRIC_RAM_TEMP\x10\x90\x03\x12\x18\n\x13METRIC_RAM_CAPACITY\x10\x91\x03\x12\x15\n\x10METRIC_RAM_USAGE\x10\x92\x03\x12 \n\x1bMETRIC_RAM_USAGE_PERCENTAGE\x10\x93\x03\x12\x15\n\x10METRIC_POWER_MAX\x10\xf4\x03\x12\x17\n\x12METRIC_POWER_USAGE\x10\xf5\x03\x12\"\n\x1dMETRIC_POWER_USAGE_PERCENTAGE\x10\xf6\x03\x12\"\n\x1dMETRIC_INNER_SURROUNDING_TEMP\x10\xd8\x04\x32\xf9\x01\n\x1eNativeMetricsManagementService\x12\x38\n\x0bListMetrics\x12\x0f.dmi.HardwareID\x1a\x18.dmi.ListMetricsResponse\x12\x61\n\x1aUpdateMetricsConfiguration\x12 .dmi.MetricsConfigurationRequest\x1a!.dmi.MetricsConfigurationResponse\x12:\n\tGetMetric\x12\x15.dmi.GetMetricRequest\x1a\x16.dmi.GetMetricResponseB;Z9github.com/opencord/device-management-interface/v3/go/dmib\x06proto3'
   ,
   dependencies=[dmi_dot_commons__pb2.DESCRIPTOR,dmi_dot_hw__pb2.DESCRIPTOR,])
 
@@ -156,8 +156,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=921,
-  serialized_end=1650,
+  serialized_start=1029,
+  serialized_end=1758,
 )
 _sym_db.RegisterEnumDescriptor(_METRICNAMES)
 
@@ -533,6 +533,52 @@
   serialized_end=918,
 )
 
+
+_GETMETRICRESPONSE = _descriptor.Descriptor(
+  name='GetMetricResponse',
+  full_name='dmi.GetMetricResponse',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='status', full_name='dmi.GetMetricResponse.status', index=0,
+      number=1, type=14, cpp_type=8, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='reason', full_name='dmi.GetMetricResponse.reason', index=1,
+      number=2, type=14, cpp_type=8, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='metric', full_name='dmi.GetMetricResponse.metric', index=2,
+      number=3, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=920,
+  serialized_end=1026,
+)
+
 _METRICCONFIG.fields_by_name['metric_id'].enum_type = _METRICNAMES
 _METRICSCONFIG.fields_by_name['metrics'].message_type = _METRICCONFIG
 _LISTMETRICSRESPONSE.fields_by_name['status'].enum_type = dmi_dot_commons__pb2._STATUS
@@ -555,6 +601,9 @@
 _METRIC.fields_by_name['value'].message_type = dmi_dot_hw__pb2._COMPONENTSENSORDATA
 _GETMETRICREQUEST.fields_by_name['meta_data'].message_type = _METRICMETADATA
 _GETMETRICREQUEST.fields_by_name['metric_id'].enum_type = _METRICNAMES
+_GETMETRICRESPONSE.fields_by_name['status'].enum_type = dmi_dot_commons__pb2._STATUS
+_GETMETRICRESPONSE.fields_by_name['reason'].enum_type = dmi_dot_commons__pb2._REASON
+_GETMETRICRESPONSE.fields_by_name['metric'].message_type = _METRIC
 DESCRIPTOR.message_types_by_name['MetricConfig'] = _METRICCONFIG
 DESCRIPTOR.message_types_by_name['MetricsConfig'] = _METRICSCONFIG
 DESCRIPTOR.message_types_by_name['ListMetricsResponse'] = _LISTMETRICSRESPONSE
@@ -563,6 +612,7 @@
 DESCRIPTOR.message_types_by_name['MetricMetaData'] = _METRICMETADATA
 DESCRIPTOR.message_types_by_name['Metric'] = _METRIC
 DESCRIPTOR.message_types_by_name['GetMetricRequest'] = _GETMETRICREQUEST
+DESCRIPTOR.message_types_by_name['GetMetricResponse'] = _GETMETRICRESPONSE
 DESCRIPTOR.enum_types_by_name['MetricNames'] = _METRICNAMES
 _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
@@ -622,6 +672,13 @@
   })
 _sym_db.RegisterMessage(GetMetricRequest)
 
+GetMetricResponse = _reflection.GeneratedProtocolMessageType('GetMetricResponse', (_message.Message,), {
+  'DESCRIPTOR' : _GETMETRICRESPONSE,
+  '__module__' : 'dmi.hw_metrics_mgmt_service_pb2'
+  # @@protoc_insertion_point(class_scope:dmi.GetMetricResponse)
+  })
+_sym_db.RegisterMessage(GetMetricResponse)
+
 
 DESCRIPTOR._options = None
 
@@ -632,8 +689,8 @@
   index=0,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=1653,
-  serialized_end=1891,
+  serialized_start=1761,
+  serialized_end=2010,
   methods=[
   _descriptor.MethodDescriptor(
     name='ListMetrics',
@@ -661,7 +718,7 @@
     index=2,
     containing_service=None,
     input_type=_GETMETRICREQUEST,
-    output_type=_METRIC,
+    output_type=_GETMETRICRESPONSE,
     serialized_options=None,
     create_key=_descriptor._internal_create_key,
   ),
diff --git a/python/dmi/hw_metrics_mgmt_service_pb2_grpc.py b/python/dmi/hw_metrics_mgmt_service_pb2_grpc.py
index 825d4ee..7a2affa 100644
--- a/python/dmi/hw_metrics_mgmt_service_pb2_grpc.py
+++ b/python/dmi/hw_metrics_mgmt_service_pb2_grpc.py
@@ -28,7 +28,7 @@
         self.GetMetric = channel.unary_unary(
                 '/dmi.NativeMetricsManagementService/GetMetric',
                 request_serializer=dmi_dot_hw__metrics__mgmt__service__pb2.GetMetricRequest.SerializeToString,
-                response_deserializer=dmi_dot_hw__metrics__mgmt__service__pb2.Metric.FromString,
+                response_deserializer=dmi_dot_hw__metrics__mgmt__service__pb2.GetMetricResponse.FromString,
                 )
 
 
@@ -78,7 +78,7 @@
             'GetMetric': grpc.unary_unary_rpc_method_handler(
                     servicer.GetMetric,
                     request_deserializer=dmi_dot_hw__metrics__mgmt__service__pb2.GetMetricRequest.FromString,
-                    response_serializer=dmi_dot_hw__metrics__mgmt__service__pb2.Metric.SerializeToString,
+                    response_serializer=dmi_dot_hw__metrics__mgmt__service__pb2.GetMetricResponse.SerializeToString,
             ),
     }
     generic_handler = grpc.method_handlers_generic_handler(
@@ -137,6 +137,6 @@
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/dmi.NativeMetricsManagementService/GetMetric',
             dmi_dot_hw__metrics__mgmt__service__pb2.GetMetricRequest.SerializeToString,
-            dmi_dot_hw__metrics__mgmt__service__pb2.Metric.FromString,
+            dmi_dot_hw__metrics__mgmt__service__pb2.GetMetricResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/python/dmi/sw_image_pb2.py b/python/dmi/sw_image_pb2.py
index ffe3b09..9a60384 100644
--- a/python/dmi/sw_image_pb2.py
+++ b/python/dmi/sw_image_pb2.py
@@ -20,7 +20,7 @@
   syntax='proto3',
   serialized_options=b'Z9github.com/opencord/device-management-interface/v3/go/dmi',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x12\x64mi/sw_image.proto\x12\x03\x64mi\x1a\x11\x64mi/commons.proto\"3\n\x0cImageVersion\x12\x12\n\nimage_name\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\t\"x\n\x10ImageInformation\x12 \n\x05image\x18\x01 \x01(\x0b\x32\x11.dmi.ImageVersion\x12\x1c\n\x14image_install_script\x18\x02 \x01(\t\x12\x11\n\timage_url\x18\x03 \x01(\t\x12\x11\n\tsha256sum\x18\x05 \x01(\t\"\xf9\x03\n\x0bImageStatus\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\'\n\x06reason\x18\x02 \x01(\x0e\x32\x17.dmi.ImageStatus.Reason\x12*\n\x05state\x18\x03 \x01(\x0e\x32\x1b.dmi.ImageStatus.ImageState\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\"\xcf\x01\n\nImageState\x12\x13\n\x0fUNDEFINED_STATE\x10\x00\x12\x11\n\rCOPYING_IMAGE\x10\x01\x12\x14\n\x10INSTALLING_IMAGE\x10\x02\x12\x13\n\x0f\x43OMMITING_IMAGE\x10\x03\x12\x14\n\x10REBOOTING_DEVICE\x10\x04\x12\x14\n\x10UPGRADE_COMPLETE\x10\x05\x12\x12\n\x0eUPGRADE_FAILED\x10\x06\x12\x17\n\x13\x41\x43TIVATION_COMPLETE\x10\x07\x12\x15\n\x11\x41\x43TIVATION_FAILED\x10\x08\"\x90\x01\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x14\n\x10\x45RROR_IN_REQUEST\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x19\n\x15\x44\x45VICE_IN_WRONG_STATE\x10\x03\x12\x11\n\rINVALID_IMAGE\x10\x04\x12\x18\n\x14WRONG_IMAGE_CHECKSUM\x10\x05\x42;Z9github.com/opencord/device-management-interface/v3/go/dmib\x06proto3'
+  serialized_pb=b'\n\x12\x64mi/sw_image.proto\x12\x03\x64mi\x1a\x11\x64mi/commons.proto\"3\n\x0cImageVersion\x12\x12\n\nimage_name\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\t\"x\n\x10ImageInformation\x12 \n\x05image\x18\x01 \x01(\x0b\x32\x11.dmi.ImageVersion\x12\x1c\n\x14image_install_script\x18\x02 \x01(\t\x12\x11\n\timage_url\x18\x03 \x01(\t\x12\x11\n\tsha256sum\x18\x05 \x01(\t\"\xfa\x03\n\x0bImageStatus\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\'\n\x06reason\x18\x02 \x01(\x0e\x32\x17.dmi.ImageStatus.Reason\x12*\n\x05state\x18\x03 \x01(\x0e\x32\x1b.dmi.ImageStatus.ImageState\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\"\xd0\x01\n\nImageState\x12\x13\n\x0fUNDEFINED_STATE\x10\x00\x12\x11\n\rCOPYING_IMAGE\x10\x01\x12\x14\n\x10INSTALLING_IMAGE\x10\x02\x12\x14\n\x10\x43OMMITTING_IMAGE\x10\x03\x12\x14\n\x10REBOOTING_DEVICE\x10\x04\x12\x14\n\x10UPGRADE_COMPLETE\x10\x05\x12\x12\n\x0eUPGRADE_FAILED\x10\x06\x12\x17\n\x13\x41\x43TIVATION_COMPLETE\x10\x07\x12\x15\n\x11\x41\x43TIVATION_FAILED\x10\x08\"\x90\x01\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x14\n\x10\x45RROR_IN_REQUEST\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x19\n\x15\x44\x45VICE_IN_WRONG_STATE\x10\x03\x12\x11\n\rINVALID_IMAGE\x10\x04\x12\x18\n\x14WRONG_IMAGE_CHECKSUM\x10\x05\x42;Z9github.com/opencord/device-management-interface/v3/go/dmib\x06proto3'
   ,
   dependencies=[dmi_dot_commons__pb2.DESCRIPTOR,])
 
@@ -49,7 +49,7 @@
       type=None,
       create_key=_descriptor._internal_create_key),
     _descriptor.EnumValueDescriptor(
-      name='COMMITING_IMAGE', index=3, number=3,
+      name='COMMITTING_IMAGE', index=3, number=3,
       serialized_options=None,
       type=None,
       create_key=_descriptor._internal_create_key),
@@ -82,7 +82,7 @@
   containing_type=None,
   serialized_options=None,
   serialized_start=373,
-  serialized_end=580,
+  serialized_end=581,
 )
 _sym_db.RegisterEnumDescriptor(_IMAGESTATUS_IMAGESTATE)
 
@@ -126,8 +126,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=583,
-  serialized_end=727,
+  serialized_start=584,
+  serialized_end=728,
 )
 _sym_db.RegisterEnumDescriptor(_IMAGESTATUS_REASON)
 
@@ -275,7 +275,7 @@
   oneofs=[
   ],
   serialized_start=222,
-  serialized_end=727,
+  serialized_end=728,
 )
 
 _IMAGEINFORMATION.fields_by_name['image'].message_type = _IMAGEVERSION
diff --git a/python/dmi/sw_management_service_pb2.py b/python/dmi/sw_management_service_pb2.py
index f3aadee..5306586 100644
--- a/python/dmi/sw_management_service_pb2.py
+++ b/python/dmi/sw_management_service_pb2.py
@@ -11,6 +11,7 @@
 _sym_db = _symbol_database.Default()
 
 
+from dmi import commons_pb2 as dmi_dot_commons__pb2
 from dmi import hw_pb2 as dmi_dot_hw__pb2
 from dmi import sw_image_pb2 as dmi_dot_sw__image__pb2
 
@@ -21,9 +22,9 @@
   syntax='proto3',
   serialized_options=b'Z9github.com/opencord/device-management-interface/v3/go/dmi',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x1f\x64mi/sw_management_service.proto\x12\x03\x64mi\x1a\x0c\x64mi/hw.proto\x1a\x12\x64mi/sw_image.proto\"u\n\x1aSoftwareVersionInformation\x12*\n\x0f\x61\x63tive_versions\x18\x01 \x03(\x0b\x32\x11.dmi.ImageVersion\x12+\n\x10standby_versions\x18\x02 \x03(\x0b\x32\x11.dmi.ImageVersion\"a\n\x14\x44ownloadImageRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12)\n\nimage_info\x18\x02 \x01(\x0b\x32\x15.dmi.ImageInformation2\x9c\x02\n\x1fNativeSoftwareManagementService\x12\x46\n\x12GetSoftwareVersion\x12\x0f.dmi.HardwareID\x1a\x1f.dmi.SoftwareVersionInformation\x12>\n\rDownloadImage\x12\x19.dmi.DownloadImageRequest\x1a\x10.dmi.ImageStatus0\x01\x12\x34\n\rActivateImage\x12\x0f.dmi.HardwareID\x1a\x10.dmi.ImageStatus0\x01\x12;\n\x14RevertToStandbyImage\x12\x0f.dmi.HardwareID\x1a\x10.dmi.ImageStatus0\x01\x42;Z9github.com/opencord/device-management-interface/v3/go/dmib\x06proto3'
+  serialized_pb=b'\n\x1f\x64mi/sw_management_service.proto\x12\x03\x64mi\x1a\x11\x64mi/commons.proto\x1a\x0c\x64mi/hw.proto\x1a\x12\x64mi/sw_image.proto\"u\n\x1aSoftwareVersionInformation\x12*\n\x0f\x61\x63tive_versions\x18\x01 \x03(\x0b\x32\x11.dmi.ImageVersion\x12+\n\x10standby_versions\x18\x02 \x03(\x0b\x32\x11.dmi.ImageVersion\"\x90\x01\n%GetSoftwareVersionInformationResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x1b\n\x06reason\x18\x02 \x01(\x0e\x32\x0b.dmi.Reason\x12-\n\x04info\x18\x03 \x01(\x0b\x32\x1f.dmi.SoftwareVersionInformation\"a\n\x14\x44ownloadImageRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12)\n\nimage_info\x18\x02 \x01(\x0b\x32\x15.dmi.ImageInformation2\xa7\x02\n\x1fNativeSoftwareManagementService\x12Q\n\x12GetSoftwareVersion\x12\x0f.dmi.HardwareID\x1a*.dmi.GetSoftwareVersionInformationResponse\x12>\n\rDownloadImage\x12\x19.dmi.DownloadImageRequest\x1a\x10.dmi.ImageStatus0\x01\x12\x34\n\rActivateImage\x12\x0f.dmi.HardwareID\x1a\x10.dmi.ImageStatus0\x01\x12;\n\x14RevertToStandbyImage\x12\x0f.dmi.HardwareID\x1a\x10.dmi.ImageStatus0\x01\x42;Z9github.com/opencord/device-management-interface/v3/go/dmib\x06proto3'
   ,
-  dependencies=[dmi_dot_hw__pb2.DESCRIPTOR,dmi_dot_sw__image__pb2.DESCRIPTOR,])
+  dependencies=[dmi_dot_commons__pb2.DESCRIPTOR,dmi_dot_hw__pb2.DESCRIPTOR,dmi_dot_sw__image__pb2.DESCRIPTOR,])
 
 
 
@@ -62,8 +63,54 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=74,
-  serialized_end=191,
+  serialized_start=93,
+  serialized_end=210,
+)
+
+
+_GETSOFTWAREVERSIONINFORMATIONRESPONSE = _descriptor.Descriptor(
+  name='GetSoftwareVersionInformationResponse',
+  full_name='dmi.GetSoftwareVersionInformationResponse',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='status', full_name='dmi.GetSoftwareVersionInformationResponse.status', index=0,
+      number=1, type=14, cpp_type=8, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='reason', full_name='dmi.GetSoftwareVersionInformationResponse.reason', index=1,
+      number=2, type=14, cpp_type=8, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='info', full_name='dmi.GetSoftwareVersionInformationResponse.info', index=2,
+      number=3, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=213,
+  serialized_end=357,
 )
 
 
@@ -101,15 +148,19 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=193,
-  serialized_end=290,
+  serialized_start=359,
+  serialized_end=456,
 )
 
 _SOFTWAREVERSIONINFORMATION.fields_by_name['active_versions'].message_type = dmi_dot_sw__image__pb2._IMAGEVERSION
 _SOFTWAREVERSIONINFORMATION.fields_by_name['standby_versions'].message_type = dmi_dot_sw__image__pb2._IMAGEVERSION
+_GETSOFTWAREVERSIONINFORMATIONRESPONSE.fields_by_name['status'].enum_type = dmi_dot_commons__pb2._STATUS
+_GETSOFTWAREVERSIONINFORMATIONRESPONSE.fields_by_name['reason'].enum_type = dmi_dot_commons__pb2._REASON
+_GETSOFTWAREVERSIONINFORMATIONRESPONSE.fields_by_name['info'].message_type = _SOFTWAREVERSIONINFORMATION
 _DOWNLOADIMAGEREQUEST.fields_by_name['device_uuid'].message_type = dmi_dot_hw__pb2._UUID
 _DOWNLOADIMAGEREQUEST.fields_by_name['image_info'].message_type = dmi_dot_sw__image__pb2._IMAGEINFORMATION
 DESCRIPTOR.message_types_by_name['SoftwareVersionInformation'] = _SOFTWAREVERSIONINFORMATION
+DESCRIPTOR.message_types_by_name['GetSoftwareVersionInformationResponse'] = _GETSOFTWAREVERSIONINFORMATIONRESPONSE
 DESCRIPTOR.message_types_by_name['DownloadImageRequest'] = _DOWNLOADIMAGEREQUEST
 _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
@@ -120,6 +171,13 @@
   })
 _sym_db.RegisterMessage(SoftwareVersionInformation)
 
+GetSoftwareVersionInformationResponse = _reflection.GeneratedProtocolMessageType('GetSoftwareVersionInformationResponse', (_message.Message,), {
+  'DESCRIPTOR' : _GETSOFTWAREVERSIONINFORMATIONRESPONSE,
+  '__module__' : 'dmi.sw_management_service_pb2'
+  # @@protoc_insertion_point(class_scope:dmi.GetSoftwareVersionInformationResponse)
+  })
+_sym_db.RegisterMessage(GetSoftwareVersionInformationResponse)
+
 DownloadImageRequest = _reflection.GeneratedProtocolMessageType('DownloadImageRequest', (_message.Message,), {
   'DESCRIPTOR' : _DOWNLOADIMAGEREQUEST,
   '__module__' : 'dmi.sw_management_service_pb2'
@@ -137,8 +195,8 @@
   index=0,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=293,
-  serialized_end=577,
+  serialized_start=459,
+  serialized_end=754,
   methods=[
   _descriptor.MethodDescriptor(
     name='GetSoftwareVersion',
@@ -146,7 +204,7 @@
     index=0,
     containing_service=None,
     input_type=dmi_dot_hw__pb2._HARDWAREID,
-    output_type=_SOFTWAREVERSIONINFORMATION,
+    output_type=_GETSOFTWAREVERSIONINFORMATIONRESPONSE,
     serialized_options=None,
     create_key=_descriptor._internal_create_key,
   ),
diff --git a/python/dmi/sw_management_service_pb2_grpc.py b/python/dmi/sw_management_service_pb2_grpc.py
index dad1652..b9669b7 100644
--- a/python/dmi/sw_management_service_pb2_grpc.py
+++ b/python/dmi/sw_management_service_pb2_grpc.py
@@ -19,7 +19,7 @@
         self.GetSoftwareVersion = channel.unary_unary(
                 '/dmi.NativeSoftwareManagementService/GetSoftwareVersion',
                 request_serializer=dmi_dot_hw__pb2.HardwareID.SerializeToString,
-                response_deserializer=dmi_dot_sw__management__service__pb2.SoftwareVersionInformation.FromString,
+                response_deserializer=dmi_dot_sw__management__service__pb2.GetSoftwareVersionInformationResponse.FromString,
                 )
         self.DownloadImage = channel.unary_stream(
                 '/dmi.NativeSoftwareManagementService/DownloadImage',
@@ -66,7 +66,7 @@
 
     def RevertToStandbyImage(self, request, context):
         """Marks the image in the Standby as Active and reboots the device, so that it boots from that image which was in the standby.

-        This API is to be used if operator wants to go back to the pervious software

+        This API is to be used if operator wants to go back to the previous software

         """
         context.set_code(grpc.StatusCode.UNIMPLEMENTED)
         context.set_details('Method not implemented!')
@@ -78,7 +78,7 @@
             'GetSoftwareVersion': grpc.unary_unary_rpc_method_handler(
                     servicer.GetSoftwareVersion,
                     request_deserializer=dmi_dot_hw__pb2.HardwareID.FromString,
-                    response_serializer=dmi_dot_sw__management__service__pb2.SoftwareVersionInformation.SerializeToString,
+                    response_serializer=dmi_dot_sw__management__service__pb2.GetSoftwareVersionInformationResponse.SerializeToString,
             ),
             'DownloadImage': grpc.unary_stream_rpc_method_handler(
                     servicer.DownloadImage,
@@ -118,7 +118,7 @@
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/dmi.NativeSoftwareManagementService/GetSoftwareVersion',
             dmi_dot_hw__pb2.HardwareID.SerializeToString,
-            dmi_dot_sw__management__service__pb2.SoftwareVersionInformation.FromString,
+            dmi_dot_sw__management__service__pb2.GetSoftwareVersionInformationResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)