diff --git a/go/dmi/hw_management_service.pb.go b/go/dmi/hw_management_service.pb.go
index 4b023e9..b53e227 100644
--- a/go/dmi/hw_management_service.pb.go
+++ b/go/dmi/hw_management_service.pb.go
@@ -7,6 +7,7 @@
 	context "context"
 	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
+	empty "github.com/golang/protobuf/ptypes/empty"
 	grpc "google.golang.org/grpc"
 	math "math"
 )
@@ -477,6 +478,45 @@
 	return Reason_UNDEFINED_REASON
 }
 
+type ManagedDevicesResponse struct {
+	Devices              []*ModifiableComponent `protobuf:"bytes,1,rep,name=devices,proto3" json:"devices,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
+	XXX_unrecognized     []byte                 `json:"-"`
+	XXX_sizecache        int32                  `json:"-"`
+}
+
+func (m *ManagedDevicesResponse) Reset()         { *m = ManagedDevicesResponse{} }
+func (m *ManagedDevicesResponse) String() string { return proto.CompactTextString(m) }
+func (*ManagedDevicesResponse) ProtoMessage()    {}
+func (*ManagedDevicesResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_eae902e73066286d, []int{9}
+}
+
+func (m *ManagedDevicesResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ManagedDevicesResponse.Unmarshal(m, b)
+}
+func (m *ManagedDevicesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ManagedDevicesResponse.Marshal(b, m, deterministic)
+}
+func (m *ManagedDevicesResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ManagedDevicesResponse.Merge(m, src)
+}
+func (m *ManagedDevicesResponse) XXX_Size() int {
+	return xxx_messageInfo_ManagedDevicesResponse.Size(m)
+}
+func (m *ManagedDevicesResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_ManagedDevicesResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ManagedDevicesResponse proto.InternalMessageInfo
+
+func (m *ManagedDevicesResponse) GetDevices() []*ModifiableComponent {
+	if m != nil {
+		return m.Devices
+	}
+	return nil
+}
+
 func init() {
 	proto.RegisterType((*PhysicalInventoryRequest)(nil), "dmi.PhysicalInventoryRequest")
 	proto.RegisterType((*PhysicalInventoryResponse)(nil), "dmi.PhysicalInventoryResponse")
@@ -487,47 +527,52 @@
 	proto.RegisterType((*StartManagingDeviceResponse)(nil), "dmi.StartManagingDeviceResponse")
 	proto.RegisterType((*StopManagingDeviceRequest)(nil), "dmi.StopManagingDeviceRequest")
 	proto.RegisterType((*StopManagingDeviceResponse)(nil), "dmi.StopManagingDeviceResponse")
+	proto.RegisterType((*ManagedDevicesResponse)(nil), "dmi.ManagedDevicesResponse")
 }
 
 func init() { proto.RegisterFile("dmi/hw_management_service.proto", fileDescriptor_eae902e73066286d) }
 
 var fileDescriptor_eae902e73066286d = []byte{
-	// 547 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x55, 0xd1, 0x6e, 0xd3, 0x30,
-	0x14, 0x55, 0xd6, 0x69, 0xa8, 0x77, 0xac, 0x12, 0x86, 0x87, 0x34, 0x88, 0x6d, 0x0a, 0x42, 0x42,
-	0xc0, 0x9a, 0xa9, 0x7b, 0x42, 0xbc, 0x01, 0xa2, 0xdd, 0x43, 0x27, 0x94, 0x68, 0xaa, 0xc4, 0x4b,
-	0xe5, 0xc6, 0xb7, 0xad, 0xa5, 0xd9, 0x0e, 0xb1, 0xd3, 0x69, 0xbf, 0x01, 0x7c, 0x00, 0x9f, 0xc4,
-	0x03, 0x1f, 0x84, 0xe2, 0xa4, 0x69, 0xd5, 0x36, 0x80, 0xd0, 0x26, 0xf1, 0x96, 0xf8, 0x9e, 0x7b,
-	0x7c, 0xee, 0xb9, 0xf6, 0x35, 0x1c, 0x31, 0xc1, 0x83, 0xd9, 0xf5, 0x48, 0x50, 0x49, 0xa7, 0x28,
-	0x50, 0x9a, 0x91, 0xc6, 0x74, 0xce, 0x63, 0xec, 0x24, 0xa9, 0x32, 0x8a, 0x34, 0x98, 0xe0, 0xde,
-	0x83, 0x1c, 0x15, 0x2b, 0x21, 0x94, 0xd4, 0xc5, 0xba, 0x77, 0xbf, 0x48, 0x2c, 0xfe, 0xfc, 0x0f,
-	0xe0, 0x7e, 0x9c, 0xdd, 0x68, 0x1e, 0xd3, 0xab, 0x73, 0x39, 0x47, 0x69, 0x54, 0x7a, 0x13, 0xe2,
-	0xe7, 0x0c, 0xb5, 0x21, 0x2f, 0x60, 0x9f, 0x61, 0xce, 0x38, 0xca, 0x32, 0xce, 0x5c, 0xe7, 0xd8,
-	0x79, 0xbe, 0xdf, 0x6d, 0x76, 0x98, 0xe0, 0x9d, 0xcb, 0x8c, 0xb3, 0x10, 0x8a, 0x68, 0xfe, 0xed,
-	0x7f, 0x71, 0xa0, 0xbd, 0x85, 0x48, 0x27, 0x4a, 0x6a, 0x24, 0x4f, 0x61, 0x4f, 0x1b, 0x6a, 0x32,
-	0x6d, 0x49, 0x5a, 0xdd, 0x7d, 0x4b, 0x12, 0xd9, 0xa5, 0xb0, 0x0c, 0xe5, 0xa0, 0x14, 0xa9, 0x56,
-	0xd2, 0xdd, 0x59, 0x01, 0x85, 0x76, 0x29, 0x2c, 0x43, 0xe4, 0x25, 0x34, 0xf9, 0x82, 0xde, 0x6d,
-	0x58, 0x45, 0x07, 0x16, 0xd7, 0xa7, 0x29, 0xbb, 0xa6, 0x29, 0x86, 0xcb, 0xb8, 0xff, 0xdd, 0x81,
-	0x76, 0x7f, 0xf8, 0x4e, 0x89, 0x44, 0x49, 0x94, 0xe6, 0x5c, 0x4e, 0x54, 0x0f, 0xcd, 0x3f, 0x94,
-	0x47, 0x4e, 0xa1, 0x15, 0x2f, 0x68, 0x0a, 0xf8, 0xce, 0x3a, 0xfc, 0xa0, 0x02, 0xd8, 0x8c, 0x67,
-	0xab, 0x19, 0x92, 0x0a, 0xb4, 0x6a, 0x9b, 0x2b, 0xb0, 0x0b, 0x2a, 0xd0, 0xff, 0xe6, 0x80, 0xb7,
-	0x4d, 0xe2, 0xad, 0x1b, 0xf7, 0x0a, 0x9a, 0xd5, 0xce, 0xa5, 0x71, 0x2d, 0x8b, 0xab, 0xf6, 0x0e,
-	0x97, 0x00, 0xff, 0xe7, 0xa6, 0x73, 0xd1, 0xff, 0xe5, 0x1c, 0xe9, 0xc2, 0xbd, 0x78, 0x46, 0xe5,
-	0x14, 0xb5, 0xbb, 0x6b, 0x19, 0x5d, 0xcb, 0x38, 0x50, 0x8c, 0x4f, 0x38, 0x1d, 0x5f, 0xe1, 0xb2,
-	0xb0, 0x05, 0xd0, 0x9f, 0x6c, 0x98, 0x1d, 0xdd, 0x85, 0xd9, 0xfe, 0x57, 0x07, 0x1e, 0x47, 0x86,
-	0xa6, 0x66, 0x90, 0xdf, 0x4e, 0x2e, 0xa7, 0xef, 0xad, 0x21, 0x77, 0xd0, 0xd6, 0xb5, 0x56, 0x34,
-	0x7e, 0x77, 0x47, 0x03, 0x68, 0x47, 0x46, 0x25, 0xeb, 0x9a, 0x8a, 0x9e, 0x12, 0xd8, 0xb5, 0x5e,
-	0x3b, 0xd6, 0x6b, 0xfb, 0x9d, 0xdb, 0xb5, 0x2d, 0xe1, 0xb6, 0x8b, 0xe8, 0xfe, 0x68, 0x40, 0xfb,
-	0x82, 0x1a, 0x3e, 0xc7, 0xfe, 0x70, 0x50, 0xcd, 0xb3, 0xa8, 0x18, 0x67, 0x24, 0x82, 0x87, 0x5b,
-	0xbc, 0x24, 0xb5, 0xed, 0xf6, 0x8e, 0x17, 0x42, 0xea, 0xfc, 0x3f, 0x75, 0xc8, 0x25, 0x90, 0xcd,
-	0xd2, 0xc8, 0x61, 0x99, 0x59, 0x63, 0x92, 0x77, 0x54, 0x1b, 0x2f, 0x3d, 0x19, 0xc2, 0xa3, 0x1e,
-	0x9a, 0x8d, 0x41, 0x48, 0x9e, 0xd8, 0xc4, 0xba, 0x49, 0xeb, 0x1d, 0xd6, 0x85, 0x2b, 0xbd, 0x43,
-	0x20, 0x3d, 0x34, 0x6b, 0x87, 0xb7, 0xd4, 0x5b, 0x3b, 0xe2, 0x4a, 0xbd, 0xf5, 0xf3, 0xa5, 0x34,
-	0xe2, 0x2f, 0x89, 0xa3, 0x3f, 0x10, 0xaf, 0xdc, 0xa5, 0xb7, 0x6f, 0x3e, 0xbd, 0x9e, 0x72, 0x33,
-	0xcb, 0xc6, 0x9d, 0x58, 0x89, 0x40, 0x25, 0x28, 0x63, 0x95, 0xb2, 0xa0, 0x38, 0x8d, 0x27, 0xcb,
-	0x47, 0xeb, 0x84, 0x4b, 0x83, 0xe9, 0x84, 0xc6, 0x18, 0xcc, 0xcf, 0x82, 0xa9, 0x0a, 0x98, 0xe0,
-	0xe3, 0x3d, 0xfb, 0x36, 0x9d, 0xfd, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x3c, 0xdb, 0x2f, 0x23, 0xe4,
-	0x06, 0x00, 0x00,
+	// 612 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x55, 0x4f, 0x6b, 0xdb, 0x4e,
+	0x10, 0x45, 0x71, 0x48, 0xf0, 0xfa, 0x17, 0x43, 0xf6, 0x57, 0x82, 0x2c, 0xd3, 0x24, 0xa8, 0x14,
+	0x4a, 0xdb, 0x48, 0xc1, 0x39, 0x95, 0xde, 0xfa, 0xcf, 0x0e, 0xd4, 0xa1, 0x48, 0x04, 0x43, 0x2f,
+	0x66, 0x2d, 0x8d, 0xe5, 0x05, 0xef, 0xae, 0x2a, 0xad, 0x1c, 0xfc, 0x35, 0xda, 0x9e, 0x7a, 0xea,
+	0x87, 0xea, 0x07, 0x2a, 0xda, 0x95, 0x65, 0xd7, 0xb6, 0xd2, 0x52, 0x12, 0xe8, 0x4d, 0xda, 0x79,
+	0xf3, 0x66, 0xdf, 0x1b, 0xcd, 0x08, 0x9d, 0x84, 0x8c, 0xba, 0x93, 0x9b, 0x21, 0x23, 0x9c, 0x44,
+	0xc0, 0x80, 0xcb, 0x61, 0x0a, 0xc9, 0x8c, 0x06, 0xe0, 0xc4, 0x89, 0x90, 0x02, 0xd7, 0x42, 0x46,
+	0xad, 0xc3, 0x1c, 0x15, 0x08, 0xc6, 0x04, 0x4f, 0xf5, 0xb9, 0xf5, 0x9f, 0x4e, 0x2c, 0xde, 0xda,
+	0x91, 0x10, 0xd1, 0x14, 0x5c, 0xf5, 0x36, 0xca, 0xc6, 0x2e, 0xb0, 0x58, 0xce, 0x75, 0xd0, 0x7e,
+	0x87, 0xcc, 0x0f, 0x93, 0x79, 0x4a, 0x03, 0x32, 0xbd, 0xe4, 0x33, 0xe0, 0x52, 0x24, 0x73, 0x0f,
+	0x3e, 0x65, 0x90, 0x4a, 0xfc, 0x14, 0x35, 0x42, 0xc8, 0xcb, 0x0d, 0xb3, 0x8c, 0x86, 0xa6, 0x71,
+	0x6a, 0x3c, 0x69, 0x74, 0xea, 0x4e, 0xc8, 0xa8, 0x73, 0x9d, 0xd1, 0xd0, 0x43, 0x3a, 0x9a, 0x3f,
+	0xdb, 0x9f, 0x0d, 0xd4, 0xda, 0x42, 0x94, 0xc6, 0x82, 0xa7, 0x80, 0x1f, 0xa1, 0xbd, 0x54, 0x12,
+	0x99, 0xa5, 0x8a, 0xa4, 0xd9, 0x69, 0x28, 0x12, 0x5f, 0x1d, 0x79, 0x45, 0x28, 0x07, 0x25, 0x40,
+	0x52, 0xc1, 0xcd, 0x9d, 0x15, 0x90, 0xa7, 0x8e, 0xbc, 0x22, 0x84, 0x9f, 0xa1, 0x3a, 0x5d, 0xd0,
+	0x9b, 0x35, 0x75, 0xa3, 0x03, 0x85, 0xeb, 0x91, 0x24, 0xbc, 0x21, 0x09, 0x78, 0xcb, 0xb8, 0xfd,
+	0xdd, 0x40, 0xad, 0xde, 0xe0, 0xb5, 0x60, 0xb1, 0xe0, 0xc0, 0xe5, 0x25, 0x1f, 0x8b, 0x2e, 0xc8,
+	0xbf, 0x90, 0x87, 0xcf, 0x51, 0x33, 0x58, 0xd0, 0x68, 0xf8, 0xce, 0x3a, 0xfc, 0xa0, 0x04, 0xa8,
+	0x8c, 0xc7, 0xab, 0x19, 0x9c, 0x30, 0x50, 0xb7, 0xad, 0xaf, 0xc0, 0xae, 0x08, 0x03, 0xfb, 0xab,
+	0x81, 0xac, 0x6d, 0x57, 0xbc, 0x73, 0xe3, 0x9e, 0xa3, 0x7a, 0x59, 0xb9, 0x30, 0xae, 0xa9, 0x70,
+	0x65, 0x6d, 0x6f, 0x09, 0xb0, 0x7f, 0x6c, 0x3a, 0xe7, 0xff, 0x5b, 0xce, 0xe1, 0x0e, 0xda, 0x0f,
+	0x26, 0x84, 0x47, 0x90, 0x9a, 0xbb, 0x8a, 0xd1, 0x54, 0x8c, 0x7d, 0x11, 0xd2, 0x31, 0x25, 0xa3,
+	0x29, 0x2c, 0x85, 0x2d, 0x80, 0xf6, 0x78, 0xc3, 0x6c, 0xff, 0x3e, 0xcc, 0xb6, 0xbf, 0x18, 0xa8,
+	0xed, 0x4b, 0x92, 0xc8, 0x7e, 0x3e, 0xba, 0x94, 0x47, 0x6f, 0x94, 0x21, 0xf7, 0xd0, 0xd6, 0xb5,
+	0x56, 0xd4, 0x6e, 0x9b, 0x51, 0x17, 0xb5, 0x7c, 0x29, 0xe2, 0xf5, 0x3b, 0xe9, 0x9e, 0x62, 0xb4,
+	0xab, 0xbc, 0x36, 0x94, 0xd7, 0xea, 0x39, 0xb7, 0x6b, 0x5b, 0xc2, 0x9d, 0xdb, 0xf5, 0x1e, 0x1d,
+	0xa9, 0x1a, 0x10, 0xea, 0x12, 0x69, 0x59, 0xa3, 0x83, 0xf6, 0xb5, 0x80, 0xbc, 0x48, 0xed, 0xf6,
+	0x26, 0x17, 0xc0, 0xce, 0xb7, 0x5d, 0xd4, 0xba, 0x22, 0x92, 0xce, 0xa0, 0x37, 0xe8, 0x97, 0xab,
+	0xd3, 0xd7, 0x9b, 0x13, 0xfb, 0xe8, 0xff, 0x2d, 0x9d, 0xc1, 0x95, 0xbc, 0xd6, 0xe9, 0x42, 0x56,
+	0x55, 0x37, 0xcf, 0x0d, 0x7c, 0x8d, 0xf0, 0xa6, 0x51, 0xf8, 0xb8, 0xc8, 0xac, 0xb0, 0xdc, 0x3a,
+	0xa9, 0x8c, 0x17, 0xea, 0x7b, 0xe8, 0xb0, 0x0b, 0xf2, 0x57, 0x6b, 0xf0, 0x91, 0xa3, 0xf7, 0xb9,
+	0xb3, 0xd8, 0xe7, 0xce, 0xdb, 0x7c, 0x9f, 0x5b, 0x6d, 0xad, 0x60, 0xbb, 0x8f, 0x03, 0xf4, 0xa0,
+	0x0b, 0x72, 0x63, 0x41, 0xe3, 0x87, 0x2a, 0xa9, 0xea, 0x0f, 0x60, 0x1d, 0x57, 0x85, 0x4b, 0xe5,
+	0x03, 0x84, 0xbb, 0x20, 0xd7, 0x86, 0xaa, 0x50, 0x5e, 0xb9, 0x7a, 0x0b, 0xe5, 0xd5, 0x7b, 0xaf,
+	0xb0, 0xf4, 0x0f, 0x89, 0xfd, 0xdf, 0x10, 0xaf, 0xcc, 0xf8, 0xab, 0x97, 0x1f, 0x5f, 0x44, 0x54,
+	0x4e, 0xb2, 0x91, 0x13, 0x08, 0xe6, 0x8a, 0x18, 0x78, 0x20, 0x92, 0xd0, 0xd5, 0xdf, 0xce, 0xd9,
+	0xf2, 0x4f, 0x7b, 0x46, 0xb9, 0x84, 0x64, 0x4c, 0x02, 0x70, 0x67, 0x17, 0x6e, 0x24, 0xdc, 0x90,
+	0xd1, 0xd1, 0x9e, 0xb2, 0xfc, 0xe2, 0x67, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd6, 0x9d, 0xd6, 0xff,
+	0x99, 0x07, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -554,6 +599,8 @@
 	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
 	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)
 	// Get the HW inventory details of the Device
 	GetPhysicalInventory(ctx context.Context, in *PhysicalInventoryRequest, opts ...grpc.CallOption) (NativeHWManagementService_GetPhysicalInventoryClient, error)
 	// Get the details of a particular HW component
@@ -611,6 +658,15 @@
 	return out, nil
 }
 
+func (c *nativeHWManagementServiceClient) GetManagedDevices(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*ManagedDevicesResponse, error) {
+	out := new(ManagedDevicesResponse)
+	err := c.cc.Invoke(ctx, "/dmi.NativeHWManagementService/GetManagedDevices", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 func (c *nativeHWManagementServiceClient) GetPhysicalInventory(ctx context.Context, in *PhysicalInventoryRequest, opts ...grpc.CallOption) (NativeHWManagementService_GetPhysicalInventoryClient, error) {
 	stream, err := c.cc.NewStream(ctx, &_NativeHWManagementService_serviceDesc.Streams[1], "/dmi.NativeHWManagementService/GetPhysicalInventory", opts...)
 	if err != nil {
@@ -698,6 +754,8 @@
 	StartManagingDevice(*ModifiableComponent, NativeHWManagementService_StartManagingDeviceServer) error
 	// Stop management of a device and clean up any context and caches for that device
 	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)
 	// Get the HW inventory details of the Device
 	GetPhysicalInventory(*PhysicalInventoryRequest, NativeHWManagementService_GetPhysicalInventoryServer) error
 	// Get the details of a particular HW component
@@ -749,6 +807,24 @@
 	return interceptor(ctx, in, info, handler)
 }
 
+func _NativeHWManagementService_GetManagedDevices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(empty.Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(NativeHWManagementServiceServer).GetManagedDevices(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/dmi.NativeHWManagementService/GetManagedDevices",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(NativeHWManagementServiceServer).GetManagedDevices(ctx, req.(*empty.Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 func _NativeHWManagementService_GetPhysicalInventory_Handler(srv interface{}, stream grpc.ServerStream) error {
 	m := new(PhysicalInventoryRequest)
 	if err := stream.RecvMsg(m); err != nil {
@@ -818,6 +894,10 @@
 			Handler:    _NativeHWManagementService_StopManagingDevice_Handler,
 		},
 		{
+			MethodName: "GetManagedDevices",
+			Handler:    _NativeHWManagementService_GetManagedDevices_Handler,
+		},
+		{
 			MethodName: "SetHWComponentInfo",
 			Handler:    _NativeHWManagementService_SetHWComponentInfo_Handler,
 		},
