diff --git a/vendor/github.com/opencord/device-management-interface/go/dmi/commons.pb.go b/vendor/github.com/opencord/device-management-interface/go/dmi/commons.pb.go
index 1b3b9da..d30c79c 100644
--- a/vendor/github.com/opencord/device-management-interface/go/dmi/commons.pb.go
+++ b/vendor/github.com/opencord/device-management-interface/go/dmi/commons.pb.go
@@ -48,59 +48,6 @@
 	return fileDescriptor_74aedf0dda1205d8, []int{0}
 }
 
-// Reason for the failure of request
-type Reason int32
-
-const (
-	Reason_UNDEFINED_REASON                Reason = 0
-	Reason_UNKNOWN_DEVICE                  Reason = 1
-	Reason_INTERNAL_ERROR                  Reason = 2
-	Reason_WRONG_METRIC                    Reason = 3
-	Reason_WRONG_EVENT                     Reason = 4
-	Reason_LOGGING_ENDPOINT_ERROR          Reason = 5
-	Reason_LOGGING_ENDPOINT_PROTOCOL_ERROR Reason = 6
-	Reason_KAFKA_ENDPOINT_ERROR            Reason = 7
-	Reason_UNKNOWN_LOG_ENTITY              Reason = 8
-	Reason_ERROR_FETCHING_CONFIG           Reason = 9
-	Reason_INVALID_CONFIG                  Reason = 10
-)
-
-var Reason_name = map[int32]string{
-	0:  "UNDEFINED_REASON",
-	1:  "UNKNOWN_DEVICE",
-	2:  "INTERNAL_ERROR",
-	3:  "WRONG_METRIC",
-	4:  "WRONG_EVENT",
-	5:  "LOGGING_ENDPOINT_ERROR",
-	6:  "LOGGING_ENDPOINT_PROTOCOL_ERROR",
-	7:  "KAFKA_ENDPOINT_ERROR",
-	8:  "UNKNOWN_LOG_ENTITY",
-	9:  "ERROR_FETCHING_CONFIG",
-	10: "INVALID_CONFIG",
-}
-
-var Reason_value = map[string]int32{
-	"UNDEFINED_REASON":                0,
-	"UNKNOWN_DEVICE":                  1,
-	"INTERNAL_ERROR":                  2,
-	"WRONG_METRIC":                    3,
-	"WRONG_EVENT":                     4,
-	"LOGGING_ENDPOINT_ERROR":          5,
-	"LOGGING_ENDPOINT_PROTOCOL_ERROR": 6,
-	"KAFKA_ENDPOINT_ERROR":            7,
-	"UNKNOWN_LOG_ENTITY":              8,
-	"ERROR_FETCHING_CONFIG":           9,
-	"INVALID_CONFIG":                  10,
-}
-
-func (x Reason) String() string {
-	return proto.EnumName(Reason_name, int32(x))
-}
-
-func (Reason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_74aedf0dda1205d8, []int{1}
-}
-
 //Log Level
 type LogLevel int32
 
@@ -133,41 +80,30 @@
 }
 
 func (LogLevel) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_74aedf0dda1205d8, []int{2}
+	return fileDescriptor_74aedf0dda1205d8, []int{1}
 }
 
 func init() {
 	proto.RegisterEnum("dmi.Status", Status_name, Status_value)
-	proto.RegisterEnum("dmi.Reason", Reason_name, Reason_value)
 	proto.RegisterEnum("dmi.LogLevel", LogLevel_name, LogLevel_value)
 }
 
 func init() { proto.RegisterFile("dmi/commons.proto", fileDescriptor_74aedf0dda1205d8) }
 
 var fileDescriptor_74aedf0dda1205d8 = []byte{
-	// 373 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x91, 0xcf, 0x6f, 0xd3, 0x30,
-	0x14, 0xc7, 0xdb, 0xb4, 0x0b, 0xed, 0xe3, 0x97, 0xb1, 0xc6, 0x04, 0x5c, 0x38, 0x70, 0xab, 0xb4,
-	0xe5, 0xb0, 0x13, 0xe2, 0x30, 0x79, 0x89, 0x13, 0xac, 0x04, 0x7b, 0x72, 0x9c, 0x56, 0x70, 0x89,
-	0xb2, 0xc4, 0x84, 0x48, 0x38, 0x9e, 0xda, 0xac, 0xff, 0x04, 0xff, 0x34, 0x72, 0x43, 0x0e, 0xc0,
-	0xed, 0xf9, 0xf3, 0xf4, 0x3e, 0x7e, 0x5f, 0x3d, 0x78, 0xd5, 0x98, 0x2e, 0xa8, 0xad, 0x31, 0xb6,
-	0x3f, 0x5c, 0x3d, 0xec, 0xed, 0x60, 0xf1, 0xa2, 0x31, 0xdd, 0xe6, 0x06, 0xfc, 0x7c, 0xa8, 0x86,
-	0xc7, 0x03, 0x3e, 0x07, 0x54, 0xf0, 0x88, 0xc6, 0x8c, 0xd3, 0xa8, 0xcc, 0x15, 0x51, 0x45, 0x8e,
-	0x66, 0xf8, 0x39, 0xac, 0x45, 0x3a, 0x3d, 0xe7, 0x18, 0xc1, 0x33, 0x2a, 0xa5, 0x90, 0x13, 0xf1,
-	0x36, 0xbf, 0x3c, 0xf0, 0xa5, 0xae, 0x0e, 0xb6, 0xff, 0xdb, 0x20, 0x29, 0xc9, 0x05, 0x47, 0x33,
-	0x8c, 0xe1, 0x45, 0xc1, 0x53, 0x2e, 0x76, 0xbc, 0x8c, 0xe8, 0x96, 0x85, 0x14, 0xcd, 0x1d, 0x63,
-	0x5c, 0x51, 0xc9, 0x49, 0x56, 0x9e, 0x7c, 0xc8, 0x73, 0xea, 0x9d, 0x14, 0x3c, 0x29, 0xbf, 0x50,
-	0x25, 0x59, 0x88, 0x16, 0xf8, 0x25, 0x3c, 0x1d, 0x09, 0xdd, 0x52, 0xae, 0xd0, 0x12, 0xbf, 0x83,
-	0x8b, 0x4c, 0x24, 0x09, 0x73, 0x88, 0x47, 0x77, 0x82, 0x71, 0xf5, 0x67, 0xfc, 0x0c, 0x7f, 0x80,
-	0xf7, 0xff, 0xf5, 0xee, 0xa4, 0x50, 0x22, 0x14, 0xd3, 0x1f, 0x3e, 0x7e, 0x03, 0xe7, 0x29, 0x89,
-	0x53, 0xf2, 0xef, 0xf8, 0x13, 0x7c, 0x01, 0x78, 0xda, 0x32, 0x13, 0x4e, 0xa1, 0x98, 0xfa, 0x8a,
-	0x56, 0xf8, 0x2d, 0xbc, 0x1e, 0x03, 0xc7, 0x54, 0x85, 0x9f, 0x9d, 0x3d, 0x14, 0x3c, 0x66, 0x09,
-	0x5a, 0x8f, 0x21, 0xb6, 0x24, 0x63, 0xd1, 0xc4, 0x60, 0x73, 0x03, 0xab, 0xcc, 0xb6, 0x99, 0x3e,
-	0xea, 0x9f, 0x78, 0x0d, 0x67, 0x4a, 0x92, 0x90, 0xa2, 0x99, 0x2b, 0x23, 0x7a, 0x5b, 0x24, 0x68,
-	0x8e, 0x57, 0xb0, 0x64, 0x3c, 0x16, 0xc8, 0x73, 0xd5, 0x8e, 0x48, 0x8e, 0x16, 0xae, 0x3d, 0xee,
-	0xb1, 0xbc, 0xfd, 0xf4, 0xed, 0x63, 0xdb, 0x0d, 0x3f, 0x1e, 0xef, 0xaf, 0x6a, 0x6b, 0x02, 0xfb,
-	0xa0, 0xfb, 0xda, 0xee, 0x9b, 0xa0, 0xd1, 0xc7, 0xae, 0xd6, 0x97, 0xa6, 0xea, 0xab, 0x56, 0x1b,
-	0xdd, 0x0f, 0x97, 0x5d, 0x3f, 0xe8, 0xfd, 0xf7, 0xaa, 0xd6, 0xc1, 0xf1, 0x3a, 0x68, 0x6d, 0xd0,
-	0x98, 0xee, 0xde, 0x3f, 0x1d, 0xf6, 0xfa, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc8, 0xb6, 0xed,
-	0xcf, 0xed, 0x01, 0x00, 0x00,
+	// 217 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x34, 0x8f, 0x5f, 0x6b, 0xc2, 0x30,
+	0x14, 0xc5, 0xfd, 0x37, 0xd1, 0xb0, 0xc1, 0x5d, 0xd8, 0xa7, 0x10, 0x34, 0x0f, 0x3e, 0x8d, 0x3d,
+	0x48, 0x5d, 0xe3, 0x90, 0x49, 0x0b, 0x69, 0xcb, 0x60, 0x2f, 0xa3, 0x26, 0x77, 0x5d, 0x60, 0x37,
+	0x57, 0x6a, 0xec, 0xe7, 0x97, 0x0a, 0xbe, 0xfd, 0xce, 0x39, 0x70, 0xe0, 0x27, 0x9e, 0x1d, 0x79,
+	0x65, 0x99, 0x88, 0xc3, 0x79, 0x75, 0x6a, 0x39, 0xb2, 0x1c, 0x3b, 0xf2, 0x8b, 0x8d, 0x98, 0x16,
+	0xb1, 0x8e, 0x97, 0xb3, 0x7c, 0x11, 0x50, 0x65, 0xa9, 0xde, 0xed, 0x33, 0x9d, 0xfe, 0x14, 0x65,
+	0x52, 0x56, 0x05, 0x0c, 0xe4, 0x93, 0x98, 0xe7, 0x9f, 0xf7, 0x38, 0x94, 0x20, 0x1e, 0xb5, 0x31,
+	0xb9, 0xb9, 0x37, 0xa3, 0xc5, 0x46, 0xcc, 0x0e, 0xdc, 0x1c, 0xb0, 0xc3, 0x7f, 0x39, 0x17, 0x0f,
+	0xa5, 0x49, 0xde, 0x35, 0x0c, 0x7a, 0x4c, 0xf5, 0xb6, 0xfa, 0x80, 0xa1, 0x9c, 0x89, 0xc9, 0x3e,
+	0xdb, 0xe5, 0x30, 0xea, 0xe9, 0x2b, 0x31, 0x19, 0x8c, 0xfb, 0xf9, 0xf6, 0x03, 0x93, 0xed, 0xdb,
+	0xf7, 0x6b, 0xe3, 0xe3, 0xdf, 0xe5, 0xb8, 0xb2, 0x4c, 0x8a, 0x4f, 0x18, 0x2c, 0xb7, 0x4e, 0x39,
+	0xec, 0xbc, 0xc5, 0x25, 0xd5, 0xa1, 0x6e, 0x90, 0x30, 0xc4, 0xa5, 0x0f, 0x11, 0xdb, 0xdf, 0xda,
+	0xa2, 0xea, 0xd6, 0xaa, 0x61, 0xe5, 0xc8, 0x1f, 0xa7, 0x37, 0x95, 0xf5, 0x35, 0x00, 0x00, 0xff,
+	0xff, 0x6b, 0x43, 0x1e, 0x6c, 0xdf, 0x00, 0x00, 0x00,
 }
diff --git a/vendor/github.com/opencord/device-management-interface/go/dmi/hw.pb.go b/vendor/github.com/opencord/device-management-interface/go/dmi/hw.pb.go
index 9433fdf..cce095b 100644
--- a/vendor/github.com/opencord/device-management-interface/go/dmi/hw.pb.go
+++ b/vendor/github.com/opencord/device-management-interface/go/dmi/hw.pb.go
@@ -24,23 +24,22 @@
 type ComponentType int32
 
 const (
-	ComponentType_COMPONENT_TYPE_UNDEFINED           ComponentType = 0
-	ComponentType_COMPONENT_TYPE_UNKNOWN             ComponentType = 1
-	ComponentType_COMPONENT_TYPE_CHASSIS             ComponentType = 2
-	ComponentType_COMPONENT_TYPE_BACKPLANE           ComponentType = 3
-	ComponentType_COMPONENT_TYPE_CONTAINER           ComponentType = 4
-	ComponentType_COMPONENT_TYPE_POWER_SUPPLY        ComponentType = 5
-	ComponentType_COMPONENT_TYPE_FAN                 ComponentType = 6
-	ComponentType_COMPONENT_TYPE_SENSOR              ComponentType = 7
-	ComponentType_COMPONENT_TYPE_MODULE              ComponentType = 8
-	ComponentType_COMPONENT_TYPE_PORT                ComponentType = 9
-	ComponentType_COMPONENT_TYPE_CPU                 ComponentType = 10
-	ComponentType_COMPONENT_TYPE_BATTERY             ComponentType = 11
-	ComponentType_COMPONENT_TYPE_STORAGE             ComponentType = 12
-	ComponentType_COMPONENT_TYPE_MEMORY              ComponentType = 13
-	ComponentType_COMPONENT_TYPE_TRANSCEIVER         ComponentType = 14
-	ComponentType_COMPONENT_TYPE_GPON_TRANSCEIVER    ComponentType = 15
-	ComponentType_COMPONENT_TYPE_XGS_PON_TRANSCEIVER ComponentType = 16
+	ComponentType_COMPONENT_TYPE_UNDEFINED    ComponentType = 0
+	ComponentType_COMPONENT_TYPE_UNKNOWN      ComponentType = 1
+	ComponentType_COMPONENT_TYPE_CHASSIS      ComponentType = 2
+	ComponentType_COMPONENT_TYPE_BACKPLANE    ComponentType = 3
+	ComponentType_COMPONENT_TYPE_CONTAINER    ComponentType = 4
+	ComponentType_COMPONENT_TYPE_POWER_SUPPLY ComponentType = 5
+	ComponentType_COMPONENT_TYPE_FAN          ComponentType = 6
+	ComponentType_COMPONENT_TYPE_SENSOR       ComponentType = 7
+	ComponentType_COMPONENT_TYPE_MODULE       ComponentType = 8
+	ComponentType_COMPONENT_TYPE_PORT         ComponentType = 9
+	ComponentType_COMPONENT_TYPE_CPU          ComponentType = 10
+	ComponentType_COMPONENT_TYPE_BATTERY      ComponentType = 11
+	ComponentType_COMPONENT_TYPE_STORAGE      ComponentType = 12
+	ComponentType_COMPONENT_TYPE_MEMORY       ComponentType = 13
+	// A component of type "TRANSCEIVER" could have 0 or more components of type "PORT" as children.
+	ComponentType_COMPONENT_TYPE_TRANSCEIVER ComponentType = 14
 )
 
 var ComponentType_name = map[int32]string{
@@ -59,28 +58,24 @@
 	12: "COMPONENT_TYPE_STORAGE",
 	13: "COMPONENT_TYPE_MEMORY",
 	14: "COMPONENT_TYPE_TRANSCEIVER",
-	15: "COMPONENT_TYPE_GPON_TRANSCEIVER",
-	16: "COMPONENT_TYPE_XGS_PON_TRANSCEIVER",
 }
 
 var ComponentType_value = map[string]int32{
-	"COMPONENT_TYPE_UNDEFINED":           0,
-	"COMPONENT_TYPE_UNKNOWN":             1,
-	"COMPONENT_TYPE_CHASSIS":             2,
-	"COMPONENT_TYPE_BACKPLANE":           3,
-	"COMPONENT_TYPE_CONTAINER":           4,
-	"COMPONENT_TYPE_POWER_SUPPLY":        5,
-	"COMPONENT_TYPE_FAN":                 6,
-	"COMPONENT_TYPE_SENSOR":              7,
-	"COMPONENT_TYPE_MODULE":              8,
-	"COMPONENT_TYPE_PORT":                9,
-	"COMPONENT_TYPE_CPU":                 10,
-	"COMPONENT_TYPE_BATTERY":             11,
-	"COMPONENT_TYPE_STORAGE":             12,
-	"COMPONENT_TYPE_MEMORY":              13,
-	"COMPONENT_TYPE_TRANSCEIVER":         14,
-	"COMPONENT_TYPE_GPON_TRANSCEIVER":    15,
-	"COMPONENT_TYPE_XGS_PON_TRANSCEIVER": 16,
+	"COMPONENT_TYPE_UNDEFINED":    0,
+	"COMPONENT_TYPE_UNKNOWN":      1,
+	"COMPONENT_TYPE_CHASSIS":      2,
+	"COMPONENT_TYPE_BACKPLANE":    3,
+	"COMPONENT_TYPE_CONTAINER":    4,
+	"COMPONENT_TYPE_POWER_SUPPLY": 5,
+	"COMPONENT_TYPE_FAN":          6,
+	"COMPONENT_TYPE_SENSOR":       7,
+	"COMPONENT_TYPE_MODULE":       8,
+	"COMPONENT_TYPE_PORT":         9,
+	"COMPONENT_TYPE_CPU":          10,
+	"COMPONENT_TYPE_BATTERY":      11,
+	"COMPONENT_TYPE_STORAGE":      12,
+	"COMPONENT_TYPE_MEMORY":       13,
+	"COMPONENT_TYPE_TRANSCEIVER":  14,
 }
 
 func (x ComponentType) String() string {
@@ -196,14 +191,14 @@
 type ComponentAlarmState int32
 
 const (
-	ComponentAlarmState_COMP_ALARM_STATE_UNDEFINED    ComponentAlarmState = 0
-	ComponentAlarmState_COMP_ALARM_STATE_UNKNOWN      ComponentAlarmState = 1
-	ComponentAlarmState_COMP_ALARM_STATE_UNDER_REPAIR ComponentAlarmState = 2
-	ComponentAlarmState_COMP_ALARM_STATE_CRITICAL     ComponentAlarmState = 3
-	ComponentAlarmState_COMP_ALARM_STATE_MAJOR        ComponentAlarmState = 4
-	ComponentAlarmState_COMP_ALARM_STATE_MINOR        ComponentAlarmState = 5
-	ComponentAlarmState_COMP_ALARM_STATE_WARNING      ComponentAlarmState = 6
-	ComponentAlarmState_COMP_ALARM_STATE_INTERMEDIATE ComponentAlarmState = 7
+	ComponentAlarmState_COMP_ALARM_STATE_UNDEFINED     ComponentAlarmState = 0
+	ComponentAlarmState_COMP_ALARM_STATE_UNKNOWN       ComponentAlarmState = 1
+	ComponentAlarmState_COMP_ALARM_STATE_UNDER_REPAIR  ComponentAlarmState = 2
+	ComponentAlarmState_COMP_ALARM_STATE_CRITICAL      ComponentAlarmState = 3
+	ComponentAlarmState_COMP_ALARM_STATE_MAJOR         ComponentAlarmState = 4
+	ComponentAlarmState_COMP_ALARM_STATE_MINOR         ComponentAlarmState = 5
+	ComponentAlarmState_COMP_ALARM_STATE_WARNING       ComponentAlarmState = 6
+	ComponentAlarmState_COMP_ALARM_STATE_INDETERMINATE ComponentAlarmState = 7
 )
 
 var ComponentAlarmState_name = map[int32]string{
@@ -214,18 +209,18 @@
 	4: "COMP_ALARM_STATE_MAJOR",
 	5: "COMP_ALARM_STATE_MINOR",
 	6: "COMP_ALARM_STATE_WARNING",
-	7: "COMP_ALARM_STATE_INTERMEDIATE",
+	7: "COMP_ALARM_STATE_INDETERMINATE",
 }
 
 var ComponentAlarmState_value = map[string]int32{
-	"COMP_ALARM_STATE_UNDEFINED":    0,
-	"COMP_ALARM_STATE_UNKNOWN":      1,
-	"COMP_ALARM_STATE_UNDER_REPAIR": 2,
-	"COMP_ALARM_STATE_CRITICAL":     3,
-	"COMP_ALARM_STATE_MAJOR":        4,
-	"COMP_ALARM_STATE_MINOR":        5,
-	"COMP_ALARM_STATE_WARNING":      6,
-	"COMP_ALARM_STATE_INTERMEDIATE": 7,
+	"COMP_ALARM_STATE_UNDEFINED":     0,
+	"COMP_ALARM_STATE_UNKNOWN":       1,
+	"COMP_ALARM_STATE_UNDER_REPAIR":  2,
+	"COMP_ALARM_STATE_CRITICAL":      3,
+	"COMP_ALARM_STATE_MAJOR":         4,
+	"COMP_ALARM_STATE_MINOR":         5,
+	"COMP_ALARM_STATE_WARNING":       6,
+	"COMP_ALARM_STATE_INDETERMINATE": 7,
 }
 
 func (x ComponentAlarmState) String() string {
@@ -270,134 +265,143 @@
 	return fileDescriptor_d7c33d745c4ab367, []int{5}
 }
 
-type SensorValueType int32
+type DataValueType int32
 
 const (
-	SensorValueType_SENSOR_VALUE_TYPE_UNDEFINED   SensorValueType = 0
-	SensorValueType_SENSOR_VALUE_TYPE_OTHER       SensorValueType = 1
-	SensorValueType_SENSOR_VALUE_TYPE_UNKNOWN     SensorValueType = 2
-	SensorValueType_SENSOR_VALUE_TYPE_VOLTS_AC    SensorValueType = 3
-	SensorValueType_SENSOR_VALUE_TYPE_VOLTS_DC    SensorValueType = 4
-	SensorValueType_SENSOR_VALUE_TYPE_AMPERES     SensorValueType = 5
-	SensorValueType_SENSOR_VALUE_TYPE_WATTS       SensorValueType = 6
-	SensorValueType_SENSOR_VALUE_TYPE_HERTZ       SensorValueType = 7
-	SensorValueType_SENSOR_VALUE_TYPE_CELSIUS     SensorValueType = 8
-	SensorValueType_SENSOR_VALUE_TYPE_PERCENT_RH  SensorValueType = 9
-	SensorValueType_SENSOR_VALUE_TYPE_RPM         SensorValueType = 10
-	SensorValueType_SENSOR_VALUE_TYPE_CMM         SensorValueType = 11
-	SensorValueType_SENSOR_VALUE_TYPE_TRUTH_VALUE SensorValueType = 12
+	DataValueType_VALUE_TYPE_UNDEFINED   DataValueType = 0
+	DataValueType_VALUE_TYPE_OTHER       DataValueType = 1
+	DataValueType_VALUE_TYPE_UNKNOWN     DataValueType = 2
+	DataValueType_VALUE_TYPE_VOLTS_AC    DataValueType = 3
+	DataValueType_VALUE_TYPE_VOLTS_DC    DataValueType = 4
+	DataValueType_VALUE_TYPE_AMPERES     DataValueType = 5
+	DataValueType_VALUE_TYPE_WATTS       DataValueType = 6
+	DataValueType_VALUE_TYPE_HERTZ       DataValueType = 7
+	DataValueType_VALUE_TYPE_CELSIUS     DataValueType = 8
+	DataValueType_VALUE_TYPE_PERCENT_RH  DataValueType = 9
+	DataValueType_VALUE_TYPE_RPM         DataValueType = 10
+	DataValueType_VALUE_TYPE_CMM         DataValueType = 11
+	DataValueType_VALUE_TYPE_TRUTH_VALUE DataValueType = 12
+	DataValueType_VALUE_TYPE_PERCENT     DataValueType = 13
+	DataValueType_VALUE_TYPE_METERS      DataValueType = 14
+	DataValueType_VALUE_TYPE_BYTES       DataValueType = 15
 )
 
-var SensorValueType_name = map[int32]string{
-	0:  "SENSOR_VALUE_TYPE_UNDEFINED",
-	1:  "SENSOR_VALUE_TYPE_OTHER",
-	2:  "SENSOR_VALUE_TYPE_UNKNOWN",
-	3:  "SENSOR_VALUE_TYPE_VOLTS_AC",
-	4:  "SENSOR_VALUE_TYPE_VOLTS_DC",
-	5:  "SENSOR_VALUE_TYPE_AMPERES",
-	6:  "SENSOR_VALUE_TYPE_WATTS",
-	7:  "SENSOR_VALUE_TYPE_HERTZ",
-	8:  "SENSOR_VALUE_TYPE_CELSIUS",
-	9:  "SENSOR_VALUE_TYPE_PERCENT_RH",
-	10: "SENSOR_VALUE_TYPE_RPM",
-	11: "SENSOR_VALUE_TYPE_CMM",
-	12: "SENSOR_VALUE_TYPE_TRUTH_VALUE",
+var DataValueType_name = map[int32]string{
+	0:  "VALUE_TYPE_UNDEFINED",
+	1:  "VALUE_TYPE_OTHER",
+	2:  "VALUE_TYPE_UNKNOWN",
+	3:  "VALUE_TYPE_VOLTS_AC",
+	4:  "VALUE_TYPE_VOLTS_DC",
+	5:  "VALUE_TYPE_AMPERES",
+	6:  "VALUE_TYPE_WATTS",
+	7:  "VALUE_TYPE_HERTZ",
+	8:  "VALUE_TYPE_CELSIUS",
+	9:  "VALUE_TYPE_PERCENT_RH",
+	10: "VALUE_TYPE_RPM",
+	11: "VALUE_TYPE_CMM",
+	12: "VALUE_TYPE_TRUTH_VALUE",
+	13: "VALUE_TYPE_PERCENT",
+	14: "VALUE_TYPE_METERS",
+	15: "VALUE_TYPE_BYTES",
 }
 
-var SensorValueType_value = map[string]int32{
-	"SENSOR_VALUE_TYPE_UNDEFINED":   0,
-	"SENSOR_VALUE_TYPE_OTHER":       1,
-	"SENSOR_VALUE_TYPE_UNKNOWN":     2,
-	"SENSOR_VALUE_TYPE_VOLTS_AC":    3,
-	"SENSOR_VALUE_TYPE_VOLTS_DC":    4,
-	"SENSOR_VALUE_TYPE_AMPERES":     5,
-	"SENSOR_VALUE_TYPE_WATTS":       6,
-	"SENSOR_VALUE_TYPE_HERTZ":       7,
-	"SENSOR_VALUE_TYPE_CELSIUS":     8,
-	"SENSOR_VALUE_TYPE_PERCENT_RH":  9,
-	"SENSOR_VALUE_TYPE_RPM":         10,
-	"SENSOR_VALUE_TYPE_CMM":         11,
-	"SENSOR_VALUE_TYPE_TRUTH_VALUE": 12,
+var DataValueType_value = map[string]int32{
+	"VALUE_TYPE_UNDEFINED":   0,
+	"VALUE_TYPE_OTHER":       1,
+	"VALUE_TYPE_UNKNOWN":     2,
+	"VALUE_TYPE_VOLTS_AC":    3,
+	"VALUE_TYPE_VOLTS_DC":    4,
+	"VALUE_TYPE_AMPERES":     5,
+	"VALUE_TYPE_WATTS":       6,
+	"VALUE_TYPE_HERTZ":       7,
+	"VALUE_TYPE_CELSIUS":     8,
+	"VALUE_TYPE_PERCENT_RH":  9,
+	"VALUE_TYPE_RPM":         10,
+	"VALUE_TYPE_CMM":         11,
+	"VALUE_TYPE_TRUTH_VALUE": 12,
+	"VALUE_TYPE_PERCENT":     13,
+	"VALUE_TYPE_METERS":      14,
+	"VALUE_TYPE_BYTES":       15,
 }
 
-func (x SensorValueType) String() string {
-	return proto.EnumName(SensorValueType_name, int32(x))
+func (x DataValueType) String() string {
+	return proto.EnumName(DataValueType_name, int32(x))
 }
 
-func (SensorValueType) EnumDescriptor() ([]byte, []int) {
+func (DataValueType) EnumDescriptor() ([]byte, []int) {
 	return fileDescriptor_d7c33d745c4ab367, []int{6}
 }
 
-type SensorValueScale int32
+type ValueScale int32
 
 const (
-	SensorValueScale_SENSOR_VALUE_SCALE_UNDEFINED SensorValueScale = 0
-	SensorValueScale_SENSOR_VALUE_SCALE_YOCTO     SensorValueScale = 1
-	SensorValueScale_SENSOR_VALUE_SCALE_ZEPTO     SensorValueScale = 2
-	SensorValueScale_SENSOR_VALUE_SCALE_ATTO      SensorValueScale = 3
-	SensorValueScale_SENSOR_VALUE_SCALE_FEMTO     SensorValueScale = 4
-	SensorValueScale_SENSOR_VALUE_SCALE_PICO      SensorValueScale = 5
-	SensorValueScale_SENSOR_VALUE_SCALE_NANO      SensorValueScale = 6
-	SensorValueScale_SENSOR_VALUE_SCALE_MICRO     SensorValueScale = 7
-	SensorValueScale_SENSOR_VALUE_SCALE_MILLI     SensorValueScale = 8
-	SensorValueScale_SENSOR_VALUE_SCALE_UNITS     SensorValueScale = 9
-	SensorValueScale_SENSOR_VALUE_SCALE_KILO      SensorValueScale = 10
-	SensorValueScale_SENSOR_VALUE_SCALE_MEGA      SensorValueScale = 11
-	SensorValueScale_SENSOR_VALUE_SCALE_GIGA      SensorValueScale = 12
-	SensorValueScale_SENSOR_VALUE_SCALE_TERA      SensorValueScale = 13
-	SensorValueScale_SENSOR_VALUE_SCALE_PETA      SensorValueScale = 14
-	SensorValueScale_SENSOR_VALUE_SCALE_EXA       SensorValueScale = 15
-	SensorValueScale_SENSOR_VALUE_SCALE_ZETTA     SensorValueScale = 16
-	SensorValueScale_SENSOR_VALUE_SCALE_YOTTA     SensorValueScale = 17
+	ValueScale_VALUE_SCALE_UNDEFINED ValueScale = 0
+	ValueScale_VALUE_SCALE_YOCTO     ValueScale = 1
+	ValueScale_VALUE_SCALE_ZEPTO     ValueScale = 2
+	ValueScale_VALUE_SCALE_ATTO      ValueScale = 3
+	ValueScale_VALUE_SCALE_FEMTO     ValueScale = 4
+	ValueScale_VALUE_SCALE_PICO      ValueScale = 5
+	ValueScale_VALUE_SCALE_NANO      ValueScale = 6
+	ValueScale_VALUE_SCALE_MICRO     ValueScale = 7
+	ValueScale_VALUE_SCALE_MILLI     ValueScale = 8
+	ValueScale_VALUE_SCALE_UNITS     ValueScale = 9
+	ValueScale_VALUE_SCALE_KILO      ValueScale = 10
+	ValueScale_VALUE_SCALE_MEGA      ValueScale = 11
+	ValueScale_VALUE_SCALE_GIGA      ValueScale = 12
+	ValueScale_VALUE_SCALE_TERA      ValueScale = 13
+	ValueScale_VALUE_SCALE_PETA      ValueScale = 14
+	ValueScale_VALUE_SCALE_EXA       ValueScale = 15
+	ValueScale_VALUE_SCALE_ZETTA     ValueScale = 16
+	ValueScale_VALUE_SCALE_YOTTA     ValueScale = 17
 )
 
-var SensorValueScale_name = map[int32]string{
-	0:  "SENSOR_VALUE_SCALE_UNDEFINED",
-	1:  "SENSOR_VALUE_SCALE_YOCTO",
-	2:  "SENSOR_VALUE_SCALE_ZEPTO",
-	3:  "SENSOR_VALUE_SCALE_ATTO",
-	4:  "SENSOR_VALUE_SCALE_FEMTO",
-	5:  "SENSOR_VALUE_SCALE_PICO",
-	6:  "SENSOR_VALUE_SCALE_NANO",
-	7:  "SENSOR_VALUE_SCALE_MICRO",
-	8:  "SENSOR_VALUE_SCALE_MILLI",
-	9:  "SENSOR_VALUE_SCALE_UNITS",
-	10: "SENSOR_VALUE_SCALE_KILO",
-	11: "SENSOR_VALUE_SCALE_MEGA",
-	12: "SENSOR_VALUE_SCALE_GIGA",
-	13: "SENSOR_VALUE_SCALE_TERA",
-	14: "SENSOR_VALUE_SCALE_PETA",
-	15: "SENSOR_VALUE_SCALE_EXA",
-	16: "SENSOR_VALUE_SCALE_ZETTA",
-	17: "SENSOR_VALUE_SCALE_YOTTA",
+var ValueScale_name = map[int32]string{
+	0:  "VALUE_SCALE_UNDEFINED",
+	1:  "VALUE_SCALE_YOCTO",
+	2:  "VALUE_SCALE_ZEPTO",
+	3:  "VALUE_SCALE_ATTO",
+	4:  "VALUE_SCALE_FEMTO",
+	5:  "VALUE_SCALE_PICO",
+	6:  "VALUE_SCALE_NANO",
+	7:  "VALUE_SCALE_MICRO",
+	8:  "VALUE_SCALE_MILLI",
+	9:  "VALUE_SCALE_UNITS",
+	10: "VALUE_SCALE_KILO",
+	11: "VALUE_SCALE_MEGA",
+	12: "VALUE_SCALE_GIGA",
+	13: "VALUE_SCALE_TERA",
+	14: "VALUE_SCALE_PETA",
+	15: "VALUE_SCALE_EXA",
+	16: "VALUE_SCALE_ZETTA",
+	17: "VALUE_SCALE_YOTTA",
 }
 
-var SensorValueScale_value = map[string]int32{
-	"SENSOR_VALUE_SCALE_UNDEFINED": 0,
-	"SENSOR_VALUE_SCALE_YOCTO":     1,
-	"SENSOR_VALUE_SCALE_ZEPTO":     2,
-	"SENSOR_VALUE_SCALE_ATTO":      3,
-	"SENSOR_VALUE_SCALE_FEMTO":     4,
-	"SENSOR_VALUE_SCALE_PICO":      5,
-	"SENSOR_VALUE_SCALE_NANO":      6,
-	"SENSOR_VALUE_SCALE_MICRO":     7,
-	"SENSOR_VALUE_SCALE_MILLI":     8,
-	"SENSOR_VALUE_SCALE_UNITS":     9,
-	"SENSOR_VALUE_SCALE_KILO":      10,
-	"SENSOR_VALUE_SCALE_MEGA":      11,
-	"SENSOR_VALUE_SCALE_GIGA":      12,
-	"SENSOR_VALUE_SCALE_TERA":      13,
-	"SENSOR_VALUE_SCALE_PETA":      14,
-	"SENSOR_VALUE_SCALE_EXA":       15,
-	"SENSOR_VALUE_SCALE_ZETTA":     16,
-	"SENSOR_VALUE_SCALE_YOTTA":     17,
+var ValueScale_value = map[string]int32{
+	"VALUE_SCALE_UNDEFINED": 0,
+	"VALUE_SCALE_YOCTO":     1,
+	"VALUE_SCALE_ZEPTO":     2,
+	"VALUE_SCALE_ATTO":      3,
+	"VALUE_SCALE_FEMTO":     4,
+	"VALUE_SCALE_PICO":      5,
+	"VALUE_SCALE_NANO":      6,
+	"VALUE_SCALE_MICRO":     7,
+	"VALUE_SCALE_MILLI":     8,
+	"VALUE_SCALE_UNITS":     9,
+	"VALUE_SCALE_KILO":      10,
+	"VALUE_SCALE_MEGA":      11,
+	"VALUE_SCALE_GIGA":      12,
+	"VALUE_SCALE_TERA":      13,
+	"VALUE_SCALE_PETA":      14,
+	"VALUE_SCALE_EXA":       15,
+	"VALUE_SCALE_ZETTA":     16,
+	"VALUE_SCALE_YOTTA":     17,
 }
 
-func (x SensorValueScale) String() string {
-	return proto.EnumName(SensorValueScale_name, int32(x))
+func (x ValueScale) String() string {
+	return proto.EnumName(ValueScale_name, int32(x))
 }
 
-func (SensorValueScale) EnumDescriptor() ([]byte, []int) {
+func (ValueScale) EnumDescriptor() ([]byte, []int) {
 	return fileDescriptor_d7c33d745c4ab367, []int{7}
 }
 
@@ -432,6 +436,270 @@
 	return fileDescriptor_d7c33d745c4ab367, []int{8}
 }
 
+type PortComponentAttributes_ConnectorType int32
+
+const (
+	PortComponentAttributes_CONNECTOR_TYPE_UNDEFINED PortComponentAttributes_ConnectorType = 0
+	PortComponentAttributes_RJ45                     PortComponentAttributes_ConnectorType = 1
+	PortComponentAttributes_FIBER_LC                 PortComponentAttributes_ConnectorType = 2
+	PortComponentAttributes_FIBER_SC_PC              PortComponentAttributes_ConnectorType = 3
+	PortComponentAttributes_FIBER_MPO                PortComponentAttributes_ConnectorType = 4
+)
+
+var PortComponentAttributes_ConnectorType_name = map[int32]string{
+	0: "CONNECTOR_TYPE_UNDEFINED",
+	1: "RJ45",
+	2: "FIBER_LC",
+	3: "FIBER_SC_PC",
+	4: "FIBER_MPO",
+}
+
+var PortComponentAttributes_ConnectorType_value = map[string]int32{
+	"CONNECTOR_TYPE_UNDEFINED": 0,
+	"RJ45":                     1,
+	"FIBER_LC":                 2,
+	"FIBER_SC_PC":              3,
+	"FIBER_MPO":                4,
+}
+
+func (x PortComponentAttributes_ConnectorType) String() string {
+	return proto.EnumName(PortComponentAttributes_ConnectorType_name, int32(x))
+}
+
+func (PortComponentAttributes_ConnectorType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_d7c33d745c4ab367, []int{5, 0}
+}
+
+type PortComponentAttributes_Speed int32
+
+const (
+	PortComponentAttributes_SPEED_UNDEFINED PortComponentAttributes_Speed = 0
+	PortComponentAttributes_DYNAMIC         PortComponentAttributes_Speed = 1
+	PortComponentAttributes_GIGABIT_1       PortComponentAttributes_Speed = 2
+	PortComponentAttributes_GIGABIT_10      PortComponentAttributes_Speed = 3
+	PortComponentAttributes_GIGABIT_25      PortComponentAttributes_Speed = 4
+	PortComponentAttributes_GIGABIT_40      PortComponentAttributes_Speed = 5
+	PortComponentAttributes_GIGABIT_100     PortComponentAttributes_Speed = 6
+	PortComponentAttributes_GIGABIT_400     PortComponentAttributes_Speed = 7
+	PortComponentAttributes_MEGABIT_2500    PortComponentAttributes_Speed = 8
+	PortComponentAttributes_MEGABIT_1250    PortComponentAttributes_Speed = 9
+)
+
+var PortComponentAttributes_Speed_name = map[int32]string{
+	0: "SPEED_UNDEFINED",
+	1: "DYNAMIC",
+	2: "GIGABIT_1",
+	3: "GIGABIT_10",
+	4: "GIGABIT_25",
+	5: "GIGABIT_40",
+	6: "GIGABIT_100",
+	7: "GIGABIT_400",
+	8: "MEGABIT_2500",
+	9: "MEGABIT_1250",
+}
+
+var PortComponentAttributes_Speed_value = map[string]int32{
+	"SPEED_UNDEFINED": 0,
+	"DYNAMIC":         1,
+	"GIGABIT_1":       2,
+	"GIGABIT_10":      3,
+	"GIGABIT_25":      4,
+	"GIGABIT_40":      5,
+	"GIGABIT_100":     6,
+	"GIGABIT_400":     7,
+	"MEGABIT_2500":    8,
+	"MEGABIT_1250":    9,
+}
+
+func (x PortComponentAttributes_Speed) String() string {
+	return proto.EnumName(PortComponentAttributes_Speed_name, int32(x))
+}
+
+func (PortComponentAttributes_Speed) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_d7c33d745c4ab367, []int{5, 1}
+}
+
+type PortComponentAttributes_Protocol int32
+
+const (
+	PortComponentAttributes_PROTOCOL_UNDEFINED PortComponentAttributes_Protocol = 0
+	PortComponentAttributes_ETHERNET           PortComponentAttributes_Protocol = 1
+	PortComponentAttributes_GPON               PortComponentAttributes_Protocol = 2
+	PortComponentAttributes_XGPON              PortComponentAttributes_Protocol = 3
+	PortComponentAttributes_XGSPON             PortComponentAttributes_Protocol = 4
+	PortComponentAttributes_GFAST              PortComponentAttributes_Protocol = 5
+	PortComponentAttributes_SERIAL             PortComponentAttributes_Protocol = 6
+	PortComponentAttributes_EPON               PortComponentAttributes_Protocol = 7
+)
+
+var PortComponentAttributes_Protocol_name = map[int32]string{
+	0: "PROTOCOL_UNDEFINED",
+	1: "ETHERNET",
+	2: "GPON",
+	3: "XGPON",
+	4: "XGSPON",
+	5: "GFAST",
+	6: "SERIAL",
+	7: "EPON",
+}
+
+var PortComponentAttributes_Protocol_value = map[string]int32{
+	"PROTOCOL_UNDEFINED": 0,
+	"ETHERNET":           1,
+	"GPON":               2,
+	"XGPON":              3,
+	"XGSPON":             4,
+	"GFAST":              5,
+	"SERIAL":             6,
+	"EPON":               7,
+}
+
+func (x PortComponentAttributes_Protocol) String() string {
+	return proto.EnumName(PortComponentAttributes_Protocol_name, int32(x))
+}
+
+func (PortComponentAttributes_Protocol) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_d7c33d745c4ab367, []int{5, 2}
+}
+
+type PsuComponentAttributes_SupportedVoltage int32
+
+const (
+	PsuComponentAttributes_SUPPORTED_VOLTAGE_UNDEFINED PsuComponentAttributes_SupportedVoltage = 0
+	PsuComponentAttributes_V48                         PsuComponentAttributes_SupportedVoltage = 1
+	PsuComponentAttributes_V230                        PsuComponentAttributes_SupportedVoltage = 2
+	PsuComponentAttributes_V115                        PsuComponentAttributes_SupportedVoltage = 3
+)
+
+var PsuComponentAttributes_SupportedVoltage_name = map[int32]string{
+	0: "SUPPORTED_VOLTAGE_UNDEFINED",
+	1: "V48",
+	2: "V230",
+	3: "V115",
+}
+
+var PsuComponentAttributes_SupportedVoltage_value = map[string]int32{
+	"SUPPORTED_VOLTAGE_UNDEFINED": 0,
+	"V48":                         1,
+	"V230":                        2,
+	"V115":                        3,
+}
+
+func (x PsuComponentAttributes_SupportedVoltage) String() string {
+	return proto.EnumName(PsuComponentAttributes_SupportedVoltage_name, int32(x))
+}
+
+func (PsuComponentAttributes_SupportedVoltage) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_d7c33d745c4ab367, []int{7, 0}
+}
+
+type TransceiverComponentsAttributes_FormFactor int32
+
+const (
+	TransceiverComponentsAttributes_FORM_FACTOR_UNKNOWN TransceiverComponentsAttributes_FormFactor = 0
+	TransceiverComponentsAttributes_QSFP                TransceiverComponentsAttributes_FormFactor = 1
+	TransceiverComponentsAttributes_QSFP_PLUS           TransceiverComponentsAttributes_FormFactor = 2
+	TransceiverComponentsAttributes_QSFP28              TransceiverComponentsAttributes_FormFactor = 3
+	TransceiverComponentsAttributes_SFP                 TransceiverComponentsAttributes_FormFactor = 4
+	TransceiverComponentsAttributes_SFP_PLUS            TransceiverComponentsAttributes_FormFactor = 5
+	TransceiverComponentsAttributes_XFP                 TransceiverComponentsAttributes_FormFactor = 6
+	TransceiverComponentsAttributes_CFP4                TransceiverComponentsAttributes_FormFactor = 7
+	TransceiverComponentsAttributes_CFP2                TransceiverComponentsAttributes_FormFactor = 8
+	TransceiverComponentsAttributes_CPAK                TransceiverComponentsAttributes_FormFactor = 9
+	TransceiverComponentsAttributes_X2                  TransceiverComponentsAttributes_FormFactor = 10
+	TransceiverComponentsAttributes_OTHER               TransceiverComponentsAttributes_FormFactor = 11
+	TransceiverComponentsAttributes_CFP                 TransceiverComponentsAttributes_FormFactor = 12
+	TransceiverComponentsAttributes_CFP2_ACO            TransceiverComponentsAttributes_FormFactor = 13
+	TransceiverComponentsAttributes_CFP2_DCO            TransceiverComponentsAttributes_FormFactor = 14
+)
+
+var TransceiverComponentsAttributes_FormFactor_name = map[int32]string{
+	0:  "FORM_FACTOR_UNKNOWN",
+	1:  "QSFP",
+	2:  "QSFP_PLUS",
+	3:  "QSFP28",
+	4:  "SFP",
+	5:  "SFP_PLUS",
+	6:  "XFP",
+	7:  "CFP4",
+	8:  "CFP2",
+	9:  "CPAK",
+	10: "X2",
+	11: "OTHER",
+	12: "CFP",
+	13: "CFP2_ACO",
+	14: "CFP2_DCO",
+}
+
+var TransceiverComponentsAttributes_FormFactor_value = map[string]int32{
+	"FORM_FACTOR_UNKNOWN": 0,
+	"QSFP":                1,
+	"QSFP_PLUS":           2,
+	"QSFP28":              3,
+	"SFP":                 4,
+	"SFP_PLUS":            5,
+	"XFP":                 6,
+	"CFP4":                7,
+	"CFP2":                8,
+	"CPAK":                9,
+	"X2":                  10,
+	"OTHER":               11,
+	"CFP":                 12,
+	"CFP2_ACO":            13,
+	"CFP2_DCO":            14,
+}
+
+func (x TransceiverComponentsAttributes_FormFactor) String() string {
+	return proto.EnumName(TransceiverComponentsAttributes_FormFactor_name, int32(x))
+}
+
+func (TransceiverComponentsAttributes_FormFactor) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_d7c33d745c4ab367, []int{8, 0}
+}
+
+type TransceiverComponentsAttributes_Type int32
+
+const (
+	TransceiverComponentsAttributes_TYPE_UNKNOWN TransceiverComponentsAttributes_Type = 0
+	TransceiverComponentsAttributes_ETHERNET     TransceiverComponentsAttributes_Type = 1
+	TransceiverComponentsAttributes_GPON         TransceiverComponentsAttributes_Type = 2
+	TransceiverComponentsAttributes_XGPON        TransceiverComponentsAttributes_Type = 3
+	TransceiverComponentsAttributes_XGSPON       TransceiverComponentsAttributes_Type = 4
+	TransceiverComponentsAttributes_CPON         TransceiverComponentsAttributes_Type = 5
+	TransceiverComponentsAttributes_NG_PON2      TransceiverComponentsAttributes_Type = 6
+	TransceiverComponentsAttributes_EPON         TransceiverComponentsAttributes_Type = 7
+)
+
+var TransceiverComponentsAttributes_Type_name = map[int32]string{
+	0: "TYPE_UNKNOWN",
+	1: "ETHERNET",
+	2: "GPON",
+	3: "XGPON",
+	4: "XGSPON",
+	5: "CPON",
+	6: "NG_PON2",
+	7: "EPON",
+}
+
+var TransceiverComponentsAttributes_Type_value = map[string]int32{
+	"TYPE_UNKNOWN": 0,
+	"ETHERNET":     1,
+	"GPON":         2,
+	"XGPON":        3,
+	"XGSPON":       4,
+	"CPON":         5,
+	"NG_PON2":      6,
+	"EPON":         7,
+}
+
+func (x TransceiverComponentsAttributes_Type) String() string {
+	return proto.EnumName(TransceiverComponentsAttributes_Type_name, int32(x))
+}
+
+func (TransceiverComponentsAttributes_Type) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_d7c33d745c4ab367, []int{8, 1}
+}
+
 type Uuid struct {
 	Uuid                 string   `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -630,8 +898,8 @@
 
 type ComponentSensorData struct {
 	Value           int32                `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
-	Type            SensorValueType      `protobuf:"varint,2,opt,name=type,proto3,enum=dmi.SensorValueType" json:"type,omitempty"`
-	Scale           SensorValueScale     `protobuf:"varint,3,opt,name=scale,proto3,enum=dmi.SensorValueScale" json:"scale,omitempty"`
+	Type            DataValueType        `protobuf:"varint,2,opt,name=type,proto3,enum=dmi.DataValueType" json:"type,omitempty"`
+	Scale           ValueScale           `protobuf:"varint,3,opt,name=scale,proto3,enum=dmi.ValueScale" json:"scale,omitempty"`
 	Precision       int32                `protobuf:"varint,4,opt,name=precision,proto3" json:"precision,omitempty"`
 	Status          SensorStatus         `protobuf:"varint,5,opt,name=status,proto3,enum=dmi.SensorStatus" json:"status,omitempty"`
 	UnitsDisplay    string               `protobuf:"bytes,6,opt,name=units_display,json=unitsDisplay,proto3" json:"units_display,omitempty"`
@@ -676,18 +944,18 @@
 	return 0
 }
 
-func (m *ComponentSensorData) GetType() SensorValueType {
+func (m *ComponentSensorData) GetType() DataValueType {
 	if m != nil {
 		return m.Type
 	}
-	return SensorValueType_SENSOR_VALUE_TYPE_UNDEFINED
+	return DataValueType_VALUE_TYPE_UNDEFINED
 }
 
-func (m *ComponentSensorData) GetScale() SensorValueScale {
+func (m *ComponentSensorData) GetScale() ValueScale {
 	if m != nil {
 		return m.Scale
 	}
-	return SensorValueScale_SENSOR_VALUE_SCALE_UNDEFINED
+	return ValueScale_VALUE_SCALE_UNDEFINED
 }
 
 func (m *ComponentSensorData) GetPrecision() int32 {
@@ -732,40 +1000,280 @@
 	return ""
 }
 
+type PortComponentAttributes struct {
+	ConnectorType        PortComponentAttributes_ConnectorType `protobuf:"varint,1,opt,name=connector_type,json=connectorType,proto3,enum=dmi.PortComponentAttributes_ConnectorType" json:"connector_type,omitempty"`
+	Speed                PortComponentAttributes_Speed         `protobuf:"varint,2,opt,name=speed,proto3,enum=dmi.PortComponentAttributes_Speed" json:"speed,omitempty"`
+	Protocol             PortComponentAttributes_Protocol      `protobuf:"varint,3,opt,name=protocol,proto3,enum=dmi.PortComponentAttributes_Protocol" json:"protocol,omitempty"`
+	PhysicalLabel        string                                `protobuf:"bytes,4,opt,name=physical_label,json=physicalLabel,proto3" json:"physical_label,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                              `json:"-"`
+	XXX_unrecognized     []byte                                `json:"-"`
+	XXX_sizecache        int32                                 `json:"-"`
+}
+
+func (m *PortComponentAttributes) Reset()         { *m = PortComponentAttributes{} }
+func (m *PortComponentAttributes) String() string { return proto.CompactTextString(m) }
+func (*PortComponentAttributes) ProtoMessage()    {}
+func (*PortComponentAttributes) Descriptor() ([]byte, []int) {
+	return fileDescriptor_d7c33d745c4ab367, []int{5}
+}
+
+func (m *PortComponentAttributes) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PortComponentAttributes.Unmarshal(m, b)
+}
+func (m *PortComponentAttributes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PortComponentAttributes.Marshal(b, m, deterministic)
+}
+func (m *PortComponentAttributes) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PortComponentAttributes.Merge(m, src)
+}
+func (m *PortComponentAttributes) XXX_Size() int {
+	return xxx_messageInfo_PortComponentAttributes.Size(m)
+}
+func (m *PortComponentAttributes) XXX_DiscardUnknown() {
+	xxx_messageInfo_PortComponentAttributes.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PortComponentAttributes proto.InternalMessageInfo
+
+func (m *PortComponentAttributes) GetConnectorType() PortComponentAttributes_ConnectorType {
+	if m != nil {
+		return m.ConnectorType
+	}
+	return PortComponentAttributes_CONNECTOR_TYPE_UNDEFINED
+}
+
+func (m *PortComponentAttributes) GetSpeed() PortComponentAttributes_Speed {
+	if m != nil {
+		return m.Speed
+	}
+	return PortComponentAttributes_SPEED_UNDEFINED
+}
+
+func (m *PortComponentAttributes) GetProtocol() PortComponentAttributes_Protocol {
+	if m != nil {
+		return m.Protocol
+	}
+	return PortComponentAttributes_PROTOCOL_UNDEFINED
+}
+
+func (m *PortComponentAttributes) GetPhysicalLabel() string {
+	if m != nil {
+		return m.PhysicalLabel
+	}
+	return ""
+}
+
+type ContainerComponentAttributes struct {
+	PhysicalLabel        string   `protobuf:"bytes,1,opt,name=physical_label,json=physicalLabel,proto3" json:"physical_label,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ContainerComponentAttributes) Reset()         { *m = ContainerComponentAttributes{} }
+func (m *ContainerComponentAttributes) String() string { return proto.CompactTextString(m) }
+func (*ContainerComponentAttributes) ProtoMessage()    {}
+func (*ContainerComponentAttributes) Descriptor() ([]byte, []int) {
+	return fileDescriptor_d7c33d745c4ab367, []int{6}
+}
+
+func (m *ContainerComponentAttributes) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ContainerComponentAttributes.Unmarshal(m, b)
+}
+func (m *ContainerComponentAttributes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ContainerComponentAttributes.Marshal(b, m, deterministic)
+}
+func (m *ContainerComponentAttributes) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ContainerComponentAttributes.Merge(m, src)
+}
+func (m *ContainerComponentAttributes) XXX_Size() int {
+	return xxx_messageInfo_ContainerComponentAttributes.Size(m)
+}
+func (m *ContainerComponentAttributes) XXX_DiscardUnknown() {
+	xxx_messageInfo_ContainerComponentAttributes.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ContainerComponentAttributes proto.InternalMessageInfo
+
+func (m *ContainerComponentAttributes) GetPhysicalLabel() string {
+	if m != nil {
+		return m.PhysicalLabel
+	}
+	return ""
+}
+
+type PsuComponentAttributes struct {
+	SupportedVoltage     PsuComponentAttributes_SupportedVoltage `protobuf:"varint,1,opt,name=supported_voltage,json=supportedVoltage,proto3,enum=dmi.PsuComponentAttributes_SupportedVoltage" json:"supported_voltage,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                `json:"-"`
+	XXX_unrecognized     []byte                                  `json:"-"`
+	XXX_sizecache        int32                                   `json:"-"`
+}
+
+func (m *PsuComponentAttributes) Reset()         { *m = PsuComponentAttributes{} }
+func (m *PsuComponentAttributes) String() string { return proto.CompactTextString(m) }
+func (*PsuComponentAttributes) ProtoMessage()    {}
+func (*PsuComponentAttributes) Descriptor() ([]byte, []int) {
+	return fileDescriptor_d7c33d745c4ab367, []int{7}
+}
+
+func (m *PsuComponentAttributes) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PsuComponentAttributes.Unmarshal(m, b)
+}
+func (m *PsuComponentAttributes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PsuComponentAttributes.Marshal(b, m, deterministic)
+}
+func (m *PsuComponentAttributes) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PsuComponentAttributes.Merge(m, src)
+}
+func (m *PsuComponentAttributes) XXX_Size() int {
+	return xxx_messageInfo_PsuComponentAttributes.Size(m)
+}
+func (m *PsuComponentAttributes) XXX_DiscardUnknown() {
+	xxx_messageInfo_PsuComponentAttributes.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PsuComponentAttributes proto.InternalMessageInfo
+
+func (m *PsuComponentAttributes) GetSupportedVoltage() PsuComponentAttributes_SupportedVoltage {
+	if m != nil {
+		return m.SupportedVoltage
+	}
+	return PsuComponentAttributes_SUPPORTED_VOLTAGE_UNDEFINED
+}
+
+type TransceiverComponentsAttributes struct {
+	FormFactor TransceiverComponentsAttributes_FormFactor `protobuf:"varint,1,opt,name=form_factor,json=formFactor,proto3,enum=dmi.TransceiverComponentsAttributes_FormFactor" json:"form_factor,omitempty"`
+	TransType  TransceiverComponentsAttributes_Type       `protobuf:"varint,2,opt,name=trans_type,json=transType,proto3,enum=dmi.TransceiverComponentsAttributes_Type" json:"trans_type,omitempty"`
+	// The maximum reach that can be achieved by this transceiver
+	MaxDistance      uint32     `protobuf:"varint,3,opt,name=max_distance,json=maxDistance,proto3" json:"max_distance,omitempty"`
+	MaxDistanceScale ValueScale `protobuf:"varint,4,opt,name=max_distance_scale,json=maxDistanceScale,proto3,enum=dmi.ValueScale" json:"max_distance_scale,omitempty"`
+	// The receive and transmit wavelengths that the transeiver operates on
+	RxWavelength         []uint32   `protobuf:"varint,5,rep,packed,name=rx_wavelength,json=rxWavelength,proto3" json:"rx_wavelength,omitempty"`
+	TxWavelength         []uint32   `protobuf:"varint,6,rep,packed,name=tx_wavelength,json=txWavelength,proto3" json:"tx_wavelength,omitempty"`
+	WavelengthScale      ValueScale `protobuf:"varint,7,opt,name=wavelength_scale,json=wavelengthScale,proto3,enum=dmi.ValueScale" json:"wavelength_scale,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
+	XXX_unrecognized     []byte     `json:"-"`
+	XXX_sizecache        int32      `json:"-"`
+}
+
+func (m *TransceiverComponentsAttributes) Reset()         { *m = TransceiverComponentsAttributes{} }
+func (m *TransceiverComponentsAttributes) String() string { return proto.CompactTextString(m) }
+func (*TransceiverComponentsAttributes) ProtoMessage()    {}
+func (*TransceiverComponentsAttributes) Descriptor() ([]byte, []int) {
+	return fileDescriptor_d7c33d745c4ab367, []int{8}
+}
+
+func (m *TransceiverComponentsAttributes) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TransceiverComponentsAttributes.Unmarshal(m, b)
+}
+func (m *TransceiverComponentsAttributes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TransceiverComponentsAttributes.Marshal(b, m, deterministic)
+}
+func (m *TransceiverComponentsAttributes) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TransceiverComponentsAttributes.Merge(m, src)
+}
+func (m *TransceiverComponentsAttributes) XXX_Size() int {
+	return xxx_messageInfo_TransceiverComponentsAttributes.Size(m)
+}
+func (m *TransceiverComponentsAttributes) XXX_DiscardUnknown() {
+	xxx_messageInfo_TransceiverComponentsAttributes.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TransceiverComponentsAttributes proto.InternalMessageInfo
+
+func (m *TransceiverComponentsAttributes) GetFormFactor() TransceiverComponentsAttributes_FormFactor {
+	if m != nil {
+		return m.FormFactor
+	}
+	return TransceiverComponentsAttributes_FORM_FACTOR_UNKNOWN
+}
+
+func (m *TransceiverComponentsAttributes) GetTransType() TransceiverComponentsAttributes_Type {
+	if m != nil {
+		return m.TransType
+	}
+	return TransceiverComponentsAttributes_TYPE_UNKNOWN
+}
+
+func (m *TransceiverComponentsAttributes) GetMaxDistance() uint32 {
+	if m != nil {
+		return m.MaxDistance
+	}
+	return 0
+}
+
+func (m *TransceiverComponentsAttributes) GetMaxDistanceScale() ValueScale {
+	if m != nil {
+		return m.MaxDistanceScale
+	}
+	return ValueScale_VALUE_SCALE_UNDEFINED
+}
+
+func (m *TransceiverComponentsAttributes) GetRxWavelength() []uint32 {
+	if m != nil {
+		return m.RxWavelength
+	}
+	return nil
+}
+
+func (m *TransceiverComponentsAttributes) GetTxWavelength() []uint32 {
+	if m != nil {
+		return m.TxWavelength
+	}
+	return nil
+}
+
+func (m *TransceiverComponentsAttributes) GetWavelengthScale() ValueScale {
+	if m != nil {
+		return m.WavelengthScale
+	}
+	return ValueScale_VALUE_SCALE_UNDEFINED
+}
+
 type Component struct {
-	// The name of a component uniquely identifies an component within the Hardware
+	// The name of a component uniquely identifies a component within the hardware
 	Name        string        `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	Class       ComponentType `protobuf:"varint,2,opt,name=class,proto3,enum=dmi.ComponentType" json:"class,omitempty"`
 	Description string        `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
-	// The name of the parent of this component, empty "" in case of the root component
-	Parent       string               `protobuf:"bytes,4,opt,name=parent,proto3" json:"parent,omitempty"`
-	ParentRelPos int32                `protobuf:"varint,5,opt,name=parent_rel_pos,json=parentRelPos,proto3" json:"parent_rel_pos,omitempty"`
-	Children     []*Component         `protobuf:"bytes,6,rep,name=children,proto3" json:"children,omitempty"`
-	HardwareRev  string               `protobuf:"bytes,7,opt,name=hardware_rev,json=hardwareRev,proto3" json:"hardware_rev,omitempty"`
-	FirmwareRev  string               `protobuf:"bytes,8,opt,name=firmware_rev,json=firmwareRev,proto3" json:"firmware_rev,omitempty"`
-	SoftwareRev  string               `protobuf:"bytes,9,opt,name=software_rev,json=softwareRev,proto3" json:"software_rev,omitempty"`
-	SerialNum    string               `protobuf:"bytes,10,opt,name=serial_num,json=serialNum,proto3" json:"serial_num,omitempty"`
-	MfgName      string               `protobuf:"bytes,11,opt,name=mfg_name,json=mfgName,proto3" json:"mfg_name,omitempty"`
-	ModelName    string               `protobuf:"bytes,12,opt,name=model_name,json=modelName,proto3" json:"model_name,omitempty"`
-	Alias        string               `protobuf:"bytes,13,opt,name=alias,proto3" json:"alias,omitempty"`
-	AssetId      string               `protobuf:"bytes,14,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty"`
-	IsFru        bool                 `protobuf:"varint,15,opt,name=is_fru,json=isFru,proto3" json:"is_fru,omitempty"`
-	MfgDate      *timestamp.Timestamp `protobuf:"bytes,16,opt,name=mfg_date,json=mfgDate,proto3" json:"mfg_date,omitempty"`
-	Uri          *Uri                 `protobuf:"bytes,17,opt,name=uri,proto3" json:"uri,omitempty"`
+	// The name of the parent of this component, empty string("") in case of the root component
+	Parent       string       `protobuf:"bytes,4,opt,name=parent,proto3" json:"parent,omitempty"`
+	ParentRelPos int32        `protobuf:"varint,5,opt,name=parent_rel_pos,json=parentRelPos,proto3" json:"parent_rel_pos,omitempty"`
+	Children     []*Component `protobuf:"bytes,6,rep,name=children,proto3" json:"children,omitempty"`
+	HardwareRev  string       `protobuf:"bytes,7,opt,name=hardware_rev,json=hardwareRev,proto3" json:"hardware_rev,omitempty"`
+	FirmwareRev  string       `protobuf:"bytes,8,opt,name=firmware_rev,json=firmwareRev,proto3" json:"firmware_rev,omitempty"`
+	SoftwareRev  string       `protobuf:"bytes,9,opt,name=software_rev,json=softwareRev,proto3" json:"software_rev,omitempty"`
+	SerialNum    string       `protobuf:"bytes,10,opt,name=serial_num,json=serialNum,proto3" json:"serial_num,omitempty"`
+	MfgName      string       `protobuf:"bytes,11,opt,name=mfg_name,json=mfgName,proto3" json:"mfg_name,omitempty"`
+	// Apart from the definition of this attribute as defined in RFC 8348, implementations could choose to carry
+	// the manufacturer's part number in this attribute.
+	ModelName string               `protobuf:"bytes,12,opt,name=model_name,json=modelName,proto3" json:"model_name,omitempty"`
+	Alias     string               `protobuf:"bytes,13,opt,name=alias,proto3" json:"alias,omitempty"`
+	AssetId   string               `protobuf:"bytes,14,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty"`
+	IsFru     bool                 `protobuf:"varint,15,opt,name=is_fru,json=isFru,proto3" json:"is_fru,omitempty"`
+	MfgDate   *timestamp.Timestamp `protobuf:"bytes,16,opt,name=mfg_date,json=mfgDate,proto3" json:"mfg_date,omitempty"`
+	Uri       *Uri                 `protobuf:"bytes,17,opt,name=uri,proto3" json:"uri,omitempty"`
 	// The uuid of the component uniquely identifies the component across the entire system
-	Uuid                 *Uuid                  `protobuf:"bytes,18,opt,name=uuid,proto3" json:"uuid,omitempty"`
-	State                *ComponentState        `protobuf:"bytes,19,opt,name=state,proto3" json:"state,omitempty"`
-	SensorData           []*ComponentSensorData `protobuf:"bytes,20,rep,name=sensor_data,json=sensorData,proto3" json:"sensor_data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
-	XXX_unrecognized     []byte                 `json:"-"`
-	XXX_sizecache        int32                  `json:"-"`
+	Uuid       *Uuid                  `protobuf:"bytes,18,opt,name=uuid,proto3" json:"uuid,omitempty"`
+	State      *ComponentState        `protobuf:"bytes,19,opt,name=state,proto3" json:"state,omitempty"`
+	SensorData []*ComponentSensorData `protobuf:"bytes,20,rep,name=sensor_data,json=sensorData,proto3" json:"sensor_data,omitempty"`
+	// The attribute 'specific' can be populated for components where more details are required by the users of the DMI interface
+	//
+	// Types that are valid to be assigned to Specific:
+	//	*Component_PortAttr
+	//	*Component_ContainerAttr
+	//	*Component_PsuAttr
+	//	*Component_TransceiverAttr
+	Specific             isComponent_Specific `protobuf_oneof:"specific"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
 }
 
 func (m *Component) Reset()         { *m = Component{} }
 func (m *Component) String() string { return proto.CompactTextString(m) }
 func (*Component) ProtoMessage()    {}
 func (*Component) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d7c33d745c4ab367, []int{5}
+	return fileDescriptor_d7c33d745c4ab367, []int{9}
 }
 
 func (m *Component) XXX_Unmarshal(b []byte) error {
@@ -926,21 +1434,97 @@
 	return nil
 }
 
+type isComponent_Specific interface {
+	isComponent_Specific()
+}
+
+type Component_PortAttr struct {
+	PortAttr *PortComponentAttributes `protobuf:"bytes,50,opt,name=port_attr,json=portAttr,proto3,oneof"`
+}
+
+type Component_ContainerAttr struct {
+	ContainerAttr *ContainerComponentAttributes `protobuf:"bytes,51,opt,name=container_attr,json=containerAttr,proto3,oneof"`
+}
+
+type Component_PsuAttr struct {
+	PsuAttr *PsuComponentAttributes `protobuf:"bytes,52,opt,name=psu_attr,json=psuAttr,proto3,oneof"`
+}
+
+type Component_TransceiverAttr struct {
+	TransceiverAttr *TransceiverComponentsAttributes `protobuf:"bytes,53,opt,name=transceiver_attr,json=transceiverAttr,proto3,oneof"`
+}
+
+func (*Component_PortAttr) isComponent_Specific() {}
+
+func (*Component_ContainerAttr) isComponent_Specific() {}
+
+func (*Component_PsuAttr) isComponent_Specific() {}
+
+func (*Component_TransceiverAttr) isComponent_Specific() {}
+
+func (m *Component) GetSpecific() isComponent_Specific {
+	if m != nil {
+		return m.Specific
+	}
+	return nil
+}
+
+func (m *Component) GetPortAttr() *PortComponentAttributes {
+	if x, ok := m.GetSpecific().(*Component_PortAttr); ok {
+		return x.PortAttr
+	}
+	return nil
+}
+
+func (m *Component) GetContainerAttr() *ContainerComponentAttributes {
+	if x, ok := m.GetSpecific().(*Component_ContainerAttr); ok {
+		return x.ContainerAttr
+	}
+	return nil
+}
+
+func (m *Component) GetPsuAttr() *PsuComponentAttributes {
+	if x, ok := m.GetSpecific().(*Component_PsuAttr); ok {
+		return x.PsuAttr
+	}
+	return nil
+}
+
+func (m *Component) GetTransceiverAttr() *TransceiverComponentsAttributes {
+	if x, ok := m.GetSpecific().(*Component_TransceiverAttr); ok {
+		return x.TransceiverAttr
+	}
+	return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*Component) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*Component_PortAttr)(nil),
+		(*Component_ContainerAttr)(nil),
+		(*Component_PsuAttr)(nil),
+		(*Component_TransceiverAttr)(nil),
+	}
+}
+
 type Hardware struct {
 	LastChange *timestamp.Timestamp `protobuf:"bytes,1,opt,name=last_change,json=lastChange,proto3" json:"last_change,omitempty"`
 	// Each HW has one parent/root and all other components are children of this
 	// The class of the root component would be set as UNDEFINED
-	Root                 *Component `protobuf:"bytes,2,opt,name=root,proto3" json:"root,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
-	XXX_unrecognized     []byte     `json:"-"`
-	XXX_sizecache        int32      `json:"-"`
+	Root *Component `protobuf:"bytes,2,opt,name=root,proto3" json:"root,omitempty"`
+	// TODO: Authentication?
+	// Timestamp at which the hardware last booted
+	LastBooted           *timestamp.Timestamp `protobuf:"bytes,3,opt,name=last_booted,json=lastBooted,proto3" json:"last_booted,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
 }
 
 func (m *Hardware) Reset()         { *m = Hardware{} }
 func (m *Hardware) String() string { return proto.CompactTextString(m) }
 func (*Hardware) ProtoMessage()    {}
 func (*Hardware) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d7c33d745c4ab367, []int{6}
+	return fileDescriptor_d7c33d745c4ab367, []int{10}
 }
 
 func (m *Hardware) XXX_Unmarshal(b []byte) error {
@@ -975,6 +1559,13 @@
 	return nil
 }
 
+func (m *Hardware) GetLastBooted() *timestamp.Timestamp {
+	if m != nil {
+		return m.LastBooted
+	}
+	return nil
+}
+
 // The attributes of a component which are modifiable from the client side
 type ModifiableComponent struct {
 	// The name has to be unique for each component within the hardware and implementations need to
@@ -996,7 +1587,7 @@
 func (m *ModifiableComponent) String() string { return proto.CompactTextString(m) }
 func (*ModifiableComponent) ProtoMessage()    {}
 func (*ModifiableComponent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d7c33d745c4ab367, []int{7}
+	return fileDescriptor_d7c33d745c4ab367, []int{11}
 }
 
 func (m *ModifiableComponent) XXX_Unmarshal(b []byte) error {
@@ -1080,14 +1671,24 @@
 	proto.RegisterEnum("dmi.ComponentUsageState", ComponentUsageState_name, ComponentUsageState_value)
 	proto.RegisterEnum("dmi.ComponentAlarmState", ComponentAlarmState_name, ComponentAlarmState_value)
 	proto.RegisterEnum("dmi.ComponentStandbyState", ComponentStandbyState_name, ComponentStandbyState_value)
-	proto.RegisterEnum("dmi.SensorValueType", SensorValueType_name, SensorValueType_value)
-	proto.RegisterEnum("dmi.SensorValueScale", SensorValueScale_name, SensorValueScale_value)
+	proto.RegisterEnum("dmi.DataValueType", DataValueType_name, DataValueType_value)
+	proto.RegisterEnum("dmi.ValueScale", ValueScale_name, ValueScale_value)
 	proto.RegisterEnum("dmi.SensorStatus", SensorStatus_name, SensorStatus_value)
+	proto.RegisterEnum("dmi.PortComponentAttributes_ConnectorType", PortComponentAttributes_ConnectorType_name, PortComponentAttributes_ConnectorType_value)
+	proto.RegisterEnum("dmi.PortComponentAttributes_Speed", PortComponentAttributes_Speed_name, PortComponentAttributes_Speed_value)
+	proto.RegisterEnum("dmi.PortComponentAttributes_Protocol", PortComponentAttributes_Protocol_name, PortComponentAttributes_Protocol_value)
+	proto.RegisterEnum("dmi.PsuComponentAttributes_SupportedVoltage", PsuComponentAttributes_SupportedVoltage_name, PsuComponentAttributes_SupportedVoltage_value)
+	proto.RegisterEnum("dmi.TransceiverComponentsAttributes_FormFactor", TransceiverComponentsAttributes_FormFactor_name, TransceiverComponentsAttributes_FormFactor_value)
+	proto.RegisterEnum("dmi.TransceiverComponentsAttributes_Type", TransceiverComponentsAttributes_Type_name, TransceiverComponentsAttributes_Type_value)
 	proto.RegisterType((*Uuid)(nil), "dmi.Uuid")
 	proto.RegisterType((*HardwareID)(nil), "dmi.HardwareID")
 	proto.RegisterType((*Uri)(nil), "dmi.Uri")
 	proto.RegisterType((*ComponentState)(nil), "dmi.ComponentState")
 	proto.RegisterType((*ComponentSensorData)(nil), "dmi.ComponentSensorData")
+	proto.RegisterType((*PortComponentAttributes)(nil), "dmi.PortComponentAttributes")
+	proto.RegisterType((*ContainerComponentAttributes)(nil), "dmi.ContainerComponentAttributes")
+	proto.RegisterType((*PsuComponentAttributes)(nil), "dmi.PsuComponentAttributes")
+	proto.RegisterType((*TransceiverComponentsAttributes)(nil), "dmi.TransceiverComponentsAttributes")
 	proto.RegisterType((*Component)(nil), "dmi.Component")
 	proto.RegisterType((*Hardware)(nil), "dmi.Hardware")
 	proto.RegisterType((*ModifiableComponent)(nil), "dmi.ModifiableComponent")
@@ -1096,116 +1697,168 @@
 func init() { proto.RegisterFile("dmi/hw.proto", fileDescriptor_d7c33d745c4ab367) }
 
 var fileDescriptor_d7c33d745c4ab367 = []byte{
-	// 1762 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x97, 0xcf, 0x6f, 0xe3, 0xc6,
-	0x15, 0xc7, 0x2b, 0xeb, 0x87, 0xa5, 0x27, 0xd9, 0x9e, 0x1d, 0x7b, 0xd7, 0x5a, 0xef, 0x3a, 0xeb,
-	0x28, 0x41, 0xe0, 0x28, 0x88, 0x0d, 0x6c, 0xd0, 0xa2, 0x41, 0x0e, 0xc5, 0x98, 0x9a, 0xb5, 0x59,
-	0x4b, 0xa4, 0x30, 0x1c, 0x79, 0xe3, 0xbd, 0x10, 0xb4, 0x48, 0xdb, 0x44, 0x45, 0x51, 0x20, 0x29,
-	0x07, 0x7b, 0x6c, 0xd1, 0x73, 0xff, 0x87, 0x5e, 0x8a, 0xf4, 0xdc, 0x43, 0x2f, 0xfd, 0xaf, 0xfa,
-	0x0f, 0x14, 0x33, 0x24, 0xf5, 0x73, 0xb4, 0xc9, 0xa1, 0xb7, 0xd1, 0xfb, 0x7c, 0xdf, 0xcc, 0xe3,
-	0x9b, 0xf7, 0x1e, 0x29, 0x68, 0xb8, 0x81, 0x7f, 0xfe, 0xf8, 0xd3, 0xd9, 0x24, 0x0a, 0x93, 0x10,
-	0x17, 0xdd, 0xc0, 0x3f, 0x7a, 0xf3, 0x10, 0x86, 0x0f, 0x23, 0xef, 0x5c, 0x9a, 0xee, 0xa6, 0xf7,
-	0xe7, 0x89, 0x1f, 0x78, 0x71, 0xe2, 0x04, 0x93, 0x54, 0xd5, 0x3a, 0x82, 0xd2, 0x60, 0xea, 0xbb,
-	0x18, 0x43, 0x69, 0x3a, 0xf5, 0xdd, 0x66, 0xe1, 0xa4, 0x70, 0x5a, 0x63, 0x72, 0xdd, 0xfa, 0x06,
-	0xe0, 0xca, 0x89, 0xdc, 0x9f, 0x9c, 0xc8, 0xd3, 0x3b, 0xf8, 0x78, 0x41, 0x51, 0x7f, 0x5b, 0x3b,
-	0x73, 0x03, 0xff, 0x4c, 0xb8, 0x66, 0xe2, 0x43, 0x28, 0x0e, 0x22, 0x1f, 0x23, 0x28, 0x4e, 0x23,
-	0x3f, 0xdb, 0x46, 0x2c, 0x5b, 0x7f, 0x2d, 0xc2, 0xae, 0x16, 0x06, 0x93, 0x70, 0xec, 0x8d, 0x13,
-	0x2b, 0x71, 0x12, 0x0f, 0x5f, 0x01, 0x8e, 0xc5, 0xc2, 0x1e, 0x39, 0x71, 0x62, 0x0f, 0x1f, 0x9d,
-	0xf1, 0x83, 0x97, 0x6f, 0x7c, 0x74, 0x96, 0x86, 0x7c, 0x96, 0x87, 0x7c, 0xc6, 0xf3, 0x90, 0x19,
-	0x92, 0x5e, 0x5d, 0x27, 0x4e, 0xb4, 0xd4, 0x07, 0x7f, 0x0f, 0x75, 0xc7, 0x0d, 0xfc, 0xb1, 0x2d,
-	0x49, 0x73, 0xeb, 0xa4, 0x70, 0xba, 0xfb, 0xb6, 0x29, 0x63, 0x9b, 0x9d, 0x49, 0x84, 0x40, 0x1e,
-	0xcc, 0xc0, 0x99, 0xad, 0xf1, 0xef, 0x00, 0xc2, 0x89, 0x17, 0x65, 0x9e, 0x45, 0xe9, 0x79, 0xb8,
-	0xec, 0x69, 0x4e, 0xbc, 0x28, 0x75, 0xac, 0x85, 0xf9, 0x52, 0x1c, 0x39, 0x8d, 0x9d, 0x07, 0x2f,
-	0x73, 0x2c, 0xa9, 0x8e, 0x1c, 0x08, 0x41, 0x76, 0xe4, 0x74, 0xb6, 0x96, 0xd1, 0x8e, 0x9c, 0x28,
-	0xc8, 0x5c, 0xcb, 0xca, 0x68, 0x85, 0x20, 0x8f, 0x76, 0xb6, 0xc6, 0x7f, 0x80, 0x9d, 0x38, 0x71,
-	0xc6, 0xee, 0xdd, 0xc7, 0xcc, 0xb9, 0x22, 0x9d, 0x8f, 0x96, 0x9d, 0xad, 0x54, 0x92, 0xba, 0x37,
-	0xe2, 0x85, 0x5f, 0xad, 0xff, 0x6e, 0xc1, 0xfe, 0x5c, 0xe7, 0x8d, 0xe3, 0x30, 0xea, 0x38, 0x89,
-	0x83, 0x0f, 0xa0, 0xfc, 0xe4, 0x8c, 0xa6, 0x9e, 0x4c, 0x7f, 0x99, 0xa5, 0x3f, 0xf0, 0x29, 0x94,
-	0x92, 0x8f, 0x93, 0x3c, 0xa1, 0x07, 0xf2, 0x94, 0xd4, 0xe9, 0x46, 0x70, 0xfe, 0x71, 0xe2, 0x31,
-	0xa9, 0xc0, 0xdf, 0x40, 0x39, 0x1e, 0x3a, 0xa3, 0x3c, 0x83, 0xcf, 0x57, 0xa5, 0x96, 0x80, 0x2c,
-	0xd5, 0xe0, 0xd7, 0x50, 0x9b, 0x44, 0xde, 0xd0, 0x8f, 0xfd, 0x70, 0x2c, 0x33, 0x57, 0x66, 0x73,
-	0x03, 0xfe, 0x1a, 0x2a, 0xe2, 0xd9, 0xa6, 0x71, 0x96, 0x99, 0x67, 0x0b, 0x7b, 0x59, 0x12, 0xb0,
-	0x4c, 0x80, 0xbf, 0x80, 0x9d, 0xe9, 0xd8, 0x4f, 0x62, 0xdb, 0xf5, 0xe3, 0xc9, 0xc8, 0xf9, 0x28,
-	0xd3, 0x51, 0x63, 0x0d, 0x69, 0xec, 0xa4, 0x36, 0xfc, 0x7b, 0xa8, 0xcd, 0xca, 0xbd, 0xb9, 0xfd,
-	0x8b, 0xd5, 0x35, 0x17, 0xe3, 0x36, 0x3c, 0x93, 0x79, 0xb0, 0xa7, 0x13, 0x57, 0xd4, 0x69, 0x24,
-	0x32, 0x5e, 0x3d, 0x29, 0x9c, 0xee, 0xb0, 0x3d, 0x09, 0x06, 0xd2, 0xce, 0xc4, 0xcd, 0xbc, 0x82,
-	0x9a, 0xeb, 0x24, 0x8e, 0x2d, 0xf3, 0x55, 0x93, 0x61, 0x54, 0x85, 0x41, 0xe4, 0xa8, 0xf5, 0xef,
-	0x32, 0xd4, 0x66, 0x59, 0x17, 0x4d, 0x36, 0x76, 0x02, 0x2f, 0x6f, 0x32, 0xb1, 0xc6, 0xa7, 0x50,
-	0x1e, 0x8e, 0x9c, 0x38, 0xce, 0x52, 0x8d, 0x97, 0x2f, 0x54, 0x26, 0x3a, 0x15, 0xe0, 0x13, 0xa8,
-	0xbb, 0x5e, 0x3c, 0x8c, 0xfc, 0x49, 0x22, 0xd2, 0x57, 0x94, 0x9b, 0x2c, 0x9a, 0xf0, 0x0b, 0xa8,
-	0x4c, 0x9c, 0xc8, 0x1b, 0x27, 0x32, 0xb7, 0x35, 0x96, 0xfd, 0xc2, 0x5f, 0xc2, 0x6e, 0xba, 0xb2,
-	0x23, 0x6f, 0x64, 0x4f, 0xc2, 0x34, 0xc1, 0x65, 0xd6, 0x48, 0xad, 0xcc, 0x1b, 0xf5, 0xc3, 0x18,
-	0xb7, 0xa1, 0x3a, 0x7c, 0xf4, 0x47, 0x6e, 0xe4, 0x8d, 0x9b, 0x95, 0x93, 0xe2, 0x69, 0xfd, 0xed,
-	0xee, 0x72, 0x30, 0x6c, 0xc6, 0xf1, 0xe7, 0xd0, 0x78, 0xcc, 0x46, 0x83, 0x1d, 0x79, 0x4f, 0x32,
-	0xbb, 0x35, 0x56, 0xcf, 0x6d, 0xcc, 0x7b, 0x12, 0x92, 0x7b, 0x3f, 0x0a, 0x66, 0x92, 0x6a, 0x2a,
-	0xc9, 0x6d, 0x99, 0x24, 0x0e, 0xef, 0x93, 0x99, 0x24, 0xcd, 0x5e, 0x3d, 0xb7, 0x09, 0xc9, 0x31,
-	0x40, 0xec, 0x45, 0xbe, 0x33, 0xb2, 0xc7, 0xd3, 0xa0, 0x09, 0x52, 0x50, 0x4b, 0x2d, 0xc6, 0x34,
-	0xc0, 0x2f, 0xa1, 0x1a, 0xdc, 0x3f, 0xd8, 0x32, 0xab, 0x75, 0x09, 0xb7, 0x83, 0xfb, 0x07, 0x43,
-	0x24, 0xf6, 0x18, 0x20, 0x08, 0x5d, 0x6f, 0x94, 0xc2, 0x46, 0xea, 0x29, 0x2d, 0x12, 0x1f, 0x40,
-	0xd9, 0x19, 0xf9, 0x4e, 0xdc, 0xdc, 0x91, 0x24, 0xfd, 0x21, 0xf6, 0x73, 0xe2, 0xd8, 0x4b, 0x6c,
-	0xdf, 0x6d, 0xee, 0xa6, 0xfb, 0xc9, 0xdf, 0xba, 0x8b, 0x9f, 0x43, 0xc5, 0x8f, 0xed, 0xfb, 0x68,
-	0xda, 0xdc, 0x3b, 0x29, 0x9c, 0x56, 0x59, 0xd9, 0x8f, 0xdf, 0x45, 0x53, 0xfc, 0xdb, 0x34, 0x02,
-	0x51, 0x0e, 0x4d, 0xf4, 0x8b, 0x35, 0x26, 0xa2, 0xeb, 0x88, 0xaa, 0x39, 0x4a, 0xe7, 0xe4, 0x33,
-	0xe9, 0x51, 0x4d, 0x87, 0x69, 0xe4, 0xcb, 0x89, 0x39, 0x9b, 0xb4, 0x58, 0x39, 0x69, 0xf1, 0xd7,
-	0x50, 0x4e, 0x47, 0xc0, 0xbe, 0xe4, 0xfb, 0x6b, 0x23, 0x20, 0x11, 0xfd, 0x96, 0x0f, 0x9c, 0x58,
-	0xb6, 0x8f, 0x88, 0xcf, 0x69, 0x1e, 0xc8, 0x5b, 0x5d, 0x19, 0x38, 0xf3, 0x59, 0xc0, 0x20, 0x9e,
-	0xad, 0x5b, 0x7f, 0x82, 0x6a, 0x3e, 0xfc, 0xf1, 0x0f, 0x50, 0x5f, 0x98, 0xd4, 0xbf, 0x62, 0x50,
-	0xc3, 0x68, 0x36, 0xa3, 0x71, 0x0b, 0x4a, 0x51, 0x18, 0x26, 0xb2, 0xbe, 0xd7, 0x4b, 0x4a, 0xb2,
-	0xd6, 0x3f, 0xb7, 0x60, 0xbf, 0x17, 0xba, 0xfe, 0xbd, 0xef, 0xdc, 0x8d, 0xbc, 0xff, 0x57, 0xc3,
-	0x7c, 0x35, 0x6b, 0x87, 0xa2, 0xf2, 0xec, 0xcd, 0xed, 0x51, 0x52, 0xb4, 0xc7, 0xac, 0x60, 0xca,
-	0x9b, 0x0a, 0xa6, 0xb2, 0x5c, 0x30, 0xd9, 0x15, 0x6f, 0xab, 0xae, 0x78, 0xe5, 0xbd, 0x55, 0xfd,
-	0xf5, 0xef, 0xad, 0xf6, 0x9f, 0x4b, 0xb0, 0xb3, 0xf4, 0xb8, 0xf8, 0x35, 0x34, 0x35, 0xb3, 0xd7,
-	0x37, 0x0d, 0x6a, 0x70, 0x9b, 0xdf, 0xf6, 0xa9, 0x3d, 0x30, 0x3a, 0xf4, 0x9d, 0x6e, 0xd0, 0x0e,
-	0xfa, 0x0d, 0x3e, 0x82, 0x17, 0x6b, 0xf4, 0xda, 0x30, 0xdf, 0x1b, 0xa8, 0xa0, 0x60, 0xda, 0x15,
-	0xb1, 0x2c, 0xdd, 0x42, 0x5b, 0x8a, 0x5d, 0x2f, 0x88, 0x76, 0xdd, 0xef, 0x12, 0x83, 0xa2, 0xa2,
-	0x82, 0x6a, 0xa6, 0xc1, 0x89, 0x6e, 0x50, 0x86, 0x4a, 0xf8, 0x0d, 0xbc, 0x5a, 0xa1, 0x7d, 0xf3,
-	0x3d, 0x65, 0xb6, 0x35, 0xe8, 0xf7, 0xbb, 0xb7, 0xa8, 0x8c, 0x5f, 0x00, 0x5e, 0x11, 0xbc, 0x23,
-	0x06, 0xaa, 0xe0, 0x97, 0xf0, 0x7c, 0xc5, 0x6e, 0x51, 0xc3, 0x32, 0x19, 0xda, 0x56, 0xa0, 0x9e,
-	0xd9, 0x19, 0x74, 0x29, 0xaa, 0xe2, 0x43, 0xd8, 0x5f, 0x3b, 0x8e, 0x71, 0x54, 0x53, 0x1c, 0xa3,
-	0xf5, 0x07, 0x08, 0x14, 0xcf, 0x7d, 0x41, 0x38, 0xa7, 0xec, 0x16, 0xd5, 0x15, 0xcc, 0xe2, 0x26,
-	0x23, 0x97, 0x14, 0x35, 0x54, 0x31, 0xd0, 0x9e, 0xc9, 0x6e, 0xd1, 0x0e, 0xfe, 0x0c, 0x8e, 0x56,
-	0x10, 0x67, 0xc4, 0xb0, 0x34, 0xaa, 0xdf, 0x50, 0x86, 0x76, 0xf1, 0x17, 0xf0, 0x66, 0x85, 0x5f,
-	0xf6, 0x4d, 0x63, 0x49, 0xb4, 0x87, 0xbf, 0x82, 0xd6, 0x8a, 0xe8, 0xc7, 0x4b, 0xcb, 0x5e, 0xd5,
-	0xa1, 0xf6, 0xbf, 0x0a, 0x0b, 0x2f, 0xf3, 0x79, 0x9d, 0xe4, 0x41, 0xd8, 0xa4, 0xd3, 0xd3, 0x0d,
-	0xdb, 0xe2, 0x84, 0x2f, 0xd7, 0x42, 0x76, 0x6b, 0x2b, 0x3c, 0xaf, 0x86, 0x57, 0x70, 0xb8, 0x46,
-	0xbb, 0xa6, 0x76, 0x4d, 0x3b, 0x68, 0x0b, 0xb7, 0xe0, 0xb3, 0x35, 0x68, 0x5d, 0x0d, 0x38, 0xd7,
-	0x8d, 0x4b, 0xbb, 0x23, 0x36, 0x28, 0xe2, 0x63, 0x78, 0xa9, 0xd8, 0x3e, 0xdb, 0xa2, 0xd4, 0xfe,
-	0xb9, 0x00, 0x78, 0xfd, 0xdb, 0x6a, 0xe6, 0x65, 0xf6, 0x45, 0x85, 0xac, 0xc5, 0x9c, 0x47, 0xb5,
-	0x84, 0xf3, 0x90, 0xf3, 0x07, 0x5a, 0x80, 0x1d, 0xdd, 0x22, 0x17, 0x5d, 0x19, 0xb3, 0xc2, 0x95,
-	0x1a, 0x29, 0x2c, 0xaa, 0x20, 0xa7, 0x96, 0x78, 0x1c, 0x54, 0x6a, 0xff, 0x63, 0x31, 0xc1, 0xf3,
-	0xaf, 0xb9, 0x59, 0x82, 0x07, 0x16, 0xb9, 0xa4, 0x9f, 0x48, 0xf0, 0x32, 0xcf, 0xa3, 0xcd, 0xca,
-	0x67, 0x89, 0xea, 0x9d, 0x2e, 0x5d, 0x08, 0x75, 0x11, 0x11, 0x8d, 0xeb, 0x37, 0xa2, 0xd9, 0x54,
-	0x7e, 0x17, 0x03, 0xeb, 0x16, 0x95, 0xda, 0x7f, 0x5b, 0xfc, 0xac, 0x9b, 0x7f, 0x3b, 0xce, 0x2b,
-	0xa1, 0x4b, 0x58, 0xef, 0x53, 0x95, 0xb0, 0xc4, 0xf3, 0x40, 0x3f, 0x87, 0x63, 0xa5, 0x37, 0xb3,
-	0x19, 0xed, 0x13, 0x9d, 0xa1, 0xad, 0xf9, 0x5d, 0x2f, 0x48, 0x34, 0xa6, 0x73, 0x5d, 0x23, 0x5d,
-	0x54, 0xcc, 0xbb, 0x68, 0x09, 0xf7, 0xc8, 0x1f, 0x4d, 0x31, 0x1d, 0x94, 0x4c, 0x37, 0x4c, 0x86,
-	0xca, 0xca, 0xb8, 0xde, 0x13, 0x66, 0x88, 0x6b, 0xa9, 0x28, 0xe3, 0xd2, 0x0d, 0x4e, 0x59, 0x8f,
-	0x76, 0x74, 0xc2, 0x29, 0xda, 0x6e, 0xff, 0xa7, 0x00, 0xcf, 0x95, 0xdf, 0xc3, 0xf8, 0x04, 0x5e,
-	0x4b, 0x67, 0x8b, 0x13, 0xa3, 0x73, 0x71, 0xab, 0x48, 0x4a, 0x9e, 0xb4, 0x55, 0xc5, 0xca, 0xb8,
-	0x5c, 0xe1, 0x57, 0x26, 0x5f, 0xb8, 0xc0, 0x65, 0xa6, 0x99, 0x5d, 0x51, 0x6b, 0xa7, 0xf0, 0xa5,
-	0x02, 0xf6, 0x99, 0x79, 0xa3, 0x77, 0x44, 0xff, 0x58, 0x94, 0xdd, 0xe8, 0x1a, 0x45, 0xa5, 0xf6,
-	0xdf, 0x8b, 0xb0, 0xb7, 0xf2, 0xa1, 0x2d, 0xa6, 0x69, 0x3a, 0x05, 0xed, 0x1b, 0xd2, 0x1d, 0xd0,
-	0xf5, 0x11, 0xff, 0x0a, 0x0e, 0xd7, 0x05, 0x26, 0xbf, 0xa2, 0x0c, 0x15, 0xc4, 0x45, 0xa9, 0xbc,
-	0xd3, 0x67, 0xda, 0x12, 0xcf, 0xbc, 0x8e, 0x6f, 0xcc, 0x2e, 0xb7, 0x6c, 0xa2, 0xa1, 0xe2, 0xa7,
-	0x78, 0x47, 0x43, 0x25, 0xf5, 0xf6, 0xa4, 0xd7, 0xa7, 0x8c, 0x5a, 0xa8, 0xac, 0x0e, 0xed, 0x3d,
-	0xe1, 0xdc, 0x42, 0x15, 0x35, 0xbc, 0xa2, 0x8c, 0x7f, 0x40, 0xdb, 0xea, 0x8d, 0x35, 0xda, 0xb5,
-	0xf4, 0x81, 0x85, 0xaa, 0xe2, 0x36, 0xd7, 0x71, 0x9f, 0x32, 0x4d, 0x8c, 0x4e, 0x76, 0x85, 0x6a,
-	0xa2, 0x6b, 0xd6, 0x15, 0xac, 0xdf, 0x43, 0xa0, 0x46, 0x5a, 0xaf, 0x87, 0xea, 0xa2, 0xc4, 0xd6,
-	0x11, 0x67, 0x03, 0x7e, 0x95, 0x1a, 0x50, 0xa3, 0xfd, 0x73, 0x09, 0xd0, 0xea, 0x3f, 0x9c, 0xb5,
-	0x78, 0x2c, 0x8d, 0x74, 0xd7, 0x5a, 0x4e, 0xa1, 0xb8, 0x35, 0x35, 0x6e, 0xa6, 0x93, 0x4c, 0x41,
-	0x3f, 0xd0, 0x3e, 0x37, 0xd3, 0xea, 0x52, 0x50, 0xc2, 0xb9, 0x99, 0xbe, 0x8b, 0x15, 0xf0, 0x1d,
-	0xed, 0x71, 0x13, 0x95, 0x36, 0xb8, 0xf6, 0x75, 0xcd, 0x54, 0x5c, 0x4f, 0x0a, 0x0d, 0x62, 0x98,
-	0xa8, 0xb2, 0x61, 0xdf, 0x9e, 0xae, 0x31, 0x13, 0x6d, 0x6f, 0xa4, 0xdd, 0xae, 0x8e, 0xaa, 0x1b,
-	0xe8, 0xc0, 0xd0, 0xb9, 0x85, 0x6a, 0x1b, 0x8e, 0xbd, 0xd6, 0xbb, 0x26, 0x82, 0x0d, 0xb0, 0x47,
-	0x2f, 0x09, 0xaa, 0x6f, 0x80, 0x97, 0xfa, 0x25, 0x41, 0x8d, 0x0d, 0x90, 0x53, 0x46, 0xd0, 0xce,
-	0xa6, 0x3c, 0x50, 0x4e, 0xd0, 0xae, 0xe8, 0x6c, 0x05, 0xa4, 0x3f, 0x12, 0xb4, 0xb7, 0xf1, 0x66,
-	0x38, 0x27, 0x08, 0x6d, 0xbc, 0x55, 0x41, 0x9f, 0xb5, 0xff, 0x52, 0x80, 0xc6, 0xe2, 0x1f, 0xd8,
-	0x85, 0x28, 0xc4, 0x0c, 0x18, 0x58, 0x4b, 0x15, 0x72, 0x00, 0x68, 0x19, 0x9a, 0xd7, 0x4b, 0x0d,
-	0x3c, 0x73, 0x21, 0x37, 0x44, 0xef, 0x8a, 0x17, 0x19, 0xda, 0x5a, 0x28, 0xbc, 0x0c, 0x1b, 0xa6,
-	0x21, 0xde, 0x69, 0x84, 0xeb, 0xa6, 0x21, 0x66, 0xf1, 0xc5, 0x0f, 0x1f, 0xbe, 0x7f, 0xf0, 0x93,
-	0xc7, 0xe9, 0xdd, 0xd9, 0x30, 0x0c, 0xce, 0xc3, 0x89, 0x37, 0x1e, 0x86, 0x91, 0x7b, 0xee, 0x7a,
-	0x4f, 0xfe, 0xd0, 0xfb, 0x36, 0x70, 0xc6, 0xce, 0x83, 0x17, 0x78, 0xe3, 0xe4, 0x5b, 0x7f, 0x9c,
-	0x78, 0xd1, 0xbd, 0x33, 0xf4, 0xce, 0x9f, 0xbe, 0x3b, 0x7f, 0x08, 0xcf, 0xdd, 0xc0, 0xbf, 0xab,
-	0xc8, 0xcf, 0xfb, 0xef, 0xfe, 0x17, 0x00, 0x00, 0xff, 0xff, 0xcf, 0xe7, 0x9a, 0xfa, 0x5d, 0x12,
-	0x00, 0x00,
+	// 2596 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0xcd, 0x72, 0xdb, 0xc8,
+	0xf1, 0x37, 0xbf, 0xc9, 0xe6, 0x87, 0xc6, 0x23, 0x7f, 0x70, 0x65, 0x7b, 0x57, 0xcb, 0xff, 0xee,
+	0x96, 0x56, 0xff, 0xac, 0x24, 0xcb, 0x76, 0xca, 0x9b, 0xad, 0x54, 0x0a, 0x02, 0x41, 0x11, 0x2b,
+	0x12, 0xc0, 0x0e, 0x40, 0xd9, 0xda, 0x0b, 0x0a, 0x22, 0x21, 0x09, 0x55, 0x24, 0xc1, 0x02, 0x40,
+	0xad, 0x7d, 0x4d, 0xe5, 0x92, 0x53, 0x5e, 0x20, 0xc7, 0x54, 0x6a, 0x73, 0xc9, 0x25, 0x39, 0xe6,
+	0x90, 0x4b, 0x5e, 0x20, 0xb7, 0x3c, 0x43, 0x5e, 0x22, 0x35, 0x33, 0x00, 0x09, 0x80, 0xb0, 0xd7,
+	0xa9, 0xca, 0x6d, 0xe6, 0xf7, 0xeb, 0xee, 0xe9, 0xe9, 0x99, 0xee, 0x69, 0x00, 0x1a, 0x93, 0x99,
+	0x73, 0x78, 0xf3, 0xc3, 0xc1, 0xc2, 0x73, 0x03, 0x17, 0x17, 0x26, 0x33, 0x67, 0xe7, 0x93, 0x6b,
+	0xd7, 0xbd, 0x9e, 0xda, 0x87, 0x0c, 0xba, 0x5c, 0x5e, 0x1d, 0x06, 0xce, 0xcc, 0xf6, 0x03, 0x6b,
+	0xb6, 0xe0, 0x52, 0x9d, 0x1d, 0x28, 0x8e, 0x96, 0xce, 0x04, 0x63, 0x28, 0x2e, 0x97, 0xce, 0xa4,
+	0x9d, 0xdb, 0xcd, 0xed, 0xd5, 0x08, 0x1b, 0x77, 0xfe, 0x1f, 0xa0, 0x6f, 0x79, 0x93, 0x1f, 0x2c,
+	0xcf, 0x96, 0xbb, 0xf8, 0x49, 0x4c, 0xa2, 0x7e, 0x5c, 0x3b, 0x98, 0xcc, 0x9c, 0x03, 0xaa, 0x1a,
+	0x0a, 0x3f, 0x84, 0xc2, 0xc8, 0x73, 0x30, 0x82, 0xc2, 0xd2, 0x73, 0x42, 0x33, 0x74, 0xd8, 0xf9,
+	0x4d, 0x01, 0x5a, 0xa2, 0x3b, 0x5b, 0xb8, 0x73, 0x7b, 0x1e, 0xe8, 0x81, 0x15, 0xd8, 0xb8, 0x0f,
+	0xd8, 0xa7, 0x03, 0x73, 0x6a, 0xf9, 0x81, 0x39, 0xbe, 0xb1, 0xe6, 0xd7, 0x76, 0x64, 0x78, 0xe7,
+	0x80, 0xbb, 0x7c, 0x10, 0xb9, 0x7c, 0x60, 0x44, 0x2e, 0x13, 0xc4, 0xb4, 0x06, 0x96, 0x1f, 0x88,
+	0x5c, 0x07, 0x7f, 0x0d, 0x75, 0x6b, 0x32, 0x73, 0xe6, 0x26, 0x63, 0xda, 0xf9, 0xdd, 0xdc, 0x5e,
+	0xeb, 0xb8, 0xcd, 0x7c, 0x5b, 0xad, 0x29, 0x50, 0x01, 0xb6, 0x30, 0x01, 0x6b, 0x35, 0xc6, 0x3f,
+	0x07, 0x70, 0x17, 0xb6, 0x17, 0x6a, 0x16, 0x98, 0xe6, 0xc3, 0xa4, 0xa6, 0xba, 0xb0, 0x3d, 0xae,
+	0x58, 0x73, 0xa3, 0x21, 0x5d, 0x72, 0xe9, 0x5b, 0xd7, 0x76, 0xa8, 0x58, 0xcc, 0x5a, 0x72, 0x44,
+	0x05, 0xc2, 0x25, 0x97, 0xab, 0x31, 0xf3, 0x76, 0x6a, 0x79, 0xb3, 0x50, 0xb5, 0x94, 0xe9, 0x2d,
+	0x15, 0x88, 0xbc, 0x5d, 0x8d, 0xf1, 0xaf, 0xa0, 0xe9, 0x07, 0xd6, 0x7c, 0x72, 0xf9, 0x36, 0x54,
+	0x2e, 0x33, 0xe5, 0x9d, 0xa4, 0xb2, 0xce, 0x45, 0xb8, 0x7a, 0xc3, 0x8f, 0xcd, 0x3a, 0xff, 0xce,
+	0xc3, 0xf6, 0x5a, 0xce, 0x9e, 0xfb, 0xae, 0xd7, 0xb5, 0x02, 0x0b, 0xdf, 0x83, 0xd2, 0xad, 0x35,
+	0x5d, 0xda, 0x2c, 0xfc, 0x25, 0xc2, 0x27, 0xf8, 0x0b, 0x28, 0x06, 0x6f, 0x17, 0x51, 0x40, 0x31,
+	0x5b, 0x85, 0x8a, 0x9f, 0x53, 0xd6, 0x78, 0xbb, 0xb0, 0x09, 0xe3, 0xf1, 0xe7, 0x50, 0xf2, 0xc7,
+	0xd6, 0x34, 0x8a, 0xdf, 0x16, 0x13, 0x64, 0x42, 0x3a, 0x85, 0x09, 0x67, 0xf1, 0x63, 0xa8, 0x2d,
+	0x3c, 0x7b, 0xec, 0xf8, 0x8e, 0x3b, 0x67, 0x11, 0x2b, 0x91, 0x35, 0x80, 0xbf, 0x84, 0x32, 0xdd,
+	0xd3, 0xd2, 0x0f, 0x23, 0x72, 0x97, 0x59, 0xe1, 0x3e, 0xea, 0x8c, 0x20, 0xa1, 0x00, 0xfe, 0x3f,
+	0x68, 0x2e, 0xe7, 0x4e, 0xe0, 0x9b, 0x13, 0xc7, 0x5f, 0x4c, 0xad, 0xb7, 0x2c, 0x0c, 0x35, 0xd2,
+	0x60, 0x60, 0x97, 0x63, 0xf8, 0x25, 0xd4, 0x56, 0xd7, 0xbc, 0x5d, 0xf9, 0xc9, 0x5b, 0xb5, 0x16,
+	0xc6, 0xfb, 0x70, 0x97, 0xed, 0xdf, 0x5c, 0x2e, 0x26, 0xf4, 0x7e, 0x7a, 0x34, 0xd2, 0xd5, 0xdd,
+	0xdc, 0x5e, 0x93, 0x6c, 0x31, 0x62, 0xc4, 0x70, 0x42, 0x4f, 0xe4, 0x11, 0xd4, 0x26, 0x56, 0x60,
+	0x99, 0x2c, 0x4e, 0x35, 0xe6, 0x46, 0x95, 0x02, 0x34, 0x3a, 0x9d, 0xdf, 0x97, 0xe0, 0xa1, 0xe6,
+	0x7a, 0xc1, 0xfa, 0x58, 0x83, 0xc0, 0x73, 0x2e, 0x97, 0x81, 0xed, 0xe3, 0xef, 0xa0, 0x35, 0x76,
+	0xe7, 0x73, 0x7b, 0x1c, 0xb8, 0x1e, 0xd7, 0xce, 0xb1, 0x6d, 0xef, 0xb3, 0x6d, 0xbf, 0x43, 0xeb,
+	0x40, 0x8c, 0x54, 0x58, 0xf4, 0x9b, 0xe3, 0xf8, 0x14, 0xbf, 0x84, 0x92, 0xbf, 0xb0, 0xed, 0x49,
+	0x78, 0x5e, 0x9d, 0xf7, 0x5a, 0xd2, 0xa9, 0x24, 0xe1, 0x0a, 0x58, 0x80, 0x2a, 0x0b, 0xc9, 0xd8,
+	0x9d, 0x86, 0x67, 0xf8, 0xf9, 0x7b, 0x95, 0xb5, 0x50, 0x98, 0xac, 0xd4, 0xf0, 0xe7, 0xd0, 0x5a,
+	0xdc, 0xbc, 0xf5, 0x9d, 0xb1, 0x35, 0x35, 0xa7, 0xd6, 0xa5, 0x3d, 0x65, 0x27, 0x5c, 0x23, 0xcd,
+	0x08, 0x1d, 0x50, 0xb0, 0x63, 0x43, 0x33, 0xb1, 0x07, 0xfc, 0x18, 0xda, 0xa2, 0xaa, 0x28, 0x92,
+	0x68, 0xa8, 0xc4, 0x34, 0x2e, 0x34, 0xc9, 0x1c, 0x29, 0x5d, 0xa9, 0x27, 0x2b, 0x52, 0x17, 0xdd,
+	0xc1, 0x55, 0x28, 0x92, 0x6f, 0x9f, 0xbf, 0x40, 0x39, 0xdc, 0x80, 0x6a, 0x4f, 0x3e, 0x91, 0x88,
+	0x39, 0x10, 0x51, 0x1e, 0x6f, 0x41, 0x9d, 0xcf, 0x74, 0xd1, 0xd4, 0x44, 0x54, 0xc0, 0x4d, 0xa8,
+	0x71, 0x60, 0xa8, 0xa9, 0xa8, 0xd8, 0xf9, 0x73, 0x0e, 0x4a, 0x6c, 0x87, 0x78, 0x1b, 0xb6, 0x74,
+	0x4d, 0x92, 0xba, 0x09, 0xb3, 0x75, 0xa8, 0x74, 0x2f, 0x14, 0x61, 0x28, 0x8b, 0x28, 0x47, 0x55,
+	0x4f, 0xe5, 0x53, 0xe1, 0x44, 0x36, 0xcc, 0xa7, 0x28, 0x8f, 0x5b, 0x00, 0xab, 0xe9, 0x11, 0x2a,
+	0xc4, 0xe7, 0xc7, 0x2f, 0x50, 0x31, 0x3e, 0x7f, 0x7e, 0x84, 0x4a, 0xd4, 0x95, 0xb5, 0xfc, 0x11,
+	0x2a, 0xc7, 0x81, 0xe7, 0x47, 0x47, 0xa8, 0x82, 0x11, 0x34, 0x86, 0x52, 0x64, 0xe1, 0xe8, 0x08,
+	0x55, 0xe3, 0xc8, 0xd3, 0xe3, 0x17, 0x47, 0xa8, 0xd6, 0xf1, 0xa0, 0x1a, 0x05, 0x15, 0x3f, 0x00,
+	0xac, 0x11, 0xd5, 0x50, 0x45, 0x75, 0x90, 0xf0, 0xba, 0x01, 0x55, 0xc9, 0xe8, 0x4b, 0x44, 0x91,
+	0x0c, 0x94, 0xa3, 0xa1, 0x39, 0xd5, 0x54, 0x05, 0xe5, 0x71, 0x0d, 0x4a, 0xaf, 0xd9, 0xb0, 0x80,
+	0x01, 0xca, 0xaf, 0x4f, 0x75, 0x3a, 0x2e, 0x52, 0xf8, 0xb4, 0x27, 0xe8, 0x06, 0x2a, 0x51, 0x58,
+	0x97, 0x88, 0x2c, 0x0c, 0x50, 0x99, 0xea, 0x49, 0x54, 0xa0, 0xd2, 0x91, 0xe0, 0xb1, 0xe8, 0xce,
+	0x03, 0xcb, 0x99, 0xdb, 0x5e, 0xd6, 0x15, 0xdd, 0x3c, 0xd2, 0x5c, 0xd6, 0x91, 0xfe, 0x23, 0x07,
+	0x0f, 0x34, 0x7f, 0x99, 0x65, 0xe1, 0x02, 0xee, 0xfa, 0xcb, 0xc5, 0xc2, 0xf5, 0x02, 0x7b, 0x62,
+	0xde, 0xba, 0xd3, 0xc0, 0xba, 0x8e, 0xee, 0xf9, 0xcf, 0xf8, 0x05, 0xcb, 0xd4, 0x3b, 0xd0, 0x23,
+	0xa5, 0x73, 0xae, 0x43, 0x90, 0x9f, 0x42, 0x3a, 0x1a, 0xa0, 0xb4, 0x14, 0xfe, 0x04, 0x1e, 0xe9,
+	0x23, 0x4d, 0x53, 0x89, 0x21, 0x75, 0xcd, 0x73, 0x75, 0x60, 0x08, 0xa7, 0xc9, 0xeb, 0x54, 0x81,
+	0xc2, 0xf9, 0xf3, 0x97, 0x3c, 0x78, 0xe7, 0xc7, 0xcf, 0x8e, 0x50, 0x9e, 0x8d, 0x9e, 0x3e, 0x7d,
+	0x81, 0x0a, 0x9d, 0x7f, 0x96, 0xe0, 0x13, 0xc3, 0xb3, 0xe6, 0xfe, 0xd8, 0x76, 0x6e, 0x63, 0x11,
+	0xf1, 0x63, 0x1b, 0xd2, 0xa0, 0x7e, 0xe5, 0x7a, 0x33, 0xf3, 0xca, 0xa2, 0x17, 0x38, 0xdc, 0xca,
+	0x21, 0xdb, 0xca, 0x4f, 0xa8, 0x1e, 0xf4, 0x5c, 0x6f, 0xd6, 0x63, 0x6a, 0x04, 0xae, 0x56, 0x63,
+	0xdc, 0x07, 0x08, 0xa8, 0xa6, 0x19, 0xab, 0xb4, 0x5f, 0x7e, 0x90, 0x41, 0x56, 0x02, 0x6a, 0x4c,
+	0x99, 0x65, 0xd2, 0xa7, 0xd0, 0x98, 0x59, 0x6f, 0x68, 0x4d, 0x0c, 0xac, 0xf9, 0x98, 0x17, 0xe3,
+	0x26, 0xa9, 0xcf, 0xac, 0x37, 0xdd, 0x10, 0xc2, 0xbf, 0x04, 0x1c, 0x17, 0x31, 0x79, 0xd5, 0x2e,
+	0x66, 0x57, 0x6d, 0x14, 0xd3, 0x64, 0x08, 0xad, 0xbb, 0xde, 0x1b, 0xf3, 0x07, 0xeb, 0xd6, 0x9e,
+	0xda, 0xf3, 0xeb, 0xe0, 0xa6, 0x5d, 0xda, 0x2d, 0xec, 0x35, 0x49, 0xc3, 0x7b, 0xf3, 0x6a, 0x85,
+	0x51, 0xa1, 0x20, 0x21, 0x54, 0xe6, 0x42, 0x41, 0x5c, 0xe8, 0x17, 0x80, 0xd6, 0x12, 0xa1, 0x1b,
+	0x95, 0x6c, 0x37, 0xb6, 0xd6, 0x82, 0x0c, 0xe8, 0xfc, 0x3d, 0x07, 0xb0, 0x0e, 0x26, 0x7e, 0x08,
+	0xdb, 0x3d, 0x95, 0x0c, 0xcd, 0x9e, 0xc0, 0x4a, 0xc8, 0x48, 0x39, 0x53, 0xd4, 0x57, 0x0a, 0xaf,
+	0x1d, 0xdf, 0xe9, 0x3d, 0x8d, 0x67, 0x38, 0x1d, 0x99, 0xda, 0x60, 0xa4, 0xa3, 0x3c, 0xcd, 0x06,
+	0x3a, 0x3d, 0x7e, 0x89, 0x0a, 0xf4, 0x46, 0x50, 0x99, 0x22, 0x4d, 0xae, 0x95, 0x48, 0x89, 0xc2,
+	0xaf, 0x7b, 0x1a, 0xcf, 0x16, 0xb1, 0xa7, 0x3d, 0x47, 0x95, 0x70, 0x74, 0x8c, 0xaa, 0x6c, 0xa4,
+	0x09, 0x67, 0xa8, 0x86, 0xcb, 0x90, 0x7f, 0x7d, 0x8c, 0x80, 0xa6, 0x9a, 0x4a, 0x33, 0x13, 0xd5,
+	0xa9, 0xa6, 0xd8, 0xd3, 0x50, 0x83, 0x1a, 0xa4, 0xf2, 0xa6, 0x20, 0xaa, 0xa8, 0xb9, 0x9a, 0x75,
+	0x45, 0x15, 0xb5, 0x3a, 0x37, 0x50, 0x64, 0x47, 0x86, 0xa0, 0x11, 0x96, 0xbc, 0xc8, 0xe9, 0xff,
+	0x32, 0xc7, 0x99, 0x2b, 0xaa, 0x82, 0x4a, 0xb4, 0xa4, 0x29, 0xa7, 0xa6, 0xa6, 0x2a, 0xc7, 0x89,
+	0x1c, 0xff, 0x57, 0x05, 0x6a, 0xab, 0xdb, 0x43, 0xfb, 0xbb, 0xb9, 0x35, 0xb3, 0xa3, 0xfe, 0x8e,
+	0x8e, 0xf1, 0x1e, 0x94, 0xc6, 0x53, 0xcb, 0xf7, 0x13, 0xaf, 0xfc, 0x4a, 0x85, 0x5d, 0x32, 0x2e,
+	0x80, 0x77, 0xa1, 0x3e, 0xb1, 0xfd, 0xb1, 0xe7, 0x2c, 0x02, 0xfa, 0x82, 0x17, 0x98, 0x91, 0x38,
+	0x84, 0x1f, 0x40, 0x79, 0x61, 0x79, 0xf6, 0x3c, 0x08, 0x8b, 0x7f, 0x38, 0xc3, 0x9f, 0x41, 0x8b,
+	0x8f, 0x4c, 0xcf, 0x9e, 0x9a, 0x0b, 0x97, 0xbf, 0xf1, 0x25, 0xd2, 0xe0, 0x28, 0xb1, 0xa7, 0x9a,
+	0xeb, 0xe3, 0x7d, 0xa8, 0x8e, 0x6f, 0x9c, 0xe9, 0xc4, 0xb3, 0xe7, 0xec, 0xd2, 0xd4, 0x8f, 0x5b,
+	0x49, 0x67, 0xc8, 0x8a, 0xa7, 0x97, 0xfd, 0x26, 0xec, 0x4a, 0x4d, 0xcf, 0xbe, 0x65, 0x97, 0xa7,
+	0x46, 0xea, 0x11, 0x46, 0xec, 0x5b, 0x2a, 0x72, 0xe5, 0x78, 0xb3, 0x95, 0x48, 0x95, 0x8b, 0x44,
+	0x58, 0x28, 0xe2, 0xbb, 0x57, 0xc1, 0x4a, 0x84, 0x3f, 0xe0, 0xf5, 0x08, 0xa3, 0x22, 0x4f, 0x00,
+	0x7c, 0xdb, 0x73, 0xac, 0xa9, 0x39, 0x5f, 0xce, 0xda, 0xc0, 0x04, 0x6a, 0x1c, 0x51, 0x96, 0x33,
+	0xfc, 0x11, 0x54, 0x67, 0x57, 0xd7, 0x26, 0x8b, 0x6a, 0x9d, 0x91, 0x95, 0xd9, 0xd5, 0xb5, 0x42,
+	0x03, 0xfb, 0x04, 0x60, 0xe6, 0x4e, 0xec, 0x29, 0x27, 0x1b, 0x5c, 0x93, 0x21, 0x8c, 0xbe, 0x07,
+	0x25, 0x6b, 0xea, 0x58, 0x7e, 0xbb, 0xc9, 0x18, 0x3e, 0xa1, 0xf6, 0x2c, 0xdf, 0xb7, 0x03, 0xd3,
+	0x99, 0xb4, 0x5b, 0xdc, 0x1e, 0x9b, 0xcb, 0x13, 0x7c, 0x1f, 0xca, 0x8e, 0x6f, 0x5e, 0x79, 0xcb,
+	0xf6, 0xd6, 0x6e, 0x6e, 0xaf, 0x4a, 0x4a, 0x8e, 0xdf, 0xf3, 0x96, 0xf8, 0x05, 0xf7, 0x80, 0x76,
+	0x24, 0x6d, 0xf4, 0x93, 0x6d, 0x0e, 0xf5, 0xae, 0x4b, 0x1b, 0x97, 0x1d, 0xde, 0xa2, 0xdf, 0x65,
+	0x1a, 0x55, 0xde, 0xc7, 0x7b, 0x0e, 0x6b, 0xd6, 0x57, 0x4d, 0x3e, 0xce, 0x6c, 0xf2, 0xf1, 0x97,
+	0x50, 0xe2, 0xdd, 0xe7, 0x36, 0xe3, 0xb7, 0x37, 0xba, 0xcf, 0x80, 0xb6, 0x7c, 0x51, 0xaf, 0xeb,
+	0xb3, 0x0e, 0x8e, 0xfa, 0x67, 0xb5, 0xef, 0xb1, 0x53, 0x4d, 0xf5, 0xba, 0xeb, 0x36, 0x94, 0x80,
+	0xbf, 0x6e, 0x49, 0xbf, 0x81, 0x1a, 0xad, 0xee, 0xa6, 0x15, 0x04, 0x5e, 0xfb, 0x98, 0xad, 0xf4,
+	0xf8, 0x7d, 0x4d, 0x49, 0xff, 0x0e, 0xa9, 0x52, 0x05, 0x8a, 0xe0, 0x6f, 0x59, 0x77, 0xc5, 0x9f,
+	0x36, 0x6e, 0xe1, 0x19, 0xb3, 0xf0, 0x69, 0xb8, 0xf4, 0xbb, 0x5f, 0xbd, 0xfe, 0x1d, 0xd6, 0x56,
+	0x71, 0x9e, 0xd9, 0x7a, 0x09, 0xd5, 0x85, 0xbf, 0xe4, 0x56, 0x9e, 0x33, 0x2b, 0x8f, 0xde, 0xf3,
+	0x76, 0xf5, 0xef, 0x90, 0xca, 0xc2, 0x5f, 0x32, 0xcd, 0xef, 0x00, 0x05, 0xeb, 0x22, 0xce, 0x2d,
+	0xbc, 0x60, 0x16, 0x3e, 0xfb, 0x90, 0x0a, 0xdf, 0xbf, 0x43, 0xb6, 0x62, 0xfa, 0x94, 0x38, 0x01,
+	0xa8, 0xfa, 0x0b, 0x7b, 0xec, 0x5c, 0x39, 0xe3, 0xce, 0x8f, 0x39, 0xa8, 0x46, 0x9f, 0x66, 0xf8,
+	0x1b, 0xa8, 0xc7, 0xbe, 0xa3, 0x3e, 0xe0, 0x33, 0x0a, 0xa6, 0xab, 0x2f, 0x28, 0xdc, 0x81, 0xa2,
+	0xe7, 0xba, 0x01, 0x2b, 0x01, 0x9b, 0x59, 0xc7, 0xb8, 0xd5, 0x02, 0x97, 0xae, 0x1b, 0xd8, 0x13,
+	0x96, 0xfd, 0x1f, 0xb0, 0xc0, 0x09, 0x93, 0xee, 0xfc, 0x29, 0x0f, 0xdb, 0x43, 0x77, 0xe2, 0x5c,
+	0x39, 0xd6, 0xe5, 0xd4, 0xfe, 0x5f, 0x15, 0xa4, 0x2f, 0x56, 0xe5, 0xa6, 0x90, 0xe9, 0xf8, 0xbb,
+	0xcb, 0x4f, 0x31, 0xa3, 0xfc, 0xac, 0x12, 0xb2, 0xf4, 0xae, 0x84, 0x2c, 0x27, 0x13, 0x32, 0x4c,
+	0xa1, 0x4a, 0x56, 0x0a, 0xa5, 0x3e, 0x49, 0xab, 0x1f, 0xfe, 0x49, 0xba, 0xff, 0xd7, 0x02, 0xed,
+	0x91, 0x63, 0xdb, 0xe5, 0x3d, 0xf2, 0x50, 0x53, 0x15, 0x49, 0x31, 0x36, 0x7b, 0xe4, 0x1d, 0x78,
+	0xb0, 0xc1, 0xf2, 0xe7, 0x24, 0x97, 0xc1, 0x89, 0x7d, 0x41, 0xd7, 0x65, 0xfa, 0x0c, 0x6e, 0x5a,
+	0x3d, 0x11, 0xc4, 0x33, 0x6d, 0x20, 0x28, 0x12, 0x2a, 0x64, 0xb0, 0xa2, 0xaa, 0x18, 0x82, 0xac,
+	0x48, 0x04, 0x15, 0x69, 0xa7, 0x95, 0x62, 0x35, 0xf5, 0x15, 0x6d, 0xc7, 0x47, 0x9a, 0x36, 0xb8,
+	0x40, 0x25, 0xda, 0xc3, 0xa6, 0x04, 0x7a, 0x82, 0x82, 0xca, 0xf8, 0x23, 0xb8, 0x9f, 0xc2, 0x75,
+	0x49, 0xd1, 0x55, 0x82, 0x2a, 0x19, 0xd4, 0x50, 0xed, 0x8e, 0x06, 0x12, 0xaa, 0xd2, 0x37, 0x7e,
+	0x63, 0x39, 0x62, 0xa0, 0x5a, 0xc6, 0x32, 0xa2, 0x36, 0x42, 0x90, 0xb1, 0xef, 0x13, 0xc1, 0x30,
+	0x24, 0x72, 0x81, 0xea, 0x19, 0x9c, 0x6e, 0xa8, 0x44, 0x38, 0x95, 0x50, 0x23, 0xcb, 0x07, 0x69,
+	0xa8, 0x92, 0x0b, 0xd4, 0xc4, 0x1f, 0xc3, 0x4e, 0x8a, 0x32, 0x88, 0xa0, 0xe8, 0xa2, 0x24, 0x9f,
+	0x4b, 0x04, 0xb5, 0xf6, 0xff, 0x92, 0x8b, 0x7d, 0x5a, 0xaf, 0x8f, 0x36, 0xd2, 0x33, 0x85, 0xee,
+	0x50, 0x56, 0x4c, 0xdd, 0x10, 0x8c, 0xe4, 0xf1, 0x85, 0x81, 0x4e, 0xf1, 0xd1, 0x01, 0x3e, 0x82,
+	0x87, 0x1b, 0xec, 0x40, 0x15, 0xcf, 0xa4, 0x2e, 0xca, 0xe3, 0x0e, 0x7c, 0xbc, 0x41, 0xea, 0xfd,
+	0x91, 0x61, 0xc8, 0xca, 0xa9, 0xd9, 0xa5, 0x06, 0x0a, 0xf8, 0x09, 0x7c, 0x94, 0x61, 0x3e, 0x34,
+	0x51, 0xdc, 0xff, 0x31, 0x07, 0x78, 0xf3, 0x4f, 0xc7, 0x4a, 0x4b, 0xd5, 0xe8, 0xa1, 0x6e, 0xf8,
+	0x1c, 0x79, 0x95, 0xa0, 0x23, 0x97, 0xa3, 0x0d, 0xc5, 0xc8, 0xae, 0xac, 0x0b, 0x27, 0x03, 0xe6,
+	0x73, 0x86, 0xaa, 0xa4, 0x70, 0xb2, 0x90, 0x45, 0x1a, 0x92, 0x4e, 0xb7, 0x83, 0x8a, 0xfb, 0x7f,
+	0x8c, 0x07, 0x78, 0xfd, 0x6f, 0x65, 0x15, 0xe0, 0x91, 0x4e, 0xdb, 0xfd, 0x77, 0x07, 0x38, 0xc9,
+	0x47, 0xde, 0x86, 0x27, 0x9e, 0x60, 0xe5, 0xee, 0x40, 0x8a, 0xb9, 0x1a, 0xa7, 0x04, 0xd1, 0x90,
+	0xcf, 0x69, 0x7e, 0x64, 0xe9, 0x9d, 0x8c, 0xf4, 0x0b, 0x54, 0xdc, 0xff, 0x5d, 0xfc, 0x27, 0xcb,
+	0xfa, 0x4f, 0xce, 0xfa, 0x26, 0x0c, 0x04, 0x32, 0x7c, 0xdf, 0x4d, 0x48, 0xf0, 0x91, 0xa3, 0x9f,
+	0xc2, 0x93, 0x4c, 0x6d, 0x62, 0x12, 0x49, 0x13, 0x64, 0x82, 0xf2, 0xeb, 0xb3, 0x8e, 0x89, 0x88,
+	0x44, 0x36, 0x64, 0x51, 0x18, 0xa0, 0x42, 0x74, 0xf1, 0x13, 0xf4, 0x50, 0xf8, 0x56, 0xa5, 0x09,
+	0x9d, 0xc9, 0xc9, 0x8a, 0x4a, 0x50, 0x29, 0xd3, 0xaf, 0x57, 0x02, 0x51, 0xe8, 0xb1, 0x94, 0xd7,
+	0x97, 0x30, 0xc6, 0xca, 0x4a, 0x57, 0x32, 0x24, 0x32, 0x94, 0x15, 0xc1, 0x90, 0x50, 0x65, 0xff,
+	0x6f, 0x39, 0xb8, 0x9f, 0xf9, 0x7b, 0x0a, 0xef, 0xc2, 0x63, 0xa6, 0xad, 0x1b, 0x82, 0xd2, 0x3d,
+	0xb9, 0xc8, 0x88, 0x4a, 0x14, 0xb5, 0xb4, 0x44, 0xaa, 0xc4, 0xa5, 0xf8, 0xbe, 0x6a, 0xc4, 0x4e,
+	0x30, 0xc9, 0x89, 0xea, 0x80, 0x5e, 0xb6, 0x3d, 0xf8, 0x2c, 0x83, 0xd4, 0x88, 0x7a, 0x2e, 0x77,
+	0x69, 0x02, 0xe9, 0x12, 0x39, 0x97, 0x45, 0x09, 0x15, 0xf7, 0x7f, 0x5b, 0x80, 0x66, 0xe2, 0xbf,
+	0x17, 0x6e, 0xc3, 0xbd, 0x73, 0x61, 0x30, 0x92, 0x36, 0xab, 0xf1, 0x3d, 0x40, 0x31, 0x86, 0x7f,
+	0x15, 0xe4, 0x68, 0x9d, 0x4a, 0xc8, 0x73, 0xe7, 0xf3, 0xb4, 0xb0, 0xc5, 0x70, 0xfa, 0xc9, 0xaa,
+	0x9b, 0x82, 0x88, 0x0a, 0x99, 0x44, 0x57, 0x44, 0xc5, 0x94, 0x25, 0x61, 0xa8, 0x49, 0x44, 0xa2,
+	0x5f, 0x2c, 0xc9, 0x75, 0x5f, 0x09, 0x86, 0xa1, 0xa3, 0x72, 0x0a, 0xed, 0x4b, 0xc4, 0xf8, 0x1e,
+	0x55, 0x52, 0x36, 0x44, 0x69, 0xa0, 0xcb, 0x23, 0x1d, 0x55, 0xe9, 0x9d, 0x8e, 0xe1, 0x9a, 0x44,
+	0x44, 0x5a, 0xeb, 0x48, 0x1f, 0xd5, 0x30, 0x86, 0x56, 0x8c, 0x22, 0xda, 0x10, 0x41, 0x0a, 0x13,
+	0x87, 0x43, 0x5e, 0x5c, 0x63, 0x98, 0x41, 0x46, 0x46, 0xdf, 0x64, 0x00, 0x6a, 0xa4, 0x96, 0x0d,
+	0xcd, 0xa3, 0x26, 0xbe, 0x0f, 0x77, 0x63, 0xf8, 0x90, 0xde, 0x1c, 0x1d, 0xb5, 0x52, 0xbe, 0x9f,
+	0x5c, 0x18, 0x92, 0x8e, 0xb6, 0xf6, 0xff, 0x50, 0x00, 0x58, 0x7f, 0x1d, 0xae, 0x5d, 0xd6, 0x45,
+	0x61, 0x90, 0x3c, 0x89, 0x95, 0x59, 0x4e, 0x5d, 0xa8, 0xa2, 0xa1, 0xa2, 0x5c, 0x1a, 0xfe, 0x5e,
+	0xd2, 0x0c, 0x15, 0xe5, 0xd7, 0xab, 0x71, 0x58, 0x30, 0x0c, 0x15, 0x15, 0xd2, 0xc2, 0x3d, 0x69,
+	0x68, 0xa8, 0xa8, 0x98, 0x16, 0xd6, 0x64, 0x51, 0x8d, 0x1f, 0x01, 0x47, 0x15, 0x41, 0x51, 0x51,
+	0x39, 0x6d, 0x62, 0x28, 0x8b, 0x44, 0x45, 0x95, 0x4d, 0x78, 0x30, 0x90, 0x51, 0x35, 0x0d, 0x8f,
+	0x14, 0xd9, 0xd0, 0x51, 0x2d, 0x6d, 0xfa, 0x4c, 0x1e, 0xa8, 0x08, 0xd2, 0xe8, 0x50, 0x3a, 0x15,
+	0x50, 0x3d, 0x8d, 0x9e, 0xca, 0xa7, 0x02, 0x6a, 0xa4, 0x51, 0x43, 0x22, 0x02, 0x6a, 0x6e, 0x6c,
+	0x44, 0x32, 0x04, 0xd4, 0xc2, 0xdb, 0xb0, 0x15, 0x47, 0xa5, 0xd7, 0x02, 0xda, 0xda, 0x8c, 0x9b,
+	0x61, 0x08, 0x08, 0x6d, 0x46, 0x99, 0xc2, 0x77, 0xf7, 0x7f, 0x9d, 0x83, 0x46, 0xfc, 0xdf, 0x2d,
+	0x4d, 0x45, 0xfe, 0xd2, 0xb3, 0x3c, 0x1b, 0xe9, 0xe9, 0xa4, 0x49, 0x92, 0xea, 0x19, 0xca, 0xd1,
+	0x72, 0x96, 0x56, 0x11, 0xce, 0x05, 0x79, 0x40, 0x5f, 0x0b, 0x94, 0xa7, 0xa5, 0x23, 0x49, 0x2b,
+	0xaa, 0x42, 0x1f, 0x0e, 0xc1, 0x90, 0x55, 0x85, 0x16, 0xbc, 0x93, 0x6f, 0xbe, 0xff, 0xfa, 0xda,
+	0x09, 0x6e, 0x96, 0x97, 0x07, 0x63, 0x77, 0x76, 0xe8, 0x2e, 0xec, 0xf9, 0xd8, 0xf5, 0x26, 0x87,
+	0x13, 0xfb, 0xd6, 0x19, 0xdb, 0x5f, 0xcd, 0xac, 0xb9, 0x75, 0x6d, 0xcf, 0xec, 0x79, 0xf0, 0x95,
+	0x33, 0x0f, 0x6c, 0xef, 0xca, 0x1a, 0xdb, 0x87, 0xb7, 0xcf, 0x0e, 0xaf, 0xdd, 0xc3, 0xc9, 0xcc,
+	0xb9, 0x2c, 0xb3, 0x96, 0xf6, 0xd9, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x12, 0xb2, 0x2d, 0xe4,
+	0x50, 0x19, 0x00, 0x00,
 }
diff --git a/vendor/github.com/opencord/device-management-interface/go/dmi/hw_events_mgmt_service.pb.go b/vendor/github.com/opencord/device-management-interface/go/dmi/hw_events_mgmt_service.pb.go
index f102422..2b5dc6e 100644
--- a/vendor/github.com/opencord/device-management-interface/go/dmi/hw_events_mgmt_service.pb.go
+++ b/vendor/github.com/opencord/device-management-interface/go/dmi/hw_events_mgmt_service.pb.go
@@ -173,6 +173,71 @@
 	return fileDescriptor_8962d785556e9979, []int{0}
 }
 
+type ListEventsResponse_Reason int32
+
+const (
+	ListEventsResponse_UNDEFINED_REASON   ListEventsResponse_Reason = 0
+	ListEventsResponse_UNKNOWN_DEVICE     ListEventsResponse_Reason = 1
+	ListEventsResponse_INTERNAL_ERROR     ListEventsResponse_Reason = 2
+	ListEventsResponse_DEVICE_UNREACHABLE ListEventsResponse_Reason = 3
+)
+
+var ListEventsResponse_Reason_name = map[int32]string{
+	0: "UNDEFINED_REASON",
+	1: "UNKNOWN_DEVICE",
+	2: "INTERNAL_ERROR",
+	3: "DEVICE_UNREACHABLE",
+}
+
+var ListEventsResponse_Reason_value = map[string]int32{
+	"UNDEFINED_REASON":   0,
+	"UNKNOWN_DEVICE":     1,
+	"INTERNAL_ERROR":     2,
+	"DEVICE_UNREACHABLE": 3,
+}
+
+func (x ListEventsResponse_Reason) String() string {
+	return proto.EnumName(ListEventsResponse_Reason_name, int32(x))
+}
+
+func (ListEventsResponse_Reason) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_8962d785556e9979, []int{6, 0}
+}
+
+type EventsConfigurationResponse_Reason int32
+
+const (
+	EventsConfigurationResponse_UNDEFINED_REASON   EventsConfigurationResponse_Reason = 0
+	EventsConfigurationResponse_UNKNOWN_DEVICE     EventsConfigurationResponse_Reason = 1
+	EventsConfigurationResponse_INTERNAL_ERROR     EventsConfigurationResponse_Reason = 2
+	EventsConfigurationResponse_INVALID_CONFIG     EventsConfigurationResponse_Reason = 3
+	EventsConfigurationResponse_DEVICE_UNREACHABLE EventsConfigurationResponse_Reason = 4
+)
+
+var EventsConfigurationResponse_Reason_name = map[int32]string{
+	0: "UNDEFINED_REASON",
+	1: "UNKNOWN_DEVICE",
+	2: "INTERNAL_ERROR",
+	3: "INVALID_CONFIG",
+	4: "DEVICE_UNREACHABLE",
+}
+
+var EventsConfigurationResponse_Reason_value = map[string]int32{
+	"UNDEFINED_REASON":   0,
+	"UNKNOWN_DEVICE":     1,
+	"INTERNAL_ERROR":     2,
+	"INVALID_CONFIG":     3,
+	"DEVICE_UNREACHABLE": 4,
+}
+
+func (x EventsConfigurationResponse_Reason) String() string {
+	return proto.EnumName(EventsConfigurationResponse_Reason_name, int32(x))
+}
+
+func (EventsConfigurationResponse_Reason) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_8962d785556e9979, []int{8, 0}
+}
+
 type ValueType struct {
 	// Types that are valid to be assigned to Val:
 	//	*ValueType_IntVal
@@ -538,12 +603,13 @@
 }
 
 type ListEventsResponse struct {
-	Status               Status     `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
-	Reason               Reason     `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.Reason" json:"reason,omitempty"`
-	Events               *EventsCfg `protobuf:"bytes,3,opt,name=events,proto3" json:"events,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
-	XXX_unrecognized     []byte     `json:"-"`
-	XXX_sizecache        int32      `json:"-"`
+	Status               Status                    `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
+	Reason               ListEventsResponse_Reason `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.ListEventsResponse_Reason" json:"reason,omitempty"`
+	Events               *EventsCfg                `protobuf:"bytes,3,opt,name=events,proto3" json:"events,omitempty"`
+	ReasonDetail         string                    `protobuf:"bytes,4,opt,name=reason_detail,json=reasonDetail,proto3" json:"reason_detail,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
+	XXX_unrecognized     []byte                    `json:"-"`
+	XXX_sizecache        int32                     `json:"-"`
 }
 
 func (m *ListEventsResponse) Reset()         { *m = ListEventsResponse{} }
@@ -578,11 +644,11 @@
 	return Status_UNDEFINED_STATUS
 }
 
-func (m *ListEventsResponse) GetReason() Reason {
+func (m *ListEventsResponse) GetReason() ListEventsResponse_Reason {
 	if m != nil {
 		return m.Reason
 	}
-	return Reason_UNDEFINED_REASON
+	return ListEventsResponse_UNDEFINED_REASON
 }
 
 func (m *ListEventsResponse) GetEvents() *EventsCfg {
@@ -592,6 +658,13 @@
 	return nil
 }
 
+func (m *ListEventsResponse) GetReasonDetail() string {
+	if m != nil {
+		return m.ReasonDetail
+	}
+	return ""
+}
+
 type EventsConfigurationRequest struct {
 	DeviceUuid *Uuid `protobuf:"bytes,1,opt,name=device_uuid,json=deviceUuid,proto3" json:"device_uuid,omitempty"`
 	// Types that are valid to be assigned to Operation:
@@ -681,11 +754,12 @@
 }
 
 type EventsConfigurationResponse struct {
-	Status               Status   `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
-	Reason               Reason   `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.Reason" json:"reason,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Status               Status                             `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
+	Reason               EventsConfigurationResponse_Reason `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.EventsConfigurationResponse_Reason" json:"reason,omitempty"`
+	ReasonDetail         string                             `protobuf:"bytes,3,opt,name=reason_detail,json=reasonDetail,proto3" json:"reason_detail,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                           `json:"-"`
+	XXX_unrecognized     []byte                             `json:"-"`
+	XXX_sizecache        int32                              `json:"-"`
 }
 
 func (m *EventsConfigurationResponse) Reset()         { *m = EventsConfigurationResponse{} }
@@ -720,11 +794,18 @@
 	return Status_UNDEFINED_STATUS
 }
 
-func (m *EventsConfigurationResponse) GetReason() Reason {
+func (m *EventsConfigurationResponse) GetReason() EventsConfigurationResponse_Reason {
 	if m != nil {
 		return m.Reason
 	}
-	return Reason_UNDEFINED_REASON
+	return EventsConfigurationResponse_UNDEFINED_REASON
+}
+
+func (m *EventsConfigurationResponse) GetReasonDetail() string {
+	if m != nil {
+		return m.ReasonDetail
+	}
+	return ""
 }
 
 type EventMetaData struct {
@@ -858,6 +939,8 @@
 
 func init() {
 	proto.RegisterEnum("dmi.EventIds", EventIds_name, EventIds_value)
+	proto.RegisterEnum("dmi.ListEventsResponse_Reason", ListEventsResponse_Reason_name, ListEventsResponse_Reason_value)
+	proto.RegisterEnum("dmi.EventsConfigurationResponse_Reason", EventsConfigurationResponse_Reason_name, EventsConfigurationResponse_Reason_value)
 	proto.RegisterType((*ValueType)(nil), "dmi.ValueType")
 	proto.RegisterType((*WaterMarks)(nil), "dmi.WaterMarks")
 	proto.RegisterType((*Thresholds)(nil), "dmi.Thresholds")
@@ -874,90 +957,98 @@
 func init() { proto.RegisterFile("dmi/hw_events_mgmt_service.proto", fileDescriptor_8962d785556e9979) }
 
 var fileDescriptor_8962d785556e9979 = []byte{
-	// 1313 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x4b, 0x73, 0x1a, 0x47,
-	0x17, 0x15, 0x8c, 0x25, 0xc1, 0x95, 0xe1, 0xc3, 0x5d, 0xfe, 0x62, 0x09, 0x97, 0x63, 0x82, 0x12,
-	0x5b, 0x56, 0x22, 0xb0, 0xa5, 0xc4, 0x8e, 0xcb, 0x9b, 0x20, 0x18, 0x19, 0xaa, 0x10, 0xa8, 0x5a,
-	0x03, 0x4a, 0x65, 0x91, 0xa9, 0x16, 0xd3, 0x0c, 0x13, 0x31, 0xd3, 0x78, 0xa6, 0x07, 0xc5, 0x49,
-	0x55, 0x16, 0x59, 0x64, 0x91, 0x55, 0x5e, 0x3f, 0x23, 0x4e, 0x96, 0xf9, 0x0b, 0x79, 0xac, 0xf2,
-	0x5f, 0xf2, 0x5a, 0xa6, 0xa6, 0x67, 0x80, 0x11, 0x4f, 0xb9, 0x2a, 0x3b, 0xcd, 0x3d, 0xe7, 0xdc,
-	0x73, 0xba, 0xb9, 0xdd, 0xd5, 0x82, 0x8c, 0x66, 0x1a, 0xf9, 0xce, 0xb9, 0x4a, 0xfb, 0xd4, 0xe2,
-	0x8e, 0x6a, 0xea, 0x26, 0x57, 0x1d, 0x6a, 0xf7, 0x8d, 0x16, 0xcd, 0xf5, 0x6c, 0xc6, 0x19, 0x92,
-	0x34, 0xd3, 0x48, 0x5f, 0xf3, 0x68, 0x2d, 0x66, 0x9a, 0xcc, 0x72, 0xfc, 0x7a, 0xfa, 0xaa, 0xaf,
-	0x0c, 0xbe, 0x6e, 0xeb, 0x8c, 0xe9, 0x5d, 0x9a, 0x17, 0x5f, 0xa7, 0x6e, 0x3b, 0xcf, 0x0d, 0x93,
-	0x3a, 0x9c, 0x98, 0x3d, 0x9f, 0x90, 0x35, 0x20, 0xde, 0x24, 0x5d, 0x97, 0x2a, 0xcf, 0x7b, 0x14,
-	0x6d, 0xc0, 0xaa, 0x61, 0x71, 0xb5, 0x4f, 0xba, 0xeb, 0x91, 0x4c, 0x64, 0x4b, 0x2a, 0x2f, 0xe1,
-	0x15, 0xc3, 0xe2, 0x4d, 0xd2, 0x45, 0x37, 0x21, 0xe6, 0x0e, 0xb0, 0x68, 0x26, 0xb2, 0x75, 0xa5,
-	0xbc, 0x84, 0x57, 0xdd, 0x00, 0xbc, 0x05, 0xf1, 0x76, 0x97, 0x11, 0x1f, 0x95, 0x32, 0x91, 0xad,
-	0x68, 0x79, 0x09, 0xc7, 0x44, 0xa9, 0x49, 0xba, 0xfb, 0xcb, 0x20, 0xf5, 0x49, 0x37, 0x8b, 0x01,
-	0x4e, 0x08, 0xa7, 0xf6, 0x21, 0xb1, 0xcf, 0x1c, 0x94, 0x85, 0x2b, 0x1d, 0x43, 0xef, 0x08, 0xa3,
-	0xb5, 0xdd, 0x64, 0x4e, 0x33, 0x8d, 0xdc, 0x30, 0x09, 0x16, 0x18, 0xca, 0x80, 0xd4, 0x65, 0xe7,
-	0xc2, 0x6f, 0x92, 0xe2, 0x41, 0xd9, 0x33, 0x00, 0xa5, 0x63, 0x53, 0xa7, 0xc3, 0xba, 0x9a, 0x83,
-	0xee, 0xc2, 0xb2, 0xdb, 0xeb, 0x51, 0x3b, 0x68, 0xfa, 0x3f, 0xa1, 0x18, 0x79, 0x96, 0x97, 0xb0,
-	0x8f, 0x7b, 0xc4, 0x2e, 0x3b, 0xa7, 0x76, 0xd0, 0x7a, 0x1a, 0x51, 0xe0, 0xfb, 0x6b, 0x10, 0xe7,
-	0x83, 0xfe, 0xd9, 0xcf, 0xe0, 0xfa, 0xd0, 0xac, 0x62, 0xb5, 0x99, 0x6d, 0x12, 0x6e, 0x30, 0x0b,
-	0xbd, 0x03, 0x49, 0x76, 0xea, 0xfd, 0x3a, 0x54, 0xf3, 0x76, 0xc0, 0xa5, 0x33, 0x16, 0x95, 0x18,
-	0xb0, 0x44, 0x09, 0xe5, 0x01, 0x86, 0xbd, 0x9d, 0x0b, 0x49, 0x46, 0x4b, 0xc2, 0x21, 0x4a, 0xf6,
-	0xcb, 0x08, 0xc4, 0x64, 0x6f, 0x20, 0x8a, 0x6d, 0x1d, 0x6d, 0x41, 0x4c, 0x0c, 0x87, 0x6a, 0x68,
-	0xc2, 0x2e, 0xb9, 0x9b, 0x10, 0x5a, 0x41, 0xa8, 0x68, 0x0e, 0x5e, 0xa5, 0xfe, 0x5f, 0x68, 0x13,
-	0x12, 0x86, 0xa3, 0xb6, 0x98, 0xd5, 0x36, 0x74, 0xd7, 0xa6, 0x9a, 0xb0, 0x8a, 0xe1, 0xab, 0x86,
-	0x53, 0x1c, 0xd6, 0xc6, 0xc2, 0x48, 0x8b, 0xc3, 0xdc, 0x87, 0xb8, 0xb0, 0x72, 0xbc, 0x30, 0x9b,
-	0xb0, 0x6c, 0x70, 0x6a, 0x3a, 0xeb, 0x91, 0x8c, 0xb4, 0xb5, 0x16, 0x4e, 0x52, 0x6c, 0xeb, 0xd8,
-	0xc7, 0xb2, 0x5f, 0x44, 0x00, 0x55, 0x0d, 0x87, 0xfb, 0x32, 0x4c, 0x9d, 0x1e, 0xb3, 0x1c, 0x8a,
-	0x36, 0x61, 0xc5, 0xe1, 0x84, 0xbb, 0x4e, 0xb0, 0x8c, 0x35, 0x21, 0x3e, 0x16, 0x25, 0x1c, 0x40,
-	0x1e, 0xc9, 0xa6, 0xc4, 0x61, 0x96, 0x08, 0x3f, 0x20, 0x61, 0x51, 0xc2, 0x01, 0x84, 0xee, 0xc0,
-	0x8a, 0x7f, 0x5e, 0x82, 0xfc, 0xc9, 0x51, 0x0c, 0x2f, 0x25, 0x0e, 0xd0, 0xec, 0x8b, 0x08, 0xa4,
-	0x83, 0x6a, 0xb0, 0x01, 0xe2, 0x77, 0xc4, 0xf4, 0x99, 0x4b, 0x1d, 0x8e, 0xb6, 0x61, 0x4d, 0xa3,
-	0xde, 0x49, 0x53, 0x5d, 0x37, 0xd8, 0xdc, 0xb5, 0xdd, 0xb8, 0xe8, 0xd5, 0x70, 0x0d, 0x0d, 0x83,
-	0x8f, 0x7a, 0x7f, 0xa3, 0x6d, 0x58, 0x6d, 0x75, 0x88, 0xa5, 0x53, 0xe7, 0xc2, 0x94, 0x0e, 0x3d,
-	0xbd, 0x53, 0x12, 0x10, 0xd0, 0x36, 0xa4, 0x6c, 0xea, 0x50, 0xae, 0x72, 0xa6, 0x6a, 0xb4, 0x4d,
-	0xdc, 0x2e, 0x17, 0x41, 0x63, 0xe5, 0x25, 0x9c, 0x14, 0x88, 0xc2, 0x4a, 0x7e, 0xdd, 0x9b, 0x3b,
-	0xd6, 0xa3, 0x7e, 0xae, 0xac, 0x0e, 0x37, 0xa7, 0xc6, 0xfd, 0xaf, 0x37, 0x30, 0xfb, 0x5d, 0x04,
-	0x12, 0xc2, 0xe9, 0x90, 0x72, 0x52, 0x22, 0x9c, 0xbc, 0xd4, 0x5e, 0xdc, 0x87, 0x64, 0x8b, 0x99,
-	0x3d, 0x66, 0x79, 0x53, 0x29, 0xe8, 0xd1, 0x71, 0x7a, 0x62, 0x48, 0x10, 0x8a, 0x37, 0xc2, 0x0a,
-	0x8b, 0x98, 0x54, 0xec, 0x47, 0x3c, 0x44, 0xab, 0x11, 0x93, 0x66, 0x3f, 0x8f, 0xc2, 0xb2, 0x88,
-	0x85, 0x1e, 0x43, 0xd2, 0x1f, 0x7a, 0x93, 0x72, 0xa2, 0x11, 0x4e, 0x82, 0x44, 0x68, 0xb4, 0xeb,
-	0x83, 0xe8, 0x38, 0x41, 0x07, 0x9f, 0x1e, 0xf1, 0xc2, 0x79, 0x89, 0xce, 0x3d, 0x2f, 0x8f, 0x20,
-	0x6e, 0x13, 0xc3, 0xa1, 0x9a, 0x3a, 0x9c, 0xa4, 0x74, 0xce, 0xbf, 0x47, 0x73, 0x83, 0x7b, 0x34,
-	0xa7, 0x0c, 0xee, 0x51, 0x1c, 0xf3, 0xc9, 0x8a, 0x83, 0xde, 0x83, 0xe4, 0xf0, 0x80, 0xa8, 0x86,
-	0xd5, 0x66, 0xeb, 0x57, 0x84, 0x7a, 0xe3, 0xe2, 0x39, 0x0a, 0x5d, 0x1d, 0x38, 0xc1, 0xc3, 0x55,
-	0xb4, 0x01, 0x31, 0xa2, 0x05, 0xda, 0x65, 0xb1, 0x15, 0xab, 0x44, 0x13, 0xd0, 0xf6, 0xef, 0xc9,
-	0xe0, 0xf0, 0x57, 0x34, 0x07, 0xad, 0xc3, 0x75, 0xb9, 0x29, 0xd7, 0x14, 0xb5, 0x56, 0x38, 0x94,
-	0xd5, 0x46, 0xad, 0x24, 0x1f, 0x54, 0x6a, 0x72, 0x29, 0xb5, 0x84, 0x5e, 0x85, 0xb4, 0x8f, 0x28,
-	0xb8, 0x50, 0x3b, 0x2e, 0xca, 0x95, 0xa6, 0x8c, 0xd5, 0xa3, 0x6a, 0xe3, 0xa9, 0x5a, 0x6f, 0x28,
-	0x29, 0x0d, 0xdd, 0x82, 0x8d, 0x19, 0x78, 0xa5, 0x96, 0xa2, 0x68, 0x07, 0xee, 0x4d, 0xc2, 0xcd,
-	0x7a, 0x55, 0x29, 0x3c, 0x95, 0xd5, 0xc2, 0x7e, 0xbd, 0x29, 0xab, 0x4a, 0x19, 0xcb, 0xc7, 0xe5,
-	0x7a, 0xb5, 0x94, 0x6a, 0xcf, 0xa7, 0xef, 0xcb, 0xd5, 0xfa, 0x49, 0x88, 0xae, 0xa3, 0x07, 0xb0,
-	0x33, 0x49, 0x57, 0xe4, 0xc3, 0x23, 0x19, 0x17, 0x94, 0x06, 0x9e, 0x74, 0xe8, 0x2c, 0x96, 0x8c,
-	0xbb, 0x18, 0xd3, 0x43, 0x15, 0x1b, 0x18, 0x7b, 0xb5, 0x71, 0x87, 0x8f, 0xe6, 0xd3, 0xc7, 0xbb,
-	0x9f, 0xa1, 0x1c, 0x6c, 0x4f, 0xd2, 0xf1, 0xfb, 0xea, 0x51, 0xfd, 0x44, 0xc6, 0x13, 0xed, 0xbb,
-	0x0b, 0xf8, 0xe3, 0xfd, 0xcd, 0xe9, 0x7c, 0x65, 0x56, 0x7f, 0x6b, 0x01, 0x7f, 0xbc, 0x3f, 0x9b,
-	0x3e, 0x00, 0x07, 0x85, 0x4a, 0xb5, 0x81, 0xe5, 0x54, 0x0f, 0x3d, 0x82, 0xbd, 0x4b, 0x0f, 0x80,
-	0x8a, 0xe5, 0x62, 0xbd, 0x29, 0x63, 0xb9, 0x94, 0x7a, 0x36, 0x5f, 0x38, 0x16, 0x23, 0x24, 0xb4,
-	0xd1, 0x13, 0x78, 0xf4, 0x52, 0x43, 0x11, 0x12, 0x3b, 0x8b, 0xc5, 0xb3, 0x9d, 0xf9, 0xf4, 0xc8,
-	0x33, 0x06, 0x25, 0x24, 0x74, 0xe7, 0x0b, 0x67, 0x3b, 0xf6, 0xd1, 0xbb, 0xf0, 0xf6, 0xe5, 0x87,
-	0x27, 0xa4, 0x3c, 0x5f, 0xa0, 0x9c, 0xed, 0xf9, 0xf1, 0x74, 0xa5, 0xb2, 0xd8, 0xf3, 0xf9, 0x02,
-	0xe5, 0x6c, 0xcf, 0x4f, 0xd0, 0x5d, 0xd8, 0x9c, 0x39, 0x64, 0x21, 0xe2, 0xa7, 0xe8, 0x06, 0x20,
-	0x9f, 0x78, 0x74, 0xdc, 0x18, 0x5d, 0x53, 0x3f, 0x47, 0xd0, 0x2b, 0x70, 0x6d, 0x0c, 0xa8, 0xd4,
-	0x52, 0xbf, 0x8c, 0xd5, 0x07, 0x63, 0xfb, 0x6b, 0x04, 0x65, 0xe0, 0xe6, 0x44, 0x3d, 0xe4, 0xf4,
-	0x5b, 0x48, 0x79, 0x50, 0xa8, 0x0d, 0x95, 0xdf, 0x47, 0x47, 0x11, 0xbc, 0xfa, 0x30, 0xc2, 0x8b,
-	0xe8, 0x45, 0xc1, 0x20, 0xc2, 0x0f, 0xd1, 0x91, 0x55, 0xa8, 0x51, 0xc8, 0xea, 0xc7, 0x28, 0xba,
-	0x07, 0xaf, 0xfb, 0x8c, 0xe2, 0x51, 0x63, 0xca, 0x28, 0x17, 0x71, 0x45, 0xa9, 0x14, 0x0b, 0xd5,
-	0xd4, 0x57, 0x12, 0xba, 0x03, 0xaf, 0xcd, 0xa3, 0x1e, 0x14, 0x94, 0x42, 0x35, 0xf5, 0xb5, 0x84,
-	0xf6, 0x20, 0x77, 0x99, 0x96, 0xa1, 0x1c, 0xdf, 0x48, 0xe8, 0x3e, 0xbc, 0xb9, 0xb0, 0x79, 0x48,
-	0xf1, 0xad, 0x84, 0xd2, 0xf0, 0x7f, 0x5f, 0x51, 0x3e, 0x51, 0x4b, 0x72, 0xb3, 0x52, 0xf4, 0x56,
-	0x76, 0x2c, 0x2b, 0xa9, 0x3f, 0x24, 0x94, 0x1f, 0xdc, 0x34, 0x23, 0x6c, 0xce, 0xda, 0xfe, 0x94,
-	0xd0, 0x5b, 0x70, 0x77, 0xb1, 0xc0, 0x5f, 0xe1, 0x5f, 0x12, 0x7a, 0x3c, 0x98, 0xb6, 0xcb, 0xb4,
-	0x0f, 0xa5, 0xfe, 0x5b, 0x42, 0x0f, 0xe1, 0xc1, 0x25, 0x8d, 0x42, 0xba, 0x7f, 0xa4, 0xdd, 0x9f,
-	0x22, 0x70, 0xab, 0x46, 0xb8, 0xd1, 0xa7, 0xfe, 0xfb, 0xea, 0x90, 0x58, 0x44, 0xa7, 0x26, 0xb5,
-	0xf8, 0xb1, 0xff, 0xbf, 0x16, 0x7a, 0x08, 0x30, 0x7a, 0xb2, 0x22, 0xff, 0x41, 0x5c, 0x26, 0xb6,
-	0x76, 0x4e, 0x6c, 0x5a, 0x29, 0xa5, 0x6f, 0x88, 0xc2, 0x94, 0x47, 0xed, 0x87, 0xb0, 0xd1, 0xe8,
-	0x69, 0x84, 0xd3, 0x29, 0x0f, 0x37, 0x74, 0x3b, 0xfc, 0x46, 0x9c, 0xf2, 0x02, 0x4d, 0x67, 0x66,
-	0x13, 0xfc, 0xfe, 0xfb, 0x4f, 0x3e, 0x78, 0xac, 0x1b, 0xbc, 0xe3, 0x9e, 0xe6, 0x5a, 0xcc, 0xcc,
-	0xb3, 0x1e, 0xb5, 0x5a, 0xcc, 0xd6, 0xf2, 0xfe, 0x6b, 0x6c, 0xc7, 0x1c, 0xae, 0x63, 0xc7, 0xb0,
-	0x38, 0xb5, 0xdb, 0xa4, 0x45, 0xf3, 0xfd, 0xbd, 0xbc, 0xce, 0xf2, 0x9a, 0x69, 0x9c, 0xae, 0x88,
-	0x57, 0xcc, 0xde, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x86, 0xc2, 0xf7, 0x19, 0x65, 0x0e, 0x00,
-	0x00,
+	// 1448 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x4b, 0x73, 0xdb, 0xd4,
+	0x17, 0x8f, 0xad, 0x3c, 0x9c, 0x93, 0xc6, 0x7f, 0xf5, 0x4e, 0xff, 0x6d, 0xe2, 0x4e, 0x5b, 0xe3,
+	0x40, 0x93, 0x06, 0x62, 0xb7, 0x09, 0xb4, 0x74, 0xba, 0x00, 0xc5, 0x56, 0x6a, 0x0d, 0x8e, 0x9c,
+	0xb9, 0x91, 0x1d, 0x86, 0x45, 0x35, 0x37, 0xd6, 0xb5, 0x2d, 0x6a, 0x49, 0xae, 0x74, 0x95, 0x50,
+	0x98, 0x61, 0xc1, 0x92, 0x15, 0xaf, 0x25, 0xc3, 0x27, 0xa0, 0xb0, 0xe4, 0x2b, 0xf0, 0x58, 0xf1,
+	0x5d, 0x78, 0x2d, 0x19, 0x5d, 0xc9, 0xb6, 0xe2, 0x47, 0x9c, 0xce, 0xb0, 0xb3, 0xce, 0xf9, 0xfd,
+	0xce, 0xf9, 0x5d, 0x9d, 0x73, 0x8f, 0x8e, 0x21, 0x6b, 0x58, 0x66, 0xa1, 0x7d, 0xaa, 0xd3, 0x13,
+	0x6a, 0x33, 0x4f, 0xb7, 0x5a, 0x16, 0xd3, 0x3d, 0xea, 0x9e, 0x98, 0x0d, 0x9a, 0xef, 0xba, 0x0e,
+	0x73, 0x90, 0x60, 0x58, 0x66, 0xe6, 0x72, 0x00, 0x6b, 0x38, 0x96, 0xe5, 0xd8, 0x5e, 0x68, 0xcf,
+	0x5c, 0x0a, 0x99, 0xd1, 0xd3, 0xad, 0x96, 0xe3, 0xb4, 0x3a, 0xb4, 0xc0, 0x9f, 0x8e, 0xfd, 0x66,
+	0x81, 0x99, 0x16, 0xf5, 0x18, 0xb1, 0xba, 0x21, 0x20, 0x67, 0xc2, 0x62, 0x9d, 0x74, 0x7c, 0xaa,
+	0x3d, 0xef, 0x52, 0xb4, 0x0a, 0x0b, 0xa6, 0xcd, 0xf4, 0x13, 0xd2, 0x59, 0x49, 0x64, 0x13, 0x1b,
+	0x42, 0x79, 0x06, 0xcf, 0x9b, 0x36, 0xab, 0x93, 0x0e, 0xba, 0x0e, 0x29, 0xbf, 0xe7, 0x4b, 0x66,
+	0x13, 0x1b, 0xb3, 0xe5, 0x19, 0xbc, 0xe0, 0x47, 0xce, 0x1b, 0xb0, 0xd8, 0xec, 0x38, 0x24, 0xf4,
+	0x0a, 0xd9, 0xc4, 0x46, 0xb2, 0x3c, 0x83, 0x53, 0xdc, 0x54, 0x27, 0x9d, 0xdd, 0x39, 0x10, 0x4e,
+	0x48, 0x27, 0x87, 0x01, 0x8e, 0x08, 0xa3, 0xee, 0x3e, 0x71, 0x9f, 0x7a, 0x28, 0x07, 0xb3, 0x6d,
+	0xb3, 0xd5, 0xe6, 0x89, 0x96, 0xb6, 0xd3, 0x79, 0xc3, 0x32, 0xf3, 0x7d, 0x25, 0x98, 0xfb, 0x50,
+	0x16, 0x84, 0x8e, 0x73, 0xca, 0xf3, 0x8d, 0x42, 0x02, 0x57, 0xee, 0x29, 0x80, 0xd6, 0x76, 0xa9,
+	0xd7, 0x76, 0x3a, 0x86, 0x87, 0xd6, 0x61, 0xce, 0xef, 0x76, 0xa9, 0x1b, 0x05, 0xfd, 0x1f, 0x67,
+	0x0c, 0x72, 0x96, 0x67, 0x70, 0xe8, 0x0f, 0x80, 0x1d, 0xe7, 0x94, 0xba, 0x51, 0xe8, 0x71, 0x40,
+	0xee, 0xdf, 0x5d, 0x82, 0x45, 0xd6, 0x8b, 0x9f, 0xfb, 0x14, 0xae, 0xf4, 0x93, 0x29, 0x76, 0xd3,
+	0x71, 0x2d, 0xc2, 0x4c, 0xc7, 0x46, 0x6f, 0x41, 0xda, 0x39, 0x0e, 0xaa, 0x43, 0x8d, 0xe0, 0x0d,
+	0xf8, 0x74, 0xc2, 0xa1, 0x96, 0x7b, 0x28, 0x6e, 0x42, 0x05, 0x80, 0x7e, 0x6c, 0xef, 0x8c, 0x92,
+	0xc1, 0x91, 0x70, 0x0c, 0x92, 0xfb, 0x3c, 0x01, 0x29, 0x39, 0x68, 0x88, 0x62, 0xb3, 0x85, 0x36,
+	0x20, 0xc5, 0x9b, 0x43, 0x37, 0x0d, 0x9e, 0x2e, 0xbd, 0xbd, 0xcc, 0xb9, 0x1c, 0xa0, 0x18, 0x1e,
+	0x5e, 0xa0, 0xe1, 0x2f, 0xb4, 0x06, 0xcb, 0xa6, 0xa7, 0x37, 0x1c, 0xbb, 0x69, 0xb6, 0x7c, 0x97,
+	0x1a, 0x3c, 0x55, 0x0a, 0x5f, 0x32, 0xbd, 0x62, 0xdf, 0x36, 0x24, 0x46, 0x98, 0x2e, 0xe6, 0x2e,
+	0x2c, 0xf2, 0x54, 0x5e, 0x20, 0x66, 0x0d, 0xe6, 0x4c, 0x46, 0x2d, 0x6f, 0x25, 0x91, 0x15, 0x36,
+	0x96, 0xe2, 0x4a, 0x8a, 0xcd, 0x16, 0x0e, 0x7d, 0xb9, 0xef, 0x92, 0x80, 0x2a, 0xa6, 0xc7, 0x42,
+	0x1a, 0xa6, 0x5e, 0xd7, 0xb1, 0x3d, 0x8a, 0xd6, 0x60, 0xde, 0x63, 0x84, 0xf9, 0x5e, 0x74, 0x8c,
+	0x25, 0x4e, 0x3e, 0xe4, 0x26, 0x1c, 0xb9, 0xd0, 0x7d, 0x98, 0x77, 0x29, 0xf1, 0x1c, 0x9b, 0x8b,
+	0x4f, 0x6f, 0xdf, 0xe4, 0xa0, 0xd1, 0x68, 0x79, 0xcc, 0x51, 0x38, 0x42, 0xa3, 0xdb, 0x30, 0x1f,
+	0x5e, 0xa1, 0xe8, 0x48, 0xe9, 0x81, 0xb2, 0x40, 0x38, 0x8e, 0xbc, 0xc1, 0x3b, 0x0a, 0x19, 0xba,
+	0x41, 0x19, 0x31, 0x3b, 0x2b, 0xb3, 0xd9, 0xc4, 0xc6, 0x22, 0xbe, 0x14, 0x1a, 0x4b, 0xdc, 0x96,
+	0x7b, 0x02, 0xf3, 0x61, 0x78, 0x74, 0x05, 0xc4, 0x9a, 0x5a, 0x92, 0xf7, 0x14, 0x55, 0x2e, 0xe9,
+	0x58, 0x96, 0x0e, 0xab, 0xaa, 0x38, 0x83, 0x10, 0xa4, 0x6b, 0xea, 0x7b, 0x6a, 0xf5, 0x48, 0xd5,
+	0x4b, 0x72, 0x5d, 0x29, 0xca, 0x62, 0x22, 0xb0, 0x29, 0xaa, 0x26, 0x63, 0x55, 0xaa, 0xe8, 0x32,
+	0xc6, 0x55, 0x2c, 0x26, 0xd1, 0x55, 0x40, 0xa1, 0x5f, 0xaf, 0xa9, 0x58, 0x96, 0x8a, 0x65, 0x69,
+	0xb7, 0x22, 0x8b, 0x42, 0xee, 0x45, 0x02, 0x32, 0x91, 0xb4, 0xa8, 0x30, 0xbc, 0xbf, 0x30, 0x7d,
+	0xe6, 0x53, 0x8f, 0xa1, 0x4d, 0x58, 0x32, 0x68, 0x30, 0x01, 0x74, 0xdf, 0x8f, 0x8a, 0xbe, 0xb4,
+	0xbd, 0xc8, 0x0f, 0x54, 0xf3, 0x4d, 0x03, 0x43, 0xe8, 0x0d, 0x7e, 0xa3, 0x4d, 0x58, 0x68, 0xb4,
+	0x89, 0xdd, 0xa2, 0xde, 0x99, 0xdb, 0xd3, 0x3f, 0x78, 0x70, 0x7b, 0x23, 0x00, 0xda, 0x04, 0xd1,
+	0xa5, 0x1e, 0x65, 0x3a, 0x73, 0x74, 0x83, 0x36, 0x89, 0xdf, 0x61, 0xfc, 0x6d, 0xa5, 0xca, 0x33,
+	0x38, 0xcd, 0x3d, 0x9a, 0x53, 0x0a, 0xed, 0xc1, 0x7d, 0x70, 0xba, 0x34, 0xd4, 0x95, 0xfb, 0x36,
+	0x09, 0xd7, 0xc7, 0xea, 0x7d, 0x99, 0xca, 0xbe, 0x33, 0x54, 0xd9, 0xf5, 0xb8, 0xd0, 0x71, 0x61,
+	0x87, 0x4b, 0x3c, 0x52, 0x3a, 0x61, 0x4c, 0xe9, 0xdc, 0xff, 0xa8, 0x74, 0xdc, 0x56, 0x97, 0x2a,
+	0x4a, 0x49, 0x2f, 0x56, 0xd5, 0x3d, 0xe5, 0xb1, 0x28, 0x4c, 0x28, 0xe7, 0x6c, 0xee, 0x9b, 0x04,
+	0x2c, 0xf3, 0x73, 0xec, 0x53, 0x46, 0x4a, 0x84, 0x91, 0x97, 0xaa, 0xe0, 0x5d, 0x48, 0x37, 0x1c,
+	0xab, 0xeb, 0xd8, 0xc1, 0x1d, 0xe7, 0xf0, 0xe4, 0x30, 0x7c, 0xb9, 0x0f, 0xe0, 0x8c, 0xd7, 0xe2,
+	0x0c, 0x9b, 0x58, 0x34, 0x7a, 0x13, 0x03, 0x98, 0x4a, 0x2c, 0x9a, 0xfb, 0x2c, 0x09, 0x73, 0x5c,
+	0x16, 0x7a, 0x08, 0xe9, 0x70, 0x84, 0x58, 0x94, 0x11, 0x83, 0x30, 0x12, 0x29, 0x42, 0x83, 0x12,
+	0xf4, 0xa4, 0xe3, 0x65, 0xda, 0x7b, 0x0c, 0x80, 0x67, 0xa6, 0x4f, 0xf2, 0xdc, 0xe9, 0xf3, 0x00,
+	0x16, 0x5d, 0x62, 0x7a, 0xd4, 0xd0, 0xfb, 0x97, 0x30, 0x93, 0x0f, 0xbf, 0x4a, 0xf9, 0xde, 0x57,
+	0x29, 0xaf, 0xf5, 0xbe, 0x4a, 0x38, 0x15, 0x82, 0x35, 0x0f, 0xbd, 0x0b, 0xe9, 0xfe, 0xb8, 0xd1,
+	0x4d, 0xbb, 0xe9, 0xf0, 0x3b, 0xb9, 0xb4, 0xbd, 0x7a, 0x76, 0x2a, 0xc5, 0x06, 0x31, 0x5e, 0x66,
+	0x71, 0x2b, 0x5a, 0x85, 0x14, 0x31, 0x22, 0xee, 0x1c, 0x7f, 0x15, 0x0b, 0xc4, 0xe0, 0xae, 0xcd,
+	0xdf, 0xd3, 0xd1, 0x28, 0x55, 0x0c, 0x0f, 0xad, 0xc0, 0x15, 0xb9, 0x2e, 0xab, 0x9a, 0xae, 0x4a,
+	0xfb, 0x41, 0x11, 0xa3, 0xee, 0x10, 0x67, 0xd0, 0x4d, 0xc8, 0x84, 0x1e, 0x0d, 0x4b, 0xea, 0x61,
+	0x51, 0x56, 0xea, 0x32, 0xd6, 0x0f, 0x2a, 0xb5, 0xc7, 0x7a, 0xb5, 0xa6, 0x89, 0x06, 0xba, 0x01,
+	0xab, 0x13, 0xfc, 0x8a, 0x2a, 0x52, 0xb4, 0x05, 0x77, 0x46, 0xdd, 0xf5, 0x6a, 0x45, 0x93, 0x1e,
+	0xcb, 0xba, 0xb4, 0x5b, 0xad, 0xcb, 0xba, 0x56, 0xc6, 0xf2, 0x61, 0xb9, 0x5a, 0x29, 0x89, 0xcd,
+	0xf3, 0xe1, 0xbb, 0x72, 0xa5, 0x7a, 0x14, 0x83, 0xb7, 0xd0, 0x3d, 0xd8, 0x1a, 0x85, 0x6b, 0xf2,
+	0xfe, 0x81, 0x8c, 0x25, 0xad, 0x86, 0x47, 0x33, 0xb4, 0xa7, 0x53, 0x86, 0xb3, 0x98, 0xe3, 0x45,
+	0x15, 0x6b, 0x18, 0x07, 0xb6, 0xe1, 0x0c, 0x1f, 0x9e, 0x0f, 0x1f, 0x8e, 0xfe, 0x14, 0xe5, 0x61,
+	0x73, 0x14, 0x8e, 0xdf, 0xd7, 0x0f, 0xaa, 0x47, 0x32, 0x1e, 0x09, 0xdf, 0x99, 0x82, 0x1f, 0x8e,
+	0x6f, 0x8d, 0xc7, 0x6b, 0x93, 0xe2, 0xdb, 0x53, 0xf0, 0xc3, 0xf1, 0x9d, 0xf1, 0x0d, 0xb0, 0x27,
+	0x29, 0x95, 0x1a, 0x96, 0xc5, 0x2e, 0x7a, 0x00, 0x3b, 0x17, 0x6e, 0x00, 0x1d, 0xcb, 0xc5, 0x6a,
+	0x5d, 0xc6, 0x72, 0x49, 0x7c, 0x76, 0x3e, 0x71, 0x48, 0x46, 0x8c, 0xe8, 0xa2, 0x47, 0xf0, 0xe0,
+	0xa5, 0x9a, 0x22, 0x46, 0xf6, 0xa6, 0x93, 0x27, 0x67, 0x66, 0xe3, 0x25, 0x4f, 0x68, 0x94, 0x18,
+	0xd1, 0x3f, 0x9f, 0x38, 0x39, 0xe3, 0x09, 0x7a, 0x1b, 0xde, 0xbc, 0x78, 0xf3, 0xc4, 0x98, 0xa7,
+	0x53, 0x98, 0x93, 0x73, 0x7e, 0x34, 0x9e, 0xa9, 0x4d, 0xcf, 0xf9, 0x7c, 0x0a, 0x73, 0x72, 0xce,
+	0x8f, 0xd1, 0x3a, 0xac, 0x4d, 0x6c, 0xb2, 0x18, 0xf0, 0x13, 0x74, 0x0d, 0x50, 0x08, 0x3c, 0x38,
+	0xac, 0x0d, 0xc6, 0xd4, 0xcf, 0x09, 0x74, 0x15, 0x2e, 0x0f, 0x39, 0x14, 0x55, 0xfc, 0x65, 0xc8,
+	0xde, 0x6b, 0xdb, 0x5f, 0x13, 0x28, 0x0b, 0xd7, 0x47, 0xec, 0xb1, 0x4c, 0xbf, 0xc5, 0x98, 0x7b,
+	0x92, 0xda, 0x67, 0x7e, 0x9f, 0x1c, 0x48, 0x08, 0xec, 0x7d, 0x09, 0x2f, 0x92, 0x67, 0x09, 0x3d,
+	0x09, 0x3f, 0x24, 0x07, 0xa9, 0x62, 0x81, 0x62, 0xa9, 0x7e, 0x4c, 0xa2, 0x3b, 0xf0, 0x6a, 0x88,
+	0x28, 0x1e, 0xd4, 0xc6, 0xb4, 0x72, 0x11, 0x2b, 0x9a, 0x52, 0x94, 0x2a, 0xe2, 0x17, 0x02, 0xba,
+	0x0d, 0xaf, 0x9c, 0x07, 0xdd, 0x93, 0x34, 0xa9, 0x22, 0x7e, 0x29, 0xa0, 0x1d, 0xc8, 0x5f, 0x24,
+	0x64, 0x4c, 0xc7, 0x57, 0x02, 0xba, 0x0b, 0xaf, 0x4f, 0x0d, 0x1e, 0x63, 0x7c, 0x2d, 0xa0, 0x0c,
+	0xfc, 0x3f, 0x64, 0x94, 0x8f, 0xa2, 0xb5, 0x42, 0xc7, 0xf2, 0xa1, 0xac, 0x89, 0x7f, 0x08, 0xa8,
+	0xd0, 0x9b, 0x34, 0x03, 0xdf, 0x39, 0x67, 0xfb, 0x53, 0x40, 0x6f, 0xc0, 0xfa, 0x74, 0x42, 0x78,
+	0xc2, 0xbf, 0x04, 0xf4, 0xb0, 0xd7, 0x6d, 0x17, 0x09, 0x1f, 0x53, 0xfd, 0xb7, 0x80, 0xee, 0xc3,
+	0xbd, 0x0b, 0x26, 0x8a, 0xf1, 0xfe, 0x11, 0xb6, 0x7f, 0x4a, 0xc0, 0x0d, 0x95, 0x30, 0xf3, 0x84,
+	0x86, 0xdb, 0xdb, 0x3e, 0xb1, 0x49, 0x8b, 0x5a, 0xd4, 0x66, 0x87, 0xe1, 0x3f, 0x57, 0x74, 0x1f,
+	0x60, 0xb0, 0xb2, 0xa3, 0xf0, 0xef, 0x45, 0x99, 0xb8, 0xc6, 0x29, 0x71, 0xa9, 0x52, 0xca, 0x5c,
+	0x9b, 0xb0, 0xd4, 0xa3, 0x27, 0xb0, 0x5a, 0xeb, 0x1a, 0x84, 0xd1, 0x31, 0x6b, 0x21, 0xba, 0x35,
+	0x79, 0x61, 0xe4, 0x7b, 0x73, 0x26, 0x3b, 0x6d, 0xa3, 0xdc, 0x7d, 0xf4, 0xc1, 0xc3, 0x96, 0xc9,
+	0xda, 0xfe, 0x71, 0xbe, 0xe1, 0x58, 0x05, 0xa7, 0x4b, 0xed, 0x86, 0xe3, 0x1a, 0x85, 0x70, 0x1b,
+	0xdb, 0xb2, 0xfa, 0xe7, 0xd8, 0x32, 0x6d, 0x46, 0xdd, 0x26, 0x69, 0xd0, 0xc2, 0xc9, 0x4e, 0xa1,
+	0xe5, 0x14, 0x0c, 0xcb, 0x3c, 0x9e, 0xe7, 0x5b, 0xcc, 0xce, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff,
+	0x36, 0x83, 0x3b, 0x4c, 0xb3, 0x0f, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
diff --git a/vendor/github.com/opencord/device-management-interface/go/dmi/hw_management_service.pb.go b/vendor/github.com/opencord/device-management-interface/go/dmi/hw_management_service.pb.go
index dded8f3..18d6108 100644
--- a/vendor/github.com/opencord/device-management-interface/go/dmi/hw_management_service.pb.go
+++ b/vendor/github.com/opencord/device-management-interface/go/dmi/hw_management_service.pb.go
@@ -23,6 +23,340 @@
 // proto package needs to be updated.
 const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
+type PhysicalInventoryResponse_Reason int32
+
+const (
+	PhysicalInventoryResponse_UNDEFINED_REASON   PhysicalInventoryResponse_Reason = 0
+	PhysicalInventoryResponse_UNKNOWN_DEVICE     PhysicalInventoryResponse_Reason = 1
+	PhysicalInventoryResponse_INTERNAL_ERROR     PhysicalInventoryResponse_Reason = 2
+	PhysicalInventoryResponse_DEVICE_UNREACHABLE PhysicalInventoryResponse_Reason = 3
+)
+
+var PhysicalInventoryResponse_Reason_name = map[int32]string{
+	0: "UNDEFINED_REASON",
+	1: "UNKNOWN_DEVICE",
+	2: "INTERNAL_ERROR",
+	3: "DEVICE_UNREACHABLE",
+}
+
+var PhysicalInventoryResponse_Reason_value = map[string]int32{
+	"UNDEFINED_REASON":   0,
+	"UNKNOWN_DEVICE":     1,
+	"INTERNAL_ERROR":     2,
+	"DEVICE_UNREACHABLE": 3,
+}
+
+func (x PhysicalInventoryResponse_Reason) String() string {
+	return proto.EnumName(PhysicalInventoryResponse_Reason_name, int32(x))
+}
+
+func (PhysicalInventoryResponse_Reason) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_eae902e73066286d, []int{1, 0}
+}
+
+type HWComponentInfoGetResponse_Reason int32
+
+const (
+	HWComponentInfoGetResponse_UNDEFINED_REASON   HWComponentInfoGetResponse_Reason = 0
+	HWComponentInfoGetResponse_UNKNOWN_DEVICE     HWComponentInfoGetResponse_Reason = 1
+	HWComponentInfoGetResponse_UNKNOWN_COMPONENT  HWComponentInfoGetResponse_Reason = 2
+	HWComponentInfoGetResponse_INTERNAL_ERROR     HWComponentInfoGetResponse_Reason = 3
+	HWComponentInfoGetResponse_DEVICE_UNREACHABLE HWComponentInfoGetResponse_Reason = 4
+)
+
+var HWComponentInfoGetResponse_Reason_name = map[int32]string{
+	0: "UNDEFINED_REASON",
+	1: "UNKNOWN_DEVICE",
+	2: "UNKNOWN_COMPONENT",
+	3: "INTERNAL_ERROR",
+	4: "DEVICE_UNREACHABLE",
+}
+
+var HWComponentInfoGetResponse_Reason_value = map[string]int32{
+	"UNDEFINED_REASON":   0,
+	"UNKNOWN_DEVICE":     1,
+	"UNKNOWN_COMPONENT":  2,
+	"INTERNAL_ERROR":     3,
+	"DEVICE_UNREACHABLE": 4,
+}
+
+func (x HWComponentInfoGetResponse_Reason) String() string {
+	return proto.EnumName(HWComponentInfoGetResponse_Reason_name, int32(x))
+}
+
+func (HWComponentInfoGetResponse_Reason) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_eae902e73066286d, []int{3, 0}
+}
+
+type HWComponentInfoSetResponse_Reason int32
+
+const (
+	HWComponentInfoSetResponse_UNDEFINED_REASON   HWComponentInfoSetResponse_Reason = 0
+	HWComponentInfoSetResponse_UNKNOWN_DEVICE     HWComponentInfoSetResponse_Reason = 1
+	HWComponentInfoSetResponse_UNKNOWN_COMPONENT  HWComponentInfoSetResponse_Reason = 2
+	HWComponentInfoSetResponse_INVALID_PARAMS     HWComponentInfoSetResponse_Reason = 3
+	HWComponentInfoSetResponse_INTERNAL_ERROR     HWComponentInfoSetResponse_Reason = 4
+	HWComponentInfoSetResponse_DEVICE_UNREACHABLE HWComponentInfoSetResponse_Reason = 5
+)
+
+var HWComponentInfoSetResponse_Reason_name = map[int32]string{
+	0: "UNDEFINED_REASON",
+	1: "UNKNOWN_DEVICE",
+	2: "UNKNOWN_COMPONENT",
+	3: "INVALID_PARAMS",
+	4: "INTERNAL_ERROR",
+	5: "DEVICE_UNREACHABLE",
+}
+
+var HWComponentInfoSetResponse_Reason_value = map[string]int32{
+	"UNDEFINED_REASON":   0,
+	"UNKNOWN_DEVICE":     1,
+	"UNKNOWN_COMPONENT":  2,
+	"INVALID_PARAMS":     3,
+	"INTERNAL_ERROR":     4,
+	"DEVICE_UNREACHABLE": 5,
+}
+
+func (x HWComponentInfoSetResponse_Reason) String() string {
+	return proto.EnumName(HWComponentInfoSetResponse_Reason_name, int32(x))
+}
+
+func (HWComponentInfoSetResponse_Reason) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_eae902e73066286d, []int{5, 0}
+}
+
+type StartManagingDeviceResponse_Reason int32
+
+const (
+	StartManagingDeviceResponse_UNDEFINED_REASON StartManagingDeviceResponse_Reason = 0
+	// DEVICE_ALREADY_MANAGED is returned when StartManagingDevice is called again for the same name AFTER a previously
+	// successful StartManagingDevice operation
+	StartManagingDeviceResponse_DEVICE_ALREADY_MANAGED StartManagingDeviceResponse_Reason = 1
+	// OPERATION_ALREADY_IN_PROGRESS is returned when StartManagingDevice is called again for the same name BEFORE
+	// a previous StartManagingDevice operation has completed
+	StartManagingDeviceResponse_OPERATION_ALREADY_IN_PROGRESS StartManagingDeviceResponse_Reason = 2
+	StartManagingDeviceResponse_INVALID_PARAMS                StartManagingDeviceResponse_Reason = 3
+	StartManagingDeviceResponse_INTERNAL_ERROR                StartManagingDeviceResponse_Reason = 4
+)
+
+var StartManagingDeviceResponse_Reason_name = map[int32]string{
+	0: "UNDEFINED_REASON",
+	1: "DEVICE_ALREADY_MANAGED",
+	2: "OPERATION_ALREADY_IN_PROGRESS",
+	3: "INVALID_PARAMS",
+	4: "INTERNAL_ERROR",
+}
+
+var StartManagingDeviceResponse_Reason_value = map[string]int32{
+	"UNDEFINED_REASON":              0,
+	"DEVICE_ALREADY_MANAGED":        1,
+	"OPERATION_ALREADY_IN_PROGRESS": 2,
+	"INVALID_PARAMS":                3,
+	"INTERNAL_ERROR":                4,
+}
+
+func (x StartManagingDeviceResponse_Reason) String() string {
+	return proto.EnumName(StartManagingDeviceResponse_Reason_name, int32(x))
+}
+
+func (StartManagingDeviceResponse_Reason) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_eae902e73066286d, []int{6, 0}
+}
+
+// The only case in which an error is expected is if the name of the
+// device to be stopped is not found
+type StopManagingDeviceResponse_Reason int32
+
+const (
+	StopManagingDeviceResponse_UNDEFINED_REASON StopManagingDeviceResponse_Reason = 0
+	StopManagingDeviceResponse_UNKNOWN_DEVICE   StopManagingDeviceResponse_Reason = 1
+)
+
+var StopManagingDeviceResponse_Reason_name = map[int32]string{
+	0: "UNDEFINED_REASON",
+	1: "UNKNOWN_DEVICE",
+}
+
+var StopManagingDeviceResponse_Reason_value = map[string]int32{
+	"UNDEFINED_REASON": 0,
+	"UNKNOWN_DEVICE":   1,
+}
+
+func (x StopManagingDeviceResponse_Reason) String() string {
+	return proto.EnumName(StopManagingDeviceResponse_Reason_name, int32(x))
+}
+
+func (StopManagingDeviceResponse_Reason) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_eae902e73066286d, []int{8, 0}
+}
+
+type SetRemoteEndpointResponse_Reason int32
+
+const (
+	SetRemoteEndpointResponse_UNDEFINED_REASON                SetRemoteEndpointResponse_Reason = 0
+	SetRemoteEndpointResponse_UNKNOWN_DEVICE                  SetRemoteEndpointResponse_Reason = 1
+	SetRemoteEndpointResponse_INTERNAL_ERROR                  SetRemoteEndpointResponse_Reason = 2
+	SetRemoteEndpointResponse_LOGGING_ENDPOINT_ERROR          SetRemoteEndpointResponse_Reason = 3
+	SetRemoteEndpointResponse_LOGGING_ENDPOINT_PROTOCOL_ERROR SetRemoteEndpointResponse_Reason = 4
+	SetRemoteEndpointResponse_MSGBUS_ENDPOINT_ERROR           SetRemoteEndpointResponse_Reason = 5
+	SetRemoteEndpointResponse_DEVICE_UNREACHABLE              SetRemoteEndpointResponse_Reason = 6
+)
+
+var SetRemoteEndpointResponse_Reason_name = map[int32]string{
+	0: "UNDEFINED_REASON",
+	1: "UNKNOWN_DEVICE",
+	2: "INTERNAL_ERROR",
+	3: "LOGGING_ENDPOINT_ERROR",
+	4: "LOGGING_ENDPOINT_PROTOCOL_ERROR",
+	5: "MSGBUS_ENDPOINT_ERROR",
+	6: "DEVICE_UNREACHABLE",
+}
+
+var SetRemoteEndpointResponse_Reason_value = map[string]int32{
+	"UNDEFINED_REASON":                0,
+	"UNKNOWN_DEVICE":                  1,
+	"INTERNAL_ERROR":                  2,
+	"LOGGING_ENDPOINT_ERROR":          3,
+	"LOGGING_ENDPOINT_PROTOCOL_ERROR": 4,
+	"MSGBUS_ENDPOINT_ERROR":           5,
+	"DEVICE_UNREACHABLE":              6,
+}
+
+func (x SetRemoteEndpointResponse_Reason) String() string {
+	return proto.EnumName(SetRemoteEndpointResponse_Reason_name, int32(x))
+}
+
+func (SetRemoteEndpointResponse_Reason) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_eae902e73066286d, []int{11, 0}
+}
+
+type GetLoggingEndpointResponse_Reason int32
+
+const (
+	GetLoggingEndpointResponse_UNDEFINED_REASON   GetLoggingEndpointResponse_Reason = 0
+	GetLoggingEndpointResponse_UNKNOWN_DEVICE     GetLoggingEndpointResponse_Reason = 1
+	GetLoggingEndpointResponse_INTERNAL_ERROR     GetLoggingEndpointResponse_Reason = 2
+	GetLoggingEndpointResponse_DEVICE_UNREACHABLE GetLoggingEndpointResponse_Reason = 3
+)
+
+var GetLoggingEndpointResponse_Reason_name = map[int32]string{
+	0: "UNDEFINED_REASON",
+	1: "UNKNOWN_DEVICE",
+	2: "INTERNAL_ERROR",
+	3: "DEVICE_UNREACHABLE",
+}
+
+var GetLoggingEndpointResponse_Reason_value = map[string]int32{
+	"UNDEFINED_REASON":   0,
+	"UNKNOWN_DEVICE":     1,
+	"INTERNAL_ERROR":     2,
+	"DEVICE_UNREACHABLE": 3,
+}
+
+func (x GetLoggingEndpointResponse_Reason) String() string {
+	return proto.EnumName(GetLoggingEndpointResponse_Reason_name, int32(x))
+}
+
+func (GetLoggingEndpointResponse_Reason) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_eae902e73066286d, []int{12, 0}
+}
+
+type GetMsgBusEndpointResponse_Reason int32
+
+const (
+	GetMsgBusEndpointResponse_UNDEFINED_REASON   GetMsgBusEndpointResponse_Reason = 0
+	GetMsgBusEndpointResponse_INTERNAL_ERROR     GetMsgBusEndpointResponse_Reason = 1
+	GetMsgBusEndpointResponse_DEVICE_UNREACHABLE GetMsgBusEndpointResponse_Reason = 2
+)
+
+var GetMsgBusEndpointResponse_Reason_name = map[int32]string{
+	0: "UNDEFINED_REASON",
+	1: "INTERNAL_ERROR",
+	2: "DEVICE_UNREACHABLE",
+}
+
+var GetMsgBusEndpointResponse_Reason_value = map[string]int32{
+	"UNDEFINED_REASON":   0,
+	"INTERNAL_ERROR":     1,
+	"DEVICE_UNREACHABLE": 2,
+}
+
+func (x GetMsgBusEndpointResponse_Reason) String() string {
+	return proto.EnumName(GetMsgBusEndpointResponse_Reason_name, int32(x))
+}
+
+func (GetMsgBusEndpointResponse_Reason) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_eae902e73066286d, []int{14, 0}
+}
+
+type SetLogLevelResponse_Reason int32
+
+const (
+	SetLogLevelResponse_UNDEFINED_REASON   SetLogLevelResponse_Reason = 0
+	SetLogLevelResponse_UNKNOWN_DEVICE     SetLogLevelResponse_Reason = 1
+	SetLogLevelResponse_INTERNAL_ERROR     SetLogLevelResponse_Reason = 2
+	SetLogLevelResponse_UNKNOWN_LOG_ENTITY SetLogLevelResponse_Reason = 3
+	SetLogLevelResponse_DEVICE_UNREACHABLE SetLogLevelResponse_Reason = 4
+)
+
+var SetLogLevelResponse_Reason_name = map[int32]string{
+	0: "UNDEFINED_REASON",
+	1: "UNKNOWN_DEVICE",
+	2: "INTERNAL_ERROR",
+	3: "UNKNOWN_LOG_ENTITY",
+	4: "DEVICE_UNREACHABLE",
+}
+
+var SetLogLevelResponse_Reason_value = map[string]int32{
+	"UNDEFINED_REASON":   0,
+	"UNKNOWN_DEVICE":     1,
+	"INTERNAL_ERROR":     2,
+	"UNKNOWN_LOG_ENTITY": 3,
+	"DEVICE_UNREACHABLE": 4,
+}
+
+func (x SetLogLevelResponse_Reason) String() string {
+	return proto.EnumName(SetLogLevelResponse_Reason_name, int32(x))
+}
+
+func (SetLogLevelResponse_Reason) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_eae902e73066286d, []int{17, 0}
+}
+
+type GetLogLevelResponse_Reason int32
+
+const (
+	GetLogLevelResponse_UNDEFINED_REASON   GetLogLevelResponse_Reason = 0
+	GetLogLevelResponse_UNKNOWN_DEVICE     GetLogLevelResponse_Reason = 1
+	GetLogLevelResponse_INTERNAL_ERROR     GetLogLevelResponse_Reason = 2
+	GetLogLevelResponse_UNKNOWN_LOG_ENTITY GetLogLevelResponse_Reason = 3
+	GetLogLevelResponse_DEVICE_UNREACHABLE GetLogLevelResponse_Reason = 4
+)
+
+var GetLogLevelResponse_Reason_name = map[int32]string{
+	0: "UNDEFINED_REASON",
+	1: "UNKNOWN_DEVICE",
+	2: "INTERNAL_ERROR",
+	3: "UNKNOWN_LOG_ENTITY",
+	4: "DEVICE_UNREACHABLE",
+}
+
+var GetLogLevelResponse_Reason_value = map[string]int32{
+	"UNDEFINED_REASON":   0,
+	"UNKNOWN_DEVICE":     1,
+	"INTERNAL_ERROR":     2,
+	"UNKNOWN_LOG_ENTITY": 3,
+	"DEVICE_UNREACHABLE": 4,
+}
+
+func (x GetLogLevelResponse_Reason) String() string {
+	return proto.EnumName(GetLogLevelResponse_Reason_name, int32(x))
+}
+
+func (GetLogLevelResponse_Reason) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_eae902e73066286d, []int{19, 0}
+}
+
 type PhysicalInventoryRequest struct {
 	DeviceUuid           *Uuid    `protobuf:"bytes,1,opt,name=device_uuid,json=deviceUuid,proto3" json:"device_uuid,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -63,12 +397,16 @@
 }
 
 type PhysicalInventoryResponse struct {
-	Status               Status    `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
-	Reason               Reason    `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.Reason" json:"reason,omitempty"`
-	Inventory            *Hardware `protobuf:"bytes,3,opt,name=inventory,proto3" json:"inventory,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
-	XXX_unrecognized     []byte    `json:"-"`
-	XXX_sizecache        int32     `json:"-"`
+	Status    Status                           `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
+	Reason    PhysicalInventoryResponse_Reason `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.PhysicalInventoryResponse_Reason" json:"reason,omitempty"`
+	Inventory *Hardware                        `protobuf:"bytes,3,opt,name=inventory,proto3" json:"inventory,omitempty"`
+	// It is recommended that upstream components/users of the DMI interface
+	// do not really interpret/parse the reson_detail, but rather use it for
+	// display purposes to the end user or use it for logging the error
+	ReasonDetail         string   `protobuf:"bytes,4,opt,name=reason_detail,json=reasonDetail,proto3" json:"reason_detail,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
 func (m *PhysicalInventoryResponse) Reset()         { *m = PhysicalInventoryResponse{} }
@@ -103,11 +441,11 @@
 	return Status_UNDEFINED_STATUS
 }
 
-func (m *PhysicalInventoryResponse) GetReason() Reason {
+func (m *PhysicalInventoryResponse) GetReason() PhysicalInventoryResponse_Reason {
 	if m != nil {
 		return m.Reason
 	}
-	return Reason_UNDEFINED_REASON
+	return PhysicalInventoryResponse_UNDEFINED_REASON
 }
 
 func (m *PhysicalInventoryResponse) GetInventory() *Hardware {
@@ -117,6 +455,13 @@
 	return nil
 }
 
+func (m *PhysicalInventoryResponse) GetReasonDetail() string {
+	if m != nil {
+		return m.ReasonDetail
+	}
+	return ""
+}
+
 type HWComponentInfoGetRequest struct {
 	DeviceUuid           *Uuid    `protobuf:"bytes,1,opt,name=device_uuid,json=deviceUuid,proto3" json:"device_uuid,omitempty"`
 	ComponentUuid        *Uuid    `protobuf:"bytes,2,opt,name=component_uuid,json=componentUuid,proto3" json:"component_uuid,omitempty"`
@@ -173,12 +518,13 @@
 }
 
 type HWComponentInfoGetResponse struct {
-	Status               Status     `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
-	Reason               Reason     `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.Reason" json:"reason,omitempty"`
-	Component            *Component `protobuf:"bytes,3,opt,name=component,proto3" json:"component,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
-	XXX_unrecognized     []byte     `json:"-"`
-	XXX_sizecache        int32      `json:"-"`
+	Status               Status                            `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
+	Reason               HWComponentInfoGetResponse_Reason `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.HWComponentInfoGetResponse_Reason" json:"reason,omitempty"`
+	Component            *Component                        `protobuf:"bytes,3,opt,name=component,proto3" json:"component,omitempty"`
+	ReasonDetail         string                            `protobuf:"bytes,4,opt,name=reason_detail,json=reasonDetail,proto3" json:"reason_detail,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                          `json:"-"`
+	XXX_unrecognized     []byte                            `json:"-"`
+	XXX_sizecache        int32                             `json:"-"`
 }
 
 func (m *HWComponentInfoGetResponse) Reset()         { *m = HWComponentInfoGetResponse{} }
@@ -213,11 +559,11 @@
 	return Status_UNDEFINED_STATUS
 }
 
-func (m *HWComponentInfoGetResponse) GetReason() Reason {
+func (m *HWComponentInfoGetResponse) GetReason() HWComponentInfoGetResponse_Reason {
 	if m != nil {
 		return m.Reason
 	}
-	return Reason_UNDEFINED_REASON
+	return HWComponentInfoGetResponse_UNDEFINED_REASON
 }
 
 func (m *HWComponentInfoGetResponse) GetComponent() *Component {
@@ -227,6 +573,13 @@
 	return nil
 }
 
+func (m *HWComponentInfoGetResponse) GetReasonDetail() string {
+	if m != nil {
+		return m.ReasonDetail
+	}
+	return ""
+}
+
 type HWComponentInfoSetRequest struct {
 	DeviceUuid           *Uuid                `protobuf:"bytes,1,opt,name=device_uuid,json=deviceUuid,proto3" json:"device_uuid,omitempty"`
 	ComponentUuid        *Uuid                `protobuf:"bytes,2,opt,name=component_uuid,json=componentUuid,proto3" json:"component_uuid,omitempty"`
@@ -291,11 +644,12 @@
 }
 
 type HWComponentInfoSetResponse struct {
-	Status               Status   `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
-	Reason               Reason   `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.Reason" json:"reason,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Status               Status                            `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
+	Reason               HWComponentInfoSetResponse_Reason `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.HWComponentInfoSetResponse_Reason" json:"reason,omitempty"`
+	ReasonDetail         string                            `protobuf:"bytes,3,opt,name=reason_detail,json=reasonDetail,proto3" json:"reason_detail,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                          `json:"-"`
+	XXX_unrecognized     []byte                            `json:"-"`
+	XXX_sizecache        int32                             `json:"-"`
 }
 
 func (m *HWComponentInfoSetResponse) Reset()         { *m = HWComponentInfoSetResponse{} }
@@ -330,20 +684,28 @@
 	return Status_UNDEFINED_STATUS
 }
 
-func (m *HWComponentInfoSetResponse) GetReason() Reason {
+func (m *HWComponentInfoSetResponse) GetReason() HWComponentInfoSetResponse_Reason {
 	if m != nil {
 		return m.Reason
 	}
-	return Reason_UNDEFINED_REASON
+	return HWComponentInfoSetResponse_UNDEFINED_REASON
+}
+
+func (m *HWComponentInfoSetResponse) GetReasonDetail() string {
+	if m != nil {
+		return m.ReasonDetail
+	}
+	return ""
 }
 
 type StartManagingDeviceResponse struct {
-	Status               Status   `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
-	Reason               Reason   `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.Reason" json:"reason,omitempty"`
-	DeviceUuid           *Uuid    `protobuf:"bytes,3,opt,name=device_uuid,json=deviceUuid,proto3" json:"device_uuid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Status               Status                             `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
+	Reason               StartManagingDeviceResponse_Reason `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.StartManagingDeviceResponse_Reason" json:"reason,omitempty"`
+	DeviceUuid           *Uuid                              `protobuf:"bytes,3,opt,name=device_uuid,json=deviceUuid,proto3" json:"device_uuid,omitempty"`
+	ReasonDetail         string                             `protobuf:"bytes,4,opt,name=reason_detail,json=reasonDetail,proto3" json:"reason_detail,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                           `json:"-"`
+	XXX_unrecognized     []byte                             `json:"-"`
+	XXX_sizecache        int32                              `json:"-"`
 }
 
 func (m *StartManagingDeviceResponse) Reset()         { *m = StartManagingDeviceResponse{} }
@@ -378,11 +740,11 @@
 	return Status_UNDEFINED_STATUS
 }
 
-func (m *StartManagingDeviceResponse) GetReason() Reason {
+func (m *StartManagingDeviceResponse) GetReason() StartManagingDeviceResponse_Reason {
 	if m != nil {
 		return m.Reason
 	}
-	return Reason_UNDEFINED_REASON
+	return StartManagingDeviceResponse_UNDEFINED_REASON
 }
 
 func (m *StartManagingDeviceResponse) GetDeviceUuid() *Uuid {
@@ -392,6 +754,13 @@
 	return nil
 }
 
+func (m *StartManagingDeviceResponse) GetReasonDetail() string {
+	if m != nil {
+		return m.ReasonDetail
+	}
+	return ""
+}
+
 type StopManagingDeviceRequest struct {
 	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -432,11 +801,12 @@
 }
 
 type StopManagingDeviceResponse struct {
-	Status               Status   `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
-	Reason               Reason   `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.Reason" json:"reason,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Status               Status                            `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
+	Reason               StopManagingDeviceResponse_Reason `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.StopManagingDeviceResponse_Reason" json:"reason,omitempty"`
+	ReasonDetail         string                            `protobuf:"bytes,3,opt,name=reason_detail,json=reasonDetail,proto3" json:"reason_detail,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                          `json:"-"`
+	XXX_unrecognized     []byte                            `json:"-"`
+	XXX_sizecache        int32                             `json:"-"`
 }
 
 func (m *StopManagingDeviceResponse) Reset()         { *m = StopManagingDeviceResponse{} }
@@ -471,11 +841,18 @@
 	return Status_UNDEFINED_STATUS
 }
 
-func (m *StopManagingDeviceResponse) GetReason() Reason {
+func (m *StopManagingDeviceResponse) GetReason() StopManagingDeviceResponse_Reason {
 	if m != nil {
 		return m.Reason
 	}
-	return Reason_UNDEFINED_REASON
+	return StopManagingDeviceResponse_UNDEFINED_REASON
+}
+
+func (m *StopManagingDeviceResponse) GetReasonDetail() string {
+	if m != nil {
+		return m.ReasonDetail
+	}
+	return ""
 }
 
 type ManagedDevicesResponse struct {
@@ -573,11 +950,12 @@
 }
 
 type SetRemoteEndpointResponse struct {
-	Status               Status   `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
-	Reason               Reason   `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.Reason" json:"reason,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Status               Status                           `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
+	Reason               SetRemoteEndpointResponse_Reason `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.SetRemoteEndpointResponse_Reason" json:"reason,omitempty"`
+	ReasonDetail         string                           `protobuf:"bytes,3,opt,name=reason_detail,json=reasonDetail,proto3" json:"reason_detail,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                         `json:"-"`
+	XXX_unrecognized     []byte                           `json:"-"`
+	XXX_sizecache        int32                            `json:"-"`
 }
 
 func (m *SetRemoteEndpointResponse) Reset()         { *m = SetRemoteEndpointResponse{} }
@@ -612,21 +990,29 @@
 	return Status_UNDEFINED_STATUS
 }
 
-func (m *SetRemoteEndpointResponse) GetReason() Reason {
+func (m *SetRemoteEndpointResponse) GetReason() SetRemoteEndpointResponse_Reason {
 	if m != nil {
 		return m.Reason
 	}
-	return Reason_UNDEFINED_REASON
+	return SetRemoteEndpointResponse_UNDEFINED_REASON
+}
+
+func (m *SetRemoteEndpointResponse) GetReasonDetail() string {
+	if m != nil {
+		return m.ReasonDetail
+	}
+	return ""
 }
 
 type GetLoggingEndpointResponse struct {
-	Status               Status   `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
-	Reason               Reason   `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.Reason" json:"reason,omitempty"`
-	LoggingEndpoint      string   `protobuf:"bytes,3,opt,name=logging_endpoint,json=loggingEndpoint,proto3" json:"logging_endpoint,omitempty"`
-	LoggingProtocol      string   `protobuf:"bytes,4,opt,name=logging_protocol,json=loggingProtocol,proto3" json:"logging_protocol,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Status               Status                            `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
+	Reason               GetLoggingEndpointResponse_Reason `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.GetLoggingEndpointResponse_Reason" json:"reason,omitempty"`
+	LoggingEndpoint      string                            `protobuf:"bytes,3,opt,name=logging_endpoint,json=loggingEndpoint,proto3" json:"logging_endpoint,omitempty"`
+	LoggingProtocol      string                            `protobuf:"bytes,4,opt,name=logging_protocol,json=loggingProtocol,proto3" json:"logging_protocol,omitempty"`
+	ReasonDetail         string                            `protobuf:"bytes,5,opt,name=reason_detail,json=reasonDetail,proto3" json:"reason_detail,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                          `json:"-"`
+	XXX_unrecognized     []byte                            `json:"-"`
+	XXX_sizecache        int32                             `json:"-"`
 }
 
 func (m *GetLoggingEndpointResponse) Reset()         { *m = GetLoggingEndpointResponse{} }
@@ -661,11 +1047,11 @@
 	return Status_UNDEFINED_STATUS
 }
 
-func (m *GetLoggingEndpointResponse) GetReason() Reason {
+func (m *GetLoggingEndpointResponse) GetReason() GetLoggingEndpointResponse_Reason {
 	if m != nil {
 		return m.Reason
 	}
-	return Reason_UNDEFINED_REASON
+	return GetLoggingEndpointResponse_UNDEFINED_REASON
 }
 
 func (m *GetLoggingEndpointResponse) GetLoggingEndpoint() string {
@@ -682,6 +1068,13 @@
 	return ""
 }
 
+func (m *GetLoggingEndpointResponse) GetReasonDetail() string {
+	if m != nil {
+		return m.ReasonDetail
+	}
+	return ""
+}
+
 type SetMsgBusEndpointRequest struct {
 	MsgbusEndpoint       string   `protobuf:"bytes,1,opt,name=msgbus_endpoint,json=msgbusEndpoint,proto3" json:"msgbus_endpoint,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -722,12 +1115,13 @@
 }
 
 type GetMsgBusEndpointResponse struct {
-	Status               Status   `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
-	Reason               Reason   `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.Reason" json:"reason,omitempty"`
-	MsgbusEndpoint       string   `protobuf:"bytes,3,opt,name=msgbus_endpoint,json=msgbusEndpoint,proto3" json:"msgbus_endpoint,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Status               Status                           `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
+	Reason               GetMsgBusEndpointResponse_Reason `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.GetMsgBusEndpointResponse_Reason" json:"reason,omitempty"`
+	MsgbusEndpoint       string                           `protobuf:"bytes,3,opt,name=msgbus_endpoint,json=msgbusEndpoint,proto3" json:"msgbus_endpoint,omitempty"`
+	ReasonDetail         string                           `protobuf:"bytes,4,opt,name=reason_detail,json=reasonDetail,proto3" json:"reason_detail,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                         `json:"-"`
+	XXX_unrecognized     []byte                           `json:"-"`
+	XXX_sizecache        int32                            `json:"-"`
 }
 
 func (m *GetMsgBusEndpointResponse) Reset()         { *m = GetMsgBusEndpointResponse{} }
@@ -762,11 +1156,11 @@
 	return Status_UNDEFINED_STATUS
 }
 
-func (m *GetMsgBusEndpointResponse) GetReason() Reason {
+func (m *GetMsgBusEndpointResponse) GetReason() GetMsgBusEndpointResponse_Reason {
 	if m != nil {
 		return m.Reason
 	}
-	return Reason_UNDEFINED_REASON
+	return GetMsgBusEndpointResponse_UNDEFINED_REASON
 }
 
 func (m *GetMsgBusEndpointResponse) GetMsgbusEndpoint() string {
@@ -776,6 +1170,13 @@
 	return ""
 }
 
+func (m *GetMsgBusEndpointResponse) GetReasonDetail() string {
+	if m != nil {
+		return m.ReasonDetail
+	}
+	return ""
+}
+
 type EntitiesLogLevel struct {
 	LogLevel             LogLevel `protobuf:"varint,1,opt,name=logLevel,proto3,enum=dmi.LogLevel" json:"logLevel,omitempty"`
 	Entities             []string `protobuf:"bytes,2,rep,name=entities,proto3" json:"entities,omitempty"`
@@ -871,12 +1272,13 @@
 }
 
 type SetLogLevelResponse struct {
-	DeviceUuid           *Uuid    `protobuf:"bytes,1,opt,name=device_uuid,json=deviceUuid,proto3" json:"device_uuid,omitempty"`
-	Status               Status   `protobuf:"varint,2,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
-	Reason               Reason   `protobuf:"varint,3,opt,name=reason,proto3,enum=dmi.Reason" json:"reason,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	DeviceUuid           *Uuid                      `protobuf:"bytes,1,opt,name=device_uuid,json=deviceUuid,proto3" json:"device_uuid,omitempty"`
+	Status               Status                     `protobuf:"varint,2,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
+	Reason               SetLogLevelResponse_Reason `protobuf:"varint,3,opt,name=reason,proto3,enum=dmi.SetLogLevelResponse_Reason" json:"reason,omitempty"`
+	ReasonDetail         string                     `protobuf:"bytes,4,opt,name=reason_detail,json=reasonDetail,proto3" json:"reason_detail,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                   `json:"-"`
+	XXX_unrecognized     []byte                     `json:"-"`
+	XXX_sizecache        int32                      `json:"-"`
 }
 
 func (m *SetLogLevelResponse) Reset()         { *m = SetLogLevelResponse{} }
@@ -918,11 +1320,18 @@
 	return Status_UNDEFINED_STATUS
 }
 
-func (m *SetLogLevelResponse) GetReason() Reason {
+func (m *SetLogLevelResponse) GetReason() SetLogLevelResponse_Reason {
 	if m != nil {
 		return m.Reason
 	}
-	return Reason_UNDEFINED_REASON
+	return SetLogLevelResponse_UNDEFINED_REASON
+}
+
+func (m *SetLogLevelResponse) GetReasonDetail() string {
+	if m != nil {
+		return m.ReasonDetail
+	}
+	return ""
 }
 
 type GetLogLevelRequest struct {
@@ -973,13 +1382,14 @@
 }
 
 type GetLogLevelResponse struct {
-	DeviceUuid           *Uuid               `protobuf:"bytes,1,opt,name=device_uuid,json=deviceUuid,proto3" json:"device_uuid,omitempty"`
-	LogLevels            []*EntitiesLogLevel `protobuf:"bytes,2,rep,name=logLevels,proto3" json:"logLevels,omitempty"`
-	Status               Status              `protobuf:"varint,3,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
-	Reason               Reason              `protobuf:"varint,4,opt,name=reason,proto3,enum=dmi.Reason" json:"reason,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
+	DeviceUuid           *Uuid                      `protobuf:"bytes,1,opt,name=device_uuid,json=deviceUuid,proto3" json:"device_uuid,omitempty"`
+	LogLevels            []*EntitiesLogLevel        `protobuf:"bytes,2,rep,name=logLevels,proto3" json:"logLevels,omitempty"`
+	Status               Status                     `protobuf:"varint,3,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
+	Reason               GetLogLevelResponse_Reason `protobuf:"varint,4,opt,name=reason,proto3,enum=dmi.GetLogLevelResponse_Reason" json:"reason,omitempty"`
+	ReasonDetail         string                     `protobuf:"bytes,5,opt,name=reason_detail,json=reasonDetail,proto3" json:"reason_detail,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                   `json:"-"`
+	XXX_unrecognized     []byte                     `json:"-"`
+	XXX_sizecache        int32                      `json:"-"`
 }
 
 func (m *GetLogLevelResponse) Reset()         { *m = GetLogLevelResponse{} }
@@ -1028,11 +1438,18 @@
 	return Status_UNDEFINED_STATUS
 }
 
-func (m *GetLogLevelResponse) GetReason() Reason {
+func (m *GetLogLevelResponse) GetReason() GetLogLevelResponse_Reason {
 	if m != nil {
 		return m.Reason
 	}
-	return Reason_UNDEFINED_REASON
+	return GetLogLevelResponse_UNDEFINED_REASON
+}
+
+func (m *GetLogLevelResponse) GetReasonDetail() string {
+	if m != nil {
+		return m.ReasonDetail
+	}
+	return ""
 }
 
 type GetLoggableEntitiesRequest struct {
@@ -1075,6 +1492,16 @@
 }
 
 func init() {
+	proto.RegisterEnum("dmi.PhysicalInventoryResponse_Reason", PhysicalInventoryResponse_Reason_name, PhysicalInventoryResponse_Reason_value)
+	proto.RegisterEnum("dmi.HWComponentInfoGetResponse_Reason", HWComponentInfoGetResponse_Reason_name, HWComponentInfoGetResponse_Reason_value)
+	proto.RegisterEnum("dmi.HWComponentInfoSetResponse_Reason", HWComponentInfoSetResponse_Reason_name, HWComponentInfoSetResponse_Reason_value)
+	proto.RegisterEnum("dmi.StartManagingDeviceResponse_Reason", StartManagingDeviceResponse_Reason_name, StartManagingDeviceResponse_Reason_value)
+	proto.RegisterEnum("dmi.StopManagingDeviceResponse_Reason", StopManagingDeviceResponse_Reason_name, StopManagingDeviceResponse_Reason_value)
+	proto.RegisterEnum("dmi.SetRemoteEndpointResponse_Reason", SetRemoteEndpointResponse_Reason_name, SetRemoteEndpointResponse_Reason_value)
+	proto.RegisterEnum("dmi.GetLoggingEndpointResponse_Reason", GetLoggingEndpointResponse_Reason_name, GetLoggingEndpointResponse_Reason_value)
+	proto.RegisterEnum("dmi.GetMsgBusEndpointResponse_Reason", GetMsgBusEndpointResponse_Reason_name, GetMsgBusEndpointResponse_Reason_value)
+	proto.RegisterEnum("dmi.SetLogLevelResponse_Reason", SetLogLevelResponse_Reason_name, SetLogLevelResponse_Reason_value)
+	proto.RegisterEnum("dmi.GetLogLevelResponse_Reason", GetLogLevelResponse_Reason_name, GetLogLevelResponse_Reason_value)
 	proto.RegisterType((*PhysicalInventoryRequest)(nil), "dmi.PhysicalInventoryRequest")
 	proto.RegisterType((*PhysicalInventoryResponse)(nil), "dmi.PhysicalInventoryResponse")
 	proto.RegisterType((*HWComponentInfoGetRequest)(nil), "dmi.HWComponentInfoGetRequest")
@@ -1101,69 +1528,94 @@
 func init() { proto.RegisterFile("dmi/hw_management_service.proto", fileDescriptor_eae902e73066286d) }
 
 var fileDescriptor_eae902e73066286d = []byte{
-	// 988 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0x51, 0x6f, 0xe3, 0x44,
-	0x10, 0x96, 0x9b, 0xea, 0xae, 0x99, 0x70, 0xed, 0x75, 0x0b, 0x47, 0xe2, 0x8a, 0x5e, 0x65, 0x84,
-	0xb8, 0x03, 0x2e, 0x39, 0xa5, 0x4f, 0x88, 0x17, 0x74, 0x77, 0xbd, 0xa4, 0x22, 0x3d, 0x55, 0x36,
-	0xa7, 0x0a, 0x84, 0x54, 0x39, 0xf1, 0xc4, 0x5d, 0xc9, 0xde, 0x0d, 0xf1, 0x3a, 0xa7, 0xfe, 0x06,
-	0x24, 0x1e, 0x80, 0x57, 0x24, 0xfe, 0x01, 0x7f, 0x80, 0x07, 0x7e, 0x04, 0x3f, 0x08, 0x79, 0x77,
-	0xed, 0xd8, 0x89, 0xdd, 0x0b, 0xbd, 0x54, 0xe2, 0x2d, 0xf6, 0x7e, 0xfb, 0xcd, 0xcc, 0x37, 0xe3,
-	0x99, 0x09, 0x3c, 0xf4, 0x42, 0xda, 0xb9, 0x7c, 0x73, 0x11, 0xba, 0xcc, 0xf5, 0x31, 0x44, 0x26,
-	0x2e, 0x22, 0x9c, 0xce, 0xe8, 0x08, 0xdb, 0x93, 0x29, 0x17, 0x9c, 0xd4, 0xbc, 0x90, 0x9a, 0xbb,
-	0x09, 0x6a, 0xc4, 0xc3, 0x90, 0xb3, 0x48, 0xbd, 0x37, 0xdf, 0x53, 0x17, 0xf5, 0xd3, 0xbe, 0xcf,
-	0xb9, 0x1f, 0x60, 0x47, 0x3e, 0x0d, 0xe3, 0x71, 0x07, 0xc3, 0x89, 0xb8, 0x52, 0x87, 0xd6, 0x4b,
-	0x68, 0x9e, 0x5d, 0x5e, 0x45, 0x74, 0xe4, 0x06, 0x27, 0x6c, 0x86, 0x4c, 0xf0, 0xe9, 0x95, 0x8d,
-	0x3f, 0xc6, 0x18, 0x09, 0xf2, 0x19, 0x34, 0x3c, 0x4c, 0xcc, 0x5d, 0xc4, 0x31, 0xf5, 0x9a, 0xc6,
-	0xa1, 0xf1, 0xa8, 0xd1, 0xad, 0xb7, 0xbd, 0x90, 0xb6, 0x5f, 0xc7, 0xd4, 0xb3, 0x41, 0x9d, 0x26,
-	0xbf, 0xad, 0x5f, 0x0c, 0x68, 0x95, 0x10, 0x45, 0x13, 0xce, 0x22, 0x24, 0x1f, 0xc3, 0x9d, 0x48,
-	0xb8, 0x22, 0x8e, 0x24, 0xc9, 0x76, 0xb7, 0x21, 0x49, 0x1c, 0xf9, 0xca, 0xd6, 0x47, 0x09, 0x68,
-	0x8a, 0x6e, 0xc4, 0x59, 0x73, 0x23, 0x07, 0xb2, 0xe5, 0x2b, 0x5b, 0x1f, 0x91, 0xcf, 0xa1, 0x4e,
-	0x53, 0xfa, 0x66, 0x4d, 0x7a, 0x74, 0x4f, 0xe2, 0xfa, 0xee, 0xd4, 0x7b, 0xe3, 0x4e, 0xd1, 0x9e,
-	0x9f, 0x5b, 0x7f, 0x18, 0xd0, 0xea, 0x9f, 0x3f, 0xe7, 0xe1, 0x84, 0x33, 0x64, 0xe2, 0x84, 0x8d,
-	0x79, 0x0f, 0xc5, 0x0d, 0xc2, 0x23, 0x4f, 0x61, 0x7b, 0x94, 0xd2, 0x28, 0xf8, 0xc6, 0x22, 0xfc,
-	0x5e, 0x06, 0x90, 0x37, 0x3e, 0xc9, 0xdf, 0x60, 0x6e, 0x88, 0xd2, 0xdb, 0x7a, 0x0e, 0xf6, 0xca,
-	0x0d, 0xd1, 0xfa, 0xcd, 0x00, 0xb3, 0xcc, 0xc5, 0xb5, 0x0b, 0xf7, 0x05, 0xd4, 0x33, 0xcb, 0x5a,
-	0xb8, 0x6d, 0x89, 0xcb, 0x6c, 0xdb, 0x73, 0x80, 0xf5, 0xcf, 0xb2, 0x72, 0xce, 0xff, 0x4b, 0x39,
-	0xd2, 0x85, 0xbb, 0xa3, 0x4b, 0x97, 0xf9, 0x18, 0x35, 0x37, 0x25, 0x63, 0x53, 0x32, 0x9e, 0x72,
-	0x8f, 0x8e, 0xa9, 0x3b, 0x0c, 0x70, 0x1e, 0x58, 0x0a, 0xb4, 0xc6, 0x4b, 0x62, 0x3b, 0xb7, 0x21,
-	0xb6, 0xf5, 0xab, 0x01, 0xfb, 0x8e, 0x70, 0xa7, 0xe2, 0x34, 0xf9, 0x74, 0x29, 0xf3, 0x5f, 0x48,
-	0x41, 0x6e, 0x21, 0xad, 0x0b, 0xa9, 0xa8, 0x5d, 0xf7, 0x8d, 0x76, 0xa0, 0xe5, 0x08, 0x3e, 0x59,
-	0xf4, 0x49, 0xe5, 0x94, 0xc0, 0xa6, 0xd4, 0xda, 0x90, 0x5a, 0xcb, 0xdf, 0x89, 0x5c, 0x65, 0x17,
-	0xd6, 0x2e, 0xd7, 0x00, 0x1e, 0x48, 0x1b, 0xe8, 0x29, 0x13, 0x51, 0x66, 0xa3, 0x0b, 0x77, 0x55,
-	0x00, 0x89, 0x91, 0xda, 0xf5, 0x49, 0xd6, 0x40, 0xeb, 0x77, 0x03, 0x5a, 0x0e, 0x8a, 0x01, 0xf7,
-	0x13, 0xa7, 0x8f, 0x99, 0x37, 0xe1, 0x94, 0xdd, 0xa8, 0x76, 0x1f, 0xc3, 0xfd, 0x40, 0xb1, 0x5c,
-	0xa0, 0xa6, 0x91, 0x61, 0xd4, 0xed, 0x9d, 0xa0, 0xc8, 0x9e, 0x87, 0xca, 0xc6, 0x3a, 0xe2, 0x81,
-	0x2e, 0xdb, 0x14, 0x7a, 0xa6, 0x5f, 0x5b, 0x28, 0xdd, 0xb3, 0x31, 0xe4, 0x02, 0xe7, 0xde, 0xad,
-	0x5d, 0xd4, 0xbf, 0x0c, 0x30, 0x7b, 0x25, 0x32, 0xac, 0xbd, 0x04, 0xcb, 0x54, 0xaa, 0xad, 0xae,
-	0xd2, 0x66, 0xb9, 0x4a, 0xcf, 0xa1, 0xe9, 0xa0, 0x38, 0x8d, 0xfc, 0x67, 0x71, 0xb4, 0x98, 0xc3,
-	0x4f, 0x61, 0x27, 0x8c, 0xfc, 0x61, 0x1c, 0xcd, 0x0d, 0xaa, 0xb2, 0xdd, 0x56, 0xaf, 0x53, 0xbc,
-	0xf5, 0xb3, 0x01, 0xad, 0xde, 0x32, 0xcb, 0xda, 0x25, 0x28, 0x71, 0xa8, 0x56, 0xea, 0xd0, 0x77,
-	0x70, 0xff, 0x98, 0x09, 0x2a, 0x28, 0x46, 0x03, 0xee, 0x0f, 0x70, 0x86, 0x01, 0x79, 0x0c, 0x5b,
-	0x81, 0xfe, 0xad, 0x1d, 0x51, 0x13, 0x2d, 0x05, 0xd8, 0xd9, 0x31, 0x31, 0x61, 0x0b, 0xf5, 0xf5,
-	0xe6, 0xc6, 0x61, 0xed, 0x51, 0xdd, 0xce, 0x9e, 0xad, 0x18, 0x88, 0xaa, 0x7a, 0x75, 0xe9, 0x06,
-	0xe5, 0x7e, 0x04, 0xf5, 0x20, 0xd9, 0x14, 0x66, 0x18, 0x28, 0xfa, 0x46, 0xf7, 0x03, 0x89, 0x5c,
-	0x74, 0xd9, 0x9e, 0xe3, 0xac, 0x9f, 0x0c, 0xd8, 0x2b, 0xd8, 0xd5, 0xe2, 0xfe, 0x17, 0xc3, 0xf3,
-	0x44, 0x6c, 0xac, 0x92, 0x88, 0x5a, 0x75, 0xd1, 0xff, 0x00, 0xa4, 0xf7, 0x6e, 0x22, 0x5c, 0x27,
-	0xf1, 0xdf, 0x06, 0xec, 0xf5, 0xde, 0x31, 0x56, 0x25, 0xf2, 0x60, 0x45, 0x91, 0x15, 0x2e, 0x27,
-	0x50, 0x6d, 0x15, 0x81, 0x36, 0xab, 0x05, 0xea, 0x67, 0x4d, 0x21, 0xe9, 0x9e, 0xa9, 0xcd, 0x1b,
-	0x08, 0xd5, 0xfd, 0x73, 0x0b, 0x5a, 0xaf, 0x5c, 0x41, 0x67, 0xd8, 0x3f, 0x3f, 0xcd, 0x36, 0x54,
-	0x47, 0x2d, 0xa8, 0xc4, 0x81, 0xbd, 0x92, 0x01, 0x48, 0x2a, 0xdb, 0xb7, 0x79, 0x98, 0x86, 0x54,
-	0x35, 0x34, 0x9f, 0x1a, 0xe4, 0x35, 0x90, 0xe5, 0x79, 0x44, 0x0e, 0xf4, 0xcd, 0x8a, 0xc9, 0x66,
-	0x3e, 0xac, 0x3c, 0xd7, 0xe9, 0xeb, 0xc3, 0x6e, 0xd2, 0x24, 0x0a, 0x13, 0x88, 0x3c, 0x68, 0xab,
-	0xb5, 0xb9, 0x9d, 0xae, 0xcd, 0xed, 0xe3, 0x64, 0x6d, 0x36, 0xf7, 0x55, 0x04, 0xe5, 0xe3, 0xea,
-	0x1c, 0xde, 0xef, 0xa1, 0x58, 0xda, 0x83, 0xc9, 0x47, 0xf2, 0x52, 0xd5, 0xa2, 0x6d, 0x1e, 0x54,
-	0x1d, 0x67, 0x91, 0x9f, 0xcb, 0xba, 0x5e, 0xd8, 0x5d, 0x74, 0xe4, 0x95, 0x1b, 0xae, 0x8e, 0xbc,
-	0x7a, 0xbd, 0xd4, 0x92, 0xae, 0x48, 0xec, 0xbc, 0x85, 0x38, 0xbf, 0x4a, 0x7d, 0x9b, 0x36, 0xa3,
-	0x42, 0xfb, 0xd7, 0x99, 0xaa, 0x9a, 0xcd, 0x66, 0x76, 0x5e, 0x31, 0x1c, 0x5f, 0xa6, 0x5f, 0x77,
-	0x81, 0x75, 0xa7, 0xb0, 0xff, 0x9f, 0xbc, 0xd0, 0xde, 0x5d, 0x33, 0xfb, 0x6c, 0xd8, 0x5d, 0x9a,
-	0x2d, 0x3a, 0x47, 0x55, 0x33, 0xe7, 0xad, 0xbe, 0x7d, 0xa3, 0x8a, 0xa8, 0xc8, 0x59, 0x55, 0x44,
-	0x07, 0xa9, 0x87, 0x15, 0x93, 0xe9, 0x2c, 0xed, 0x33, 0x85, 0xaf, 0x94, 0x14, 0x02, 0x2b, 0xf9,
-	0x7e, 0xcd, 0x66, 0x0e, 0x50, 0x6c, 0x51, 0x5f, 0x43, 0x23, 0xd7, 0xa5, 0xc9, 0x87, 0xb9, 0x4c,
-	0xe4, 0x5b, 0xa5, 0x66, 0x70, 0xca, 0x19, 0x7a, 0x4b, 0x0c, 0xbd, 0x2a, 0x86, 0x12, 0x1f, 0x9e,
-	0x7d, 0xf5, 0xfd, 0x97, 0x3e, 0x15, 0x97, 0xf1, 0xb0, 0x3d, 0xe2, 0x61, 0x87, 0x4f, 0x90, 0x8d,
-	0xf8, 0xd4, 0xeb, 0xa8, 0x9e, 0xf2, 0x64, 0xfe, 0x2f, 0xf7, 0x09, 0x65, 0x02, 0xa7, 0x63, 0x77,
-	0x84, 0x9d, 0xd9, 0x51, 0xc7, 0xe7, 0x1d, 0x2f, 0xa4, 0xc3, 0x3b, 0x52, 0xc2, 0xa3, 0x7f, 0x03,
-	0x00, 0x00, 0xff, 0xff, 0x3a, 0x27, 0xf3, 0x9c, 0x15, 0x0f, 0x00, 0x00,
+	// 1380 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0xdd, 0x72, 0xdb, 0x44,
+	0x14, 0x46, 0x52, 0x92, 0xd6, 0x27, 0x6d, 0xea, 0x6c, 0xdb, 0xe0, 0xa8, 0xd3, 0x24, 0xa8, 0x53,
+	0xda, 0x02, 0xb5, 0x3b, 0xee, 0x05, 0xc3, 0x30, 0xfc, 0x38, 0xb1, 0xaa, 0x98, 0xda, 0x92, 0x67,
+	0xe5, 0x34, 0x53, 0x86, 0x41, 0xa3, 0x58, 0x1b, 0x47, 0x33, 0x96, 0x64, 0x2c, 0xd9, 0x9d, 0x3c,
+	0x00, 0x17, 0x3c, 0x02, 0x17, 0xcc, 0xf0, 0x06, 0x0c, 0x5c, 0x32, 0xbc, 0x01, 0xb7, 0x5c, 0x31,
+	0xdc, 0xf0, 0x08, 0xbc, 0x01, 0xe3, 0x5d, 0xc9, 0x3f, 0xb2, 0x64, 0x3b, 0x4e, 0x19, 0x7a, 0x67,
+	0xef, 0x7e, 0xfb, 0xe9, 0xec, 0xf9, 0xbe, 0x3d, 0x3a, 0x5a, 0xd8, 0xb5, 0x1c, 0xbb, 0x70, 0xf6,
+	0xca, 0x70, 0x4c, 0xd7, 0x6c, 0x11, 0x87, 0xb8, 0x81, 0xe1, 0x93, 0x6e, 0xdf, 0x6e, 0x92, 0x7c,
+	0xa7, 0xeb, 0x05, 0x1e, 0x12, 0x2c, 0xc7, 0x16, 0x37, 0x07, 0xa8, 0xa6, 0xe7, 0x38, 0x9e, 0xeb,
+	0xb3, 0x71, 0xf1, 0x1a, 0x5b, 0x18, 0xfe, 0xbb, 0xd3, 0xf2, 0xbc, 0x56, 0x9b, 0x14, 0xe8, 0xbf,
+	0x93, 0xde, 0x69, 0x81, 0x38, 0x9d, 0xe0, 0x9c, 0x4d, 0x4a, 0xcf, 0x20, 0x57, 0x3f, 0x3b, 0xf7,
+	0xed, 0xa6, 0xd9, 0xae, 0xb8, 0x7d, 0xe2, 0x06, 0x5e, 0xf7, 0x1c, 0x93, 0x6f, 0x7a, 0xc4, 0x0f,
+	0xd0, 0x7b, 0xb0, 0x6e, 0x91, 0xc1, 0xe3, 0x8c, 0x5e, 0xcf, 0xb6, 0x72, 0xdc, 0x1e, 0xf7, 0x70,
+	0xbd, 0x98, 0xc9, 0x5b, 0x8e, 0x9d, 0x3f, 0xea, 0xd9, 0x16, 0x06, 0x36, 0x3b, 0xf8, 0x2d, 0xfd,
+	0xcc, 0xc3, 0x76, 0x02, 0x91, 0xdf, 0xf1, 0x5c, 0x9f, 0xa0, 0x7b, 0xb0, 0xe6, 0x07, 0x66, 0xd0,
+	0xf3, 0x29, 0xc9, 0x46, 0x71, 0x9d, 0x92, 0xe8, 0x74, 0x08, 0x87, 0x53, 0xe8, 0x13, 0x58, 0xeb,
+	0x12, 0xd3, 0xf7, 0xdc, 0x1c, 0x4f, 0x41, 0xf7, 0x29, 0x28, 0x95, 0x34, 0x8f, 0x29, 0x18, 0x87,
+	0x8b, 0xd0, 0xfb, 0x90, 0xb1, 0x23, 0x4c, 0x4e, 0xa0, 0xb1, 0x5e, 0xa7, 0x0c, 0x87, 0x66, 0xd7,
+	0x7a, 0x65, 0x76, 0x09, 0x1e, 0xcd, 0xa3, 0x7b, 0x70, 0x9d, 0x2d, 0x33, 0x2c, 0x12, 0x98, 0x76,
+	0x3b, 0xb7, 0xb2, 0xc7, 0x3d, 0xcc, 0xe0, 0x6b, 0x6c, 0xb0, 0x4c, 0xc7, 0xa4, 0xaf, 0x61, 0x8d,
+	0x3d, 0x03, 0xdd, 0x82, 0xec, 0x91, 0x5a, 0x96, 0x9f, 0x55, 0x54, 0xb9, 0x6c, 0x60, 0xb9, 0xa4,
+	0x6b, 0x6a, 0xf6, 0x2d, 0x84, 0x60, 0xe3, 0x48, 0x7d, 0xae, 0x6a, 0xc7, 0xaa, 0x51, 0x96, 0x5f,
+	0x54, 0x0e, 0xe4, 0x2c, 0x37, 0x18, 0xab, 0xa8, 0x0d, 0x19, 0xab, 0xa5, 0xaa, 0x21, 0x63, 0xac,
+	0xe1, 0x2c, 0x8f, 0xb6, 0x00, 0xb1, 0x79, 0xe3, 0x48, 0xc5, 0x72, 0xe9, 0xe0, 0xb0, 0xb4, 0x5f,
+	0x95, 0xb3, 0x82, 0xf4, 0x23, 0x07, 0xdb, 0x87, 0xc7, 0x07, 0x9e, 0xd3, 0xf1, 0x5c, 0xe2, 0x06,
+	0x15, 0xf7, 0xd4, 0x53, 0x48, 0xb0, 0x44, 0xf6, 0xd1, 0x13, 0xd8, 0x68, 0x46, 0x34, 0x0c, 0xce,
+	0xc7, 0xe1, 0xd7, 0x87, 0x00, 0xba, 0xe2, 0xfe, 0xf8, 0x0a, 0xd7, 0x74, 0x08, 0x4d, 0x59, 0x66,
+	0x0c, 0xa6, 0x9a, 0x0e, 0x91, 0x7e, 0xe7, 0x41, 0x4c, 0x0a, 0xf1, 0x22, 0xba, 0x7e, 0x1a, 0xd3,
+	0xf5, 0x5d, 0xa6, 0x4a, 0x2a, 0x6b, 0x5c, 0xd8, 0x0f, 0x20, 0x33, 0x0c, 0x2a, 0x14, 0x76, 0x83,
+	0x52, 0x0c, 0x09, 0xf0, 0x08, 0xb0, 0x98, 0xb2, 0xbd, 0x25, 0x94, 0xbd, 0x0d, 0x9b, 0xd1, 0xd8,
+	0x81, 0x56, 0xab, 0x6b, 0xaa, 0xac, 0x36, 0xb2, 0x7c, 0x82, 0xe0, 0x42, 0x8a, 0xe0, 0x2b, 0xd2,
+	0x1f, 0xd3, 0x82, 0xeb, 0x6f, 0x96, 0xe0, 0xa8, 0x08, 0x57, 0x9a, 0x67, 0xa6, 0xdb, 0x22, 0x3e,
+	0x4d, 0xdc, 0x7a, 0x31, 0x47, 0x19, 0x6b, 0x9e, 0x65, 0x9f, 0xda, 0xe6, 0x49, 0x9b, 0x8c, 0x92,
+	0x1e, 0x01, 0xa5, 0x5f, 0xa6, 0x4d, 0xa2, 0xff, 0x27, 0x26, 0xd1, 0xd3, 0x4d, 0x32, 0x25, 0xbb,
+	0x90, 0x20, 0xfb, 0x77, 0xdc, 0x6b, 0xd6, 0xfd, 0x45, 0xa9, 0x5a, 0x29, 0x1b, 0xf5, 0x12, 0x2e,
+	0xd5, 0xf4, 0xac, 0x90, 0xe0, 0x85, 0x95, 0x14, 0x2f, 0xac, 0x4a, 0x7f, 0xf1, 0x70, 0x47, 0x0f,
+	0xcc, 0x6e, 0x50, 0x1b, 0x54, 0x77, 0xdb, 0x6d, 0x95, 0xa9, 0xba, 0x17, 0xcb, 0xda, 0x67, 0xb1,
+	0xac, 0x3d, 0x88, 0x40, 0x69, 0xb4, 0xf1, 0xb4, 0xc5, 0x3c, 0x27, 0xcc, 0xf2, 0xdc, 0x42, 0x27,
+	0xeb, 0xdb, 0x79, 0x29, 0x16, 0x61, 0x2b, 0xcc, 0x47, 0xa9, 0x8a, 0xe5, 0x52, 0xf9, 0xa5, 0x51,
+	0x2b, 0xa9, 0x25, 0x45, 0x2e, 0x67, 0x39, 0xf4, 0x0e, 0xdc, 0xd5, 0xea, 0x32, 0x2e, 0x35, 0x2a,
+	0x9a, 0x3a, 0x9c, 0xae, 0xa8, 0x46, 0x1d, 0x6b, 0x0a, 0x96, 0x75, 0x7d, 0xf1, 0xb4, 0x4b, 0x05,
+	0xd8, 0xd6, 0x03, 0xaf, 0x13, 0xcf, 0x02, 0x3b, 0x69, 0x08, 0x56, 0xe8, 0x09, 0xe0, 0xe8, 0x06,
+	0xe8, 0x6f, 0xe9, 0x4f, 0x0e, 0xc4, 0xa4, 0x15, 0x97, 0x37, 0x71, 0x3a, 0xeb, 0x52, 0x26, 0x2e,
+	0x5e, 0xdc, 0xc3, 0x52, 0x15, 0xb6, 0x68, 0x04, 0xc4, 0x62, 0x01, 0xf8, 0xc3, 0x7d, 0x15, 0xe1,
+	0x0a, 0x93, 0x78, 0xb0, 0x31, 0x61, 0xf6, 0x79, 0x0f, 0x81, 0xd2, 0x0f, 0x1c, 0x6c, 0xeb, 0x24,
+	0xa8, 0x7a, 0xad, 0xc1, 0x96, 0x64, 0xd7, 0xea, 0x78, 0xb6, 0xbb, 0x54, 0x19, 0x7b, 0x04, 0xd9,
+	0x36, 0x63, 0x31, 0x48, 0x48, 0x43, 0x53, 0x97, 0xc1, 0x37, 0xda, 0x93, 0xec, 0xe3, 0x50, 0xda,
+	0xb9, 0x34, 0xbd, 0x28, 0x3d, 0x11, 0xb4, 0x1e, 0x0e, 0x4b, 0x7f, 0xf3, 0x34, 0x3e, 0x4c, 0x1c,
+	0x2f, 0x20, 0xa3, 0xf0, 0x2e, 0xdf, 0x8b, 0xa4, 0x92, 0x2e, 0x25, 0xe4, 0xaf, 0xdc, 0x6b, 0xea,
+	0x2f, 0x44, 0xd8, 0xaa, 0x6a, 0x8a, 0x52, 0x51, 0x15, 0x43, 0x56, 0xcb, 0x75, 0xad, 0xa2, 0x36,
+	0x86, 0xaf, 0xa2, 0x7b, 0xb0, 0x3b, 0x35, 0x57, 0xc7, 0x5a, 0x43, 0x3b, 0xd0, 0x46, 0x35, 0x6a,
+	0x1b, 0x6e, 0xd7, 0x74, 0x65, 0xff, 0x48, 0x8f, 0xaf, 0x5f, 0x4d, 0x29, 0x5f, 0x6b, 0x83, 0xf2,
+	0x25, 0x2a, 0x09, 0x1e, 0xb8, 0xfc, 0x71, 0x49, 0x67, 0x8d, 0x67, 0x39, 0xc9, 0x3d, 0xc2, 0xe2,
+	0xee, 0x59, 0x49, 0x74, 0xcf, 0xb4, 0x76, 0xab, 0xff, 0x43, 0x6b, 0x78, 0x00, 0x39, 0x9d, 0x04,
+	0x35, 0xbf, 0xb5, 0xdf, 0xf3, 0xe3, 0x07, 0xec, 0x01, 0xdc, 0x70, 0xfc, 0xd6, 0x49, 0xcf, 0x1f,
+	0xed, 0x9a, 0x15, 0xb2, 0x0d, 0x36, 0x1c, 0xe1, 0xa5, 0xef, 0x79, 0xd8, 0x56, 0xa6, 0x59, 0x2e,
+	0x7f, 0x0e, 0x52, 0x49, 0xe3, 0x0a, 0x25, 0x84, 0x2a, 0x24, 0x85, 0xba, 0xd8, 0xbb, 0xe5, 0x8b,
+	0xf9, 0x49, 0x8f, 0x25, 0x98, 0x4b, 0x49, 0x30, 0x2f, 0xbd, 0x84, 0xac, 0xec, 0x06, 0x76, 0x60,
+	0x13, 0xbf, 0xea, 0xb5, 0xaa, 0xa4, 0x4f, 0xda, 0xe8, 0x11, 0x5c, 0x6d, 0x87, 0xbf, 0xc3, 0x9c,
+	0xb0, 0x0f, 0x88, 0x08, 0x80, 0x87, 0xd3, 0x48, 0x84, 0xab, 0x24, 0x5c, 0x9e, 0xe3, 0xf7, 0x84,
+	0x87, 0x19, 0x3c, 0xfc, 0x2f, 0xf5, 0x00, 0xb1, 0xea, 0xc8, 0x16, 0x2d, 0x51, 0x16, 0x9f, 0x42,
+	0xa6, 0x3d, 0xf8, 0x64, 0xeb, 0x93, 0x36, 0xa3, 0x5f, 0x2f, 0xde, 0xa6, 0xc8, 0x78, 0xc8, 0x78,
+	0x84, 0x93, 0x7e, 0xe3, 0xe1, 0xe6, 0xc4, 0x73, 0x43, 0x9d, 0x2f, 0xf2, 0xe0, 0x91, 0x27, 0xf8,
+	0x74, 0x4f, 0x7c, 0x38, 0xf4, 0x84, 0x40, 0x41, 0xbb, 0x51, 0x6d, 0x8c, 0x3f, 0x7a, 0x6e, 0x55,
+	0x4c, 0x12, 0xb9, 0xff, 0xfa, 0x4e, 0x56, 0x84, 0xab, 0x6a, 0x83, 0xe2, 0xd7, 0xa8, 0x34, 0x5e,
+	0xce, 0xe8, 0xcd, 0xbf, 0x02, 0xa4, 0x5c, 0x4e, 0xb5, 0x59, 0x9e, 0xf8, 0x87, 0x87, 0x9b, 0xca,
+	0x25, 0xc5, 0x61, 0xae, 0xa8, 0x2e, 0xe8, 0x0a, 0x86, 0x1b, 0x53, 0x54, 0x58, 0x44, 0xd1, 0x95,
+	0x31, 0x45, 0x95, 0x25, 0x14, 0x5d, 0x7d, 0x83, 0x14, 0x3d, 0x1c, 0xbe, 0xa1, 0x06, 0x7d, 0x4c,
+	0x94, 0xa4, 0x25, 0x94, 0x2d, 0xfe, 0x74, 0x15, 0xb6, 0x55, 0x33, 0xb0, 0xfb, 0xe4, 0xf0, 0xb8,
+	0x36, 0xbc, 0x8c, 0xd1, 0xd9, 0x5d, 0x0c, 0xd2, 0xe1, 0x66, 0x42, 0xc7, 0x8d, 0x52, 0x1b, 0x29,
+	0x71, 0x6f, 0x5e, 0x97, 0xfe, 0x84, 0x43, 0x47, 0x80, 0xa6, 0xfb, 0x46, 0xb4, 0x93, 0xda, 0x50,
+	0xd2, 0x4d, 0x89, 0xbb, 0x73, 0x1a, 0x4e, 0x74, 0x08, 0x9b, 0x83, 0xe2, 0x3d, 0xd1, 0x0b, 0xa2,
+	0xad, 0x3c, 0xbb, 0x21, 0xca, 0x47, 0x37, 0x44, 0x79, 0xd9, 0xe9, 0x04, 0xe7, 0xe2, 0x1d, 0xb6,
+	0x83, 0xe4, 0xc6, 0xf1, 0x18, 0x6e, 0x29, 0x24, 0x98, 0xba, 0x9d, 0x41, 0x77, 0xd3, 0x6e, 0x6d,
+	0x58, 0x84, 0x3b, 0xb3, 0x2f, 0x75, 0x9e, 0x70, 0xe8, 0x98, 0x1e, 0xc4, 0xd8, 0x97, 0x5f, 0xb8,
+	0xf3, 0xd4, 0xdb, 0x92, 0x70, 0xe7, 0xe9, 0x97, 0x0a, 0x61, 0x4a, 0x17, 0x24, 0xd6, 0xe7, 0x10,
+	0x8f, 0x7f, 0xde, 0x36, 0xa2, 0x72, 0x3f, 0xd1, 0x70, 0xec, 0x8c, 0x15, 0xc5, 0x84, 0x2e, 0x59,
+	0xdc, 0x99, 0xdd, 0x50, 0xa2, 0x67, 0x51, 0x39, 0x9a, 0x60, 0xbd, 0x31, 0x71, 0xa1, 0x55, 0x29,
+	0x8b, 0xbb, 0x73, 0x5a, 0x26, 0x84, 0x61, 0x73, 0xaa, 0x91, 0x08, 0x35, 0x4a, 0x6b, 0x30, 0xe6,
+	0xc6, 0xf6, 0x9c, 0x99, 0x68, 0x92, 0x33, 0xcd, 0x44, 0x3b, 0xb3, 0x3b, 0x06, 0x54, 0x8f, 0x0a,
+	0xe3, 0xc4, 0x29, 0x45, 0x13, 0x1b, 0x4b, 0x38, 0xbf, 0x62, 0x2e, 0xad, 0x46, 0xa1, 0xcf, 0x61,
+	0x7d, 0xec, 0x65, 0x84, 0xde, 0x9e, 0x7e, 0x3d, 0x8d, 0x33, 0xe8, 0xc9, 0x0c, 0xca, 0x14, 0x83,
+	0x92, 0xc6, 0x90, 0x10, 0xc3, 0xfe, 0xc7, 0x5f, 0x7e, 0xd4, 0xb2, 0x83, 0xb3, 0xde, 0x49, 0xbe,
+	0xe9, 0x39, 0x05, 0xaf, 0x43, 0xdc, 0xa6, 0xd7, 0xb5, 0x0a, 0xac, 0xa6, 0x3c, 0x1e, 0x5d, 0xe8,
+	0x3e, 0xb6, 0xdd, 0x80, 0x74, 0x4f, 0xcd, 0x26, 0x29, 0xf4, 0x9f, 0x16, 0x5a, 0x5e, 0xc1, 0x72,
+	0xec, 0x93, 0x35, 0x9a, 0xc2, 0xa7, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0xbf, 0x86, 0x1b, 0xa1,
+	0x00, 0x16, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -1189,6 +1641,8 @@
 	// uri = IP Address of the Hardware;
 	StartManagingDevice(ctx context.Context, in *ModifiableComponent, opts ...grpc.CallOption) (NativeHWManagementService_StartManagingDeviceClient, error)
 	// Stop management of a device and clean up any context and caches for that device
+	// This rpc can be called at any time, even before the StartManagingDevice operation
+	// has completed, and should be able to cleanup.
 	StopManagingDevice(ctx context.Context, in *StopManagingDeviceRequest, opts ...grpc.CallOption) (*StopManagingDeviceResponse, error)
 	// Returns an object containing a list of devices managed by this entity
 	GetManagedDevices(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*ManagedDevicesResponse, error)
@@ -1426,6 +1880,8 @@
 	// uri = IP Address of the Hardware;
 	StartManagingDevice(*ModifiableComponent, NativeHWManagementService_StartManagingDeviceServer) error
 	// Stop management of a device and clean up any context and caches for that device
+	// This rpc can be called at any time, even before the StartManagingDevice operation
+	// has completed, and should be able to cleanup.
 	StopManagingDevice(context.Context, *StopManagingDeviceRequest) (*StopManagingDeviceResponse, error)
 	// Returns an object containing a list of devices managed by this entity
 	GetManagedDevices(context.Context, *empty.Empty) (*ManagedDevicesResponse, error)
diff --git a/vendor/github.com/opencord/device-management-interface/go/dmi/hw_metrics_mgmt_service.pb.go b/vendor/github.com/opencord/device-management-interface/go/dmi/hw_metrics_mgmt_service.pb.go
index 5d41dc2..b812950 100644
--- a/vendor/github.com/opencord/device-management-interface/go/dmi/hw_metrics_mgmt_service.pb.go
+++ b/vendor/github.com/opencord/device-management-interface/go/dmi/hw_metrics_mgmt_service.pb.go
@@ -120,6 +120,111 @@
 	return fileDescriptor_6b6c2f1384c11ff5, []int{0}
 }
 
+type ListMetricsResponse_Reason int32
+
+const (
+	ListMetricsResponse_UNDEFINED_REASON   ListMetricsResponse_Reason = 0
+	ListMetricsResponse_UNKNOWN_DEVICE     ListMetricsResponse_Reason = 1
+	ListMetricsResponse_INTERNAL_ERROR     ListMetricsResponse_Reason = 2
+	ListMetricsResponse_DEVICE_UNREACHABLE ListMetricsResponse_Reason = 3
+)
+
+var ListMetricsResponse_Reason_name = map[int32]string{
+	0: "UNDEFINED_REASON",
+	1: "UNKNOWN_DEVICE",
+	2: "INTERNAL_ERROR",
+	3: "DEVICE_UNREACHABLE",
+}
+
+var ListMetricsResponse_Reason_value = map[string]int32{
+	"UNDEFINED_REASON":   0,
+	"UNKNOWN_DEVICE":     1,
+	"INTERNAL_ERROR":     2,
+	"DEVICE_UNREACHABLE": 3,
+}
+
+func (x ListMetricsResponse_Reason) String() string {
+	return proto.EnumName(ListMetricsResponse_Reason_name, int32(x))
+}
+
+func (ListMetricsResponse_Reason) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_6b6c2f1384c11ff5, []int{2, 0}
+}
+
+type MetricsConfigurationResponse_Reason int32
+
+const (
+	MetricsConfigurationResponse_UNDEFINED_REASON          MetricsConfigurationResponse_Reason = 0
+	MetricsConfigurationResponse_UNKNOWN_DEVICE            MetricsConfigurationResponse_Reason = 1
+	MetricsConfigurationResponse_INTERNAL_ERROR            MetricsConfigurationResponse_Reason = 2
+	MetricsConfigurationResponse_POLL_INTERVAL_UNSUPPORTED MetricsConfigurationResponse_Reason = 3
+	MetricsConfigurationResponse_INVALID_METRIC            MetricsConfigurationResponse_Reason = 4
+	MetricsConfigurationResponse_DEVICE_UNREACHABLE        MetricsConfigurationResponse_Reason = 5
+)
+
+var MetricsConfigurationResponse_Reason_name = map[int32]string{
+	0: "UNDEFINED_REASON",
+	1: "UNKNOWN_DEVICE",
+	2: "INTERNAL_ERROR",
+	3: "POLL_INTERVAL_UNSUPPORTED",
+	4: "INVALID_METRIC",
+	5: "DEVICE_UNREACHABLE",
+}
+
+var MetricsConfigurationResponse_Reason_value = map[string]int32{
+	"UNDEFINED_REASON":          0,
+	"UNKNOWN_DEVICE":            1,
+	"INTERNAL_ERROR":            2,
+	"POLL_INTERVAL_UNSUPPORTED": 3,
+	"INVALID_METRIC":            4,
+	"DEVICE_UNREACHABLE":        5,
+}
+
+func (x MetricsConfigurationResponse_Reason) String() string {
+	return proto.EnumName(MetricsConfigurationResponse_Reason_name, int32(x))
+}
+
+func (MetricsConfigurationResponse_Reason) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_6b6c2f1384c11ff5, []int{4, 0}
+}
+
+type GetMetricResponse_Reason int32
+
+const (
+	GetMetricResponse_UNDEFINED_REASON   GetMetricResponse_Reason = 0
+	GetMetricResponse_UNKNOWN_DEVICE     GetMetricResponse_Reason = 1
+	GetMetricResponse_UNKNOWN_COMPONENT  GetMetricResponse_Reason = 2
+	GetMetricResponse_INTERNAL_ERROR     GetMetricResponse_Reason = 3
+	GetMetricResponse_INVALID_METRIC     GetMetricResponse_Reason = 4
+	GetMetricResponse_DEVICE_UNREACHABLE GetMetricResponse_Reason = 5
+)
+
+var GetMetricResponse_Reason_name = map[int32]string{
+	0: "UNDEFINED_REASON",
+	1: "UNKNOWN_DEVICE",
+	2: "UNKNOWN_COMPONENT",
+	3: "INTERNAL_ERROR",
+	4: "INVALID_METRIC",
+	5: "DEVICE_UNREACHABLE",
+}
+
+var GetMetricResponse_Reason_value = map[string]int32{
+	"UNDEFINED_REASON":   0,
+	"UNKNOWN_DEVICE":     1,
+	"UNKNOWN_COMPONENT":  2,
+	"INTERNAL_ERROR":     3,
+	"INVALID_METRIC":     4,
+	"DEVICE_UNREACHABLE": 5,
+}
+
+func (x GetMetricResponse_Reason) String() string {
+	return proto.EnumName(GetMetricResponse_Reason_name, int32(x))
+}
+
+func (GetMetricResponse_Reason) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_6b6c2f1384c11ff5, []int{8, 0}
+}
+
 type MetricConfig struct {
 	MetricId MetricNames `protobuf:"varint,1,opt,name=metric_id,json=metricId,proto3,enum=dmi.MetricNames" json:"metric_id,omitempty"`
 	// Whether the device manager is collecting and reporting this metric or not
@@ -219,12 +324,13 @@
 }
 
 type ListMetricsResponse struct {
-	Status               Status         `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
-	Reason               Reason         `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.Reason" json:"reason,omitempty"`
-	Metrics              *MetricsConfig `protobuf:"bytes,3,opt,name=metrics,proto3" json:"metrics,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
-	XXX_unrecognized     []byte         `json:"-"`
-	XXX_sizecache        int32          `json:"-"`
+	Status               Status                     `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
+	Reason               ListMetricsResponse_Reason `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.ListMetricsResponse_Reason" json:"reason,omitempty"`
+	Metrics              *MetricsConfig             `protobuf:"bytes,3,opt,name=metrics,proto3" json:"metrics,omitempty"`
+	ReasonDetail         string                     `protobuf:"bytes,4,opt,name=reason_detail,json=reasonDetail,proto3" json:"reason_detail,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                   `json:"-"`
+	XXX_unrecognized     []byte                     `json:"-"`
+	XXX_sizecache        int32                      `json:"-"`
 }
 
 func (m *ListMetricsResponse) Reset()         { *m = ListMetricsResponse{} }
@@ -259,11 +365,11 @@
 	return Status_UNDEFINED_STATUS
 }
 
-func (m *ListMetricsResponse) GetReason() Reason {
+func (m *ListMetricsResponse) GetReason() ListMetricsResponse_Reason {
 	if m != nil {
 		return m.Reason
 	}
-	return Reason_UNDEFINED_REASON
+	return ListMetricsResponse_UNDEFINED_REASON
 }
 
 func (m *ListMetricsResponse) GetMetrics() *MetricsConfig {
@@ -273,6 +379,13 @@
 	return nil
 }
 
+func (m *ListMetricsResponse) GetReasonDetail() string {
+	if m != nil {
+		return m.ReasonDetail
+	}
+	return ""
+}
+
 type MetricsConfigurationRequest struct {
 	DeviceUuid *Uuid `protobuf:"bytes,1,opt,name=device_uuid,json=deviceUuid,proto3" json:"device_uuid,omitempty"`
 	// Types that are valid to be assigned to Operation:
@@ -362,11 +475,12 @@
 }
 
 type MetricsConfigurationResponse struct {
-	Status               Status   `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
-	Reason               Reason   `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.Reason" json:"reason,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Status               Status                              `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
+	Reason               MetricsConfigurationResponse_Reason `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.MetricsConfigurationResponse_Reason" json:"reason,omitempty"`
+	ReasonDetail         string                              `protobuf:"bytes,3,opt,name=reason_detail,json=reasonDetail,proto3" json:"reason_detail,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                            `json:"-"`
+	XXX_unrecognized     []byte                              `json:"-"`
+	XXX_sizecache        int32                               `json:"-"`
 }
 
 func (m *MetricsConfigurationResponse) Reset()         { *m = MetricsConfigurationResponse{} }
@@ -401,11 +515,18 @@
 	return Status_UNDEFINED_STATUS
 }
 
-func (m *MetricsConfigurationResponse) GetReason() Reason {
+func (m *MetricsConfigurationResponse) GetReason() MetricsConfigurationResponse_Reason {
 	if m != nil {
 		return m.Reason
 	}
-	return Reason_UNDEFINED_REASON
+	return MetricsConfigurationResponse_UNDEFINED_REASON
+}
+
+func (m *MetricsConfigurationResponse) GetReasonDetail() string {
+	if m != nil {
+		return m.ReasonDetail
+	}
+	return ""
 }
 
 type MetricMetaData struct {
@@ -570,12 +691,13 @@
 }
 
 type GetMetricResponse struct {
-	Status               Status   `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
-	Reason               Reason   `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.Reason" json:"reason,omitempty"`
-	Metric               *Metric  `protobuf:"bytes,3,opt,name=metric,proto3" json:"metric,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Status               Status                   `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
+	Reason               GetMetricResponse_Reason `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.GetMetricResponse_Reason" json:"reason,omitempty"`
+	Metric               *Metric                  `protobuf:"bytes,3,opt,name=metric,proto3" json:"metric,omitempty"`
+	ReasonDetail         string                   `protobuf:"bytes,4,opt,name=reason_detail,json=reasonDetail,proto3" json:"reason_detail,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
+	XXX_unrecognized     []byte                   `json:"-"`
+	XXX_sizecache        int32                    `json:"-"`
 }
 
 func (m *GetMetricResponse) Reset()         { *m = GetMetricResponse{} }
@@ -610,11 +732,11 @@
 	return Status_UNDEFINED_STATUS
 }
 
-func (m *GetMetricResponse) GetReason() Reason {
+func (m *GetMetricResponse) GetReason() GetMetricResponse_Reason {
 	if m != nil {
 		return m.Reason
 	}
-	return Reason_UNDEFINED_REASON
+	return GetMetricResponse_UNDEFINED_REASON
 }
 
 func (m *GetMetricResponse) GetMetric() *Metric {
@@ -624,8 +746,18 @@
 	return nil
 }
 
+func (m *GetMetricResponse) GetReasonDetail() string {
+	if m != nil {
+		return m.ReasonDetail
+	}
+	return ""
+}
+
 func init() {
 	proto.RegisterEnum("dmi.MetricNames", MetricNames_name, MetricNames_value)
+	proto.RegisterEnum("dmi.ListMetricsResponse_Reason", ListMetricsResponse_Reason_name, ListMetricsResponse_Reason_value)
+	proto.RegisterEnum("dmi.MetricsConfigurationResponse_Reason", MetricsConfigurationResponse_Reason_name, MetricsConfigurationResponse_Reason_value)
+	proto.RegisterEnum("dmi.GetMetricResponse_Reason", GetMetricResponse_Reason_name, GetMetricResponse_Reason_value)
 	proto.RegisterType((*MetricConfig)(nil), "dmi.MetricConfig")
 	proto.RegisterType((*MetricsConfig)(nil), "dmi.MetricsConfig")
 	proto.RegisterType((*ListMetricsResponse)(nil), "dmi.ListMetricsResponse")
@@ -640,70 +772,82 @@
 func init() { proto.RegisterFile("dmi/hw_metrics_mgmt_service.proto", fileDescriptor_6b6c2f1384c11ff5) }
 
 var fileDescriptor_6b6c2f1384c11ff5 = []byte{
-	// 1008 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0x4b, 0x6f, 0xdb, 0x46,
-	0x10, 0xc7, 0x4d, 0xa9, 0x71, 0xec, 0x91, 0x1f, 0xf4, 0xda, 0x4e, 0x14, 0xc5, 0x6d, 0x64, 0x19,
-	0x2d, 0x0c, 0xb7, 0x96, 0x02, 0xe7, 0xd2, 0x47, 0x2e, 0xb4, 0x44, 0xdb, 0x44, 0x25, 0x5a, 0x58,
-	0x51, 0x76, 0xd2, 0xcb, 0x62, 0x23, 0xae, 0x65, 0x02, 0x26, 0xa9, 0x92, 0x4b, 0xe7, 0xde, 0x4b,
-	0x4f, 0x05, 0xfa, 0x40, 0x3f, 0x42, 0x6f, 0x7d, 0x7f, 0x8a, 0x3e, 0xef, 0xed, 0xf7, 0x68, 0x0b,
-	0xf4, 0x56, 0x70, 0x97, 0x62, 0x57, 0x8e, 0xdc, 0x22, 0x40, 0x6e, 0xd2, 0x7f, 0x7e, 0xb3, 0xf3,
-	0xdf, 0xe1, 0x72, 0x96, 0xb0, 0xe9, 0xfa, 0x5e, 0xe3, 0xfc, 0x29, 0xf1, 0x19, 0x8f, 0xbc, 0x41,
-	0x4c, 0xfc, 0xa1, 0xcf, 0x49, 0xcc, 0xa2, 0x4b, 0x6f, 0xc0, 0xea, 0xa3, 0x28, 0xe4, 0x21, 0x2a,
-	0xba, 0xbe, 0x57, 0x59, 0x49, 0xb9, 0x41, 0xe8, 0xfb, 0x61, 0x10, 0x4b, 0xbd, 0xb2, 0x20, 0x53,
-	0xe5, 0xbf, 0xda, 0x87, 0x1a, 0x2c, 0x74, 0xc4, 0x22, 0xcd, 0x30, 0x38, 0xf3, 0x86, 0x68, 0x17,
-	0xe6, 0xe5, 0xa2, 0xc4, 0x73, 0xcb, 0x5a, 0x55, 0xdb, 0x5e, 0xda, 0xd3, 0xeb, 0xae, 0xef, 0xd5,
-	0x25, 0x65, 0x53, 0x9f, 0xc5, 0x78, 0x4e, 0x22, 0x96, 0x8b, 0xb6, 0x60, 0xd1, 0x8b, 0xc9, 0x40,
-	0xe4, 0x26, 0x11, 0x73, 0xcb, 0x85, 0xaa, 0xb6, 0x3d, 0x87, 0x17, 0xbc, 0xb8, 0x99, 0x6b, 0x29,
-	0x34, 0x0a, 0x2f, 0x2e, 0x88, 0x17, 0x70, 0x16, 0x5d, 0xd2, 0x8b, 0x72, 0xb1, 0xaa, 0x6d, 0x2f,
-	0xe2, 0x85, 0x54, 0xb4, 0x32, 0xad, 0xf6, 0x10, 0x16, 0x65, 0x89, 0x2c, 0x13, 0xbd, 0x0e, 0x37,
-	0xb3, 0xed, 0x95, 0xb5, 0x6a, 0x71, 0xbb, 0xb4, 0xb7, 0xa2, 0xf8, 0x90, 0x0c, 0x1e, 0x13, 0xb5,
-	0x8f, 0x34, 0x58, 0x6d, 0x7b, 0x31, 0xcf, 0x96, 0xc0, 0x2c, 0x1e, 0x85, 0x41, 0xcc, 0xd0, 0x16,
-	0xcc, 0xc6, 0x9c, 0xf2, 0x24, 0xce, 0xf6, 0x52, 0x12, 0x6b, 0xf4, 0x84, 0x84, 0xb3, 0x50, 0x0a,
-	0x45, 0x8c, 0xc6, 0x61, 0x20, 0xdc, 0x8f, 0x21, 0x2c, 0x24, 0x9c, 0x85, 0xd0, 0x1b, 0xff, 0xda,
-	0x49, 0xed, 0x97, 0xf6, 0x90, 0x62, 0x27, 0xbe, 0xea, 0xe7, 0x7b, 0x0d, 0xee, 0x4e, 0x84, 0x92,
-	0x88, 0x72, 0x2f, 0x0c, 0x30, 0x7b, 0x3f, 0x61, 0x31, 0x47, 0x3b, 0x50, 0x72, 0x59, 0xfa, 0xb4,
-	0x48, 0x92, 0x64, 0x8d, 0x2e, 0xed, 0xcd, 0x8b, 0x15, 0xfb, 0x89, 0xe7, 0x62, 0x90, 0xd1, 0xf4,
-	0x37, 0xaa, 0xc3, 0xcd, 0xc1, 0x39, 0x0d, 0x86, 0x2c, 0x16, 0xfe, 0xa6, 0x56, 0x3e, 0x9a, 0xc1,
-	0x63, 0x08, 0xed, 0x80, 0x1e, 0xb1, 0x98, 0x71, 0xc2, 0x43, 0xe2, 0xb2, 0x33, 0x9a, 0x5c, 0x70,
-	0x61, 0x79, 0xee, 0x68, 0x06, 0x2f, 0x89, 0x88, 0x13, 0xb6, 0xa4, 0xbe, 0x5f, 0x82, 0xf9, 0x70,
-	0xc4, 0xa4, 0xb7, 0xda, 0x39, 0x6c, 0x4c, 0xf7, 0xfc, 0xa2, 0x9b, 0x59, 0xfb, 0x5c, 0x83, 0x25,
-	0x59, 0xaa, 0xc3, 0x38, 0x6d, 0x51, 0x4e, 0x9f, 0xab, 0x23, 0xf7, 0x61, 0x69, 0x10, 0xfa, 0xa3,
-	0x30, 0x60, 0x01, 0x97, 0x78, 0xe1, 0x2a, 0xbe, 0x98, 0x03, 0x22, 0xe3, 0x55, 0x35, 0x23, 0xa0,
-	0x3e, 0x13, 0x1d, 0x99, 0x57, 0xb0, 0xf4, 0x64, 0xd7, 0xbe, 0xd0, 0x60, 0x56, 0xfa, 0x7a, 0xde,
-	0x17, 0xe1, 0x21, 0x2c, 0x67, 0xb8, 0xcf, 0x38, 0x75, 0x29, 0xa7, 0x99, 0xa7, 0x55, 0x25, 0x69,
-	0xbc, 0x59, 0xbc, 0xe4, 0xe7, 0xff, 0x53, 0x14, 0xd5, 0xe1, 0xc6, 0x25, 0xbd, 0x48, 0x58, 0x76,
-	0xb4, 0xca, 0x22, 0xa7, 0x39, 0xb6, 0xd6, 0x63, 0x41, 0x1c, 0x46, 0x22, 0x51, 0x62, 0xb5, 0x18,
-	0xf4, 0x43, 0x96, 0x1d, 0xf6, 0xf1, 0x91, 0xba, 0x2f, 0x0c, 0x53, 0x22, 0x6a, 0x6b, 0xd7, 0xd7,
-	0x4e, 0x3d, 0xcb, 0x96, 0x4f, 0x6c, 0xb1, 0xf0, 0x7f, 0x5b, 0xac, 0x7d, 0xa0, 0xc1, 0x8a, 0x52,
-	0xf5, 0x85, 0xbf, 0x61, 0x5b, 0x30, 0x2b, 0x6b, 0x65, 0x5d, 0x28, 0x29, 0x5e, 0x70, 0x16, 0xda,
-	0xf9, 0xfd, 0x06, 0x94, 0x14, 0x7b, 0xe8, 0x0e, 0xac, 0x77, 0x4c, 0x07, 0x5b, 0x4d, 0x62, 0x1b,
-	0x1d, 0x93, 0xf4, 0xed, 0x96, 0x79, 0x60, 0xd9, 0x66, 0x4b, 0x9f, 0x41, 0x6b, 0xa0, 0x67, 0xa1,
-	0x03, 0xc3, 0x26, 0xbd, 0xae, 0x69, 0xb6, 0x74, 0x0d, 0xad, 0xc2, 0x72, 0xa6, 0x36, 0xbb, 0x7d,
-	0xe2, 0x98, 0x9d, 0xae, 0xee, 0xa2, 0x7b, 0x70, 0x57, 0x11, 0xfb, 0x3d, 0xe3, 0xd0, 0x24, 0x5d,
-	0x13, 0x37, 0x4d, 0xdb, 0x31, 0x0e, 0x4d, 0x9d, 0xa1, 0x0d, 0xb8, 0x9d, 0x01, 0x0e, 0x36, 0xec,
-	0x5e, 0xd3, 0xb4, 0x4e, 0x4c, 0x2c, 0xb3, 0x7f, 0xd0, 0xd0, 0x3d, 0xa8, 0x4c, 0x89, 0x9e, 0x1c,
-	0xb7, 0x45, 0xf6, 0x8f, 0xda, 0x35, 0xe9, 0xfb, 0x96, 0xd1, 0xd3, 0x7f, 0xd2, 0x50, 0x35, 0xaf,
-	0xae, 0x46, 0xf1, 0x23, 0xd2, 0x3d, 0x3e, 0x35, 0xb1, 0xfe, 0xf3, 0x75, 0x84, 0x33, 0x26, 0x7e,
-	0xd1, 0x50, 0x0d, 0x5e, 0x9e, 0x42, 0x9c, 0x1a, 0x27, 0x66, 0xdb, 0xb4, 0x0f, 0x9d, 0x23, 0xfd,
-	0x57, 0x0d, 0xad, 0xe7, 0x0d, 0x69, 0x59, 0xbd, 0x77, 0xa5, 0xfb, 0x2f, 0x0b, 0xe8, 0x0e, 0xac,
-	0xa9, 0x72, 0xd3, 0xe8, 0x1a, 0x4d, 0xcb, 0x79, 0xac, 0x7f, 0x55, 0x40, 0xb7, 0x60, 0x45, 0x0d,
-	0x89, 0xc6, 0xe8, 0x5f, 0x17, 0xd0, 0x26, 0x6c, 0x3c, 0xa3, 0xab, 0x0d, 0xfb, 0xa6, 0x80, 0x5e,
-	0x83, 0x4d, 0x15, 0xc1, 0xa6, 0xd1, 0x22, 0xa7, 0xd8, 0x72, 0x26, 0xb8, 0x6f, 0x0b, 0x68, 0x1b,
-	0xb6, 0x54, 0xee, 0xc0, 0xe8, 0xb7, 0x9d, 0xc7, 0xa4, 0x69, 0xb6, 0xdb, 0x3d, 0x95, 0xfc, 0xae,
-	0x80, 0xd6, 0xf2, 0x27, 0x87, 0x8d, 0x8e, 0x74, 0xff, 0x71, 0x11, 0x95, 0x61, 0x55, 0x51, 0x73,
-	0xf3, 0x9f, 0x14, 0x95, 0xed, 0xa6, 0x11, 0xe9, 0xfd, 0xd3, 0xa2, 0xd2, 0xcb, 0x5c, 0x56, 0x0b,
-	0x7d, 0xa6, 0x26, 0x8a, 0xf6, 0x92, 0x8e, 0xf1, 0x48, 0xff, 0xa3, 0x88, 0x6e, 0x03, 0x9a, 0x90,
-	0xe5, 0x8a, 0x7f, 0x16, 0x95, 0xde, 0x2b, 0x01, 0x75, 0xcd, 0xbf, 0x54, 0xc6, 0xb2, 0x6d, 0x13,
-	0x93, 0x5e, 0x1f, 0xe3, 0xe3, 0xbe, 0xdd, 0xb2, 0xec, 0x43, 0xb9, 0x95, 0xdf, 0x5e, 0xda, 0xfb,
-	0x5b, 0x83, 0x57, 0x6c, 0xca, 0xbd, 0x4b, 0x96, 0x8d, 0xe1, 0x0e, 0x0d, 0xe8, 0x90, 0xf9, 0x62,
-	0x04, 0x88, 0xbb, 0x1d, 0xbd, 0x09, 0x25, 0xe5, 0x9a, 0x43, 0xcb, 0xe2, 0x15, 0x39, 0xa2, 0x91,
-	0xfb, 0x94, 0x46, 0xcc, 0x6a, 0x55, 0xe4, 0xe4, 0x98, 0x76, 0x13, 0x52, 0xa8, 0xf4, 0x47, 0x2e,
-	0xe5, 0x6c, 0xda, 0x88, 0x47, 0xd5, 0x67, 0xaf, 0x94, 0xc9, 0x1b, 0xab, 0xb2, 0xf9, 0x1f, 0x44,
-	0x56, 0xe2, 0x6d, 0x98, 0xcf, 0xe7, 0x03, 0x5a, 0x17, 0xfc, 0xd5, 0x29, 0x55, 0xb9, 0x75, 0x55,
-	0x96, 0xb9, 0xfb, 0xef, 0xbc, 0xf7, 0xd6, 0xd0, 0xe3, 0xe7, 0xc9, 0x93, 0xfa, 0x20, 0xf4, 0x1b,
-	0xe1, 0x88, 0x05, 0x83, 0x30, 0x72, 0x1b, 0x72, 0xe8, 0xef, 0xfa, 0x79, 0x23, 0x76, 0xc5, 0x47,
-	0xc4, 0x19, 0x1d, 0xb0, 0xc6, 0xe5, 0x83, 0xc6, 0x30, 0x6c, 0xb8, 0xbe, 0xf7, 0x64, 0x56, 0x7c,
-	0xcc, 0x3c, 0xf8, 0x27, 0x00, 0x00, 0xff, 0xff, 0xfc, 0x65, 0x9d, 0xfb, 0x17, 0x09, 0x00, 0x00,
+	// 1198 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0x4d, 0x6f, 0xdb, 0x46,
+	0x13, 0x36, 0xa9, 0xc4, 0x89, 0x57, 0xb6, 0x42, 0xaf, 0xf3, 0xa1, 0x38, 0xc9, 0x1b, 0x59, 0xc1,
+	0x5b, 0x08, 0x69, 0x23, 0x07, 0x0e, 0x8a, 0x7e, 0xe5, 0x50, 0x9a, 0xdc, 0xd8, 0x44, 0x28, 0x4a,
+	0x58, 0x91, 0x72, 0xd2, 0x43, 0x17, 0x1b, 0x71, 0x23, 0x13, 0x10, 0x49, 0x95, 0xa4, 0x9c, 0x9f,
+	0x50, 0xf4, 0xd6, 0xb4, 0xe8, 0x4f, 0x68, 0x4f, 0xfd, 0xfe, 0x01, 0xbd, 0x15, 0xe8, 0xe7, 0xbd,
+	0xfd, 0x1f, 0x6d, 0x81, 0xde, 0x0a, 0xee, 0x52, 0xca, 0x5a, 0x96, 0x9b, 0xba, 0xe8, 0x4d, 0x7a,
+	0xe6, 0x99, 0x99, 0x67, 0x66, 0x96, 0xb3, 0x0b, 0x36, 0xfc, 0x30, 0xd8, 0xdc, 0x7f, 0x42, 0x42,
+	0x96, 0x25, 0x41, 0x3f, 0x25, 0xe1, 0x20, 0xcc, 0x48, 0xca, 0x92, 0x83, 0xa0, 0xcf, 0x9a, 0xa3,
+	0x24, 0xce, 0x62, 0x58, 0xf2, 0xc3, 0x60, 0x7d, 0x35, 0xe7, 0xf5, 0xe3, 0x30, 0x8c, 0xa3, 0x54,
+	0xe0, 0xeb, 0xcb, 0xc2, 0x55, 0xfc, 0xab, 0xbf, 0xab, 0x80, 0xe5, 0x16, 0x0f, 0x62, 0xc4, 0xd1,
+	0xe3, 0x60, 0x00, 0x6f, 0x81, 0x25, 0x11, 0x94, 0x04, 0x7e, 0x55, 0xa9, 0x29, 0x8d, 0xca, 0x96,
+	0xd6, 0xf4, 0xc3, 0xa0, 0x29, 0x58, 0x0e, 0x0d, 0x59, 0x8a, 0xcf, 0x0a, 0x8a, 0xe5, 0xc3, 0x1b,
+	0x60, 0x25, 0x48, 0x49, 0x9f, 0xfb, 0x8e, 0x13, 0xe6, 0x57, 0xd5, 0x9a, 0xd2, 0x38, 0x8b, 0x97,
+	0x83, 0xd4, 0x98, 0x62, 0x39, 0x69, 0x14, 0x0f, 0x87, 0x24, 0x88, 0x32, 0x96, 0x1c, 0xd0, 0x61,
+	0xb5, 0x54, 0x53, 0x1a, 0x2b, 0x78, 0x39, 0x07, 0xad, 0x02, 0xab, 0xdf, 0x05, 0x2b, 0x22, 0x45,
+	0xe1, 0x09, 0x5f, 0x04, 0x67, 0x8a, 0xf2, 0xaa, 0x4a, 0xad, 0xd4, 0x28, 0x6f, 0xad, 0x4a, 0x3a,
+	0x04, 0x07, 0x4f, 0x18, 0xf5, 0x4f, 0x54, 0xb0, 0x66, 0x07, 0x69, 0x56, 0x84, 0xc0, 0x2c, 0x1d,
+	0xc5, 0x51, 0xca, 0xe0, 0x0d, 0xb0, 0x98, 0x66, 0x34, 0x1b, 0xa7, 0x45, 0x2d, 0x65, 0x1e, 0xa3,
+	0xcb, 0x21, 0x5c, 0x98, 0xe0, 0x2b, 0x60, 0x31, 0x61, 0x34, 0x8d, 0x23, 0xae, 0xbe, 0xb2, 0x75,
+	0x9d, 0x93, 0xe6, 0x84, 0x6b, 0x62, 0x4e, 0xc3, 0x05, 0x1d, 0xbe, 0xf4, 0x4c, 0x62, 0x5e, 0x52,
+	0x79, 0x0b, 0x4a, 0x12, 0xd3, 0x19, 0x8d, 0x79, 0x1b, 0x84, 0x1f, 0xf1, 0x59, 0x46, 0x83, 0x61,
+	0xf5, 0x54, 0x4d, 0x69, 0x2c, 0xe1, 0x65, 0x01, 0x9a, 0x1c, 0xab, 0xbf, 0x0d, 0x16, 0x45, 0x12,
+	0x78, 0x1e, 0x68, 0x9e, 0x63, 0xa2, 0x7b, 0x96, 0x83, 0x4c, 0x82, 0x91, 0xde, 0x6d, 0x3b, 0xda,
+	0x02, 0x84, 0xa0, 0xe2, 0x39, 0xf7, 0x9d, 0xf6, 0x9e, 0x43, 0x4c, 0xd4, 0xb3, 0x0c, 0xa4, 0x29,
+	0x39, 0x66, 0x39, 0x2e, 0xc2, 0x8e, 0x6e, 0x13, 0x84, 0x71, 0x1b, 0x6b, 0x2a, 0xbc, 0x08, 0xa0,
+	0xb0, 0x13, 0xcf, 0xc1, 0x48, 0x37, 0x76, 0xf5, 0x6d, 0x1b, 0x69, 0xa5, 0xfa, 0xd7, 0x0a, 0xb8,
+	0x72, 0x48, 0xdf, 0x38, 0xa1, 0x59, 0x10, 0x47, 0x98, 0xbd, 0x33, 0x66, 0x69, 0x06, 0x6f, 0x82,
+	0xb2, 0xcf, 0xf2, 0x63, 0x44, 0xc6, 0xe3, 0xe2, 0x04, 0x94, 0xb7, 0x96, 0x78, 0x59, 0xde, 0x38,
+	0xf0, 0x31, 0x10, 0xd6, 0xfc, 0x37, 0x6c, 0x82, 0x33, 0xfd, 0x7d, 0x1a, 0x0d, 0x58, 0xca, 0x1b,
+	0x37, 0xb7, 0xfc, 0xdd, 0x05, 0x3c, 0x21, 0xc1, 0x9b, 0x40, 0x4b, 0x58, 0xca, 0x32, 0x92, 0xc5,
+	0xc4, 0x67, 0x8f, 0xe9, 0x78, 0x98, 0xf1, 0xbe, 0x9d, 0xdd, 0x5d, 0xc0, 0x15, 0x6e, 0x71, 0x63,
+	0x53, 0xe0, 0xdb, 0x65, 0xb0, 0x14, 0x8f, 0x98, 0xd0, 0x56, 0xff, 0x46, 0x05, 0x57, 0xe7, 0x8b,
+	0x3e, 0xc9, 0x98, 0xdf, 0x9c, 0x19, 0x73, 0xe3, 0xa8, 0xda, 0x99, 0xb8, 0xb3, 0xf3, 0x3e, 0x32,
+	0xc1, 0xd2, 0x9c, 0x09, 0x3e, 0x55, 0xfe, 0xa3, 0x11, 0x5e, 0x03, 0x97, 0x3b, 0x6d, 0xdb, 0x26,
+	0xdc, 0xd0, 0xd3, 0x6d, 0xe2, 0x39, 0x5d, 0xaf, 0xd3, 0x69, 0x63, 0x17, 0x99, 0x5a, 0x49, 0xb8,
+	0xf4, 0x74, 0xdb, 0x32, 0x49, 0x0b, 0xb9, 0xd8, 0x32, 0xb4, 0x53, 0xc7, 0x4c, 0xfd, 0x74, 0xfd,
+	0x23, 0x05, 0x54, 0x44, 0xa1, 0x2d, 0x96, 0x51, 0x93, 0x66, 0xf4, 0x44, 0x83, 0xbe, 0x0d, 0x2a,
+	0xfd, 0x38, 0x1c, 0xc5, 0x11, 0x8b, 0x32, 0x41, 0x57, 0x67, 0xe9, 0x2b, 0x53, 0x02, 0xf7, 0xf8,
+	0xbf, 0xec, 0x11, 0xd1, 0x90, 0x15, 0xad, 0x7a, 0x46, 0xcb, 0x37, 0x49, 0xfd, 0x63, 0x05, 0x2c,
+	0x0a, 0x5d, 0x27, 0x5d, 0x3c, 0x77, 0xc1, 0xb9, 0x82, 0x1e, 0xb2, 0x8c, 0xfa, 0x34, 0xa3, 0x85,
+	0xa6, 0x35, 0xc9, 0x69, 0x52, 0x2c, 0xae, 0x84, 0xd3, 0xff, 0x39, 0x15, 0x36, 0xc1, 0xe9, 0x03,
+	0x3a, 0x1c, 0xb3, 0xe2, 0xb3, 0xad, 0x72, 0x1f, 0x63, 0x22, 0xad, 0xcb, 0xa2, 0x34, 0x4e, 0xb8,
+	0xa3, 0xa0, 0xd5, 0x53, 0xa0, 0xed, 0xb0, 0x62, 0x1b, 0x4c, 0xbe, 0x94, 0xdb, 0x5c, 0x30, 0x25,
+	0x3c, 0xb7, 0x72, 0x7c, 0xee, 0x5c, 0xb3, 0x68, 0xf9, 0xa1, 0x12, 0xd5, 0xe7, 0x95, 0x58, 0xff,
+	0x56, 0x05, 0xab, 0x52, 0xd6, 0x93, 0x1c, 0xf5, 0x97, 0x67, 0x8e, 0xfa, 0x35, 0x4e, 0x3a, 0x12,
+	0xec, 0xe8, 0xf9, 0x5e, 0x14, 0xd9, 0x8b, 0xbe, 0x94, 0x25, 0x75, 0xb8, 0x30, 0xfd, 0xb3, 0x35,
+	0xf6, 0xde, 0xbf, 0xf9, 0x08, 0x2e, 0x80, 0xd5, 0x09, 0x66, 0xb4, 0x5b, 0x9d, 0xb6, 0x83, 0x1c,
+	0x57, 0x53, 0xe7, 0x7c, 0x1b, 0x27, 0x3a, 0xfc, 0x37, 0x7f, 0x3d, 0x0d, 0xca, 0x52, 0x87, 0xe1,
+	0x65, 0x70, 0x41, 0xf8, 0x10, 0x47, 0x6f, 0xe5, 0xe4, 0x42, 0x9c, 0xb6, 0x90, 0x6b, 0x2d, 0x4c,
+	0xf7, 0x74, 0x87, 0x74, 0x3b, 0x08, 0x99, 0x9a, 0x02, 0xd7, 0xc0, 0xb9, 0x02, 0x35, 0x3a, 0x1e,
+	0x71, 0x51, 0xab, 0xa3, 0xf9, 0xf0, 0x3a, 0xb8, 0x22, 0x81, 0x5e, 0x57, 0xdf, 0x41, 0xa4, 0x83,
+	0xb0, 0x81, 0x1c, 0x57, 0xdf, 0x41, 0x1a, 0x83, 0x57, 0xc1, 0xa5, 0x82, 0xe0, 0x62, 0xdd, 0xe9,
+	0x1a, 0xc8, 0xea, 0x21, 0x2c, 0xbc, 0xbf, 0x53, 0xe0, 0x75, 0xb0, 0x3e, 0xc7, 0xda, 0x6b, 0xdb,
+	0xdc, 0xfb, 0x7b, 0xe5, 0x18, 0xf7, 0x6d, 0x4b, 0xef, 0x6a, 0x3f, 0x28, 0xb0, 0x36, 0xcd, 0x2e,
+	0x5b, 0xf1, 0x03, 0xd2, 0x69, 0xef, 0x21, 0xac, 0xfd, 0x78, 0x1c, 0xc3, 0x9d, 0x30, 0x7e, 0x52,
+	0x60, 0x1d, 0x5c, 0x9b, 0xc3, 0xd8, 0xd3, 0x7b, 0xc8, 0x46, 0xce, 0x8e, 0xbb, 0xab, 0xfd, 0x9c,
+	0x8f, 0x64, 0xd2, 0x10, 0xd3, 0xea, 0xde, 0x17, 0xea, 0x3f, 0x55, 0xe1, 0x65, 0x70, 0x5e, 0x86,
+	0x0d, 0xbd, 0xa3, 0x1b, 0x96, 0xfb, 0x50, 0xfb, 0x2c, 0xbf, 0x78, 0x56, 0x65, 0x13, 0x6f, 0x8c,
+	0xf6, 0xb9, 0x0a, 0x37, 0xc0, 0xd5, 0x23, 0xb8, 0xdc, 0xb0, 0x2f, 0x54, 0xf8, 0x02, 0xd8, 0x90,
+	0x29, 0x18, 0xe9, 0x26, 0xd9, 0xc3, 0x96, 0x7b, 0x88, 0xf7, 0xa5, 0x0a, 0x1b, 0xe0, 0x86, 0xcc,
+	0xbb, 0xa7, 0x7b, 0xb6, 0xfb, 0x90, 0x18, 0xc8, 0xb6, 0xbb, 0x32, 0xf3, 0x2b, 0x15, 0x9e, 0x9f,
+	0x4e, 0x0e, 0xeb, 0x2d, 0xa1, 0xfe, 0xfd, 0x12, 0xac, 0x82, 0x35, 0x09, 0x9d, 0x8a, 0x7f, 0x5a,
+	0x92, 0xca, 0xcd, 0x2d, 0x42, 0xfb, 0x07, 0x25, 0xa9, 0x97, 0x53, 0x58, 0x4e, 0xf4, 0xa1, 0xec,
+	0xc8, 0xdb, 0x4b, 0x5a, 0xfa, 0x03, 0xed, 0xb7, 0x12, 0xbc, 0x04, 0xe0, 0x21, 0x58, 0x44, 0xfc,
+	0xbd, 0x24, 0xf5, 0x5e, 0x32, 0xc8, 0x31, 0xff, 0x90, 0x39, 0x96, 0xe3, 0x20, 0x4c, 0xba, 0x1e,
+	0xc6, 0x6d, 0xcf, 0x31, 0x2d, 0x67, 0x47, 0x94, 0xf2, 0xcb, 0xa9, 0xad, 0x3f, 0x15, 0xf0, 0x3f,
+	0x87, 0x66, 0xc1, 0x01, 0x2b, 0xee, 0xb1, 0x16, 0x8d, 0xe8, 0x80, 0x85, 0x7c, 0x8b, 0xf1, 0xe7,
+	0x20, 0x7c, 0x15, 0x94, 0xa5, 0xa7, 0x0c, 0x3c, 0xc7, 0xbf, 0xe9, 0x5d, 0x9a, 0xf8, 0x4f, 0x68,
+	0xc2, 0x2c, 0x73, 0xbd, 0x7a, 0xdc, 0x6b, 0x07, 0x52, 0xb0, 0xee, 0x8d, 0x7c, 0x9a, 0xb1, 0x79,
+	0x77, 0x24, 0xac, 0xfd, 0xcd, 0xf5, 0xc9, 0x37, 0xe4, 0xfa, 0xc6, 0x73, 0x2f, 0x58, 0xf8, 0x3a,
+	0x58, 0x9a, 0x6e, 0x25, 0x78, 0x61, 0x76, 0x4b, 0x89, 0x30, 0x17, 0xe7, 0x2f, 0xaf, 0xed, 0x37,
+	0xde, 0x7a, 0x6d, 0x10, 0x64, 0xfb, 0xe3, 0x47, 0xcd, 0x7e, 0x1c, 0x6e, 0xc6, 0x23, 0x16, 0xf5,
+	0xe3, 0xc4, 0xdf, 0x14, 0xf7, 0xd6, 0xad, 0x70, 0xda, 0x88, 0x5b, 0xfc, 0xdd, 0xf9, 0x98, 0xf6,
+	0xd9, 0xe6, 0xc1, 0x9d, 0xcd, 0x41, 0xbc, 0xe9, 0x87, 0xc1, 0xa3, 0x45, 0xfe, 0xfe, 0xbd, 0xf3,
+	0x57, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa4, 0xee, 0x26, 0xad, 0x4a, 0x0b, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
diff --git a/vendor/github.com/opencord/device-management-interface/go/dmi/sw_image.pb.go b/vendor/github.com/opencord/device-management-interface/go/dmi/sw_image.pb.go
index c62b587..5bdb543 100644
--- a/vendor/github.com/opencord/device-management-interface/go/dmi/sw_image.pb.go
+++ b/vendor/github.com/opencord/device-management-interface/go/dmi/sw_image.pb.go
@@ -69,12 +69,17 @@
 type ImageStatus_Reason int32
 
 const (
-	ImageStatus_UNDEFINED_REASON      ImageStatus_Reason = 0
-	ImageStatus_ERROR_IN_REQUEST      ImageStatus_Reason = 1
-	ImageStatus_INTERNAL_ERROR        ImageStatus_Reason = 2
-	ImageStatus_DEVICE_IN_WRONG_STATE ImageStatus_Reason = 3
-	ImageStatus_INVALID_IMAGE         ImageStatus_Reason = 4
-	ImageStatus_WRONG_IMAGE_CHECKSUM  ImageStatus_Reason = 5
+	ImageStatus_UNDEFINED_REASON              ImageStatus_Reason = 0
+	ImageStatus_ERROR_IN_REQUEST              ImageStatus_Reason = 1
+	ImageStatus_INTERNAL_ERROR                ImageStatus_Reason = 2
+	ImageStatus_DEVICE_IN_WRONG_STATE         ImageStatus_Reason = 3
+	ImageStatus_INVALID_IMAGE                 ImageStatus_Reason = 4
+	ImageStatus_WRONG_IMAGE_CHECKSUM          ImageStatus_Reason = 5
+	ImageStatus_OPERATION_ALREADY_IN_PROGRESS ImageStatus_Reason = 6
+	ImageStatus_UNKNOWN_DEVICE                ImageStatus_Reason = 7
+	// The DM implementations should have retry mechanisms (timeout values dependant on specific implementations)
+	// and even after those if the operation cannot be completed/reached then return error with reason as DEVICE_NOT_REACHABLE
+	ImageStatus_DEVICE_NOT_REACHABLE ImageStatus_Reason = 8
 )
 
 var ImageStatus_Reason_name = map[int32]string{
@@ -84,15 +89,21 @@
 	3: "DEVICE_IN_WRONG_STATE",
 	4: "INVALID_IMAGE",
 	5: "WRONG_IMAGE_CHECKSUM",
+	6: "OPERATION_ALREADY_IN_PROGRESS",
+	7: "UNKNOWN_DEVICE",
+	8: "DEVICE_NOT_REACHABLE",
 }
 
 var ImageStatus_Reason_value = map[string]int32{
-	"UNDEFINED_REASON":      0,
-	"ERROR_IN_REQUEST":      1,
-	"INTERNAL_ERROR":        2,
-	"DEVICE_IN_WRONG_STATE": 3,
-	"INVALID_IMAGE":         4,
-	"WRONG_IMAGE_CHECKSUM":  5,
+	"UNDEFINED_REASON":              0,
+	"ERROR_IN_REQUEST":              1,
+	"INTERNAL_ERROR":                2,
+	"DEVICE_IN_WRONG_STATE":         3,
+	"INVALID_IMAGE":                 4,
+	"WRONG_IMAGE_CHECKSUM":          5,
+	"OPERATION_ALREADY_IN_PROGRESS": 6,
+	"UNKNOWN_DEVICE":                7,
+	"DEVICE_NOT_REACHABLE":          8,
 }
 
 func (x ImageStatus_Reason) String() string {
@@ -225,6 +236,7 @@
 	State  ImageStatus_ImageState `protobuf:"varint,3,opt,name=state,proto3,enum=dmi.ImageStatus_ImageState" json:"state,omitempty"`
 	// description contains more information about the current state of the procedure and is device dependant
 	Description          string   `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
+	ReasonDetail         string   `protobuf:"bytes,5,opt,name=reason_detail,json=reasonDetail,proto3" json:"reason_detail,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -283,6 +295,13 @@
 	return ""
 }
 
+func (m *ImageStatus) GetReasonDetail() string {
+	if m != nil {
+		return m.ReasonDetail
+	}
+	return ""
+}
+
 func init() {
 	proto.RegisterEnum("dmi.ImageStatus_ImageState", ImageStatus_ImageState_name, ImageStatus_ImageState_value)
 	proto.RegisterEnum("dmi.ImageStatus_Reason", ImageStatus_Reason_name, ImageStatus_Reason_value)
@@ -294,41 +313,45 @@
 func init() { proto.RegisterFile("dmi/sw_image.proto", fileDescriptor_3d058607a829baf4) }
 
 var fileDescriptor_3d058607a829baf4 = []byte{
-	// 572 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x93, 0xcf, 0x6e, 0xd3, 0x4c,
-	0x14, 0xc5, 0xeb, 0xe6, 0x4f, 0xdb, 0x9b, 0xef, 0x0b, 0xce, 0xb4, 0x55, 0x03, 0x05, 0xa9, 0x0a,
-	0x0b, 0xd8, 0x34, 0x86, 0x54, 0x20, 0x21, 0x56, 0xae, 0x33, 0x0d, 0x23, 0x92, 0x71, 0x19, 0x3b,
-	0x41, 0xb0, 0xb1, 0x5c, 0x7b, 0x9a, 0x8e, 0x94, 0xb1, 0x2b, 0xdb, 0x29, 0xaf, 0xc1, 0x13, 0xb0,
-	0xe6, 0x71, 0x78, 0x24, 0x34, 0x33, 0x6e, 0x53, 0x89, 0xdd, 0xf8, 0x77, 0xce, 0xbd, 0xf7, 0xdc,
-	0x2b, 0x19, 0x50, 0x2a, 0x85, 0x53, 0xfe, 0x88, 0x84, 0x8c, 0x97, 0x7c, 0x78, 0x5b, 0xe4, 0x55,
-	0x8e, 0x1a, 0xa9, 0x14, 0xcf, 0x7a, 0x4a, 0x48, 0x72, 0x29, 0xf3, 0xac, 0x34, 0x7c, 0x30, 0x81,
-	0xff, 0x88, 0xb2, 0x2d, 0x78, 0x51, 0x8a, 0x3c, 0x43, 0x2f, 0x00, 0x74, 0x59, 0x94, 0xc5, 0x92,
-	0xf7, 0xad, 0x13, 0xeb, 0xf5, 0x1e, 0xdb, 0xd3, 0x84, 0xc6, 0x92, 0xa3, 0x3e, 0xec, 0xdc, 0x19,
-	0x67, 0x7f, 0x5b, 0x6b, 0xf7, 0x9f, 0x83, 0xdf, 0x16, 0xd8, 0xba, 0x13, 0xc9, 0xae, 0xf3, 0x42,
-	0xc6, 0x95, 0xea, 0xf6, 0x0a, 0x5a, 0xba, 0x56, 0x37, 0xea, 0x8c, 0x7a, 0xc3, 0x54, 0x8a, 0xe1,
-	0xe3, 0x79, 0xcc, 0xe8, 0xe8, 0x0d, 0x1c, 0x98, 0xb1, 0x22, 0x2b, 0xab, 0x78, 0xb5, 0x8a, 0xca,
-	0xa4, 0x10, 0xb7, 0x55, 0x3d, 0x04, 0x09, 0xd3, 0x58, 0x4b, 0x81, 0x56, 0xd0, 0x31, 0x98, 0x58,
-	0xd1, 0xba, 0x58, 0xf5, 0x1b, 0xda, 0xb6, 0xab, 0xc1, 0xbc, 0x58, 0xa1, 0xe7, 0xb0, 0x57, 0xde,
-	0xc4, 0xa3, 0x77, 0xef, 0xcb, 0xb5, 0xec, 0xb7, 0xcc, 0x12, 0x0f, 0x60, 0xf0, 0xab, 0x09, 0x1d,
-	0x1d, 0x22, 0xa8, 0xe2, 0x6a, 0x5d, 0xa2, 0x97, 0xd0, 0x2e, 0xf5, 0x4b, 0xc7, 0xec, 0x8e, 0x3a,
-	0x3a, 0xa6, 0x11, 0x59, 0x2d, 0x21, 0x07, 0xda, 0x05, 0x8f, 0xcb, 0x7a, 0xf1, 0xee, 0xe8, 0x68,
-	0xb3, 0x8b, 0x71, 0x0e, 0x99, 0x96, 0x59, 0x6d, 0x43, 0x6f, 0xa1, 0xa5, 0x4a, 0xb9, 0x0e, 0xd7,
-	0x1d, 0x1d, 0xff, 0xe3, 0x7f, 0x78, 0x73, 0x66, 0x9c, 0xe8, 0x04, 0x3a, 0x29, 0x37, 0x9b, 0xab,
-	0x0b, 0x37, 0x75, 0xf0, 0xc7, 0x68, 0xf0, 0xc7, 0x02, 0xd8, 0xd4, 0xa1, 0x7d, 0x78, 0x32, 0xa7,
-	0x63, 0x7c, 0x41, 0x28, 0x1e, 0x47, 0x41, 0xe8, 0x86, 0xd8, 0xde, 0x42, 0x3d, 0xf8, 0xdf, 0xf3,
-	0x2f, 0xbf, 0x11, 0x3a, 0x89, 0xc8, 0xcc, 0x9d, 0x60, 0xdb, 0x42, 0x07, 0x60, 0x13, 0x1a, 0x84,
-	0xee, 0x74, 0xba, 0xa1, 0xdb, 0x8a, 0x7a, 0xfe, 0x6c, 0x46, 0xc2, 0x70, 0x43, 0x1b, 0x8a, 0x32,
-	0x7c, 0xee, 0xfb, 0x1a, 0x8e, 0xf1, 0x82, 0x78, 0xd8, 0x6e, 0x2a, 0x3a, 0xbf, 0x9c, 0x30, 0x77,
-	0x8c, 0x23, 0xcf, 0x9f, 0x5d, 0x4e, 0x71, 0x88, 0xed, 0x16, 0x42, 0xd0, 0xbd, 0xa7, 0x17, 0x2e,
-	0x99, 0xe2, 0xb1, 0xdd, 0x46, 0x47, 0xb0, 0xef, 0x7a, 0x21, 0x59, 0xb8, 0x21, 0xf1, 0xe9, 0xc6,
-	0xbc, 0x83, 0x0e, 0xa1, 0xf7, 0x48, 0xa8, 0xfd, 0xbb, 0x83, 0x9f, 0x16, 0xb4, 0xcd, 0xe9, 0xf4,
-	0x90, 0x87, 0x75, 0x18, 0x76, 0x03, 0x9f, 0xda, 0x5b, 0x8a, 0x62, 0xc6, 0x7c, 0x16, 0x11, 0x1a,
-	0x31, 0xfc, 0x65, 0x8e, 0x83, 0xd0, 0xb6, 0xd4, 0x68, 0x42, 0x43, 0xcc, 0xa8, 0x3b, 0x8d, 0xb4,
-	0x6c, 0x6f, 0xa3, 0xa7, 0x70, 0x68, 0x02, 0x2b, 0xeb, 0x57, 0xe6, 0xd3, 0x49, 0x7d, 0x94, 0x86,
-	0x3a, 0x0a, 0xa1, 0x0b, 0x77, 0x4a, 0xc6, 0xf5, 0xa2, 0x4d, 0xd4, 0x87, 0x03, 0xe3, 0xd1, 0x20,
-	0xf2, 0x3e, 0x61, 0xef, 0x73, 0x30, 0x9f, 0xd9, 0xad, 0xf3, 0x8f, 0xdf, 0x3f, 0x2c, 0x45, 0x75,
-	0xb3, 0xbe, 0x1a, 0x26, 0xb9, 0x74, 0xf2, 0x5b, 0x9e, 0x25, 0x79, 0x91, 0x3a, 0x29, 0xbf, 0x13,
-	0x09, 0x3f, 0x95, 0x71, 0x16, 0x2f, 0xb9, 0xe4, 0x59, 0x75, 0x2a, 0xb2, 0x8a, 0x17, 0xd7, 0x71,
-	0xc2, 0x9d, 0xbb, 0x33, 0x67, 0x99, 0x3b, 0xa9, 0x14, 0x57, 0x6d, 0xfd, 0x63, 0x9d, 0xfd, 0x0d,
-	0x00, 0x00, 0xff, 0xff, 0x43, 0x5f, 0xa7, 0xa1, 0x86, 0x03, 0x00, 0x00,
+	// 636 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x93, 0x51, 0x4e, 0xdb, 0x4a,
+	0x14, 0x86, 0x09, 0x21, 0x01, 0x4e, 0x20, 0xd7, 0x19, 0x40, 0xe4, 0x5e, 0x2e, 0x12, 0x0d, 0x0f,
+	0xed, 0x0b, 0x71, 0x1b, 0xd4, 0x4a, 0x55, 0x9f, 0x8c, 0x3d, 0x84, 0x11, 0xce, 0x38, 0x1d, 0x3b,
+	0x41, 0xf4, 0xc5, 0x32, 0xf1, 0x10, 0x2c, 0x65, 0x6c, 0x64, 0x3b, 0x74, 0x23, 0x5d, 0x44, 0x97,
+	0xd3, 0x2d, 0x74, 0x27, 0xd5, 0xcc, 0x18, 0x82, 0xd4, 0x37, 0xe7, 0xfb, 0xff, 0x39, 0xe7, 0xff,
+	0x8f, 0x14, 0x40, 0xb1, 0x48, 0xcc, 0xe2, 0x7b, 0x98, 0x88, 0x68, 0xce, 0xfb, 0x8f, 0x79, 0x56,
+	0x66, 0xa8, 0x1e, 0x8b, 0xe4, 0xbf, 0x8e, 0x14, 0x66, 0x99, 0x10, 0x59, 0x5a, 0x68, 0xde, 0x1b,
+	0xc2, 0x0e, 0x91, 0xb6, 0x29, 0xcf, 0x8b, 0x24, 0x4b, 0xd1, 0x31, 0x80, 0x7a, 0x16, 0xa6, 0x91,
+	0xe0, 0xdd, 0xda, 0x49, 0xed, 0xdd, 0x36, 0xdb, 0x56, 0x84, 0x46, 0x82, 0xa3, 0x2e, 0x6c, 0x3e,
+	0x69, 0x67, 0x77, 0x5d, 0x69, 0xcf, 0x3f, 0x7b, 0x3f, 0x6b, 0x60, 0xa8, 0x49, 0x24, 0xbd, 0xcf,
+	0x72, 0x11, 0x95, 0x72, 0xda, 0x5b, 0x68, 0xa8, 0xb7, 0x6a, 0x50, 0x6b, 0xd0, 0xe9, 0xc7, 0x22,
+	0xe9, 0xbf, 0xde, 0xc7, 0xb4, 0x8e, 0xde, 0xc3, 0xbe, 0x5e, 0x9b, 0xa4, 0x45, 0x19, 0x2d, 0x16,
+	0x61, 0x31, 0xcb, 0x93, 0xc7, 0xb2, 0x5a, 0x82, 0x12, 0x3d, 0x58, 0x49, 0xbe, 0x52, 0xd0, 0x11,
+	0xe8, 0x58, 0xe1, 0x32, 0x5f, 0x74, 0xeb, 0xca, 0xb6, 0xa5, 0xc0, 0x24, 0x5f, 0xa0, 0xff, 0x61,
+	0xbb, 0x78, 0x88, 0x06, 0x1f, 0x3f, 0x15, 0x4b, 0xd1, 0x6d, 0xe8, 0x12, 0x2f, 0xa0, 0xf7, 0xa3,
+	0x01, 0x2d, 0x15, 0xc2, 0x2f, 0xa3, 0x72, 0x59, 0xa0, 0x53, 0x68, 0x16, 0xea, 0x4b, 0xc5, 0x6c,
+	0x0f, 0x5a, 0x2a, 0xa6, 0x16, 0x59, 0x25, 0x21, 0x13, 0x9a, 0x39, 0x8f, 0x8a, 0xaa, 0x78, 0x7b,
+	0x70, 0xb8, 0xea, 0xa2, 0x9d, 0x7d, 0xa6, 0x64, 0x56, 0xd9, 0xd0, 0x07, 0x68, 0xc8, 0xa7, 0x5c,
+	0x85, 0x6b, 0x0f, 0x8e, 0xfe, 0xf2, 0xbf, 0x7c, 0x73, 0xa6, 0x9d, 0xe8, 0x04, 0x5a, 0x31, 0xd7,
+	0xcd, 0xe5, 0x85, 0x37, 0x54, 0xf0, 0xd7, 0x08, 0x9d, 0xc2, 0xae, 0x1e, 0x1f, 0xc6, 0xbc, 0x8c,
+	0x92, 0x45, 0x55, 0x6e, 0x47, 0x43, 0x47, 0xb1, 0xde, 0xaf, 0x1a, 0xc0, 0x6a, 0x38, 0xda, 0x83,
+	0x7f, 0x26, 0xd4, 0xc1, 0x97, 0x84, 0x62, 0x27, 0xf4, 0x03, 0x2b, 0xc0, 0xc6, 0x1a, 0xea, 0xc0,
+	0xae, 0xed, 0x8d, 0x6f, 0x09, 0x1d, 0x86, 0x64, 0x64, 0x0d, 0xb1, 0x51, 0x43, 0xfb, 0x60, 0x10,
+	0xea, 0x07, 0x96, 0xeb, 0xae, 0xe8, 0xba, 0xa4, 0xb6, 0x37, 0x1a, 0x91, 0x20, 0x58, 0xd1, 0xba,
+	0xa4, 0x0c, 0x5f, 0x78, 0x9e, 0x82, 0x0e, 0x9e, 0x12, 0x1b, 0x1b, 0x1b, 0x92, 0x4e, 0xc6, 0x43,
+	0x66, 0x39, 0x38, 0xb4, 0xbd, 0xd1, 0xd8, 0xc5, 0x01, 0x36, 0x1a, 0x08, 0x41, 0xfb, 0x99, 0x5e,
+	0x5a, 0xc4, 0xc5, 0x8e, 0xd1, 0x44, 0x87, 0xb0, 0x67, 0xd9, 0x01, 0x99, 0x5a, 0x01, 0xf1, 0xe8,
+	0xca, 0xbc, 0x89, 0x0e, 0xa0, 0xf3, 0x4a, 0xa8, 0xfc, 0x5b, 0xbd, 0xdf, 0x35, 0x68, 0xea, 0xfb,
+	0xaa, 0x25, 0x2f, 0x75, 0x18, 0xb6, 0x7c, 0x8f, 0x1a, 0x6b, 0x92, 0x62, 0xc6, 0x3c, 0x16, 0x12,
+	0x1a, 0x32, 0xfc, 0x75, 0x82, 0xfd, 0xc0, 0xa8, 0xc9, 0xd5, 0x84, 0x06, 0x98, 0x51, 0xcb, 0x0d,
+	0x95, 0x6c, 0xac, 0xa3, 0x7f, 0xe1, 0x40, 0x07, 0x96, 0xd6, 0x1b, 0xe6, 0xd1, 0x61, 0x75, 0x94,
+	0xba, 0x3c, 0x0a, 0xa1, 0x53, 0xcb, 0x25, 0x4e, 0x55, 0x74, 0x03, 0x75, 0x61, 0x5f, 0x7b, 0x14,
+	0x08, 0xed, 0x2b, 0x6c, 0x5f, 0xfb, 0x93, 0x91, 0xd1, 0x40, 0x6f, 0xe0, 0xd8, 0x1b, 0x63, 0xa6,
+	0x83, 0x5a, 0x2e, 0xc3, 0x96, 0x73, 0x2b, 0x47, 0x8e, 0x99, 0x37, 0x64, 0xd8, 0xf7, 0x8d, 0xa6,
+	0x6a, 0x4e, 0xaf, 0xa9, 0x77, 0x43, 0x9f, 0x6f, 0xb4, 0x29, 0x07, 0x56, 0xeb, 0xa9, 0x17, 0xc8,
+	0xfc, 0xf6, 0x95, 0x75, 0xe1, 0x62, 0x63, 0xeb, 0xe2, 0xcb, 0xb7, 0xcf, 0xf3, 0xa4, 0x7c, 0x58,
+	0xde, 0xf5, 0x67, 0x99, 0x30, 0xb3, 0x47, 0x9e, 0xce, 0xb2, 0x3c, 0x36, 0x63, 0xfe, 0x94, 0xcc,
+	0xf8, 0x99, 0x88, 0xd2, 0x68, 0xce, 0x05, 0x4f, 0xcb, 0xb3, 0x24, 0x2d, 0x79, 0x7e, 0x1f, 0xcd,
+	0xb8, 0xf9, 0x74, 0x6e, 0xce, 0x33, 0x33, 0x16, 0xc9, 0x5d, 0x53, 0xfd, 0x9d, 0xcf, 0xff, 0x04,
+	0x00, 0x00, 0xff, 0xff, 0x2c, 0x3d, 0x59, 0x21, 0xfc, 0x03, 0x00, 0x00,
 }
diff --git a/vendor/github.com/opencord/device-management-interface/go/dmi/sw_management_service.pb.go b/vendor/github.com/opencord/device-management-interface/go/dmi/sw_management_service.pb.go
index c3c2718..7dbb089 100644
--- a/vendor/github.com/opencord/device-management-interface/go/dmi/sw_management_service.pb.go
+++ b/vendor/github.com/opencord/device-management-interface/go/dmi/sw_management_service.pb.go
@@ -22,6 +22,108 @@
 // proto package needs to be updated.
 const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
+type GetSoftwareVersionInformationResponse_Reason int32
+
+const (
+	GetSoftwareVersionInformationResponse_UNDEFINED_REASON   GetSoftwareVersionInformationResponse_Reason = 0
+	GetSoftwareVersionInformationResponse_UNKNOWN_DEVICE     GetSoftwareVersionInformationResponse_Reason = 1
+	GetSoftwareVersionInformationResponse_INTERNAL_ERROR     GetSoftwareVersionInformationResponse_Reason = 2
+	GetSoftwareVersionInformationResponse_DEVICE_UNREACHABLE GetSoftwareVersionInformationResponse_Reason = 3
+)
+
+var GetSoftwareVersionInformationResponse_Reason_name = map[int32]string{
+	0: "UNDEFINED_REASON",
+	1: "UNKNOWN_DEVICE",
+	2: "INTERNAL_ERROR",
+	3: "DEVICE_UNREACHABLE",
+}
+
+var GetSoftwareVersionInformationResponse_Reason_value = map[string]int32{
+	"UNDEFINED_REASON":   0,
+	"UNKNOWN_DEVICE":     1,
+	"INTERNAL_ERROR":     2,
+	"DEVICE_UNREACHABLE": 3,
+}
+
+func (x GetSoftwareVersionInformationResponse_Reason) String() string {
+	return proto.EnumName(GetSoftwareVersionInformationResponse_Reason_name, int32(x))
+}
+
+func (GetSoftwareVersionInformationResponse_Reason) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_000929e4bec891d7, []int{1, 0}
+}
+
+type ConfigResponse_Reason int32
+
+const (
+	ConfigResponse_UNDEFINED_REASON              ConfigResponse_Reason = 0
+	ConfigResponse_UNKNOWN_DEVICE                ConfigResponse_Reason = 1
+	ConfigResponse_INTERNAL_ERROR                ConfigResponse_Reason = 2
+	ConfigResponse_ERROR_FETCHING_CONFIG         ConfigResponse_Reason = 3
+	ConfigResponse_INVALID_CONFIG                ConfigResponse_Reason = 4
+	ConfigResponse_OPERATION_ALREADY_IN_PROGRESS ConfigResponse_Reason = 5
+	ConfigResponse_DEVICE_UNREACHABLE            ConfigResponse_Reason = 6
+)
+
+var ConfigResponse_Reason_name = map[int32]string{
+	0: "UNDEFINED_REASON",
+	1: "UNKNOWN_DEVICE",
+	2: "INTERNAL_ERROR",
+	3: "ERROR_FETCHING_CONFIG",
+	4: "INVALID_CONFIG",
+	5: "OPERATION_ALREADY_IN_PROGRESS",
+	6: "DEVICE_UNREACHABLE",
+}
+
+var ConfigResponse_Reason_value = map[string]int32{
+	"UNDEFINED_REASON":              0,
+	"UNKNOWN_DEVICE":                1,
+	"INTERNAL_ERROR":                2,
+	"ERROR_FETCHING_CONFIG":         3,
+	"INVALID_CONFIG":                4,
+	"OPERATION_ALREADY_IN_PROGRESS": 5,
+	"DEVICE_UNREACHABLE":            6,
+}
+
+func (x ConfigResponse_Reason) String() string {
+	return proto.EnumName(ConfigResponse_Reason_name, int32(x))
+}
+
+func (ConfigResponse_Reason) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_000929e4bec891d7, []int{4, 0}
+}
+
+type StartupConfigInfoResponse_Reason int32
+
+const (
+	StartupConfigInfoResponse_UNDEFINED_REASON   StartupConfigInfoResponse_Reason = 0
+	StartupConfigInfoResponse_UNKNOWN_DEVICE     StartupConfigInfoResponse_Reason = 1
+	StartupConfigInfoResponse_INTERNAL_ERROR     StartupConfigInfoResponse_Reason = 2
+	StartupConfigInfoResponse_DEVICE_UNREACHABLE StartupConfigInfoResponse_Reason = 3
+)
+
+var StartupConfigInfoResponse_Reason_name = map[int32]string{
+	0: "UNDEFINED_REASON",
+	1: "UNKNOWN_DEVICE",
+	2: "INTERNAL_ERROR",
+	3: "DEVICE_UNREACHABLE",
+}
+
+var StartupConfigInfoResponse_Reason_value = map[string]int32{
+	"UNDEFINED_REASON":   0,
+	"UNKNOWN_DEVICE":     1,
+	"INTERNAL_ERROR":     2,
+	"DEVICE_UNREACHABLE": 3,
+}
+
+func (x StartupConfigInfoResponse_Reason) String() string {
+	return proto.EnumName(StartupConfigInfoResponse_Reason_name, int32(x))
+}
+
+func (StartupConfigInfoResponse_Reason) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_000929e4bec891d7, []int{6, 0}
+}
+
 type SoftwareVersionInformation struct {
 	ActiveVersions       []*ImageVersion `protobuf:"bytes,1,rep,name=active_versions,json=activeVersions,proto3" json:"active_versions,omitempty"`
 	StandbyVersions      []*ImageVersion `protobuf:"bytes,2,rep,name=standby_versions,json=standbyVersions,proto3" json:"standby_versions,omitempty"`
@@ -70,12 +172,13 @@
 }
 
 type GetSoftwareVersionInformationResponse struct {
-	Status               Status                      `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
-	Reason               Reason                      `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.Reason" json:"reason,omitempty"`
-	Info                 *SoftwareVersionInformation `protobuf:"bytes,3,opt,name=info,proto3" json:"info,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                    `json:"-"`
-	XXX_unrecognized     []byte                      `json:"-"`
-	XXX_sizecache        int32                       `json:"-"`
+	Status               Status                                       `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
+	Reason               GetSoftwareVersionInformationResponse_Reason `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.GetSoftwareVersionInformationResponse_Reason" json:"reason,omitempty"`
+	Info                 *SoftwareVersionInformation                  `protobuf:"bytes,3,opt,name=info,proto3" json:"info,omitempty"`
+	ReasonDetail         string                                       `protobuf:"bytes,4,opt,name=reason_detail,json=reasonDetail,proto3" json:"reason_detail,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                     `json:"-"`
+	XXX_unrecognized     []byte                                       `json:"-"`
+	XXX_sizecache        int32                                        `json:"-"`
 }
 
 func (m *GetSoftwareVersionInformationResponse) Reset()         { *m = GetSoftwareVersionInformationResponse{} }
@@ -110,11 +213,11 @@
 	return Status_UNDEFINED_STATUS
 }
 
-func (m *GetSoftwareVersionInformationResponse) GetReason() Reason {
+func (m *GetSoftwareVersionInformationResponse) GetReason() GetSoftwareVersionInformationResponse_Reason {
 	if m != nil {
 		return m.Reason
 	}
-	return Reason_UNDEFINED_REASON
+	return GetSoftwareVersionInformationResponse_UNDEFINED_REASON
 }
 
 func (m *GetSoftwareVersionInformationResponse) GetInfo() *SoftwareVersionInformation {
@@ -124,6 +227,13 @@
 	return nil
 }
 
+func (m *GetSoftwareVersionInformationResponse) GetReasonDetail() string {
+	if m != nil {
+		return m.ReasonDetail
+	}
+	return ""
+}
+
 type DownloadImageRequest struct {
 	DeviceUuid           *Uuid             `protobuf:"bytes,1,opt,name=device_uuid,json=deviceUuid,proto3" json:"device_uuid,omitempty"`
 	ImageInfo            *ImageInformation `protobuf:"bytes,2,opt,name=image_info,json=imageInfo,proto3" json:"image_info,omitempty"`
@@ -222,11 +332,12 @@
 }
 
 type ConfigResponse struct {
-	Status               Status   `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
-	Reason               Reason   `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.Reason" json:"reason,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Status               Status                `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
+	Reason               ConfigResponse_Reason `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.ConfigResponse_Reason" json:"reason,omitempty"`
+	ReasonDetail         string                `protobuf:"bytes,3,opt,name=reason_detail,json=reasonDetail,proto3" json:"reason_detail,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
+	XXX_unrecognized     []byte                `json:"-"`
+	XXX_sizecache        int32                 `json:"-"`
 }
 
 func (m *ConfigResponse) Reset()         { *m = ConfigResponse{} }
@@ -261,58 +372,203 @@
 	return Status_UNDEFINED_STATUS
 }
 
-func (m *ConfigResponse) GetReason() Reason {
+func (m *ConfigResponse) GetReason() ConfigResponse_Reason {
 	if m != nil {
 		return m.Reason
 	}
-	return Reason_UNDEFINED_REASON
+	return ConfigResponse_UNDEFINED_REASON
+}
+
+func (m *ConfigResponse) GetReasonDetail() string {
+	if m != nil {
+		return m.ReasonDetail
+	}
+	return ""
+}
+
+type StartupConfigInfoRequest struct {
+	DeviceUuid           *Uuid    `protobuf:"bytes,1,opt,name=device_uuid,json=deviceUuid,proto3" json:"device_uuid,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *StartupConfigInfoRequest) Reset()         { *m = StartupConfigInfoRequest{} }
+func (m *StartupConfigInfoRequest) String() string { return proto.CompactTextString(m) }
+func (*StartupConfigInfoRequest) ProtoMessage()    {}
+func (*StartupConfigInfoRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_000929e4bec891d7, []int{5}
+}
+
+func (m *StartupConfigInfoRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StartupConfigInfoRequest.Unmarshal(m, b)
+}
+func (m *StartupConfigInfoRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StartupConfigInfoRequest.Marshal(b, m, deterministic)
+}
+func (m *StartupConfigInfoRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StartupConfigInfoRequest.Merge(m, src)
+}
+func (m *StartupConfigInfoRequest) XXX_Size() int {
+	return xxx_messageInfo_StartupConfigInfoRequest.Size(m)
+}
+func (m *StartupConfigInfoRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_StartupConfigInfoRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_StartupConfigInfoRequest proto.InternalMessageInfo
+
+func (m *StartupConfigInfoRequest) GetDeviceUuid() *Uuid {
+	if m != nil {
+		return m.DeviceUuid
+	}
+	return nil
+}
+
+type StartupConfigInfoResponse struct {
+	Status Status                           `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
+	Reason StartupConfigInfoResponse_Reason `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.StartupConfigInfoResponse_Reason" json:"reason,omitempty"`
+	// The config_url is an optional attribute, the device manager could return the location from
+	// where the config was downloaded. Also it would not be present/empty for a fresh device into which the
+	// startup config would have been installed in the factory.
+	ConfigUrl string `protobuf:"bytes,3,opt,name=config_url,json=configUrl,proto3" json:"config_url,omitempty"`
+	// The version of the startup configuration. It is recommended to use semVer, but the DM implementations
+	// and operators could choose any other format as well.
+	Version              string   `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"`
+	ReasonDetail         string   `protobuf:"bytes,5,opt,name=reason_detail,json=reasonDetail,proto3" json:"reason_detail,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *StartupConfigInfoResponse) Reset()         { *m = StartupConfigInfoResponse{} }
+func (m *StartupConfigInfoResponse) String() string { return proto.CompactTextString(m) }
+func (*StartupConfigInfoResponse) ProtoMessage()    {}
+func (*StartupConfigInfoResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_000929e4bec891d7, []int{6}
+}
+
+func (m *StartupConfigInfoResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StartupConfigInfoResponse.Unmarshal(m, b)
+}
+func (m *StartupConfigInfoResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StartupConfigInfoResponse.Marshal(b, m, deterministic)
+}
+func (m *StartupConfigInfoResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StartupConfigInfoResponse.Merge(m, src)
+}
+func (m *StartupConfigInfoResponse) XXX_Size() int {
+	return xxx_messageInfo_StartupConfigInfoResponse.Size(m)
+}
+func (m *StartupConfigInfoResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_StartupConfigInfoResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_StartupConfigInfoResponse proto.InternalMessageInfo
+
+func (m *StartupConfigInfoResponse) GetStatus() Status {
+	if m != nil {
+		return m.Status
+	}
+	return Status_UNDEFINED_STATUS
+}
+
+func (m *StartupConfigInfoResponse) GetReason() StartupConfigInfoResponse_Reason {
+	if m != nil {
+		return m.Reason
+	}
+	return StartupConfigInfoResponse_UNDEFINED_REASON
+}
+
+func (m *StartupConfigInfoResponse) GetConfigUrl() string {
+	if m != nil {
+		return m.ConfigUrl
+	}
+	return ""
+}
+
+func (m *StartupConfigInfoResponse) GetVersion() string {
+	if m != nil {
+		return m.Version
+	}
+	return ""
+}
+
+func (m *StartupConfigInfoResponse) GetReasonDetail() string {
+	if m != nil {
+		return m.ReasonDetail
+	}
+	return ""
 }
 
 func init() {
+	proto.RegisterEnum("dmi.GetSoftwareVersionInformationResponse_Reason", GetSoftwareVersionInformationResponse_Reason_name, GetSoftwareVersionInformationResponse_Reason_value)
+	proto.RegisterEnum("dmi.ConfigResponse_Reason", ConfigResponse_Reason_name, ConfigResponse_Reason_value)
+	proto.RegisterEnum("dmi.StartupConfigInfoResponse_Reason", StartupConfigInfoResponse_Reason_name, StartupConfigInfoResponse_Reason_value)
 	proto.RegisterType((*SoftwareVersionInformation)(nil), "dmi.SoftwareVersionInformation")
 	proto.RegisterType((*GetSoftwareVersionInformationResponse)(nil), "dmi.GetSoftwareVersionInformationResponse")
 	proto.RegisterType((*DownloadImageRequest)(nil), "dmi.DownloadImageRequest")
 	proto.RegisterType((*ConfigRequest)(nil), "dmi.ConfigRequest")
 	proto.RegisterType((*ConfigResponse)(nil), "dmi.ConfigResponse")
+	proto.RegisterType((*StartupConfigInfoRequest)(nil), "dmi.StartupConfigInfoRequest")
+	proto.RegisterType((*StartupConfigInfoResponse)(nil), "dmi.StartupConfigInfoResponse")
 }
 
 func init() { proto.RegisterFile("dmi/sw_management_service.proto", fileDescriptor_000929e4bec891d7) }
 
 var fileDescriptor_000929e4bec891d7 = []byte{
-	// 528 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0xd1, 0x8a, 0x13, 0x3d,
-	0x14, 0x66, 0xda, 0x9f, 0x85, 0x9e, 0xfe, 0x6d, 0x77, 0xe3, 0x0a, 0x75, 0x40, 0xba, 0x54, 0x84,
-	0xb2, 0xb0, 0x9d, 0xa5, 0xdd, 0x1b, 0x5d, 0x11, 0xd4, 0x85, 0xb5, 0x17, 0x0a, 0x4e, 0xad, 0x17,
-	0xbd, 0x19, 0xd2, 0x49, 0x3a, 0x1b, 0x68, 0x92, 0x31, 0xc9, 0x4c, 0xf5, 0x45, 0x7c, 0x04, 0x9f,
-	0xcf, 0x47, 0x90, 0x24, 0x53, 0xbb, 0x65, 0xb7, 0xa0, 0xe2, 0xdd, 0xe4, 0x3b, 0xe7, 0xfb, 0xce,
-	0xc9, 0x39, 0xdf, 0x04, 0x7a, 0x84, 0xb3, 0x48, 0xaf, 0x13, 0x8e, 0x05, 0xce, 0x28, 0xa7, 0xc2,
-	0x24, 0x9a, 0xaa, 0x92, 0xa5, 0x74, 0x98, 0x2b, 0x69, 0x24, 0xaa, 0x13, 0xce, 0xc2, 0x23, 0x9b,
-	0x95, 0x4a, 0xce, 0xa5, 0xd0, 0x1e, 0x0f, 0xff, 0xb7, 0xd0, 0xcd, 0xba, 0x3a, 0xa1, 0x4a, 0x86,
-	0x71, 0x9c, 0x55, 0xcc, 0xfe, 0xb7, 0x00, 0xc2, 0xa9, 0x5c, 0x9a, 0x35, 0x56, 0xf4, 0x13, 0x55,
-	0x9a, 0x49, 0x31, 0x11, 0x4b, 0xa9, 0x38, 0x36, 0x4c, 0x0a, 0xf4, 0x1c, 0x3a, 0x38, 0x35, 0xac,
-	0xa4, 0x49, 0xe9, 0x83, 0xba, 0x1b, 0x9c, 0xd4, 0x07, 0xcd, 0xd1, 0xd1, 0x90, 0x70, 0x36, 0x9c,
-	0x58, 0xa5, 0x8a, 0x16, 0xb7, 0x7d, 0x66, 0x75, 0xd4, 0xe8, 0x05, 0x1c, 0x6a, 0x83, 0x05, 0x59,
-	0x7c, 0xdd, 0x92, 0x6b, 0xfb, 0xc8, 0x9d, 0x2a, 0x75, 0xc3, 0xee, 0x7f, 0x0f, 0xe0, 0xe9, 0x35,
-	0x35, 0xfb, 0x7b, 0x8b, 0xa9, 0xce, 0xa5, 0xd0, 0x14, 0x3d, 0x81, 0x03, 0x6d, 0xb0, 0x29, 0x6c,
-	0x6b, 0xc1, 0xa0, 0x3d, 0x6a, 0x3a, 0xf5, 0xa9, 0x83, 0xe2, 0x2a, 0x64, 0x93, 0x14, 0xc5, 0x5a,
-	0x8a, 0x6e, 0xed, 0x56, 0x52, 0xec, 0xa0, 0xb8, 0x0a, 0xa1, 0x31, 0xfc, 0xc7, 0xc4, 0x52, 0x76,
-	0xeb, 0x27, 0xc1, 0xa0, 0x39, 0xea, 0x79, 0x9d, 0xfd, 0x0d, 0xb8, 0xe4, 0xfe, 0x17, 0x38, 0xbe,
-	0x92, 0x6b, 0xb1, 0x92, 0x98, 0xb8, 0x1b, 0xc5, 0xf4, 0x73, 0x41, 0xb5, 0x41, 0xa7, 0xd0, 0x24,
-	0xd4, 0xee, 0x28, 0x29, 0x0a, 0x46, 0x5c, 0x6f, 0xcd, 0x51, 0xc3, 0x69, 0xce, 0x0a, 0x46, 0x62,
-	0xf0, 0x51, 0xfb, 0x8d, 0x2e, 0x00, 0xdc, 0x52, 0x12, 0x57, 0xbe, 0xe6, 0x52, 0x1f, 0x6e, 0x87,
-	0x74, 0xbb, 0x68, 0x83, 0x6d, 0x90, 0xfe, 0x1c, 0x5a, 0x6f, 0xa4, 0x58, 0xb2, 0xec, 0x6f, 0x4a,
-	0x3e, 0x06, 0x48, 0x1d, 0x39, 0x29, 0xd4, 0xca, 0x95, 0x6c, 0xc4, 0x0d, 0x8f, 0xcc, 0xd4, 0xaa,
-	0x3f, 0x87, 0xf6, 0x46, 0xfb, 0x5f, 0x8f, 0x79, 0xf4, 0xa3, 0x06, 0xbd, 0xf7, 0xd8, 0x7a, 0x65,
-	0x33, 0xdc, 0x77, 0xbf, 0x8c, 0x3d, 0xf5, 0xbe, 0x46, 0x1f, 0x00, 0xdd, 0xdd, 0x3e, 0xea, 0x38,
-	0xb9, 0xb7, 0x58, 0x11, 0x8b, 0x4e, 0xae, 0xc2, 0x53, 0x07, 0xfc, 0x9e, 0x4f, 0x5e, 0x42, 0x6b,
-	0x67, 0x51, 0xe8, 0x91, 0x23, 0xdf, 0xb7, 0xbc, 0xf0, 0x70, 0x3b, 0x7c, 0x7f, 0xc3, 0xf3, 0x00,
-	0x5d, 0x40, 0xeb, 0x95, 0x75, 0x38, 0x36, 0xd4, 0xf3, 0xef, 0x74, 0x73, 0x1f, 0xeb, 0x12, 0x8e,
-	0x63, 0x5a, 0x52, 0x65, 0x3e, 0xca, 0xa9, 0xb7, 0xf8, 0x1f, 0x90, 0xaf, 0x21, 0x9c, 0xe5, 0x04,
-	0x1b, 0x8b, 0x28, 0x53, 0xe4, 0x7e, 0x25, 0x85, 0xf2, 0x3f, 0x27, 0x72, 0x8c, 0x1d, 0x0b, 0x84,
-	0x0f, 0x76, 0x30, 0x7f, 0xf3, 0xf3, 0xe0, 0xf5, 0xe5, 0xfc, 0x59, 0xc6, 0xcc, 0x4d, 0xb1, 0x18,
-	0xa6, 0x92, 0x47, 0x32, 0xa7, 0x22, 0x95, 0x8a, 0x44, 0xde, 0x0f, 0x67, 0xdb, 0x77, 0xe5, 0x8c,
-	0x09, 0x43, 0xd5, 0x12, 0xa7, 0x34, 0x2a, 0xc7, 0x51, 0x26, 0x23, 0xc2, 0xd9, 0xe2, 0xc0, 0x3d,
-	0x15, 0xe3, 0x9f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x9c, 0xd0, 0x0a, 0x81, 0x87, 0x04, 0x00, 0x00,
+	// 804 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0xed, 0x6e, 0xe3, 0x44,
+	0x14, 0xc5, 0x71, 0x37, 0x28, 0x37, 0xdb, 0xd6, 0x3b, 0x74, 0x51, 0x1a, 0x54, 0x5a, 0xbc, 0x5a,
+	0xa9, 0x5a, 0x69, 0x93, 0x25, 0xdd, 0x3f, 0xb0, 0x80, 0xe4, 0x8d, 0xdd, 0xd4, 0xa2, 0x38, 0xcb,
+	0xb8, 0x29, 0x62, 0x85, 0x18, 0x4d, 0xe3, 0x49, 0x76, 0xa4, 0xda, 0x13, 0xec, 0x71, 0x0a, 0x2f,
+	0xc2, 0x73, 0xf0, 0x02, 0xfc, 0xe0, 0x05, 0x90, 0x78, 0x23, 0xe4, 0x19, 0x87, 0x90, 0x2f, 0xb4,
+	0xad, 0xd0, 0xfe, 0xb3, 0xef, 0xdc, 0x73, 0x66, 0xe6, 0x9e, 0x7b, 0xcf, 0xc0, 0x61, 0x14, 0xf3,
+	0x76, 0x76, 0x43, 0x62, 0x9a, 0xd0, 0x31, 0x8b, 0x59, 0x22, 0x49, 0xc6, 0xd2, 0x29, 0x1f, 0xb2,
+	0xd6, 0x24, 0x15, 0x52, 0x20, 0x33, 0x8a, 0x79, 0xf3, 0x41, 0x91, 0x35, 0x14, 0x71, 0x2c, 0x92,
+	0x4c, 0xc7, 0x9b, 0xf7, 0x8b, 0xd0, 0x9b, 0x9b, 0xf2, 0x0f, 0x95, 0x34, 0x3c, 0xa6, 0xe3, 0x12,
+	0x69, 0xff, 0x6a, 0x40, 0x33, 0x14, 0x23, 0x79, 0x43, 0x53, 0x76, 0xc9, 0xd2, 0x8c, 0x8b, 0xc4,
+	0x4f, 0x46, 0x22, 0x8d, 0xa9, 0xe4, 0x22, 0x41, 0x9f, 0xc3, 0x2e, 0x1d, 0x4a, 0x3e, 0x65, 0x64,
+	0xaa, 0x17, 0xb3, 0x86, 0x71, 0x64, 0x1e, 0xd7, 0x3b, 0x0f, 0x5a, 0x51, 0xcc, 0x5b, 0x7e, 0xc1,
+	0x54, 0xc2, 0xf0, 0x8e, 0xce, 0x2c, 0x7f, 0x33, 0xf4, 0x05, 0x58, 0x99, 0xa4, 0x49, 0x74, 0xf5,
+	0xcb, 0x1c, 0x5c, 0xd9, 0x04, 0xde, 0x2d, 0x53, 0x67, 0x68, 0xfb, 0xaf, 0x0a, 0x3c, 0xee, 0x31,
+	0xb9, 0xf9, 0x6c, 0x98, 0x65, 0x13, 0x91, 0x64, 0x0c, 0x3d, 0x82, 0x6a, 0x26, 0xa9, 0xcc, 0x8b,
+	0xa3, 0x19, 0xc7, 0x3b, 0x9d, 0xba, 0x62, 0x0f, 0x55, 0x08, 0x97, 0x4b, 0xc8, 0x87, 0x6a, 0xca,
+	0x68, 0x26, 0x92, 0x46, 0x45, 0x25, 0x7d, 0xaa, 0x92, 0xde, 0x6a, 0x83, 0x16, 0x56, 0x40, 0x5c,
+	0x12, 0xa0, 0x13, 0xd8, 0xe2, 0xc9, 0x48, 0x34, 0xcc, 0x23, 0xe3, 0xb8, 0xde, 0x39, 0xd4, 0xbb,
+	0x6d, 0x66, 0x51, 0xc9, 0xe8, 0x11, 0x6c, 0x6b, 0x38, 0x89, 0x98, 0xa4, 0xfc, 0xba, 0xb1, 0x75,
+	0x64, 0x1c, 0xd7, 0xf0, 0x7d, 0x1d, 0x74, 0x55, 0xcc, 0xfe, 0x11, 0xaa, 0x7a, 0x2f, 0xb4, 0x07,
+	0xd6, 0x20, 0x70, 0xbd, 0x53, 0x3f, 0xf0, 0x5c, 0x82, 0x3d, 0x27, 0xec, 0x07, 0xd6, 0x7b, 0x08,
+	0xc1, 0xce, 0x20, 0xf8, 0x3a, 0xe8, 0x7f, 0x17, 0x10, 0xd7, 0xbb, 0xf4, 0xbb, 0x9e, 0x65, 0x14,
+	0x31, 0x3f, 0xb8, 0xf0, 0x70, 0xe0, 0x9c, 0x13, 0x0f, 0xe3, 0x3e, 0xb6, 0x2a, 0xe8, 0x43, 0x40,
+	0x7a, 0x9d, 0x0c, 0x02, 0xec, 0x39, 0xdd, 0x33, 0xe7, 0xe5, 0xb9, 0x67, 0x99, 0xf6, 0xcf, 0xb0,
+	0xe7, 0x8a, 0x9b, 0xe4, 0x5a, 0xd0, 0x48, 0x15, 0x1f, 0xb3, 0x9f, 0x72, 0x96, 0x49, 0xf4, 0x04,
+	0xea, 0x11, 0x2b, 0xda, 0x89, 0xe4, 0x39, 0x8f, 0x54, 0x19, 0xeb, 0x9d, 0x9a, 0xba, 0xd8, 0x20,
+	0xe7, 0x11, 0x06, 0xbd, 0x5a, 0x7c, 0xa3, 0xe7, 0x00, 0xaa, 0x7f, 0x88, 0xaa, 0x41, 0x45, 0xa5,
+	0x3e, 0x9c, 0xeb, 0xf9, 0xef, 0x9b, 0xd7, 0xf8, 0x2c, 0x62, 0xbf, 0x86, 0xed, 0xae, 0x48, 0x46,
+	0x7c, 0x7c, 0x97, 0x2d, 0x0f, 0x00, 0x86, 0x0a, 0x4c, 0xf2, 0xf4, 0x5a, 0x6d, 0x59, 0xc3, 0x35,
+	0x1d, 0x19, 0xa4, 0xd7, 0xf6, 0x1f, 0x15, 0xd8, 0x99, 0x91, 0xdf, 0xa6, 0x25, 0x3a, 0x4b, 0x2d,
+	0xd1, 0x54, 0x49, 0x8b, 0x4c, 0xcb, 0xda, 0xaf, 0xc8, 0x68, 0xae, 0x91, 0xf1, 0x37, 0xe3, 0x7f,
+	0xd2, 0x71, 0x1f, 0x1e, 0xaa, 0x4f, 0x72, 0xea, 0x5d, 0x74, 0xcf, 0xfc, 0xa0, 0x47, 0xba, 0xfd,
+	0xe0, 0xd4, 0xef, 0x59, 0xa6, 0x4e, 0xbf, 0x74, 0xce, 0x7d, 0x77, 0x16, 0xdb, 0x42, 0x9f, 0xc0,
+	0x41, 0xff, 0x95, 0x87, 0x9d, 0x0b, 0xbf, 0x1f, 0x10, 0xe7, 0x1c, 0x7b, 0x8e, 0xfb, 0x3d, 0xf1,
+	0x03, 0xf2, 0x0a, 0xf7, 0x7b, 0xd8, 0x0b, 0x43, 0xeb, 0xde, 0x86, 0xce, 0xa8, 0xda, 0xa7, 0xd0,
+	0x08, 0x25, 0x4d, 0x65, 0x3e, 0xd1, 0xf7, 0x2f, 0x44, 0xbb, 0x83, 0x54, 0xf6, 0xef, 0x15, 0xd8,
+	0x5f, 0x43, 0x74, 0x1b, 0x59, 0xbe, 0x5c, 0x92, 0xe5, 0xf1, 0x2c, 0x69, 0x3d, 0xe9, 0xb2, 0x42,
+	0x8b, 0xcd, 0x62, 0x2e, 0x35, 0x0b, 0x6a, 0xc0, 0xfb, 0xa5, 0x19, 0x95, 0x13, 0x38, 0xfb, 0x5d,
+	0x95, 0xf6, 0xde, 0xbb, 0x9f, 0xd0, 0xce, 0x9f, 0x26, 0x1c, 0x06, 0xb4, 0xb0, 0xd1, 0x99, 0xa3,
+	0x7c, 0xf3, 0x8f, 0xe7, 0x87, 0xda, 0xf2, 0xd1, 0xb7, 0x80, 0x56, 0x7d, 0x0b, 0xed, 0xaa, 0x32,
+	0x9d, 0xd1, 0x34, 0x2a, 0xa2, 0xbe, 0xdb, 0x7c, 0xf2, 0xf6, 0x0e, 0x87, 0xbe, 0x82, 0xed, 0x05,
+	0x63, 0x40, 0xfb, 0x0a, 0xbc, 0xce, 0x2c, 0x9a, 0xd6, 0x7c, 0xd8, 0xb5, 0x72, 0xcf, 0x0c, 0xf4,
+	0x1c, 0xb6, 0x9d, 0xc2, 0xfc, 0xa9, 0x64, 0x1a, 0xbf, 0x72, 0x9a, 0x75, 0xa8, 0x17, 0xb0, 0x87,
+	0xd9, 0x94, 0xa5, 0xf2, 0x42, 0x84, 0xda, 0xfd, 0x6f, 0x01, 0xee, 0x41, 0x73, 0x30, 0x89, 0xa8,
+	0x64, 0x0b, 0x9d, 0x91, 0xa7, 0xfa, 0xdd, 0x42, 0x0b, 0xb3, 0xac, 0x0f, 0xfe, 0xc1, 0x9a, 0xf9,
+	0x7e, 0x66, 0xa0, 0x1f, 0xe0, 0xa3, 0xa2, 0x48, 0x6b, 0x58, 0x8a, 0x4a, 0xa1, 0x83, 0x4d, 0xed,
+	0xa7, 0x49, 0x3f, 0xfe, 0xef, 0xee, 0x7c, 0xf9, 0xe2, 0xf5, 0x67, 0x63, 0x2e, 0xdf, 0xe4, 0x57,
+	0xad, 0xa1, 0x88, 0xdb, 0x62, 0xc2, 0x92, 0xa1, 0x48, 0xa3, 0xb6, 0x1e, 0x99, 0xa7, 0xf3, 0x07,
+	0xfd, 0x29, 0x4f, 0x24, 0x4b, 0x47, 0x74, 0xc8, 0xda, 0xd3, 0x93, 0xf6, 0x58, 0xb4, 0xa3, 0x98,
+	0x5f, 0x55, 0xd5, 0x1b, 0x7d, 0xf2, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0xdd, 0xa9, 0x07, 0xea,
+	0x00, 0x08, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -340,6 +596,8 @@
 	RevertToStandbyImage(ctx context.Context, in *HardwareID, opts ...grpc.CallOption) (NativeSoftwareManagementService_RevertToStandbyImageClient, error)
 	// This API can be used to let the devices pickup their properitary configuration which they need at startup.
 	UpdateStartupConfiguration(ctx context.Context, in *ConfigRequest, opts ...grpc.CallOption) (NativeSoftwareManagementService_UpdateStartupConfigurationClient, error)
+	// This API can be used to retrieve information about the current startup configuration that a device is using
+	GetStartupConfigurationInfo(ctx context.Context, in *StartupConfigInfoRequest, opts ...grpc.CallOption) (*StartupConfigInfoResponse, error)
 }
 
 type nativeSoftwareManagementServiceClient struct {
@@ -487,6 +745,15 @@
 	return m, nil
 }
 
+func (c *nativeSoftwareManagementServiceClient) GetStartupConfigurationInfo(ctx context.Context, in *StartupConfigInfoRequest, opts ...grpc.CallOption) (*StartupConfigInfoResponse, error) {
+	out := new(StartupConfigInfoResponse)
+	err := c.cc.Invoke(ctx, "/dmi.NativeSoftwareManagementService/GetStartupConfigurationInfo", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 // NativeSoftwareManagementServiceServer is the server API for NativeSoftwareManagementService service.
 type NativeSoftwareManagementServiceServer interface {
 	// Get the software version information of the Active and Standby images
@@ -502,6 +769,8 @@
 	RevertToStandbyImage(*HardwareID, NativeSoftwareManagementService_RevertToStandbyImageServer) error
 	// This API can be used to let the devices pickup their properitary configuration which they need at startup.
 	UpdateStartupConfiguration(*ConfigRequest, NativeSoftwareManagementService_UpdateStartupConfigurationServer) error
+	// This API can be used to retrieve information about the current startup configuration that a device is using
+	GetStartupConfigurationInfo(context.Context, *StartupConfigInfoRequest) (*StartupConfigInfoResponse, error)
 }
 
 func RegisterNativeSoftwareManagementServiceServer(s *grpc.Server, srv NativeSoftwareManagementServiceServer) {
@@ -610,6 +879,24 @@
 	return x.ServerStream.SendMsg(m)
 }
 
+func _NativeSoftwareManagementService_GetStartupConfigurationInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(StartupConfigInfoRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(NativeSoftwareManagementServiceServer).GetStartupConfigurationInfo(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/dmi.NativeSoftwareManagementService/GetStartupConfigurationInfo",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(NativeSoftwareManagementServiceServer).GetStartupConfigurationInfo(ctx, req.(*StartupConfigInfoRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 var _NativeSoftwareManagementService_serviceDesc = grpc.ServiceDesc{
 	ServiceName: "dmi.NativeSoftwareManagementService",
 	HandlerType: (*NativeSoftwareManagementServiceServer)(nil),
@@ -618,6 +905,10 @@
 			MethodName: "GetSoftwareVersion",
 			Handler:    _NativeSoftwareManagementService_GetSoftwareVersion_Handler,
 		},
+		{
+			MethodName: "GetStartupConfigurationInfo",
+			Handler:    _NativeSoftwareManagementService_GetStartupConfigurationInfo_Handler,
+		},
 	},
 	Streams: []grpc.StreamDesc{
 		{
