[VOL-5567] update protos

Change-Id: I2237e104062831286129ece7cae6621fd971ecb9
Signed-off-by: Abhay Kumar <abhay.kumar@radisys.com>
diff --git a/go/voltha/adapter.pb.go b/go/voltha/adapter.pb.go
index 04a40f2..e8ea3df 100644
--- a/go/voltha/adapter.pb.go
+++ b/go/voltha/adapter.pb.go
@@ -1,68 +1,75 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/adapter.proto
 
 package voltha
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	any "github.com/golang/protobuf/ptypes/any"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	anypb "google.golang.org/protobuf/types/known/anypb"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type AdapterConfig struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Custom (vendor-specific) configuration attributes
-	AdditionalConfig     *any.Any `protobuf:"bytes,64,opt,name=additional_config,json=additionalConfig,proto3" json:"additional_config,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	AdditionalConfig *anypb.Any `protobuf:"bytes,64,opt,name=additional_config,json=additionalConfig,proto3" json:"additional_config,omitempty"`
+	unknownFields    protoimpl.UnknownFields
+	sizeCache        protoimpl.SizeCache
 }
 
-func (m *AdapterConfig) Reset()         { *m = AdapterConfig{} }
-func (m *AdapterConfig) String() string { return proto.CompactTextString(m) }
-func (*AdapterConfig) ProtoMessage()    {}
+func (x *AdapterConfig) Reset() {
+	*x = AdapterConfig{}
+	mi := &file_voltha_protos_adapter_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AdapterConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AdapterConfig) ProtoMessage() {}
+
+func (x *AdapterConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_adapter_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AdapterConfig.ProtoReflect.Descriptor instead.
 func (*AdapterConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e998ce153307274, []int{0}
+	return file_voltha_protos_adapter_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *AdapterConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AdapterConfig.Unmarshal(m, b)
-}
-func (m *AdapterConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AdapterConfig.Marshal(b, m, deterministic)
-}
-func (m *AdapterConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AdapterConfig.Merge(m, src)
-}
-func (m *AdapterConfig) XXX_Size() int {
-	return xxx_messageInfo_AdapterConfig.Size(m)
-}
-func (m *AdapterConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_AdapterConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AdapterConfig proto.InternalMessageInfo
-
-func (m *AdapterConfig) GetAdditionalConfig() *any.Any {
-	if m != nil {
-		return m.AdditionalConfig
+func (x *AdapterConfig) GetAdditionalConfig() *anypb.Any {
+	if x != nil {
+		return x.AdditionalConfig
 	}
 	return nil
 }
 
 // Adapter (software plugin)
 type Adapter struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// the adapter ID has to be unique,
 	// it will be generated as Type + CurrentReplica
 	Id      string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
@@ -71,8 +78,8 @@
 	// Adapter configuration
 	Config *AdapterConfig `protobuf:"bytes,16,opt,name=config,proto3" json:"config,omitempty"`
 	// Custom descriptors and custom configuration
-	AdditionalDescription *any.Any `protobuf:"bytes,64,opt,name=additional_description,json=additionalDescription,proto3" json:"additional_description,omitempty"`
-	LogicalDeviceIds      []string `protobuf:"bytes,4,rep,name=logical_device_ids,json=logicalDeviceIds,proto3" json:"logical_device_ids,omitempty"`
+	AdditionalDescription *anypb.Any `protobuf:"bytes,64,opt,name=additional_description,json=additionalDescription,proto3" json:"additional_description,omitempty"`
+	LogicalDeviceIds      []string   `protobuf:"bytes,4,rep,name=logical_device_ids,json=logicalDeviceIds,proto3" json:"logical_device_ids,omitempty"` // Logical devices "owned"
 	// timestamp when the adapter last sent a message to the core
 	LastCommunication int64  `protobuf:"varint,5,opt,name=last_communication,json=lastCommunication,proto3" json:"last_communication,omitempty"`
 	CurrentReplica    int32  `protobuf:"varint,6,opt,name=currentReplica,proto3" json:"currentReplica,omitempty"`
@@ -80,187 +87,236 @@
 	Endpoint          string `protobuf:"bytes,8,opt,name=endpoint,proto3" json:"endpoint,omitempty"`
 	// all replicas of the same adapter will have the same type
 	// it is used to associate a device to an adapter
-	Type                 string   `protobuf:"bytes,9,opt,name=type,proto3" json:"type,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Type          string `protobuf:"bytes,9,opt,name=type,proto3" json:"type,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *Adapter) Reset()         { *m = Adapter{} }
-func (m *Adapter) String() string { return proto.CompactTextString(m) }
-func (*Adapter) ProtoMessage()    {}
+func (x *Adapter) Reset() {
+	*x = Adapter{}
+	mi := &file_voltha_protos_adapter_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Adapter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Adapter) ProtoMessage() {}
+
+func (x *Adapter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_adapter_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Adapter.ProtoReflect.Descriptor instead.
 func (*Adapter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e998ce153307274, []int{1}
+	return file_voltha_protos_adapter_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *Adapter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Adapter.Unmarshal(m, b)
-}
-func (m *Adapter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Adapter.Marshal(b, m, deterministic)
-}
-func (m *Adapter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Adapter.Merge(m, src)
-}
-func (m *Adapter) XXX_Size() int {
-	return xxx_messageInfo_Adapter.Size(m)
-}
-func (m *Adapter) XXX_DiscardUnknown() {
-	xxx_messageInfo_Adapter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Adapter proto.InternalMessageInfo
-
-func (m *Adapter) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *Adapter) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *Adapter) GetVendor() string {
-	if m != nil {
-		return m.Vendor
+func (x *Adapter) GetVendor() string {
+	if x != nil {
+		return x.Vendor
 	}
 	return ""
 }
 
-func (m *Adapter) GetVersion() string {
-	if m != nil {
-		return m.Version
+func (x *Adapter) GetVersion() string {
+	if x != nil {
+		return x.Version
 	}
 	return ""
 }
 
-func (m *Adapter) GetConfig() *AdapterConfig {
-	if m != nil {
-		return m.Config
+func (x *Adapter) GetConfig() *AdapterConfig {
+	if x != nil {
+		return x.Config
 	}
 	return nil
 }
 
-func (m *Adapter) GetAdditionalDescription() *any.Any {
-	if m != nil {
-		return m.AdditionalDescription
+func (x *Adapter) GetAdditionalDescription() *anypb.Any {
+	if x != nil {
+		return x.AdditionalDescription
 	}
 	return nil
 }
 
-func (m *Adapter) GetLogicalDeviceIds() []string {
-	if m != nil {
-		return m.LogicalDeviceIds
+func (x *Adapter) GetLogicalDeviceIds() []string {
+	if x != nil {
+		return x.LogicalDeviceIds
 	}
 	return nil
 }
 
-func (m *Adapter) GetLastCommunication() int64 {
-	if m != nil {
-		return m.LastCommunication
+func (x *Adapter) GetLastCommunication() int64 {
+	if x != nil {
+		return x.LastCommunication
 	}
 	return 0
 }
 
-func (m *Adapter) GetCurrentReplica() int32 {
-	if m != nil {
-		return m.CurrentReplica
+func (x *Adapter) GetCurrentReplica() int32 {
+	if x != nil {
+		return x.CurrentReplica
 	}
 	return 0
 }
 
-func (m *Adapter) GetTotalReplicas() int32 {
-	if m != nil {
-		return m.TotalReplicas
+func (x *Adapter) GetTotalReplicas() int32 {
+	if x != nil {
+		return x.TotalReplicas
 	}
 	return 0
 }
 
-func (m *Adapter) GetEndpoint() string {
-	if m != nil {
-		return m.Endpoint
+func (x *Adapter) GetEndpoint() string {
+	if x != nil {
+		return x.Endpoint
 	}
 	return ""
 }
 
-func (m *Adapter) GetType() string {
-	if m != nil {
-		return m.Type
+func (x *Adapter) GetType() string {
+	if x != nil {
+		return x.Type
 	}
 	return ""
 }
 
 type Adapters struct {
-	Items                []*Adapter `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
-	XXX_unrecognized     []byte     `json:"-"`
-	XXX_sizecache        int32      `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*Adapter             `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *Adapters) Reset()         { *m = Adapters{} }
-func (m *Adapters) String() string { return proto.CompactTextString(m) }
-func (*Adapters) ProtoMessage()    {}
+func (x *Adapters) Reset() {
+	*x = Adapters{}
+	mi := &file_voltha_protos_adapter_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Adapters) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Adapters) ProtoMessage() {}
+
+func (x *Adapters) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_adapter_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Adapters.ProtoReflect.Descriptor instead.
 func (*Adapters) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e998ce153307274, []int{2}
+	return file_voltha_protos_adapter_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *Adapters) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Adapters.Unmarshal(m, b)
-}
-func (m *Adapters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Adapters.Marshal(b, m, deterministic)
-}
-func (m *Adapters) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Adapters.Merge(m, src)
-}
-func (m *Adapters) XXX_Size() int {
-	return xxx_messageInfo_Adapters.Size(m)
-}
-func (m *Adapters) XXX_DiscardUnknown() {
-	xxx_messageInfo_Adapters.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Adapters proto.InternalMessageInfo
-
-func (m *Adapters) GetItems() []*Adapter {
-	if m != nil {
-		return m.Items
+func (x *Adapters) GetItems() []*Adapter {
+	if x != nil {
+		return x.Items
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterType((*AdapterConfig)(nil), "adapter.AdapterConfig")
-	proto.RegisterType((*Adapter)(nil), "adapter.Adapter")
-	proto.RegisterType((*Adapters)(nil), "adapter.Adapters")
+var File_voltha_protos_adapter_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_adapter_proto_rawDesc = "" +
+	"\n" +
+	"\x1bvoltha_protos/adapter.proto\x12\aadapter\x1a\x19google/protobuf/any.proto\"R\n" +
+	"\rAdapterConfig\x12A\n" +
+	"\x11additional_config\x18@ \x01(\v2\x14.google.protobuf.AnyR\x10additionalConfig\"\xa3\x03\n" +
+	"\aAdapter\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n" +
+	"\x06vendor\x18\x02 \x01(\tR\x06vendor\x12\x18\n" +
+	"\aversion\x18\x03 \x01(\tR\aversion\x12.\n" +
+	"\x06config\x18\x10 \x01(\v2\x16.adapter.AdapterConfigR\x06config\x12K\n" +
+	"\x16additional_description\x18@ \x01(\v2\x14.google.protobuf.AnyR\x15additionalDescription\x12,\n" +
+	"\x12logical_device_ids\x18\x04 \x03(\tR\x10logicalDeviceIds\x12-\n" +
+	"\x12last_communication\x18\x05 \x01(\x03R\x11lastCommunication\x12&\n" +
+	"\x0ecurrentReplica\x18\x06 \x01(\x05R\x0ecurrentReplica\x12$\n" +
+	"\rtotalReplicas\x18\a \x01(\x05R\rtotalReplicas\x12\x1a\n" +
+	"\bendpoint\x18\b \x01(\tR\bendpoint\x12\x12\n" +
+	"\x04type\x18\t \x01(\tR\x04type\"2\n" +
+	"\bAdapters\x12&\n" +
+	"\x05items\x18\x01 \x03(\v2\x10.adapter.AdapterR\x05itemsB\\\n" +
+	"\x1borg.opencord.voltha.adapterB\rVolthaAdapterZ.github.com/opencord/voltha-protos/v5/go/volthab\x06proto3"
+
+var (
+	file_voltha_protos_adapter_proto_rawDescOnce sync.Once
+	file_voltha_protos_adapter_proto_rawDescData []byte
+)
+
+func file_voltha_protos_adapter_proto_rawDescGZIP() []byte {
+	file_voltha_protos_adapter_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_adapter_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_adapter_proto_rawDesc), len(file_voltha_protos_adapter_proto_rawDesc)))
+	})
+	return file_voltha_protos_adapter_proto_rawDescData
 }
 
-func init() { proto.RegisterFile("voltha_protos/adapter.proto", fileDescriptor_7e998ce153307274) }
+var file_voltha_protos_adapter_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
+var file_voltha_protos_adapter_proto_goTypes = []any{
+	(*AdapterConfig)(nil), // 0: adapter.AdapterConfig
+	(*Adapter)(nil),       // 1: adapter.Adapter
+	(*Adapters)(nil),      // 2: adapter.Adapters
+	(*anypb.Any)(nil),     // 3: google.protobuf.Any
+}
+var file_voltha_protos_adapter_proto_depIdxs = []int32{
+	3, // 0: adapter.AdapterConfig.additional_config:type_name -> google.protobuf.Any
+	0, // 1: adapter.Adapter.config:type_name -> adapter.AdapterConfig
+	3, // 2: adapter.Adapter.additional_description:type_name -> google.protobuf.Any
+	1, // 3: adapter.Adapters.items:type_name -> adapter.Adapter
+	4, // [4:4] is the sub-list for method output_type
+	4, // [4:4] is the sub-list for method input_type
+	4, // [4:4] is the sub-list for extension type_name
+	4, // [4:4] is the sub-list for extension extendee
+	0, // [0:4] is the sub-list for field type_name
+}
 
-var fileDescriptor_7e998ce153307274 = []byte{
-	// 413 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x52, 0x4f, 0x6b, 0xdb, 0x30,
-	0x14, 0xc7, 0x49, 0xf3, 0xef, 0x95, 0x94, 0x54, 0x6c, 0x41, 0x6b, 0x2f, 0x26, 0x8c, 0xe2, 0xc3,
-	0x2a, 0x43, 0xc6, 0xee, 0x4b, 0xdb, 0xcb, 0xd8, 0x4d, 0x87, 0x1d, 0xc6, 0x20, 0x28, 0x92, 0xea,
-	0x0a, 0x1c, 0x3d, 0x23, 0x29, 0x86, 0x7c, 0x9e, 0x7d, 0xd1, 0x51, 0x59, 0x5e, 0xda, 0x1e, 0x7a,
-	0xf3, 0xef, 0xaf, 0xdf, 0x7b, 0x08, 0xae, 0x5b, 0xac, 0xc3, 0x93, 0xd8, 0x36, 0x0e, 0x03, 0xfa,
-	0x52, 0x28, 0xd1, 0x04, 0xed, 0x58, 0x84, 0x64, 0x92, 0xe0, 0xd5, 0xa7, 0x0a, 0xb1, 0xaa, 0x75,
-	0x19, 0xe9, 0xdd, 0xe1, 0xb1, 0x14, 0xf6, 0xd8, 0x79, 0x56, 0x1c, 0xe6, 0x9b, 0xce, 0x75, 0x8f,
-	0xf6, 0xd1, 0x54, 0x64, 0x03, 0x97, 0x42, 0x29, 0x13, 0x0c, 0x5a, 0x51, 0x6f, 0x65, 0x24, 0xe9,
-	0xf7, 0x3c, 0x2b, 0xce, 0xd7, 0x1f, 0x58, 0xd7, 0xc3, 0xfa, 0x1e, 0xb6, 0xb1, 0x47, 0xbe, 0x38,
-	0xd9, 0xbb, 0x8a, 0xd5, 0xdf, 0x21, 0x4c, 0x52, 0x29, 0xb9, 0x80, 0x81, 0x51, 0x34, 0xcb, 0xb3,
-	0x62, 0xc6, 0x07, 0x46, 0x91, 0x25, 0x8c, 0x5b, 0x6d, 0x15, 0x3a, 0x3a, 0x88, 0x5c, 0x42, 0x84,
-	0xc2, 0xa4, 0xd5, 0xce, 0x1b, 0xb4, 0x74, 0x18, 0x85, 0x1e, 0x12, 0x06, 0xe3, 0x34, 0xc5, 0x22,
-	0x4e, 0xb1, 0x64, 0xfd, 0x96, 0xaf, 0x06, 0xe7, 0xc9, 0x45, 0x7e, 0xc2, 0xf2, 0xc5, 0x02, 0x4a,
-	0x7b, 0xe9, 0x4c, 0xf3, 0x8c, 0xde, 0xdd, 0xe2, 0xe3, 0x29, 0xf3, 0x70, 0x8a, 0x90, 0x2f, 0x40,
-	0x6a, 0xac, 0x8c, 0x8c, 0x4d, 0xad, 0x91, 0x7a, 0x6b, 0x94, 0xa7, 0x67, 0xf9, 0xb0, 0x98, 0xf1,
-	0x45, 0x52, 0x1e, 0xa2, 0xf0, 0x43, 0x79, 0x72, 0x0b, 0xa4, 0x16, 0x3e, 0x6c, 0x25, 0xee, 0xf7,
-	0x07, 0x6b, 0xa4, 0x88, 0xbf, 0x1d, 0xe5, 0x59, 0x31, 0xe4, 0x97, 0xcf, 0xca, 0xfd, 0x4b, 0x81,
-	0xdc, 0xc0, 0x85, 0x3c, 0x38, 0xa7, 0x6d, 0xe0, 0xba, 0xa9, 0x8d, 0x14, 0x74, 0x9c, 0x67, 0xc5,
-	0x88, 0xbf, 0x61, 0xc9, 0x67, 0x98, 0x07, 0x0c, 0xa2, 0x4e, 0xd8, 0xd3, 0x49, 0xb4, 0xbd, 0x26,
-	0xc9, 0x15, 0x4c, 0xb5, 0x55, 0x0d, 0x1a, 0x1b, 0xe8, 0x34, 0x9e, 0xf0, 0x3f, 0x26, 0x04, 0xce,
-	0xc2, 0xb1, 0xd1, 0x74, 0x16, 0xf9, 0xf8, 0xbd, 0x5a, 0xc3, 0x34, 0x1d, 0xd0, 0x93, 0x1b, 0x18,
-	0x99, 0xa0, 0xf7, 0x9e, 0x66, 0xf9, 0xb0, 0x38, 0x5f, 0x2f, 0xde, 0x9e, 0x98, 0x77, 0xf2, 0xdd,
-	0x1f, 0xb8, 0x46, 0x57, 0x31, 0x6c, 0xb4, 0x95, 0xe8, 0x14, 0xeb, 0x5e, 0x5f, 0xef, 0xbe, 0x9b,
-	0xff, 0x8a, 0x38, 0x85, 0x7e, 0xb3, 0xca, 0x84, 0xa7, 0xc3, 0x8e, 0x49, 0xdc, 0x97, 0x7d, 0xa4,
-	0xec, 0x22, 0xb7, 0xe9, 0xc1, 0xb6, 0xdf, 0xca, 0x0a, 0x13, 0xb7, 0x1b, 0x47, 0xf2, 0xeb, 0xbf,
-	0x00, 0x00, 0x00, 0xff, 0xff, 0x41, 0x02, 0xed, 0xf9, 0xd5, 0x02, 0x00, 0x00,
+func init() { file_voltha_protos_adapter_proto_init() }
+func file_voltha_protos_adapter_proto_init() {
+	if File_voltha_protos_adapter_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_adapter_proto_rawDesc), len(file_voltha_protos_adapter_proto_rawDesc)),
+			NumEnums:      0,
+			NumMessages:   3,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_adapter_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_adapter_proto_depIdxs,
+		MessageInfos:      file_voltha_protos_adapter_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_adapter_proto = out.File
+	file_voltha_protos_adapter_proto_goTypes = nil
+	file_voltha_protos_adapter_proto_depIdxs = nil
 }
diff --git a/go/voltha/device.pb.go b/go/voltha/device.pb.go
index 81c3b36..5e46934 100644
--- a/go/voltha/device.pb.go
+++ b/go/voltha/device.pb.go
@@ -1,27 +1,28 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/device.proto
 
 package voltha
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	any "github.com/golang/protobuf/ptypes/any"
 	common "github.com/opencord/voltha-protos/v5/go/common"
 	openflow_13 "github.com/opencord/voltha-protos/v5/go/openflow_13"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	anypb "google.golang.org/protobuf/types/known/anypb"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type PmConfig_PmType int32
 
@@ -32,26 +33,47 @@
 	PmConfig_CONTEXT PmConfig_PmType = 3
 )
 
-var PmConfig_PmType_name = map[int32]string{
-	0: "COUNTER",
-	1: "GAUGE",
-	2: "STATE",
-	3: "CONTEXT",
-}
+// Enum value maps for PmConfig_PmType.
+var (
+	PmConfig_PmType_name = map[int32]string{
+		0: "COUNTER",
+		1: "GAUGE",
+		2: "STATE",
+		3: "CONTEXT",
+	}
+	PmConfig_PmType_value = map[string]int32{
+		"COUNTER": 0,
+		"GAUGE":   1,
+		"STATE":   2,
+		"CONTEXT": 3,
+	}
+)
 
-var PmConfig_PmType_value = map[string]int32{
-	"COUNTER": 0,
-	"GAUGE":   1,
-	"STATE":   2,
-	"CONTEXT": 3,
+func (x PmConfig_PmType) Enum() *PmConfig_PmType {
+	p := new(PmConfig_PmType)
+	*p = x
+	return p
 }
 
 func (x PmConfig_PmType) String() string {
-	return proto.EnumName(PmConfig_PmType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (PmConfig_PmType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[0].Descriptor()
+}
+
+func (PmConfig_PmType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[0]
+}
+
+func (x PmConfig_PmType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use PmConfig_PmType.Descriptor instead.
 func (PmConfig_PmType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{2, 0}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{2, 0}
 }
 
 type ImageDownload_ImageDownloadState int32
@@ -66,32 +88,53 @@
 	ImageDownload_DOWNLOAD_CANCELLED   ImageDownload_ImageDownloadState = 6
 )
 
-var ImageDownload_ImageDownloadState_name = map[int32]string{
-	0: "DOWNLOAD_UNKNOWN",
-	1: "DOWNLOAD_SUCCEEDED",
-	2: "DOWNLOAD_REQUESTED",
-	3: "DOWNLOAD_STARTED",
-	4: "DOWNLOAD_FAILED",
-	5: "DOWNLOAD_UNSUPPORTED",
-	6: "DOWNLOAD_CANCELLED",
-}
+// Enum value maps for ImageDownload_ImageDownloadState.
+var (
+	ImageDownload_ImageDownloadState_name = map[int32]string{
+		0: "DOWNLOAD_UNKNOWN",
+		1: "DOWNLOAD_SUCCEEDED",
+		2: "DOWNLOAD_REQUESTED",
+		3: "DOWNLOAD_STARTED",
+		4: "DOWNLOAD_FAILED",
+		5: "DOWNLOAD_UNSUPPORTED",
+		6: "DOWNLOAD_CANCELLED",
+	}
+	ImageDownload_ImageDownloadState_value = map[string]int32{
+		"DOWNLOAD_UNKNOWN":     0,
+		"DOWNLOAD_SUCCEEDED":   1,
+		"DOWNLOAD_REQUESTED":   2,
+		"DOWNLOAD_STARTED":     3,
+		"DOWNLOAD_FAILED":      4,
+		"DOWNLOAD_UNSUPPORTED": 5,
+		"DOWNLOAD_CANCELLED":   6,
+	}
+)
 
-var ImageDownload_ImageDownloadState_value = map[string]int32{
-	"DOWNLOAD_UNKNOWN":     0,
-	"DOWNLOAD_SUCCEEDED":   1,
-	"DOWNLOAD_REQUESTED":   2,
-	"DOWNLOAD_STARTED":     3,
-	"DOWNLOAD_FAILED":      4,
-	"DOWNLOAD_UNSUPPORTED": 5,
-	"DOWNLOAD_CANCELLED":   6,
+func (x ImageDownload_ImageDownloadState) Enum() *ImageDownload_ImageDownloadState {
+	p := new(ImageDownload_ImageDownloadState)
+	*p = x
+	return p
 }
 
 func (x ImageDownload_ImageDownloadState) String() string {
-	return proto.EnumName(ImageDownload_ImageDownloadState_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ImageDownload_ImageDownloadState) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[1].Descriptor()
+}
+
+func (ImageDownload_ImageDownloadState) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[1]
+}
+
+func (x ImageDownload_ImageDownloadState) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ImageDownload_ImageDownloadState.Descriptor instead.
 func (ImageDownload_ImageDownloadState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{6, 0}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{6, 0}
 }
 
 type ImageDownload_ImageDownloadFailureReason int32
@@ -105,30 +148,51 @@
 	ImageDownload_CANCELLED          ImageDownload_ImageDownloadFailureReason = 5
 )
 
-var ImageDownload_ImageDownloadFailureReason_name = map[int32]string{
-	0: "NO_ERROR",
-	1: "INVALID_URL",
-	2: "DEVICE_BUSY",
-	3: "INSUFFICIENT_SPACE",
-	4: "UNKNOWN_ERROR",
-	5: "CANCELLED",
-}
+// Enum value maps for ImageDownload_ImageDownloadFailureReason.
+var (
+	ImageDownload_ImageDownloadFailureReason_name = map[int32]string{
+		0: "NO_ERROR",
+		1: "INVALID_URL",
+		2: "DEVICE_BUSY",
+		3: "INSUFFICIENT_SPACE",
+		4: "UNKNOWN_ERROR",
+		5: "CANCELLED",
+	}
+	ImageDownload_ImageDownloadFailureReason_value = map[string]int32{
+		"NO_ERROR":           0,
+		"INVALID_URL":        1,
+		"DEVICE_BUSY":        2,
+		"INSUFFICIENT_SPACE": 3,
+		"UNKNOWN_ERROR":      4,
+		"CANCELLED":          5,
+	}
+)
 
-var ImageDownload_ImageDownloadFailureReason_value = map[string]int32{
-	"NO_ERROR":           0,
-	"INVALID_URL":        1,
-	"DEVICE_BUSY":        2,
-	"INSUFFICIENT_SPACE": 3,
-	"UNKNOWN_ERROR":      4,
-	"CANCELLED":          5,
+func (x ImageDownload_ImageDownloadFailureReason) Enum() *ImageDownload_ImageDownloadFailureReason {
+	p := new(ImageDownload_ImageDownloadFailureReason)
+	*p = x
+	return p
 }
 
 func (x ImageDownload_ImageDownloadFailureReason) String() string {
-	return proto.EnumName(ImageDownload_ImageDownloadFailureReason_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ImageDownload_ImageDownloadFailureReason) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[2].Descriptor()
+}
+
+func (ImageDownload_ImageDownloadFailureReason) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[2]
+}
+
+func (x ImageDownload_ImageDownloadFailureReason) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ImageDownload_ImageDownloadFailureReason.Descriptor instead.
 func (ImageDownload_ImageDownloadFailureReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{6, 1}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{6, 1}
 }
 
 type ImageDownload_ImageActivateState int32
@@ -142,30 +206,51 @@
 	ImageDownload_IMAGE_REVERTED   ImageDownload_ImageActivateState = 5
 )
 
-var ImageDownload_ImageActivateState_name = map[int32]string{
-	0: "IMAGE_UNKNOWN",
-	1: "IMAGE_INACTIVE",
-	2: "IMAGE_ACTIVATING",
-	3: "IMAGE_ACTIVE",
-	4: "IMAGE_REVERTING",
-	5: "IMAGE_REVERTED",
-}
+// Enum value maps for ImageDownload_ImageActivateState.
+var (
+	ImageDownload_ImageActivateState_name = map[int32]string{
+		0: "IMAGE_UNKNOWN",
+		1: "IMAGE_INACTIVE",
+		2: "IMAGE_ACTIVATING",
+		3: "IMAGE_ACTIVE",
+		4: "IMAGE_REVERTING",
+		5: "IMAGE_REVERTED",
+	}
+	ImageDownload_ImageActivateState_value = map[string]int32{
+		"IMAGE_UNKNOWN":    0,
+		"IMAGE_INACTIVE":   1,
+		"IMAGE_ACTIVATING": 2,
+		"IMAGE_ACTIVE":     3,
+		"IMAGE_REVERTING":  4,
+		"IMAGE_REVERTED":   5,
+	}
+)
 
-var ImageDownload_ImageActivateState_value = map[string]int32{
-	"IMAGE_UNKNOWN":    0,
-	"IMAGE_INACTIVE":   1,
-	"IMAGE_ACTIVATING": 2,
-	"IMAGE_ACTIVE":     3,
-	"IMAGE_REVERTING":  4,
-	"IMAGE_REVERTED":   5,
+func (x ImageDownload_ImageActivateState) Enum() *ImageDownload_ImageActivateState {
+	p := new(ImageDownload_ImageActivateState)
+	*p = x
+	return p
 }
 
 func (x ImageDownload_ImageActivateState) String() string {
-	return proto.EnumName(ImageDownload_ImageActivateState_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ImageDownload_ImageActivateState) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[3].Descriptor()
+}
+
+func (ImageDownload_ImageActivateState) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[3]
+}
+
+func (x ImageDownload_ImageActivateState) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ImageDownload_ImageActivateState.Descriptor instead.
 func (ImageDownload_ImageActivateState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{6, 2}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{6, 2}
 }
 
 type ImageState_ImageDownloadState int32
@@ -181,34 +266,55 @@
 	ImageState_DOWNLOAD_CANCELLED   ImageState_ImageDownloadState = 7
 )
 
-var ImageState_ImageDownloadState_name = map[int32]string{
-	0: "DOWNLOAD_UNKNOWN",
-	1: "DOWNLOAD_SUCCEEDED",
-	2: "DOWNLOAD_REQUESTED",
-	3: "DOWNLOAD_STARTED",
-	4: "DOWNLOAD_FAILED",
-	5: "DOWNLOAD_UNSUPPORTED",
-	6: "DOWNLOAD_CANCELLING",
-	7: "DOWNLOAD_CANCELLED",
-}
+// Enum value maps for ImageState_ImageDownloadState.
+var (
+	ImageState_ImageDownloadState_name = map[int32]string{
+		0: "DOWNLOAD_UNKNOWN",
+		1: "DOWNLOAD_SUCCEEDED",
+		2: "DOWNLOAD_REQUESTED",
+		3: "DOWNLOAD_STARTED",
+		4: "DOWNLOAD_FAILED",
+		5: "DOWNLOAD_UNSUPPORTED",
+		6: "DOWNLOAD_CANCELLING",
+		7: "DOWNLOAD_CANCELLED",
+	}
+	ImageState_ImageDownloadState_value = map[string]int32{
+		"DOWNLOAD_UNKNOWN":     0,
+		"DOWNLOAD_SUCCEEDED":   1,
+		"DOWNLOAD_REQUESTED":   2,
+		"DOWNLOAD_STARTED":     3,
+		"DOWNLOAD_FAILED":      4,
+		"DOWNLOAD_UNSUPPORTED": 5,
+		"DOWNLOAD_CANCELLING":  6,
+		"DOWNLOAD_CANCELLED":   7,
+	}
+)
 
-var ImageState_ImageDownloadState_value = map[string]int32{
-	"DOWNLOAD_UNKNOWN":     0,
-	"DOWNLOAD_SUCCEEDED":   1,
-	"DOWNLOAD_REQUESTED":   2,
-	"DOWNLOAD_STARTED":     3,
-	"DOWNLOAD_FAILED":      4,
-	"DOWNLOAD_UNSUPPORTED": 5,
-	"DOWNLOAD_CANCELLING":  6,
-	"DOWNLOAD_CANCELLED":   7,
+func (x ImageState_ImageDownloadState) Enum() *ImageState_ImageDownloadState {
+	p := new(ImageState_ImageDownloadState)
+	*p = x
+	return p
 }
 
 func (x ImageState_ImageDownloadState) String() string {
-	return proto.EnumName(ImageState_ImageDownloadState_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ImageState_ImageDownloadState) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[4].Descriptor()
+}
+
+func (ImageState_ImageDownloadState) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[4]
+}
+
+func (x ImageState_ImageDownloadState) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ImageState_ImageDownloadState.Descriptor instead.
 func (ImageState_ImageDownloadState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{12, 0}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{12, 0}
 }
 
 type ImageState_ImageFailureReason int32
@@ -217,8 +323,8 @@
 	ImageState_NO_ERROR               ImageState_ImageFailureReason = 0
 	ImageState_INVALID_URL            ImageState_ImageFailureReason = 1
 	ImageState_DEVICE_BUSY            ImageState_ImageFailureReason = 2
-	ImageState_INSUFFICIENT_SPACE     ImageState_ImageFailureReason = 3
-	ImageState_UNKNOWN_ERROR          ImageState_ImageFailureReason = 4
+	ImageState_INSUFFICIENT_SPACE     ImageState_ImageFailureReason = 3 // VOLTHA ONU ADAPTER has no more space to store images
+	ImageState_UNKNOWN_ERROR          ImageState_ImageFailureReason = 4 // Used also for Checksum failure on ONU
 	ImageState_CANCELLED_ON_REQUEST   ImageState_ImageFailureReason = 5
 	ImageState_CANCELLED_ON_ONU_STATE ImageState_ImageFailureReason = 6
 	ImageState_VENDOR_DEVICE_MISMATCH ImageState_ImageFailureReason = 7
@@ -226,38 +332,59 @@
 	ImageState_IMAGE_REFUSED_BY_ONU   ImageState_ImageFailureReason = 9
 )
 
-var ImageState_ImageFailureReason_name = map[int32]string{
-	0: "NO_ERROR",
-	1: "INVALID_URL",
-	2: "DEVICE_BUSY",
-	3: "INSUFFICIENT_SPACE",
-	4: "UNKNOWN_ERROR",
-	5: "CANCELLED_ON_REQUEST",
-	6: "CANCELLED_ON_ONU_STATE",
-	7: "VENDOR_DEVICE_MISMATCH",
-	8: "OMCI_TRANSFER_ERROR",
-	9: "IMAGE_REFUSED_BY_ONU",
-}
+// Enum value maps for ImageState_ImageFailureReason.
+var (
+	ImageState_ImageFailureReason_name = map[int32]string{
+		0: "NO_ERROR",
+		1: "INVALID_URL",
+		2: "DEVICE_BUSY",
+		3: "INSUFFICIENT_SPACE",
+		4: "UNKNOWN_ERROR",
+		5: "CANCELLED_ON_REQUEST",
+		6: "CANCELLED_ON_ONU_STATE",
+		7: "VENDOR_DEVICE_MISMATCH",
+		8: "OMCI_TRANSFER_ERROR",
+		9: "IMAGE_REFUSED_BY_ONU",
+	}
+	ImageState_ImageFailureReason_value = map[string]int32{
+		"NO_ERROR":               0,
+		"INVALID_URL":            1,
+		"DEVICE_BUSY":            2,
+		"INSUFFICIENT_SPACE":     3,
+		"UNKNOWN_ERROR":          4,
+		"CANCELLED_ON_REQUEST":   5,
+		"CANCELLED_ON_ONU_STATE": 6,
+		"VENDOR_DEVICE_MISMATCH": 7,
+		"OMCI_TRANSFER_ERROR":    8,
+		"IMAGE_REFUSED_BY_ONU":   9,
+	}
+)
 
-var ImageState_ImageFailureReason_value = map[string]int32{
-	"NO_ERROR":               0,
-	"INVALID_URL":            1,
-	"DEVICE_BUSY":            2,
-	"INSUFFICIENT_SPACE":     3,
-	"UNKNOWN_ERROR":          4,
-	"CANCELLED_ON_REQUEST":   5,
-	"CANCELLED_ON_ONU_STATE": 6,
-	"VENDOR_DEVICE_MISMATCH": 7,
-	"OMCI_TRANSFER_ERROR":    8,
-	"IMAGE_REFUSED_BY_ONU":   9,
+func (x ImageState_ImageFailureReason) Enum() *ImageState_ImageFailureReason {
+	p := new(ImageState_ImageFailureReason)
+	*p = x
+	return p
 }
 
 func (x ImageState_ImageFailureReason) String() string {
-	return proto.EnumName(ImageState_ImageFailureReason_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ImageState_ImageFailureReason) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[5].Descriptor()
+}
+
+func (ImageState_ImageFailureReason) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[5]
+}
+
+func (x ImageState_ImageFailureReason) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ImageState_ImageFailureReason.Descriptor instead.
 func (ImageState_ImageFailureReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{12, 1}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{12, 1}
 }
 
 type ImageState_ImageActivationState int32
@@ -265,7 +392,7 @@
 const (
 	ImageState_IMAGE_UNKNOWN             ImageState_ImageActivationState = 0
 	ImageState_IMAGE_INACTIVE            ImageState_ImageActivationState = 1
-	ImageState_IMAGE_ACTIVATING          ImageState_ImageActivationState = 2
+	ImageState_IMAGE_ACTIVATING          ImageState_ImageActivationState = 2 // Happens during Reboot of the ONU after activate call.
 	ImageState_IMAGE_ACTIVE              ImageState_ImageActivationState = 3
 	ImageState_IMAGE_COMMITTING          ImageState_ImageActivationState = 4
 	ImageState_IMAGE_COMMITTED           ImageState_ImageActivationState = 5
@@ -277,42 +404,63 @@
 	ImageState_IMAGE_DOWNLOADING_ABORTED ImageState_ImageActivationState = 11
 )
 
-var ImageState_ImageActivationState_name = map[int32]string{
-	0:  "IMAGE_UNKNOWN",
-	1:  "IMAGE_INACTIVE",
-	2:  "IMAGE_ACTIVATING",
-	3:  "IMAGE_ACTIVE",
-	4:  "IMAGE_COMMITTING",
-	5:  "IMAGE_COMMITTED",
-	6:  "IMAGE_ACTIVATION_ABORTING",
-	7:  "IMAGE_ACTIVATION_ABORTED",
-	8:  "IMAGE_COMMIT_ABORTING",
-	9:  "IMAGE_COMMIT_ABORTED",
-	10: "IMAGE_DOWNLOADING",
-	11: "IMAGE_DOWNLOADING_ABORTED",
-}
+// Enum value maps for ImageState_ImageActivationState.
+var (
+	ImageState_ImageActivationState_name = map[int32]string{
+		0:  "IMAGE_UNKNOWN",
+		1:  "IMAGE_INACTIVE",
+		2:  "IMAGE_ACTIVATING",
+		3:  "IMAGE_ACTIVE",
+		4:  "IMAGE_COMMITTING",
+		5:  "IMAGE_COMMITTED",
+		6:  "IMAGE_ACTIVATION_ABORTING",
+		7:  "IMAGE_ACTIVATION_ABORTED",
+		8:  "IMAGE_COMMIT_ABORTING",
+		9:  "IMAGE_COMMIT_ABORTED",
+		10: "IMAGE_DOWNLOADING",
+		11: "IMAGE_DOWNLOADING_ABORTED",
+	}
+	ImageState_ImageActivationState_value = map[string]int32{
+		"IMAGE_UNKNOWN":             0,
+		"IMAGE_INACTIVE":            1,
+		"IMAGE_ACTIVATING":          2,
+		"IMAGE_ACTIVE":              3,
+		"IMAGE_COMMITTING":          4,
+		"IMAGE_COMMITTED":           5,
+		"IMAGE_ACTIVATION_ABORTING": 6,
+		"IMAGE_ACTIVATION_ABORTED":  7,
+		"IMAGE_COMMIT_ABORTING":     8,
+		"IMAGE_COMMIT_ABORTED":      9,
+		"IMAGE_DOWNLOADING":         10,
+		"IMAGE_DOWNLOADING_ABORTED": 11,
+	}
+)
 
-var ImageState_ImageActivationState_value = map[string]int32{
-	"IMAGE_UNKNOWN":             0,
-	"IMAGE_INACTIVE":            1,
-	"IMAGE_ACTIVATING":          2,
-	"IMAGE_ACTIVE":              3,
-	"IMAGE_COMMITTING":          4,
-	"IMAGE_COMMITTED":           5,
-	"IMAGE_ACTIVATION_ABORTING": 6,
-	"IMAGE_ACTIVATION_ABORTED":  7,
-	"IMAGE_COMMIT_ABORTING":     8,
-	"IMAGE_COMMIT_ABORTED":      9,
-	"IMAGE_DOWNLOADING":         10,
-	"IMAGE_DOWNLOADING_ABORTED": 11,
+func (x ImageState_ImageActivationState) Enum() *ImageState_ImageActivationState {
+	p := new(ImageState_ImageActivationState)
+	*p = x
+	return p
 }
 
 func (x ImageState_ImageActivationState) String() string {
-	return proto.EnumName(ImageState_ImageActivationState_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ImageState_ImageActivationState) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[6].Descriptor()
+}
+
+func (ImageState_ImageActivationState) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[6]
+}
+
+func (x ImageState_ImageActivationState) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ImageState_ImageActivationState.Descriptor instead.
 func (ImageState_ImageActivationState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{12, 2}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{12, 2}
 }
 
 type Port_PortType int32
@@ -327,32 +475,53 @@
 	Port_VENET_ONU    Port_PortType = 6
 )
 
-var Port_PortType_name = map[int32]string{
-	0: "UNKNOWN",
-	1: "ETHERNET_NNI",
-	2: "ETHERNET_UNI",
-	3: "PON_OLT",
-	4: "PON_ONU",
-	5: "VENET_OLT",
-	6: "VENET_ONU",
-}
+// Enum value maps for Port_PortType.
+var (
+	Port_PortType_name = map[int32]string{
+		0: "UNKNOWN",
+		1: "ETHERNET_NNI",
+		2: "ETHERNET_UNI",
+		3: "PON_OLT",
+		4: "PON_ONU",
+		5: "VENET_OLT",
+		6: "VENET_ONU",
+	}
+	Port_PortType_value = map[string]int32{
+		"UNKNOWN":      0,
+		"ETHERNET_NNI": 1,
+		"ETHERNET_UNI": 2,
+		"PON_OLT":      3,
+		"PON_ONU":      4,
+		"VENET_OLT":    5,
+		"VENET_ONU":    6,
+	}
+)
 
-var Port_PortType_value = map[string]int32{
-	"UNKNOWN":      0,
-	"ETHERNET_NNI": 1,
-	"ETHERNET_UNI": 2,
-	"PON_OLT":      3,
-	"PON_ONU":      4,
-	"VENET_OLT":    5,
-	"VENET_ONU":    6,
+func (x Port_PortType) Enum() *Port_PortType {
+	p := new(Port_PortType)
+	*p = x
+	return p
 }
 
 func (x Port_PortType) String() string {
-	return proto.EnumName(Port_PortType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (Port_PortType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[7].Descriptor()
+}
+
+func (Port_PortType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[7]
+}
+
+func (x Port_PortType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Port_PortType.Descriptor instead.
 func (Port_PortType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{13, 0}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{13, 0}
 }
 
 type SelfTestResponse_SelfTestResult int32
@@ -364,26 +533,47 @@
 	SelfTestResponse_UNKNOWN_ERROR SelfTestResponse_SelfTestResult = 3
 )
 
-var SelfTestResponse_SelfTestResult_name = map[int32]string{
-	0: "SUCCESS",
-	1: "FAILURE",
-	2: "NOT_SUPPORTED",
-	3: "UNKNOWN_ERROR",
-}
+// Enum value maps for SelfTestResponse_SelfTestResult.
+var (
+	SelfTestResponse_SelfTestResult_name = map[int32]string{
+		0: "SUCCESS",
+		1: "FAILURE",
+		2: "NOT_SUPPORTED",
+		3: "UNKNOWN_ERROR",
+	}
+	SelfTestResponse_SelfTestResult_value = map[string]int32{
+		"SUCCESS":       0,
+		"FAILURE":       1,
+		"NOT_SUPPORTED": 2,
+		"UNKNOWN_ERROR": 3,
+	}
+)
 
-var SelfTestResponse_SelfTestResult_value = map[string]int32{
-	"SUCCESS":       0,
-	"FAILURE":       1,
-	"NOT_SUPPORTED": 2,
-	"UNKNOWN_ERROR": 3,
+func (x SelfTestResponse_SelfTestResult) Enum() *SelfTestResponse_SelfTestResult {
+	p := new(SelfTestResponse_SelfTestResult)
+	*p = x
+	return p
 }
 
 func (x SelfTestResponse_SelfTestResult) String() string {
-	return proto.EnumName(SelfTestResponse_SelfTestResult_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (SelfTestResponse_SelfTestResult) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[8].Descriptor()
+}
+
+func (SelfTestResponse_SelfTestResult) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[8]
+}
+
+func (x SelfTestResponse_SelfTestResult) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use SelfTestResponse_SelfTestResult.Descriptor instead.
 func (SelfTestResponse_SelfTestResult) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{19, 0}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{19, 0}
 }
 
 type SimulateAlarmRequest_OperationType int32
@@ -393,26 +583,48 @@
 	SimulateAlarmRequest_CLEAR SimulateAlarmRequest_OperationType = 1
 )
 
-var SimulateAlarmRequest_OperationType_name = map[int32]string{
-	0: "RAISE",
-	1: "CLEAR",
-}
+// Enum value maps for SimulateAlarmRequest_OperationType.
+var (
+	SimulateAlarmRequest_OperationType_name = map[int32]string{
+		0: "RAISE",
+		1: "CLEAR",
+	}
+	SimulateAlarmRequest_OperationType_value = map[string]int32{
+		"RAISE": 0,
+		"CLEAR": 1,
+	}
+)
 
-var SimulateAlarmRequest_OperationType_value = map[string]int32{
-	"RAISE": 0,
-	"CLEAR": 1,
+func (x SimulateAlarmRequest_OperationType) Enum() *SimulateAlarmRequest_OperationType {
+	p := new(SimulateAlarmRequest_OperationType)
+	*p = x
+	return p
 }
 
 func (x SimulateAlarmRequest_OperationType) String() string {
-	return proto.EnumName(SimulateAlarmRequest_OperationType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (SimulateAlarmRequest_OperationType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[9].Descriptor()
+}
+
+func (SimulateAlarmRequest_OperationType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[9]
+}
+
+func (x SimulateAlarmRequest_OperationType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use SimulateAlarmRequest_OperationType.Descriptor instead.
 func (SimulateAlarmRequest_OperationType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{21, 0}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{21, 0}
 }
 
 // A Device Type
 type DeviceType struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Unique name for the device type
 	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 	// Unique vendor id for the device type applicable to ONU
@@ -427,351 +639,376 @@
 	AcceptsAddRemoveFlowUpdates     bool `protobuf:"varint,4,opt,name=accepts_add_remove_flow_updates,json=acceptsAddRemoveFlowUpdates,proto3" json:"accepts_add_remove_flow_updates,omitempty"`
 	AcceptsDirectLogicalFlowsUpdate bool `protobuf:"varint,7,opt,name=accepts_direct_logical_flows_update,json=acceptsDirectLogicalFlowsUpdate,proto3" json:"accepts_direct_logical_flows_update,omitempty"`
 	// Type of adapter that can handle this device type
-	AdapterType          string   `protobuf:"bytes,8,opt,name=adapter_type,json=adapterType,proto3" json:"adapter_type,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	AdapterType   string `protobuf:"bytes,8,opt,name=adapter_type,json=adapterType,proto3" json:"adapter_type,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *DeviceType) Reset()         { *m = DeviceType{} }
-func (m *DeviceType) String() string { return proto.CompactTextString(m) }
-func (*DeviceType) ProtoMessage()    {}
+func (x *DeviceType) Reset() {
+	*x = DeviceType{}
+	mi := &file_voltha_protos_device_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DeviceType) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeviceType) ProtoMessage() {}
+
+func (x *DeviceType) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeviceType.ProtoReflect.Descriptor instead.
 func (*DeviceType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{0}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *DeviceType) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeviceType.Unmarshal(m, b)
-}
-func (m *DeviceType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeviceType.Marshal(b, m, deterministic)
-}
-func (m *DeviceType) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceType.Merge(m, src)
-}
-func (m *DeviceType) XXX_Size() int {
-	return xxx_messageInfo_DeviceType.Size(m)
-}
-func (m *DeviceType) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeviceType.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeviceType proto.InternalMessageInfo
-
-func (m *DeviceType) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *DeviceType) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *DeviceType) GetVendorId() string {
-	if m != nil {
-		return m.VendorId
+func (x *DeviceType) GetVendorId() string {
+	if x != nil {
+		return x.VendorId
 	}
 	return ""
 }
 
-func (m *DeviceType) GetVendorIds() []string {
-	if m != nil {
-		return m.VendorIds
+func (x *DeviceType) GetVendorIds() []string {
+	if x != nil {
+		return x.VendorIds
 	}
 	return nil
 }
 
-func (m *DeviceType) GetAdapter() string {
-	if m != nil {
-		return m.Adapter
+func (x *DeviceType) GetAdapter() string {
+	if x != nil {
+		return x.Adapter
 	}
 	return ""
 }
 
-func (m *DeviceType) GetAcceptsBulkFlowUpdate() bool {
-	if m != nil {
-		return m.AcceptsBulkFlowUpdate
+func (x *DeviceType) GetAcceptsBulkFlowUpdate() bool {
+	if x != nil {
+		return x.AcceptsBulkFlowUpdate
 	}
 	return false
 }
 
-func (m *DeviceType) GetAcceptsAddRemoveFlowUpdates() bool {
-	if m != nil {
-		return m.AcceptsAddRemoveFlowUpdates
+func (x *DeviceType) GetAcceptsAddRemoveFlowUpdates() bool {
+	if x != nil {
+		return x.AcceptsAddRemoveFlowUpdates
 	}
 	return false
 }
 
-func (m *DeviceType) GetAcceptsDirectLogicalFlowsUpdate() bool {
-	if m != nil {
-		return m.AcceptsDirectLogicalFlowsUpdate
+func (x *DeviceType) GetAcceptsDirectLogicalFlowsUpdate() bool {
+	if x != nil {
+		return x.AcceptsDirectLogicalFlowsUpdate
 	}
 	return false
 }
 
-func (m *DeviceType) GetAdapterType() string {
-	if m != nil {
-		return m.AdapterType
+func (x *DeviceType) GetAdapterType() string {
+	if x != nil {
+		return x.AdapterType
 	}
 	return ""
 }
 
 // A plurality of device types
 type DeviceTypes struct {
-	Items                []*DeviceType `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
-	XXX_unrecognized     []byte        `json:"-"`
-	XXX_sizecache        int32         `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*DeviceType          `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *DeviceTypes) Reset()         { *m = DeviceTypes{} }
-func (m *DeviceTypes) String() string { return proto.CompactTextString(m) }
-func (*DeviceTypes) ProtoMessage()    {}
+func (x *DeviceTypes) Reset() {
+	*x = DeviceTypes{}
+	mi := &file_voltha_protos_device_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DeviceTypes) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeviceTypes) ProtoMessage() {}
+
+func (x *DeviceTypes) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeviceTypes.ProtoReflect.Descriptor instead.
 func (*DeviceTypes) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{1}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *DeviceTypes) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeviceTypes.Unmarshal(m, b)
-}
-func (m *DeviceTypes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeviceTypes.Marshal(b, m, deterministic)
-}
-func (m *DeviceTypes) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceTypes.Merge(m, src)
-}
-func (m *DeviceTypes) XXX_Size() int {
-	return xxx_messageInfo_DeviceTypes.Size(m)
-}
-func (m *DeviceTypes) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeviceTypes.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeviceTypes proto.InternalMessageInfo
-
-func (m *DeviceTypes) GetItems() []*DeviceType {
-	if m != nil {
-		return m.Items
+func (x *DeviceTypes) GetItems() []*DeviceType {
+	if x != nil {
+		return x.Items
 	}
 	return nil
 }
 
 type PmConfig struct {
-	Name                 string          `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	Type                 PmConfig_PmType `protobuf:"varint,2,opt,name=type,proto3,enum=device.PmConfig_PmType" json:"type,omitempty"`
-	Enabled              bool            `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"`
-	SampleFreq           uint32          `protobuf:"varint,4,opt,name=sample_freq,json=sampleFreq,proto3" json:"sample_freq,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Name          string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	Type          PmConfig_PmType        `protobuf:"varint,2,opt,name=type,proto3,enum=device.PmConfig_PmType" json:"type,omitempty"`
+	Enabled       bool                   `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"`                         // Whether or not this metric makes it to Kafka
+	SampleFreq    uint32                 `protobuf:"varint,4,opt,name=sample_freq,json=sampleFreq,proto3" json:"sample_freq,omitempty"` // Sample rate in 10ths of a second
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *PmConfig) Reset()         { *m = PmConfig{} }
-func (m *PmConfig) String() string { return proto.CompactTextString(m) }
-func (*PmConfig) ProtoMessage()    {}
+func (x *PmConfig) Reset() {
+	*x = PmConfig{}
+	mi := &file_voltha_protos_device_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PmConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PmConfig) ProtoMessage() {}
+
+func (x *PmConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PmConfig.ProtoReflect.Descriptor instead.
 func (*PmConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{2}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *PmConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PmConfig.Unmarshal(m, b)
-}
-func (m *PmConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PmConfig.Marshal(b, m, deterministic)
-}
-func (m *PmConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PmConfig.Merge(m, src)
-}
-func (m *PmConfig) XXX_Size() int {
-	return xxx_messageInfo_PmConfig.Size(m)
-}
-func (m *PmConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_PmConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PmConfig proto.InternalMessageInfo
-
-func (m *PmConfig) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *PmConfig) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *PmConfig) GetType() PmConfig_PmType {
-	if m != nil {
-		return m.Type
+func (x *PmConfig) GetType() PmConfig_PmType {
+	if x != nil {
+		return x.Type
 	}
 	return PmConfig_COUNTER
 }
 
-func (m *PmConfig) GetEnabled() bool {
-	if m != nil {
-		return m.Enabled
+func (x *PmConfig) GetEnabled() bool {
+	if x != nil {
+		return x.Enabled
 	}
 	return false
 }
 
-func (m *PmConfig) GetSampleFreq() uint32 {
-	if m != nil {
-		return m.SampleFreq
+func (x *PmConfig) GetSampleFreq() uint32 {
+	if x != nil {
+		return x.SampleFreq
 	}
 	return 0
 }
 
 type PmGroupConfig struct {
-	GroupName            string      `protobuf:"bytes,1,opt,name=group_name,json=groupName,proto3" json:"group_name,omitempty"`
-	GroupFreq            uint32      `protobuf:"varint,2,opt,name=group_freq,json=groupFreq,proto3" json:"group_freq,omitempty"`
-	Enabled              bool        `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"`
-	Metrics              []*PmConfig `protobuf:"bytes,4,rep,name=metrics,proto3" json:"metrics,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	GroupName     string                 `protobuf:"bytes,1,opt,name=group_name,json=groupName,proto3" json:"group_name,omitempty"`
+	GroupFreq     uint32                 `protobuf:"varint,2,opt,name=group_freq,json=groupFreq,proto3" json:"group_freq,omitempty"` // Frequency applicable to the grop
+	Enabled       bool                   `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"`                      // Enable/disable group level only
+	Metrics       []*PmConfig            `protobuf:"bytes,4,rep,name=metrics,proto3" json:"metrics,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *PmGroupConfig) Reset()         { *m = PmGroupConfig{} }
-func (m *PmGroupConfig) String() string { return proto.CompactTextString(m) }
-func (*PmGroupConfig) ProtoMessage()    {}
+func (x *PmGroupConfig) Reset() {
+	*x = PmGroupConfig{}
+	mi := &file_voltha_protos_device_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PmGroupConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PmGroupConfig) ProtoMessage() {}
+
+func (x *PmGroupConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PmGroupConfig.ProtoReflect.Descriptor instead.
 func (*PmGroupConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{3}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *PmGroupConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PmGroupConfig.Unmarshal(m, b)
-}
-func (m *PmGroupConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PmGroupConfig.Marshal(b, m, deterministic)
-}
-func (m *PmGroupConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PmGroupConfig.Merge(m, src)
-}
-func (m *PmGroupConfig) XXX_Size() int {
-	return xxx_messageInfo_PmGroupConfig.Size(m)
-}
-func (m *PmGroupConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_PmGroupConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PmGroupConfig proto.InternalMessageInfo
-
-func (m *PmGroupConfig) GetGroupName() string {
-	if m != nil {
-		return m.GroupName
+func (x *PmGroupConfig) GetGroupName() string {
+	if x != nil {
+		return x.GroupName
 	}
 	return ""
 }
 
-func (m *PmGroupConfig) GetGroupFreq() uint32 {
-	if m != nil {
-		return m.GroupFreq
+func (x *PmGroupConfig) GetGroupFreq() uint32 {
+	if x != nil {
+		return x.GroupFreq
 	}
 	return 0
 }
 
-func (m *PmGroupConfig) GetEnabled() bool {
-	if m != nil {
-		return m.Enabled
+func (x *PmGroupConfig) GetEnabled() bool {
+	if x != nil {
+		return x.Enabled
 	}
 	return false
 }
 
-func (m *PmGroupConfig) GetMetrics() []*PmConfig {
-	if m != nil {
-		return m.Metrics
+func (x *PmGroupConfig) GetMetrics() []*PmConfig {
+	if x != nil {
+		return x.Metrics
 	}
 	return nil
 }
 
 type PmConfigs struct {
-	Id          string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	DefaultFreq uint32 `protobuf:"varint,2,opt,name=default_freq,json=defaultFreq,proto3" json:"default_freq,omitempty"`
+	state       protoimpl.MessageState `protogen:"open.v1"`
+	Id          string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`                                       // To work around a chameleon POST bug
+	DefaultFreq uint32                 `protobuf:"varint,2,opt,name=default_freq,json=defaultFreq,proto3" json:"default_freq,omitempty"` // Default sample rate
 	// Forces group names and group semantics
 	Grouped bool `protobuf:"varint,3,opt,name=grouped,proto3" json:"grouped,omitempty"`
 	// Allows Pm to set an individual sample frequency
-	FreqOverride         bool             `protobuf:"varint,4,opt,name=freq_override,json=freqOverride,proto3" json:"freq_override,omitempty"`
-	Groups               []*PmGroupConfig `protobuf:"bytes,5,rep,name=groups,proto3" json:"groups,omitempty"`
-	Metrics              []*PmConfig      `protobuf:"bytes,6,rep,name=metrics,proto3" json:"metrics,omitempty"`
-	MaxSkew              uint32           `protobuf:"varint,7,opt,name=max_skew,json=maxSkew,proto3" json:"max_skew,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	FreqOverride  bool             `protobuf:"varint,4,opt,name=freq_override,json=freqOverride,proto3" json:"freq_override,omitempty"`
+	Groups        []*PmGroupConfig `protobuf:"bytes,5,rep,name=groups,proto3" json:"groups,omitempty"`                   // The groups if grouped is true
+	Metrics       []*PmConfig      `protobuf:"bytes,6,rep,name=metrics,proto3" json:"metrics,omitempty"`                 // The metrics themselves if grouped is false.
+	MaxSkew       uint32           `protobuf:"varint,7,opt,name=max_skew,json=maxSkew,proto3" json:"max_skew,omitempty"` //Default value is set to 5 seconds
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *PmConfigs) Reset()         { *m = PmConfigs{} }
-func (m *PmConfigs) String() string { return proto.CompactTextString(m) }
-func (*PmConfigs) ProtoMessage()    {}
+func (x *PmConfigs) Reset() {
+	*x = PmConfigs{}
+	mi := &file_voltha_protos_device_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PmConfigs) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PmConfigs) ProtoMessage() {}
+
+func (x *PmConfigs) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PmConfigs.ProtoReflect.Descriptor instead.
 func (*PmConfigs) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{4}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *PmConfigs) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PmConfigs.Unmarshal(m, b)
-}
-func (m *PmConfigs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PmConfigs.Marshal(b, m, deterministic)
-}
-func (m *PmConfigs) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PmConfigs.Merge(m, src)
-}
-func (m *PmConfigs) XXX_Size() int {
-	return xxx_messageInfo_PmConfigs.Size(m)
-}
-func (m *PmConfigs) XXX_DiscardUnknown() {
-	xxx_messageInfo_PmConfigs.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PmConfigs proto.InternalMessageInfo
-
-func (m *PmConfigs) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *PmConfigs) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *PmConfigs) GetDefaultFreq() uint32 {
-	if m != nil {
-		return m.DefaultFreq
+func (x *PmConfigs) GetDefaultFreq() uint32 {
+	if x != nil {
+		return x.DefaultFreq
 	}
 	return 0
 }
 
-func (m *PmConfigs) GetGrouped() bool {
-	if m != nil {
-		return m.Grouped
+func (x *PmConfigs) GetGrouped() bool {
+	if x != nil {
+		return x.Grouped
 	}
 	return false
 }
 
-func (m *PmConfigs) GetFreqOverride() bool {
-	if m != nil {
-		return m.FreqOverride
+func (x *PmConfigs) GetFreqOverride() bool {
+	if x != nil {
+		return x.FreqOverride
 	}
 	return false
 }
 
-func (m *PmConfigs) GetGroups() []*PmGroupConfig {
-	if m != nil {
-		return m.Groups
+func (x *PmConfigs) GetGroups() []*PmGroupConfig {
+	if x != nil {
+		return x.Groups
 	}
 	return nil
 }
 
-func (m *PmConfigs) GetMetrics() []*PmConfig {
-	if m != nil {
-		return m.Metrics
+func (x *PmConfigs) GetMetrics() []*PmConfig {
+	if x != nil {
+		return x.Metrics
 	}
 	return nil
 }
 
-func (m *PmConfigs) GetMaxSkew() uint32 {
-	if m != nil {
-		return m.MaxSkew
+func (x *PmConfigs) GetMaxSkew() uint32 {
+	if x != nil {
+		return x.MaxSkew
 	}
 	return 0
 }
 
-//Object representing an image
+// Object representing an image
 type Image struct {
-	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	state protoimpl.MessageState `protogen:"open.v1"`
+	Name  string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // software patch name
 	// Version, this is the sole identifier of the image. it's the vendor specified OMCI version
 	// must be known at the time of initiating a download, activate, commit image on an onu.
 	Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
@@ -779,24 +1016,24 @@
 	// Deprecated in voltha 2.8, will be removed
 	Hash uint32 `protobuf:"varint,3,opt,name=hash,proto3" json:"hash,omitempty"`
 	// Deprecated in voltha 2.8, will be removed
-	InstallDatetime string `protobuf:"bytes,4,opt,name=install_datetime,json=installDatetime,proto3" json:"install_datetime,omitempty"`
+	InstallDatetime string `protobuf:"bytes,4,opt,name=install_datetime,json=installDatetime,proto3" json:"install_datetime,omitempty"` // combined date and time expressed in UTC.
 	// The active software image is one that is currently loaded and executing
 	// in the ONU or circuit pack. Under normal operation, one software image
 	// is always active while the other is inactive. Under no circumstances are
 	// both software images allowed to be active at the same time
 	// Deprecated in voltha 2.8, will be removed
-	IsActive bool `protobuf:"varint,5,opt,name=is_active,json=isActive,proto3" json:"is_active,omitempty"`
+	IsActive bool `protobuf:"varint,5,opt,name=is_active,json=isActive,proto3" json:"is_active,omitempty"` // True if the image is active
 	// The committed software image is loaded and executed upon reboot of the
 	// ONU and/or circuit pack. During normal operation, one software image is
 	// always committed, while the other is uncommitted.
 	// Deprecated in voltha 2.8, will be removed
-	IsCommitted bool `protobuf:"varint,6,opt,name=is_committed,json=isCommitted,proto3" json:"is_committed,omitempty"`
+	IsCommitted bool `protobuf:"varint,6,opt,name=is_committed,json=isCommitted,proto3" json:"is_committed,omitempty"` // True if the image is committed
 	// A software image is valid if it has been verified to be an executable
 	// code image. The verification mechanism is not subject to standardization;
 	// however, it should include at least a data integrity (e.g., CRC) check of
 	// the entire code image.
 	// Deprecated in voltha 2.8, will be removed
-	IsValid bool `protobuf:"varint,7,opt,name=is_valid,json=isValid,proto3" json:"is_valid,omitempty"`
+	IsValid bool `protobuf:"varint,7,opt,name=is_valid,json=isValid,proto3" json:"is_valid,omitempty"` // True if the image is valid
 	// URL where the image is available
 	// URL MUST be fully qualified,
 	// including filename, username and password
@@ -809,103 +1046,107 @@
 	// Default to value 0 if not specified.
 	// If different then 0 it's used to verify the image retrieved from outside before sending it to the ONU.
 	// Calculation of this needs to be done according to ITU-T I.363.5 as per OMCI spec (section A.2.27)
-	Crc32                uint32   `protobuf:"varint,10,opt,name=crc32,proto3" json:"crc32,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Crc32         uint32 `protobuf:"varint,10,opt,name=crc32,proto3" json:"crc32,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *Image) Reset()         { *m = Image{} }
-func (m *Image) String() string { return proto.CompactTextString(m) }
-func (*Image) ProtoMessage()    {}
+func (x *Image) Reset() {
+	*x = Image{}
+	mi := &file_voltha_protos_device_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Image) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Image) ProtoMessage() {}
+
+func (x *Image) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Image.ProtoReflect.Descriptor instead.
 func (*Image) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{5}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *Image) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Image.Unmarshal(m, b)
-}
-func (m *Image) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Image.Marshal(b, m, deterministic)
-}
-func (m *Image) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Image.Merge(m, src)
-}
-func (m *Image) XXX_Size() int {
-	return xxx_messageInfo_Image.Size(m)
-}
-func (m *Image) XXX_DiscardUnknown() {
-	xxx_messageInfo_Image.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Image proto.InternalMessageInfo
-
-func (m *Image) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *Image) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *Image) GetVersion() string {
-	if m != nil {
-		return m.Version
+func (x *Image) GetVersion() string {
+	if x != nil {
+		return x.Version
 	}
 	return ""
 }
 
-func (m *Image) GetHash() uint32 {
-	if m != nil {
-		return m.Hash
+func (x *Image) GetHash() uint32 {
+	if x != nil {
+		return x.Hash
 	}
 	return 0
 }
 
-func (m *Image) GetInstallDatetime() string {
-	if m != nil {
-		return m.InstallDatetime
+func (x *Image) GetInstallDatetime() string {
+	if x != nil {
+		return x.InstallDatetime
 	}
 	return ""
 }
 
-func (m *Image) GetIsActive() bool {
-	if m != nil {
-		return m.IsActive
+func (x *Image) GetIsActive() bool {
+	if x != nil {
+		return x.IsActive
 	}
 	return false
 }
 
-func (m *Image) GetIsCommitted() bool {
-	if m != nil {
-		return m.IsCommitted
+func (x *Image) GetIsCommitted() bool {
+	if x != nil {
+		return x.IsCommitted
 	}
 	return false
 }
 
-func (m *Image) GetIsValid() bool {
-	if m != nil {
-		return m.IsValid
+func (x *Image) GetIsValid() bool {
+	if x != nil {
+		return x.IsValid
 	}
 	return false
 }
 
-func (m *Image) GetUrl() string {
-	if m != nil {
-		return m.Url
+func (x *Image) GetUrl() string {
+	if x != nil {
+		return x.Url
 	}
 	return ""
 }
 
-func (m *Image) GetVendor() string {
-	if m != nil {
-		return m.Vendor
+func (x *Image) GetVendor() string {
+	if x != nil {
+		return x.Vendor
 	}
 	return ""
 }
 
-func (m *Image) GetCrc32() uint32 {
-	if m != nil {
-		return m.Crc32
+func (x *Image) GetCrc32() uint32 {
+	if x != nil {
+		return x.Crc32
 	}
 	return 0
 }
@@ -913,8 +1154,9 @@
 // Older version of the API please see DeviceImageDownloadRequest
 // Deprecated in voltha 2.8, will be removed
 //
-// Deprecated: Do not use.
+// Deprecated: Marked as deprecated in voltha_protos/device.proto.
 type ImageDownload struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Device Identifier
 	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 	// Image unique identifier
@@ -941,205 +1183,219 @@
 	// Image activation state
 	ImageState ImageDownload_ImageActivateState `protobuf:"varint,12,opt,name=image_state,json=imageState,proto3,enum=device.ImageDownload_ImageActivateState" json:"image_state,omitempty"`
 	// Image file size
-	FileSize             uint32   `protobuf:"varint,13,opt,name=file_size,json=fileSize,proto3" json:"file_size,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	FileSize      uint32 `protobuf:"varint,13,opt,name=file_size,json=fileSize,proto3" json:"file_size,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ImageDownload) Reset()         { *m = ImageDownload{} }
-func (m *ImageDownload) String() string { return proto.CompactTextString(m) }
-func (*ImageDownload) ProtoMessage()    {}
+func (x *ImageDownload) Reset() {
+	*x = ImageDownload{}
+	mi := &file_voltha_protos_device_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ImageDownload) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ImageDownload) ProtoMessage() {}
+
+func (x *ImageDownload) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ImageDownload.ProtoReflect.Descriptor instead.
 func (*ImageDownload) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{6}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *ImageDownload) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ImageDownload.Unmarshal(m, b)
-}
-func (m *ImageDownload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ImageDownload.Marshal(b, m, deterministic)
-}
-func (m *ImageDownload) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ImageDownload.Merge(m, src)
-}
-func (m *ImageDownload) XXX_Size() int {
-	return xxx_messageInfo_ImageDownload.Size(m)
-}
-func (m *ImageDownload) XXX_DiscardUnknown() {
-	xxx_messageInfo_ImageDownload.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ImageDownload proto.InternalMessageInfo
-
-func (m *ImageDownload) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *ImageDownload) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *ImageDownload) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *ImageDownload) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *ImageDownload) GetUrl() string {
-	if m != nil {
-		return m.Url
+func (x *ImageDownload) GetUrl() string {
+	if x != nil {
+		return x.Url
 	}
 	return ""
 }
 
-func (m *ImageDownload) GetCrc() uint32 {
-	if m != nil {
-		return m.Crc
+func (x *ImageDownload) GetCrc() uint32 {
+	if x != nil {
+		return x.Crc
 	}
 	return 0
 }
 
-func (m *ImageDownload) GetDownloadState() ImageDownload_ImageDownloadState {
-	if m != nil {
-		return m.DownloadState
+func (x *ImageDownload) GetDownloadState() ImageDownload_ImageDownloadState {
+	if x != nil {
+		return x.DownloadState
 	}
 	return ImageDownload_DOWNLOAD_UNKNOWN
 }
 
-func (m *ImageDownload) GetImageVersion() string {
-	if m != nil {
-		return m.ImageVersion
+func (x *ImageDownload) GetImageVersion() string {
+	if x != nil {
+		return x.ImageVersion
 	}
 	return ""
 }
 
-func (m *ImageDownload) GetDownloadedBytes() uint32 {
-	if m != nil {
-		return m.DownloadedBytes
+func (x *ImageDownload) GetDownloadedBytes() uint32 {
+	if x != nil {
+		return x.DownloadedBytes
 	}
 	return 0
 }
 
-func (m *ImageDownload) GetReason() ImageDownload_ImageDownloadFailureReason {
-	if m != nil {
-		return m.Reason
+func (x *ImageDownload) GetReason() ImageDownload_ImageDownloadFailureReason {
+	if x != nil {
+		return x.Reason
 	}
 	return ImageDownload_NO_ERROR
 }
 
-func (m *ImageDownload) GetAdditionalInfo() string {
-	if m != nil {
-		return m.AdditionalInfo
+func (x *ImageDownload) GetAdditionalInfo() string {
+	if x != nil {
+		return x.AdditionalInfo
 	}
 	return ""
 }
 
-func (m *ImageDownload) GetSaveConfig() bool {
-	if m != nil {
-		return m.SaveConfig
+func (x *ImageDownload) GetSaveConfig() bool {
+	if x != nil {
+		return x.SaveConfig
 	}
 	return false
 }
 
-func (m *ImageDownload) GetLocalDir() string {
-	if m != nil {
-		return m.LocalDir
+func (x *ImageDownload) GetLocalDir() string {
+	if x != nil {
+		return x.LocalDir
 	}
 	return ""
 }
 
-func (m *ImageDownload) GetImageState() ImageDownload_ImageActivateState {
-	if m != nil {
-		return m.ImageState
+func (x *ImageDownload) GetImageState() ImageDownload_ImageActivateState {
+	if x != nil {
+		return x.ImageState
 	}
 	return ImageDownload_IMAGE_UNKNOWN
 }
 
-func (m *ImageDownload) GetFileSize() uint32 {
-	if m != nil {
-		return m.FileSize
+func (x *ImageDownload) GetFileSize() uint32 {
+	if x != nil {
+		return x.FileSize
 	}
 	return 0
 }
 
 // Deprecated in voltha 2.8, will be removed
 //
-// Deprecated: Do not use.
+// Deprecated: Marked as deprecated in voltha_protos/device.proto.
 type ImageDownloads struct {
-	Items                []*ImageDownload `protobuf:"bytes,2,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*ImageDownload       `protobuf:"bytes,2,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ImageDownloads) Reset()         { *m = ImageDownloads{} }
-func (m *ImageDownloads) String() string { return proto.CompactTextString(m) }
-func (*ImageDownloads) ProtoMessage()    {}
+func (x *ImageDownloads) Reset() {
+	*x = ImageDownloads{}
+	mi := &file_voltha_protos_device_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ImageDownloads) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ImageDownloads) ProtoMessage() {}
+
+func (x *ImageDownloads) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ImageDownloads.ProtoReflect.Descriptor instead.
 func (*ImageDownloads) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{7}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *ImageDownloads) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ImageDownloads.Unmarshal(m, b)
-}
-func (m *ImageDownloads) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ImageDownloads.Marshal(b, m, deterministic)
-}
-func (m *ImageDownloads) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ImageDownloads.Merge(m, src)
-}
-func (m *ImageDownloads) XXX_Size() int {
-	return xxx_messageInfo_ImageDownloads.Size(m)
-}
-func (m *ImageDownloads) XXX_DiscardUnknown() {
-	xxx_messageInfo_ImageDownloads.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ImageDownloads proto.InternalMessageInfo
-
-func (m *ImageDownloads) GetItems() []*ImageDownload {
-	if m != nil {
-		return m.Items
+func (x *ImageDownloads) GetItems() []*ImageDownload {
+	if x != nil {
+		return x.Items
 	}
 	return nil
 }
 
 type Images struct {
-	Image                []*Image `protobuf:"bytes,1,rep,name=image,proto3" json:"image,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Image         []*Image               `protobuf:"bytes,1,rep,name=image,proto3" json:"image,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *Images) Reset()         { *m = Images{} }
-func (m *Images) String() string { return proto.CompactTextString(m) }
-func (*Images) ProtoMessage()    {}
+func (x *Images) Reset() {
+	*x = Images{}
+	mi := &file_voltha_protos_device_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Images) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Images) ProtoMessage() {}
+
+func (x *Images) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[8]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Images.ProtoReflect.Descriptor instead.
 func (*Images) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{8}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{8}
 }
 
-func (m *Images) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Images.Unmarshal(m, b)
-}
-func (m *Images) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Images.Marshal(b, m, deterministic)
-}
-func (m *Images) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Images.Merge(m, src)
-}
-func (m *Images) XXX_Size() int {
-	return xxx_messageInfo_Images.Size(m)
-}
-func (m *Images) XXX_DiscardUnknown() {
-	xxx_messageInfo_Images.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Images proto.InternalMessageInfo
-
-func (m *Images) GetImage() []*Image {
-	if m != nil {
-		return m.Image
+func (x *Images) GetImage() []*Image {
+	if x != nil {
+		return x.Image
 	}
 	return nil
 }
@@ -1147,7 +1403,8 @@
 // OnuImage represents the OMCI information as per OMCI spec
 // the information will be populates exactly as extracted from the device.
 type OnuImage struct {
-	//image version
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// image version
 	Version     string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
 	IsCommited  bool   `protobuf:"varint,2,opt,name=isCommited,proto3" json:"isCommited,omitempty"`
 	IsActive    bool   `protobuf:"varint,3,opt,name=isActive,proto3" json:"isActive,omitempty"`
@@ -1155,166 +1412,181 @@
 	ProductCode string `protobuf:"bytes,5,opt,name=productCode,proto3" json:"productCode,omitempty"`
 	// Hash is computed by the ONU and is optional as per OMCI spec (paragraph 9.1.4)
 	// No assumption should be made on the existence of this attribute at any time.
-	Hash                 string   `protobuf:"bytes,6,opt,name=hash,proto3" json:"hash,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Hash          string `protobuf:"bytes,6,opt,name=hash,proto3" json:"hash,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OnuImage) Reset()         { *m = OnuImage{} }
-func (m *OnuImage) String() string { return proto.CompactTextString(m) }
-func (*OnuImage) ProtoMessage()    {}
+func (x *OnuImage) Reset() {
+	*x = OnuImage{}
+	mi := &file_voltha_protos_device_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuImage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuImage) ProtoMessage() {}
+
+func (x *OnuImage) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[9]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuImage.ProtoReflect.Descriptor instead.
 func (*OnuImage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{9}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{9}
 }
 
-func (m *OnuImage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuImage.Unmarshal(m, b)
-}
-func (m *OnuImage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuImage.Marshal(b, m, deterministic)
-}
-func (m *OnuImage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuImage.Merge(m, src)
-}
-func (m *OnuImage) XXX_Size() int {
-	return xxx_messageInfo_OnuImage.Size(m)
-}
-func (m *OnuImage) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuImage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuImage proto.InternalMessageInfo
-
-func (m *OnuImage) GetVersion() string {
-	if m != nil {
-		return m.Version
+func (x *OnuImage) GetVersion() string {
+	if x != nil {
+		return x.Version
 	}
 	return ""
 }
 
-func (m *OnuImage) GetIsCommited() bool {
-	if m != nil {
-		return m.IsCommited
+func (x *OnuImage) GetIsCommited() bool {
+	if x != nil {
+		return x.IsCommited
 	}
 	return false
 }
 
-func (m *OnuImage) GetIsActive() bool {
-	if m != nil {
-		return m.IsActive
+func (x *OnuImage) GetIsActive() bool {
+	if x != nil {
+		return x.IsActive
 	}
 	return false
 }
 
-func (m *OnuImage) GetIsValid() bool {
-	if m != nil {
-		return m.IsValid
+func (x *OnuImage) GetIsValid() bool {
+	if x != nil {
+		return x.IsValid
 	}
 	return false
 }
 
-func (m *OnuImage) GetProductCode() string {
-	if m != nil {
-		return m.ProductCode
+func (x *OnuImage) GetProductCode() string {
+	if x != nil {
+		return x.ProductCode
 	}
 	return ""
 }
 
-func (m *OnuImage) GetHash() string {
-	if m != nil {
-		return m.Hash
+func (x *OnuImage) GetHash() string {
+	if x != nil {
+		return x.Hash
 	}
 	return ""
 }
 
 type OnuImages struct {
-	Items                []*OnuImage `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*OnuImage            `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OnuImages) Reset()         { *m = OnuImages{} }
-func (m *OnuImages) String() string { return proto.CompactTextString(m) }
-func (*OnuImages) ProtoMessage()    {}
+func (x *OnuImages) Reset() {
+	*x = OnuImages{}
+	mi := &file_voltha_protos_device_proto_msgTypes[10]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuImages) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuImages) ProtoMessage() {}
+
+func (x *OnuImages) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[10]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuImages.ProtoReflect.Descriptor instead.
 func (*OnuImages) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{10}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{10}
 }
 
-func (m *OnuImages) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuImages.Unmarshal(m, b)
-}
-func (m *OnuImages) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuImages.Marshal(b, m, deterministic)
-}
-func (m *OnuImages) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuImages.Merge(m, src)
-}
-func (m *OnuImages) XXX_Size() int {
-	return xxx_messageInfo_OnuImages.Size(m)
-}
-func (m *OnuImages) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuImages.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuImages proto.InternalMessageInfo
-
-func (m *OnuImages) GetItems() []*OnuImage {
-	if m != nil {
-		return m.Items
+func (x *OnuImages) GetItems() []*OnuImage {
+	if x != nil {
+		return x.Items
 	}
 	return nil
 }
 
 type DeviceImageState struct {
-	DeviceId             string      `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	ImageState           *ImageState `protobuf:"bytes,2,opt,name=imageState,proto3" json:"imageState,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	DeviceId      string                 `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	ImageState    *ImageState            `protobuf:"bytes,2,opt,name=imageState,proto3" json:"imageState,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *DeviceImageState) Reset()         { *m = DeviceImageState{} }
-func (m *DeviceImageState) String() string { return proto.CompactTextString(m) }
-func (*DeviceImageState) ProtoMessage()    {}
+func (x *DeviceImageState) Reset() {
+	*x = DeviceImageState{}
+	mi := &file_voltha_protos_device_proto_msgTypes[11]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DeviceImageState) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeviceImageState) ProtoMessage() {}
+
+func (x *DeviceImageState) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[11]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeviceImageState.ProtoReflect.Descriptor instead.
 func (*DeviceImageState) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{11}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{11}
 }
 
-func (m *DeviceImageState) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeviceImageState.Unmarshal(m, b)
-}
-func (m *DeviceImageState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeviceImageState.Marshal(b, m, deterministic)
-}
-func (m *DeviceImageState) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceImageState.Merge(m, src)
-}
-func (m *DeviceImageState) XXX_Size() int {
-	return xxx_messageInfo_DeviceImageState.Size(m)
-}
-func (m *DeviceImageState) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeviceImageState.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeviceImageState proto.InternalMessageInfo
-
-func (m *DeviceImageState) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *DeviceImageState) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *DeviceImageState) GetImageState() *ImageState {
-	if m != nil {
-		return m.ImageState
+func (x *DeviceImageState) GetImageState() *ImageState {
+	if x != nil {
+		return x.ImageState
 	}
 	return nil
 }
 
 type ImageState struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// image version
 	Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
 	// Download state
@@ -1322,72 +1594,77 @@
 	// Image Operation Failure reason (use for both Download and Activate)
 	Reason ImageState_ImageFailureReason `protobuf:"varint,3,opt,name=reason,proto3,enum=device.ImageState_ImageFailureReason" json:"reason,omitempty"`
 	// Image activation state
-	ImageState           ImageState_ImageActivationState `protobuf:"varint,4,opt,name=image_state,json=imageState,proto3,enum=device.ImageState_ImageActivationState" json:"image_state,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                        `json:"-"`
-	XXX_unrecognized     []byte                          `json:"-"`
-	XXX_sizecache        int32                           `json:"-"`
+	ImageState    ImageState_ImageActivationState `protobuf:"varint,4,opt,name=image_state,json=imageState,proto3,enum=device.ImageState_ImageActivationState" json:"image_state,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ImageState) Reset()         { *m = ImageState{} }
-func (m *ImageState) String() string { return proto.CompactTextString(m) }
-func (*ImageState) ProtoMessage()    {}
+func (x *ImageState) Reset() {
+	*x = ImageState{}
+	mi := &file_voltha_protos_device_proto_msgTypes[12]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ImageState) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ImageState) ProtoMessage() {}
+
+func (x *ImageState) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[12]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ImageState.ProtoReflect.Descriptor instead.
 func (*ImageState) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{12}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{12}
 }
 
-func (m *ImageState) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ImageState.Unmarshal(m, b)
-}
-func (m *ImageState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ImageState.Marshal(b, m, deterministic)
-}
-func (m *ImageState) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ImageState.Merge(m, src)
-}
-func (m *ImageState) XXX_Size() int {
-	return xxx_messageInfo_ImageState.Size(m)
-}
-func (m *ImageState) XXX_DiscardUnknown() {
-	xxx_messageInfo_ImageState.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ImageState proto.InternalMessageInfo
-
-func (m *ImageState) GetVersion() string {
-	if m != nil {
-		return m.Version
+func (x *ImageState) GetVersion() string {
+	if x != nil {
+		return x.Version
 	}
 	return ""
 }
 
-func (m *ImageState) GetDownloadState() ImageState_ImageDownloadState {
-	if m != nil {
-		return m.DownloadState
+func (x *ImageState) GetDownloadState() ImageState_ImageDownloadState {
+	if x != nil {
+		return x.DownloadState
 	}
 	return ImageState_DOWNLOAD_UNKNOWN
 }
 
-func (m *ImageState) GetReason() ImageState_ImageFailureReason {
-	if m != nil {
-		return m.Reason
+func (x *ImageState) GetReason() ImageState_ImageFailureReason {
+	if x != nil {
+		return x.Reason
 	}
 	return ImageState_NO_ERROR
 }
 
-func (m *ImageState) GetImageState() ImageState_ImageActivationState {
-	if m != nil {
-		return m.ImageState
+func (x *ImageState) GetImageState() ImageState_ImageActivationState {
+	if x != nil {
+		return x.ImageState
 	}
 	return ImageState_IMAGE_UNKNOWN
 }
 
 type Port struct {
-	PortNo     uint32                  `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
-	Label      string                  `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"`
-	Type       Port_PortType           `protobuf:"varint,3,opt,name=type,proto3,enum=device.Port_PortType" json:"type,omitempty"`
+	state      protoimpl.MessageState  `protogen:"open.v1"`
+	PortNo     uint32                  `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`         // Device-unique port number
+	Label      string                  `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"`                          // Arbitrary port label
+	Type       Port_PortType           `protobuf:"varint,3,opt,name=type,proto3,enum=device.Port_PortType" json:"type,omitempty"` //  Type of port
 	AdminState common.AdminState_Types `protobuf:"varint,5,opt,name=admin_state,json=adminState,proto3,enum=common.AdminState_Types" json:"admin_state,omitempty"`
 	OperStatus common.OperStatus_Types `protobuf:"varint,6,opt,name=oper_status,json=operStatus,proto3,enum=common.OperStatus_Types" json:"oper_status,omitempty"`
-	DeviceId   string                  `protobuf:"bytes,7,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	DeviceId   string                  `protobuf:"bytes,7,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"` // Unique .id of device that owns this port
 	Peers      []*Port_PeerPort        `protobuf:"bytes,8,rep,name=peers,proto3" json:"peers,omitempty"`
 	RxPackets  uint64                  `protobuf:"fixed64,9,opt,name=rx_packets,json=rxPackets,proto3" json:"rx_packets,omitempty"`
 	RxBytes    uint64                  `protobuf:"fixed64,10,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"`
@@ -1398,223 +1675,186 @@
 	// ofp_port represents the characteristics of a port, e.g. hardware
 	// address and supported features.  This field is relevant only for
 	// UNI and NNI ports.   For PON ports, it can be left empty.
-	OfpPort              *openflow_13.OfpPort `protobuf:"bytes,15,opt,name=ofp_port,json=ofpPort,proto3" json:"ofp_port,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	OfpPort       *openflow_13.OfpPort `protobuf:"bytes,15,opt,name=ofp_port,json=ofpPort,proto3" json:"ofp_port,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *Port) Reset()         { *m = Port{} }
-func (m *Port) String() string { return proto.CompactTextString(m) }
-func (*Port) ProtoMessage()    {}
+func (x *Port) Reset() {
+	*x = Port{}
+	mi := &file_voltha_protos_device_proto_msgTypes[13]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Port) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Port) ProtoMessage() {}
+
+func (x *Port) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[13]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Port.ProtoReflect.Descriptor instead.
 func (*Port) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{13}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{13}
 }
 
-func (m *Port) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Port.Unmarshal(m, b)
-}
-func (m *Port) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Port.Marshal(b, m, deterministic)
-}
-func (m *Port) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Port.Merge(m, src)
-}
-func (m *Port) XXX_Size() int {
-	return xxx_messageInfo_Port.Size(m)
-}
-func (m *Port) XXX_DiscardUnknown() {
-	xxx_messageInfo_Port.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Port proto.InternalMessageInfo
-
-func (m *Port) GetPortNo() uint32 {
-	if m != nil {
-		return m.PortNo
+func (x *Port) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
 	}
 	return 0
 }
 
-func (m *Port) GetLabel() string {
-	if m != nil {
-		return m.Label
+func (x *Port) GetLabel() string {
+	if x != nil {
+		return x.Label
 	}
 	return ""
 }
 
-func (m *Port) GetType() Port_PortType {
-	if m != nil {
-		return m.Type
+func (x *Port) GetType() Port_PortType {
+	if x != nil {
+		return x.Type
 	}
 	return Port_UNKNOWN
 }
 
-func (m *Port) GetAdminState() common.AdminState_Types {
-	if m != nil {
-		return m.AdminState
+func (x *Port) GetAdminState() common.AdminState_Types {
+	if x != nil {
+		return x.AdminState
 	}
-	return common.AdminState_UNKNOWN
+	return common.AdminState_Types(0)
 }
 
-func (m *Port) GetOperStatus() common.OperStatus_Types {
-	if m != nil {
-		return m.OperStatus
+func (x *Port) GetOperStatus() common.OperStatus_Types {
+	if x != nil {
+		return x.OperStatus
 	}
-	return common.OperStatus_UNKNOWN
+	return common.OperStatus_Types(0)
 }
 
-func (m *Port) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *Port) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *Port) GetPeers() []*Port_PeerPort {
-	if m != nil {
-		return m.Peers
+func (x *Port) GetPeers() []*Port_PeerPort {
+	if x != nil {
+		return x.Peers
 	}
 	return nil
 }
 
-func (m *Port) GetRxPackets() uint64 {
-	if m != nil {
-		return m.RxPackets
+func (x *Port) GetRxPackets() uint64 {
+	if x != nil {
+		return x.RxPackets
 	}
 	return 0
 }
 
-func (m *Port) GetRxBytes() uint64 {
-	if m != nil {
-		return m.RxBytes
+func (x *Port) GetRxBytes() uint64 {
+	if x != nil {
+		return x.RxBytes
 	}
 	return 0
 }
 
-func (m *Port) GetRxErrors() uint64 {
-	if m != nil {
-		return m.RxErrors
+func (x *Port) GetRxErrors() uint64 {
+	if x != nil {
+		return x.RxErrors
 	}
 	return 0
 }
 
-func (m *Port) GetTxPackets() uint64 {
-	if m != nil {
-		return m.TxPackets
+func (x *Port) GetTxPackets() uint64 {
+	if x != nil {
+		return x.TxPackets
 	}
 	return 0
 }
 
-func (m *Port) GetTxBytes() uint64 {
-	if m != nil {
-		return m.TxBytes
+func (x *Port) GetTxBytes() uint64 {
+	if x != nil {
+		return x.TxBytes
 	}
 	return 0
 }
 
-func (m *Port) GetTxErrors() uint64 {
-	if m != nil {
-		return m.TxErrors
+func (x *Port) GetTxErrors() uint64 {
+	if x != nil {
+		return x.TxErrors
 	}
 	return 0
 }
 
-func (m *Port) GetOfpPort() *openflow_13.OfpPort {
-	if m != nil {
-		return m.OfpPort
+func (x *Port) GetOfpPort() *openflow_13.OfpPort {
+	if x != nil {
+		return x.OfpPort
 	}
 	return nil
 }
 
-type Port_PeerPort struct {
-	DeviceId             string   `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	PortNo               uint32   `protobuf:"varint,2,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Port_PeerPort) Reset()         { *m = Port_PeerPort{} }
-func (m *Port_PeerPort) String() string { return proto.CompactTextString(m) }
-func (*Port_PeerPort) ProtoMessage()    {}
-func (*Port_PeerPort) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{13, 0}
-}
-
-func (m *Port_PeerPort) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Port_PeerPort.Unmarshal(m, b)
-}
-func (m *Port_PeerPort) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Port_PeerPort.Marshal(b, m, deterministic)
-}
-func (m *Port_PeerPort) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Port_PeerPort.Merge(m, src)
-}
-func (m *Port_PeerPort) XXX_Size() int {
-	return xxx_messageInfo_Port_PeerPort.Size(m)
-}
-func (m *Port_PeerPort) XXX_DiscardUnknown() {
-	xxx_messageInfo_Port_PeerPort.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Port_PeerPort proto.InternalMessageInfo
-
-func (m *Port_PeerPort) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
-	}
-	return ""
-}
-
-func (m *Port_PeerPort) GetPortNo() uint32 {
-	if m != nil {
-		return m.PortNo
-	}
-	return 0
-}
-
 type Ports struct {
-	Items                []*Port  `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*Port                `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *Ports) Reset()         { *m = Ports{} }
-func (m *Ports) String() string { return proto.CompactTextString(m) }
-func (*Ports) ProtoMessage()    {}
+func (x *Ports) Reset() {
+	*x = Ports{}
+	mi := &file_voltha_protos_device_proto_msgTypes[14]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Ports) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Ports) ProtoMessage() {}
+
+func (x *Ports) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[14]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Ports.ProtoReflect.Descriptor instead.
 func (*Ports) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{14}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{14}
 }
 
-func (m *Ports) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Ports.Unmarshal(m, b)
-}
-func (m *Ports) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Ports.Marshal(b, m, deterministic)
-}
-func (m *Ports) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Ports.Merge(m, src)
-}
-func (m *Ports) XXX_Size() int {
-	return xxx_messageInfo_Ports.Size(m)
-}
-func (m *Ports) XXX_DiscardUnknown() {
-	xxx_messageInfo_Ports.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Ports proto.InternalMessageInfo
-
-func (m *Ports) GetItems() []*Port {
-	if m != nil {
-		return m.Items
+func (x *Ports) GetItems() []*Port {
+	if x != nil {
+		return x.Items
 	}
 	return nil
 }
 
 // A Physical Device instance
 type Device struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Voltha's device identifier
 	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 	// Device type, refers to one of the registered device types
@@ -1642,165 +1882,270 @@
 	// Device contact MAC address (format: "xx:xx:xx:xx:xx:xx")
 	MacAddress string `protobuf:"bytes,13,opt,name=mac_address,json=macAddress,proto3" json:"mac_address,omitempty"`
 	// Types that are valid to be assigned to Address:
+	//
 	//	*Device_Ipv4Address
 	//	*Device_Ipv6Address
 	//	*Device_HostAndPort
 	Address       isDevice_Address           `protobuf_oneof:"address"`
-	ExtraArgs     string                     `protobuf:"bytes,23,opt,name=extra_args,json=extraArgs,proto3" json:"extra_args,omitempty"`
+	ExtraArgs     string                     `protobuf:"bytes,23,opt,name=extra_args,json=extraArgs,proto3" json:"extra_args,omitempty"` // Used to pass additional device specific arguments
 	ProxyAddress  *Device_ProxyAddress       `protobuf:"bytes,19,opt,name=proxy_address,json=proxyAddress,proto3" json:"proxy_address,omitempty"`
 	AdminState    common.AdminState_Types    `protobuf:"varint,16,opt,name=admin_state,json=adminState,proto3,enum=common.AdminState_Types" json:"admin_state,omitempty"`
 	OperStatus    common.OperStatus_Types    `protobuf:"varint,17,opt,name=oper_status,json=operStatus,proto3,enum=common.OperStatus_Types" json:"oper_status,omitempty"`
-	Reason        string                     `protobuf:"bytes,22,opt,name=reason,proto3" json:"reason,omitempty"`
+	Reason        string                     `protobuf:"bytes,22,opt,name=reason,proto3" json:"reason,omitempty"` //  Used in FAILED state
 	ConnectStatus common.ConnectStatus_Types `protobuf:"varint,18,opt,name=connect_status,json=connectStatus,proto3,enum=common.ConnectStatus_Types" json:"connect_status,omitempty"`
 	// Device type specific attributes
-	Custom *any.Any `protobuf:"bytes,64,opt,name=custom,proto3" json:"custom,omitempty"`
+	Custom *anypb.Any `protobuf:"bytes,64,opt,name=custom,proto3" json:"custom,omitempty"`
 	// PmConfigs type
-	PmConfigs            *PmConfigs       `protobuf:"bytes,131,opt,name=pm_configs,json=pmConfigs,proto3" json:"pm_configs,omitempty"`
-	ImageDownloads       []*ImageDownload `protobuf:"bytes,133,rep,name=image_downloads,json=imageDownloads,proto3" json:"image_downloads,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	PmConfigs      *PmConfigs       `protobuf:"bytes,131,opt,name=pm_configs,json=pmConfigs,proto3" json:"pm_configs,omitempty"`
+	ImageDownloads []*ImageDownload `protobuf:"bytes,133,rep,name=image_downloads,json=imageDownloads,proto3" json:"image_downloads,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *Device) Reset()         { *m = Device{} }
-func (m *Device) String() string { return proto.CompactTextString(m) }
-func (*Device) ProtoMessage()    {}
+func (x *Device) Reset() {
+	*x = Device{}
+	mi := &file_voltha_protos_device_proto_msgTypes[15]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Device) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Device) ProtoMessage() {}
+
+func (x *Device) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[15]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Device.ProtoReflect.Descriptor instead.
 func (*Device) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{15}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{15}
 }
 
-func (m *Device) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Device.Unmarshal(m, b)
-}
-func (m *Device) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Device.Marshal(b, m, deterministic)
-}
-func (m *Device) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Device.Merge(m, src)
-}
-func (m *Device) XXX_Size() int {
-	return xxx_messageInfo_Device.Size(m)
-}
-func (m *Device) XXX_DiscardUnknown() {
-	xxx_messageInfo_Device.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Device proto.InternalMessageInfo
-
-func (m *Device) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *Device) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *Device) GetType() string {
-	if m != nil {
-		return m.Type
+func (x *Device) GetType() string {
+	if x != nil {
+		return x.Type
 	}
 	return ""
 }
 
-func (m *Device) GetRoot() bool {
-	if m != nil {
-		return m.Root
+func (x *Device) GetRoot() bool {
+	if x != nil {
+		return x.Root
 	}
 	return false
 }
 
-func (m *Device) GetParentId() string {
-	if m != nil {
-		return m.ParentId
+func (x *Device) GetParentId() string {
+	if x != nil {
+		return x.ParentId
 	}
 	return ""
 }
 
-func (m *Device) GetParentPortNo() uint32 {
-	if m != nil {
-		return m.ParentPortNo
+func (x *Device) GetParentPortNo() uint32 {
+	if x != nil {
+		return x.ParentPortNo
 	}
 	return 0
 }
 
-func (m *Device) GetVendor() string {
-	if m != nil {
-		return m.Vendor
+func (x *Device) GetVendor() string {
+	if x != nil {
+		return x.Vendor
 	}
 	return ""
 }
 
-func (m *Device) GetModel() string {
-	if m != nil {
-		return m.Model
+func (x *Device) GetModel() string {
+	if x != nil {
+		return x.Model
 	}
 	return ""
 }
 
-func (m *Device) GetHardwareVersion() string {
-	if m != nil {
-		return m.HardwareVersion
+func (x *Device) GetHardwareVersion() string {
+	if x != nil {
+		return x.HardwareVersion
 	}
 	return ""
 }
 
-func (m *Device) GetFirmwareVersion() string {
-	if m != nil {
-		return m.FirmwareVersion
+func (x *Device) GetFirmwareVersion() string {
+	if x != nil {
+		return x.FirmwareVersion
 	}
 	return ""
 }
 
-func (m *Device) GetImages() *Images {
-	if m != nil {
-		return m.Images
+func (x *Device) GetImages() *Images {
+	if x != nil {
+		return x.Images
 	}
 	return nil
 }
 
-func (m *Device) GetSerialNumber() string {
-	if m != nil {
-		return m.SerialNumber
+func (x *Device) GetSerialNumber() string {
+	if x != nil {
+		return x.SerialNumber
 	}
 	return ""
 }
 
-func (m *Device) GetVendorId() string {
-	if m != nil {
-		return m.VendorId
+func (x *Device) GetVendorId() string {
+	if x != nil {
+		return x.VendorId
 	}
 	return ""
 }
 
-func (m *Device) GetAdapterEndpoint() string {
-	if m != nil {
-		return m.AdapterEndpoint
+func (x *Device) GetAdapterEndpoint() string {
+	if x != nil {
+		return x.AdapterEndpoint
 	}
 	return ""
 }
 
-func (m *Device) GetVlan() uint32 {
-	if m != nil {
-		return m.Vlan
+func (x *Device) GetVlan() uint32 {
+	if x != nil {
+		return x.Vlan
 	}
 	return 0
 }
 
-func (m *Device) GetMacAddress() string {
-	if m != nil {
-		return m.MacAddress
+func (x *Device) GetMacAddress() string {
+	if x != nil {
+		return x.MacAddress
 	}
 	return ""
 }
 
+func (x *Device) GetAddress() isDevice_Address {
+	if x != nil {
+		return x.Address
+	}
+	return nil
+}
+
+func (x *Device) GetIpv4Address() string {
+	if x != nil {
+		if x, ok := x.Address.(*Device_Ipv4Address); ok {
+			return x.Ipv4Address
+		}
+	}
+	return ""
+}
+
+func (x *Device) GetIpv6Address() string {
+	if x != nil {
+		if x, ok := x.Address.(*Device_Ipv6Address); ok {
+			return x.Ipv6Address
+		}
+	}
+	return ""
+}
+
+func (x *Device) GetHostAndPort() string {
+	if x != nil {
+		if x, ok := x.Address.(*Device_HostAndPort); ok {
+			return x.HostAndPort
+		}
+	}
+	return ""
+}
+
+func (x *Device) GetExtraArgs() string {
+	if x != nil {
+		return x.ExtraArgs
+	}
+	return ""
+}
+
+func (x *Device) GetProxyAddress() *Device_ProxyAddress {
+	if x != nil {
+		return x.ProxyAddress
+	}
+	return nil
+}
+
+func (x *Device) GetAdminState() common.AdminState_Types {
+	if x != nil {
+		return x.AdminState
+	}
+	return common.AdminState_Types(0)
+}
+
+func (x *Device) GetOperStatus() common.OperStatus_Types {
+	if x != nil {
+		return x.OperStatus
+	}
+	return common.OperStatus_Types(0)
+}
+
+func (x *Device) GetReason() string {
+	if x != nil {
+		return x.Reason
+	}
+	return ""
+}
+
+func (x *Device) GetConnectStatus() common.ConnectStatus_Types {
+	if x != nil {
+		return x.ConnectStatus
+	}
+	return common.ConnectStatus_Types(0)
+}
+
+func (x *Device) GetCustom() *anypb.Any {
+	if x != nil {
+		return x.Custom
+	}
+	return nil
+}
+
+func (x *Device) GetPmConfigs() *PmConfigs {
+	if x != nil {
+		return x.PmConfigs
+	}
+	return nil
+}
+
+func (x *Device) GetImageDownloads() []*ImageDownload {
+	if x != nil {
+		return x.ImageDownloads
+	}
+	return nil
+}
+
 type isDevice_Address interface {
 	isDevice_Address()
 }
 
 type Device_Ipv4Address struct {
+	// Device contact IPv4 address (format: "a.b.c.d" or can use hostname too)
 	Ipv4Address string `protobuf:"bytes,14,opt,name=ipv4_address,json=ipv4Address,proto3,oneof"`
 }
 
 type Device_Ipv6Address struct {
+	// Device contact IPv6 address using the canonical string form
+	// ("xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx")
 	Ipv6Address string `protobuf:"bytes,15,opt,name=ipv6_address,json=ipv6Address,proto3,oneof"`
 }
 
@@ -1814,656 +2159,536 @@
 
 func (*Device_HostAndPort) isDevice_Address() {}
 
-func (m *Device) GetAddress() isDevice_Address {
-	if m != nil {
-		return m.Address
-	}
-	return nil
-}
-
-func (m *Device) GetIpv4Address() string {
-	if x, ok := m.GetAddress().(*Device_Ipv4Address); ok {
-		return x.Ipv4Address
-	}
-	return ""
-}
-
-func (m *Device) GetIpv6Address() string {
-	if x, ok := m.GetAddress().(*Device_Ipv6Address); ok {
-		return x.Ipv6Address
-	}
-	return ""
-}
-
-func (m *Device) GetHostAndPort() string {
-	if x, ok := m.GetAddress().(*Device_HostAndPort); ok {
-		return x.HostAndPort
-	}
-	return ""
-}
-
-func (m *Device) GetExtraArgs() string {
-	if m != nil {
-		return m.ExtraArgs
-	}
-	return ""
-}
-
-func (m *Device) GetProxyAddress() *Device_ProxyAddress {
-	if m != nil {
-		return m.ProxyAddress
-	}
-	return nil
-}
-
-func (m *Device) GetAdminState() common.AdminState_Types {
-	if m != nil {
-		return m.AdminState
-	}
-	return common.AdminState_UNKNOWN
-}
-
-func (m *Device) GetOperStatus() common.OperStatus_Types {
-	if m != nil {
-		return m.OperStatus
-	}
-	return common.OperStatus_UNKNOWN
-}
-
-func (m *Device) GetReason() string {
-	if m != nil {
-		return m.Reason
-	}
-	return ""
-}
-
-func (m *Device) GetConnectStatus() common.ConnectStatus_Types {
-	if m != nil {
-		return m.ConnectStatus
-	}
-	return common.ConnectStatus_UNKNOWN
-}
-
-func (m *Device) GetCustom() *any.Any {
-	if m != nil {
-		return m.Custom
-	}
-	return nil
-}
-
-func (m *Device) GetPmConfigs() *PmConfigs {
-	if m != nil {
-		return m.PmConfigs
-	}
-	return nil
-}
-
-func (m *Device) GetImageDownloads() []*ImageDownload {
-	if m != nil {
-		return m.ImageDownloads
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*Device) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*Device_Ipv4Address)(nil),
-		(*Device_Ipv6Address)(nil),
-		(*Device_HostAndPort)(nil),
-	}
-}
-
-type Device_ProxyAddress struct {
-	DeviceId             string   `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	DeviceType           string   `protobuf:"bytes,2,opt,name=device_type,json=deviceType,proto3" json:"device_type,omitempty"`
-	ChannelId            uint32   `protobuf:"varint,3,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
-	ChannelGroupId       uint32   `protobuf:"varint,4,opt,name=channel_group_id,json=channelGroupId,proto3" json:"channel_group_id,omitempty"`
-	ChannelTermination   string   `protobuf:"bytes,5,opt,name=channel_termination,json=channelTermination,proto3" json:"channel_termination,omitempty"`
-	OnuId                uint32   `protobuf:"varint,6,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
-	OnuSessionId         uint32   `protobuf:"varint,7,opt,name=onu_session_id,json=onuSessionId,proto3" json:"onu_session_id,omitempty"`
-	AdapterEndpoint      string   `protobuf:"bytes,8,opt,name=adapter_endpoint,json=adapterEndpoint,proto3" json:"adapter_endpoint,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Device_ProxyAddress) Reset()         { *m = Device_ProxyAddress{} }
-func (m *Device_ProxyAddress) String() string { return proto.CompactTextString(m) }
-func (*Device_ProxyAddress) ProtoMessage()    {}
-func (*Device_ProxyAddress) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{15, 0}
-}
-
-func (m *Device_ProxyAddress) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Device_ProxyAddress.Unmarshal(m, b)
-}
-func (m *Device_ProxyAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Device_ProxyAddress.Marshal(b, m, deterministic)
-}
-func (m *Device_ProxyAddress) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Device_ProxyAddress.Merge(m, src)
-}
-func (m *Device_ProxyAddress) XXX_Size() int {
-	return xxx_messageInfo_Device_ProxyAddress.Size(m)
-}
-func (m *Device_ProxyAddress) XXX_DiscardUnknown() {
-	xxx_messageInfo_Device_ProxyAddress.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Device_ProxyAddress proto.InternalMessageInfo
-
-func (m *Device_ProxyAddress) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
-	}
-	return ""
-}
-
-func (m *Device_ProxyAddress) GetDeviceType() string {
-	if m != nil {
-		return m.DeviceType
-	}
-	return ""
-}
-
-func (m *Device_ProxyAddress) GetChannelId() uint32 {
-	if m != nil {
-		return m.ChannelId
-	}
-	return 0
-}
-
-func (m *Device_ProxyAddress) GetChannelGroupId() uint32 {
-	if m != nil {
-		return m.ChannelGroupId
-	}
-	return 0
-}
-
-func (m *Device_ProxyAddress) GetChannelTermination() string {
-	if m != nil {
-		return m.ChannelTermination
-	}
-	return ""
-}
-
-func (m *Device_ProxyAddress) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
-	}
-	return 0
-}
-
-func (m *Device_ProxyAddress) GetOnuSessionId() uint32 {
-	if m != nil {
-		return m.OnuSessionId
-	}
-	return 0
-}
-
-func (m *Device_ProxyAddress) GetAdapterEndpoint() string {
-	if m != nil {
-		return m.AdapterEndpoint
-	}
-	return ""
-}
-
 type DeviceImageDownloadRequest struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Device Id
 	// allows for operations on multiple devices.
 	DeviceId []*common.ID `protobuf:"bytes,1,rep,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	//The image for the device containing all the information
+	// The image for the device containing all the information
 	Image *Image `protobuf:"bytes,2,opt,name=image,proto3" json:"image,omitempty"`
-	//Activate the image if the download to the device is successful
+	// Activate the image if the download to the device is successful
 	ActivateOnSuccess bool `protobuf:"varint,3,opt,name=activateOnSuccess,proto3" json:"activateOnSuccess,omitempty"`
-	//Automatically commit the image if the activation on the device is successful
-	CommitOnSuccess      bool     `protobuf:"varint,4,opt,name=commitOnSuccess,proto3" json:"commitOnSuccess,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	// Automatically commit the image if the activation on the device is successful
+	CommitOnSuccess bool `protobuf:"varint,4,opt,name=commitOnSuccess,proto3" json:"commitOnSuccess,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
-func (m *DeviceImageDownloadRequest) Reset()         { *m = DeviceImageDownloadRequest{} }
-func (m *DeviceImageDownloadRequest) String() string { return proto.CompactTextString(m) }
-func (*DeviceImageDownloadRequest) ProtoMessage()    {}
+func (x *DeviceImageDownloadRequest) Reset() {
+	*x = DeviceImageDownloadRequest{}
+	mi := &file_voltha_protos_device_proto_msgTypes[16]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DeviceImageDownloadRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeviceImageDownloadRequest) ProtoMessage() {}
+
+func (x *DeviceImageDownloadRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[16]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeviceImageDownloadRequest.ProtoReflect.Descriptor instead.
 func (*DeviceImageDownloadRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{16}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{16}
 }
 
-func (m *DeviceImageDownloadRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeviceImageDownloadRequest.Unmarshal(m, b)
-}
-func (m *DeviceImageDownloadRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeviceImageDownloadRequest.Marshal(b, m, deterministic)
-}
-func (m *DeviceImageDownloadRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceImageDownloadRequest.Merge(m, src)
-}
-func (m *DeviceImageDownloadRequest) XXX_Size() int {
-	return xxx_messageInfo_DeviceImageDownloadRequest.Size(m)
-}
-func (m *DeviceImageDownloadRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeviceImageDownloadRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeviceImageDownloadRequest proto.InternalMessageInfo
-
-func (m *DeviceImageDownloadRequest) GetDeviceId() []*common.ID {
-	if m != nil {
-		return m.DeviceId
+func (x *DeviceImageDownloadRequest) GetDeviceId() []*common.ID {
+	if x != nil {
+		return x.DeviceId
 	}
 	return nil
 }
 
-func (m *DeviceImageDownloadRequest) GetImage() *Image {
-	if m != nil {
-		return m.Image
+func (x *DeviceImageDownloadRequest) GetImage() *Image {
+	if x != nil {
+		return x.Image
 	}
 	return nil
 }
 
-func (m *DeviceImageDownloadRequest) GetActivateOnSuccess() bool {
-	if m != nil {
-		return m.ActivateOnSuccess
+func (x *DeviceImageDownloadRequest) GetActivateOnSuccess() bool {
+	if x != nil {
+		return x.ActivateOnSuccess
 	}
 	return false
 }
 
-func (m *DeviceImageDownloadRequest) GetCommitOnSuccess() bool {
-	if m != nil {
-		return m.CommitOnSuccess
+func (x *DeviceImageDownloadRequest) GetCommitOnSuccess() bool {
+	if x != nil {
+		return x.CommitOnSuccess
 	}
 	return false
 }
 
 type DeviceImageRequest struct {
-	//Device Id
-	//allows for operations on multiple adapters.
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// Device Id
+	// allows for operations on multiple adapters.
 	DeviceId []*common.ID `protobuf:"bytes,1,rep,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
 	// Image Version, this is the sole identifier of the image. it's the vendor specified OMCI version
 	// must be known at the time of initiating a download, activate, commit image on an onu.
 	Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
-	//Automatically commit the image if the activation on the device is successful
-	CommitOnSuccess      bool     `protobuf:"varint,3,opt,name=commitOnSuccess,proto3" json:"commitOnSuccess,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	// Automatically commit the image if the activation on the device is successful
+	CommitOnSuccess bool `protobuf:"varint,3,opt,name=commitOnSuccess,proto3" json:"commitOnSuccess,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
-func (m *DeviceImageRequest) Reset()         { *m = DeviceImageRequest{} }
-func (m *DeviceImageRequest) String() string { return proto.CompactTextString(m) }
-func (*DeviceImageRequest) ProtoMessage()    {}
+func (x *DeviceImageRequest) Reset() {
+	*x = DeviceImageRequest{}
+	mi := &file_voltha_protos_device_proto_msgTypes[17]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DeviceImageRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeviceImageRequest) ProtoMessage() {}
+
+func (x *DeviceImageRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[17]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeviceImageRequest.ProtoReflect.Descriptor instead.
 func (*DeviceImageRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{17}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{17}
 }
 
-func (m *DeviceImageRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeviceImageRequest.Unmarshal(m, b)
-}
-func (m *DeviceImageRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeviceImageRequest.Marshal(b, m, deterministic)
-}
-func (m *DeviceImageRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceImageRequest.Merge(m, src)
-}
-func (m *DeviceImageRequest) XXX_Size() int {
-	return xxx_messageInfo_DeviceImageRequest.Size(m)
-}
-func (m *DeviceImageRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeviceImageRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeviceImageRequest proto.InternalMessageInfo
-
-func (m *DeviceImageRequest) GetDeviceId() []*common.ID {
-	if m != nil {
-		return m.DeviceId
+func (x *DeviceImageRequest) GetDeviceId() []*common.ID {
+	if x != nil {
+		return x.DeviceId
 	}
 	return nil
 }
 
-func (m *DeviceImageRequest) GetVersion() string {
-	if m != nil {
-		return m.Version
+func (x *DeviceImageRequest) GetVersion() string {
+	if x != nil {
+		return x.Version
 	}
 	return ""
 }
 
-func (m *DeviceImageRequest) GetCommitOnSuccess() bool {
-	if m != nil {
-		return m.CommitOnSuccess
+func (x *DeviceImageRequest) GetCommitOnSuccess() bool {
+	if x != nil {
+		return x.CommitOnSuccess
 	}
 	return false
 }
 
 type DeviceImageResponse struct {
-	//Image state for the different devices
-	DeviceImageStates    []*DeviceImageState `protobuf:"bytes,1,rep,name=device_image_states,json=deviceImageStates,proto3" json:"device_image_states,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// Image state for the different devices
+	DeviceImageStates []*DeviceImageState `protobuf:"bytes,1,rep,name=device_image_states,json=deviceImageStates,proto3" json:"device_image_states,omitempty"`
+	unknownFields     protoimpl.UnknownFields
+	sizeCache         protoimpl.SizeCache
 }
 
-func (m *DeviceImageResponse) Reset()         { *m = DeviceImageResponse{} }
-func (m *DeviceImageResponse) String() string { return proto.CompactTextString(m) }
-func (*DeviceImageResponse) ProtoMessage()    {}
+func (x *DeviceImageResponse) Reset() {
+	*x = DeviceImageResponse{}
+	mi := &file_voltha_protos_device_proto_msgTypes[18]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DeviceImageResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeviceImageResponse) ProtoMessage() {}
+
+func (x *DeviceImageResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[18]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeviceImageResponse.ProtoReflect.Descriptor instead.
 func (*DeviceImageResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{18}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{18}
 }
 
-func (m *DeviceImageResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeviceImageResponse.Unmarshal(m, b)
-}
-func (m *DeviceImageResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeviceImageResponse.Marshal(b, m, deterministic)
-}
-func (m *DeviceImageResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceImageResponse.Merge(m, src)
-}
-func (m *DeviceImageResponse) XXX_Size() int {
-	return xxx_messageInfo_DeviceImageResponse.Size(m)
-}
-func (m *DeviceImageResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeviceImageResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeviceImageResponse proto.InternalMessageInfo
-
-func (m *DeviceImageResponse) GetDeviceImageStates() []*DeviceImageState {
-	if m != nil {
-		return m.DeviceImageStates
+func (x *DeviceImageResponse) GetDeviceImageStates() []*DeviceImageState {
+	if x != nil {
+		return x.DeviceImageStates
 	}
 	return nil
 }
 
 // Device Self Test Response
 type SelfTestResponse struct {
-	Result               SelfTestResponse_SelfTestResult `protobuf:"varint,1,opt,name=result,proto3,enum=device.SelfTestResponse_SelfTestResult" json:"result,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                        `json:"-"`
-	XXX_unrecognized     []byte                          `json:"-"`
-	XXX_sizecache        int32                           `json:"-"`
+	state         protoimpl.MessageState          `protogen:"open.v1"`
+	Result        SelfTestResponse_SelfTestResult `protobuf:"varint,1,opt,name=result,proto3,enum=device.SelfTestResponse_SelfTestResult" json:"result,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *SelfTestResponse) Reset()         { *m = SelfTestResponse{} }
-func (m *SelfTestResponse) String() string { return proto.CompactTextString(m) }
-func (*SelfTestResponse) ProtoMessage()    {}
+func (x *SelfTestResponse) Reset() {
+	*x = SelfTestResponse{}
+	mi := &file_voltha_protos_device_proto_msgTypes[19]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SelfTestResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SelfTestResponse) ProtoMessage() {}
+
+func (x *SelfTestResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[19]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SelfTestResponse.ProtoReflect.Descriptor instead.
 func (*SelfTestResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{19}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{19}
 }
 
-func (m *SelfTestResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SelfTestResponse.Unmarshal(m, b)
-}
-func (m *SelfTestResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SelfTestResponse.Marshal(b, m, deterministic)
-}
-func (m *SelfTestResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SelfTestResponse.Merge(m, src)
-}
-func (m *SelfTestResponse) XXX_Size() int {
-	return xxx_messageInfo_SelfTestResponse.Size(m)
-}
-func (m *SelfTestResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_SelfTestResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SelfTestResponse proto.InternalMessageInfo
-
-func (m *SelfTestResponse) GetResult() SelfTestResponse_SelfTestResult {
-	if m != nil {
-		return m.Result
+func (x *SelfTestResponse) GetResult() SelfTestResponse_SelfTestResult {
+	if x != nil {
+		return x.Result
 	}
 	return SelfTestResponse_SUCCESS
 }
 
 type Devices struct {
-	Items                []*Device `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
-	XXX_unrecognized     []byte    `json:"-"`
-	XXX_sizecache        int32     `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*Device              `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *Devices) Reset()         { *m = Devices{} }
-func (m *Devices) String() string { return proto.CompactTextString(m) }
-func (*Devices) ProtoMessage()    {}
+func (x *Devices) Reset() {
+	*x = Devices{}
+	mi := &file_voltha_protos_device_proto_msgTypes[20]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Devices) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Devices) ProtoMessage() {}
+
+func (x *Devices) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[20]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Devices.ProtoReflect.Descriptor instead.
 func (*Devices) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{20}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{20}
 }
 
-func (m *Devices) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Devices.Unmarshal(m, b)
-}
-func (m *Devices) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Devices.Marshal(b, m, deterministic)
-}
-func (m *Devices) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Devices.Merge(m, src)
-}
-func (m *Devices) XXX_Size() int {
-	return xxx_messageInfo_Devices.Size(m)
-}
-func (m *Devices) XXX_DiscardUnknown() {
-	xxx_messageInfo_Devices.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Devices proto.InternalMessageInfo
-
-func (m *Devices) GetItems() []*Device {
-	if m != nil {
-		return m.Items
+func (x *Devices) GetItems() []*Device {
+	if x != nil {
+		return x.Items
 	}
 	return nil
 }
 
 type SimulateAlarmRequest struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Device Identifier
-	Id                   string                             `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	Indicator            string                             `protobuf:"bytes,2,opt,name=indicator,proto3" json:"indicator,omitempty"`
-	IntfId               string                             `protobuf:"bytes,3,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
-	PortTypeName         string                             `protobuf:"bytes,4,opt,name=port_type_name,json=portTypeName,proto3" json:"port_type_name,omitempty"`
-	OnuDeviceId          string                             `protobuf:"bytes,5,opt,name=onu_device_id,json=onuDeviceId,proto3" json:"onu_device_id,omitempty"`
-	InverseBitErrorRate  int32                              `protobuf:"varint,6,opt,name=inverse_bit_error_rate,json=inverseBitErrorRate,proto3" json:"inverse_bit_error_rate,omitempty"`
-	Drift                int32                              `protobuf:"varint,7,opt,name=drift,proto3" json:"drift,omitempty"`
-	NewEqd               int32                              `protobuf:"varint,8,opt,name=new_eqd,json=newEqd,proto3" json:"new_eqd,omitempty"`
-	OnuSerialNumber      string                             `protobuf:"bytes,9,opt,name=onu_serial_number,json=onuSerialNumber,proto3" json:"onu_serial_number,omitempty"`
-	Operation            SimulateAlarmRequest_OperationType `protobuf:"varint,10,opt,name=operation,proto3,enum=device.SimulateAlarmRequest_OperationType" json:"operation,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                           `json:"-"`
-	XXX_unrecognized     []byte                             `json:"-"`
-	XXX_sizecache        int32                              `json:"-"`
+	Id                  string                             `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	Indicator           string                             `protobuf:"bytes,2,opt,name=indicator,proto3" json:"indicator,omitempty"`
+	IntfId              string                             `protobuf:"bytes,3,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	PortTypeName        string                             `protobuf:"bytes,4,opt,name=port_type_name,json=portTypeName,proto3" json:"port_type_name,omitempty"`
+	OnuDeviceId         string                             `protobuf:"bytes,5,opt,name=onu_device_id,json=onuDeviceId,proto3" json:"onu_device_id,omitempty"`
+	InverseBitErrorRate int32                              `protobuf:"varint,6,opt,name=inverse_bit_error_rate,json=inverseBitErrorRate,proto3" json:"inverse_bit_error_rate,omitempty"`
+	Drift               int32                              `protobuf:"varint,7,opt,name=drift,proto3" json:"drift,omitempty"`
+	NewEqd              int32                              `protobuf:"varint,8,opt,name=new_eqd,json=newEqd,proto3" json:"new_eqd,omitempty"`
+	OnuSerialNumber     string                             `protobuf:"bytes,9,opt,name=onu_serial_number,json=onuSerialNumber,proto3" json:"onu_serial_number,omitempty"`
+	Operation           SimulateAlarmRequest_OperationType `protobuf:"varint,10,opt,name=operation,proto3,enum=device.SimulateAlarmRequest_OperationType" json:"operation,omitempty"`
+	unknownFields       protoimpl.UnknownFields
+	sizeCache           protoimpl.SizeCache
 }
 
-func (m *SimulateAlarmRequest) Reset()         { *m = SimulateAlarmRequest{} }
-func (m *SimulateAlarmRequest) String() string { return proto.CompactTextString(m) }
-func (*SimulateAlarmRequest) ProtoMessage()    {}
+func (x *SimulateAlarmRequest) Reset() {
+	*x = SimulateAlarmRequest{}
+	mi := &file_voltha_protos_device_proto_msgTypes[21]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SimulateAlarmRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SimulateAlarmRequest) ProtoMessage() {}
+
+func (x *SimulateAlarmRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[21]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SimulateAlarmRequest.ProtoReflect.Descriptor instead.
 func (*SimulateAlarmRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{21}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{21}
 }
 
-func (m *SimulateAlarmRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SimulateAlarmRequest.Unmarshal(m, b)
-}
-func (m *SimulateAlarmRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SimulateAlarmRequest.Marshal(b, m, deterministic)
-}
-func (m *SimulateAlarmRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SimulateAlarmRequest.Merge(m, src)
-}
-func (m *SimulateAlarmRequest) XXX_Size() int {
-	return xxx_messageInfo_SimulateAlarmRequest.Size(m)
-}
-func (m *SimulateAlarmRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_SimulateAlarmRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SimulateAlarmRequest proto.InternalMessageInfo
-
-func (m *SimulateAlarmRequest) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *SimulateAlarmRequest) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *SimulateAlarmRequest) GetIndicator() string {
-	if m != nil {
-		return m.Indicator
+func (x *SimulateAlarmRequest) GetIndicator() string {
+	if x != nil {
+		return x.Indicator
 	}
 	return ""
 }
 
-func (m *SimulateAlarmRequest) GetIntfId() string {
-	if m != nil {
-		return m.IntfId
+func (x *SimulateAlarmRequest) GetIntfId() string {
+	if x != nil {
+		return x.IntfId
 	}
 	return ""
 }
 
-func (m *SimulateAlarmRequest) GetPortTypeName() string {
-	if m != nil {
-		return m.PortTypeName
+func (x *SimulateAlarmRequest) GetPortTypeName() string {
+	if x != nil {
+		return x.PortTypeName
 	}
 	return ""
 }
 
-func (m *SimulateAlarmRequest) GetOnuDeviceId() string {
-	if m != nil {
-		return m.OnuDeviceId
+func (x *SimulateAlarmRequest) GetOnuDeviceId() string {
+	if x != nil {
+		return x.OnuDeviceId
 	}
 	return ""
 }
 
-func (m *SimulateAlarmRequest) GetInverseBitErrorRate() int32 {
-	if m != nil {
-		return m.InverseBitErrorRate
+func (x *SimulateAlarmRequest) GetInverseBitErrorRate() int32 {
+	if x != nil {
+		return x.InverseBitErrorRate
 	}
 	return 0
 }
 
-func (m *SimulateAlarmRequest) GetDrift() int32 {
-	if m != nil {
-		return m.Drift
+func (x *SimulateAlarmRequest) GetDrift() int32 {
+	if x != nil {
+		return x.Drift
 	}
 	return 0
 }
 
-func (m *SimulateAlarmRequest) GetNewEqd() int32 {
-	if m != nil {
-		return m.NewEqd
+func (x *SimulateAlarmRequest) GetNewEqd() int32 {
+	if x != nil {
+		return x.NewEqd
 	}
 	return 0
 }
 
-func (m *SimulateAlarmRequest) GetOnuSerialNumber() string {
-	if m != nil {
-		return m.OnuSerialNumber
+func (x *SimulateAlarmRequest) GetOnuSerialNumber() string {
+	if x != nil {
+		return x.OnuSerialNumber
 	}
 	return ""
 }
 
-func (m *SimulateAlarmRequest) GetOperation() SimulateAlarmRequest_OperationType {
-	if m != nil {
-		return m.Operation
+func (x *SimulateAlarmRequest) GetOperation() SimulateAlarmRequest_OperationType {
+	if x != nil {
+		return x.Operation
 	}
 	return SimulateAlarmRequest_RAISE
 }
 
 // Represents a serialNumber of a  child device on a olt pon port
 type OnuSerialNumberOnOLTPon struct {
-	OltDeviceId          *common.ID `protobuf:"bytes,1,opt,name=olt_device_id,json=oltDeviceId,proto3" json:"olt_device_id,omitempty"`
-	Port                 *Port      `protobuf:"bytes,2,opt,name=port,proto3" json:"port,omitempty"`
-	SerialNumber         string     `protobuf:"bytes,3,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
-	XXX_unrecognized     []byte     `json:"-"`
-	XXX_sizecache        int32      `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	OltDeviceId   *common.ID             `protobuf:"bytes,1,opt,name=olt_device_id,json=oltDeviceId,proto3" json:"olt_device_id,omitempty"`
+	Port          *Port                  `protobuf:"bytes,2,opt,name=port,proto3" json:"port,omitempty"`
+	SerialNumber  string                 `protobuf:"bytes,3,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OnuSerialNumberOnOLTPon) Reset()         { *m = OnuSerialNumberOnOLTPon{} }
-func (m *OnuSerialNumberOnOLTPon) String() string { return proto.CompactTextString(m) }
-func (*OnuSerialNumberOnOLTPon) ProtoMessage()    {}
+func (x *OnuSerialNumberOnOLTPon) Reset() {
+	*x = OnuSerialNumberOnOLTPon{}
+	mi := &file_voltha_protos_device_proto_msgTypes[22]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuSerialNumberOnOLTPon) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuSerialNumberOnOLTPon) ProtoMessage() {}
+
+func (x *OnuSerialNumberOnOLTPon) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[22]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuSerialNumberOnOLTPon.ProtoReflect.Descriptor instead.
 func (*OnuSerialNumberOnOLTPon) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{22}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{22}
 }
 
-func (m *OnuSerialNumberOnOLTPon) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuSerialNumberOnOLTPon.Unmarshal(m, b)
-}
-func (m *OnuSerialNumberOnOLTPon) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuSerialNumberOnOLTPon.Marshal(b, m, deterministic)
-}
-func (m *OnuSerialNumberOnOLTPon) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuSerialNumberOnOLTPon.Merge(m, src)
-}
-func (m *OnuSerialNumberOnOLTPon) XXX_Size() int {
-	return xxx_messageInfo_OnuSerialNumberOnOLTPon.Size(m)
-}
-func (m *OnuSerialNumberOnOLTPon) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuSerialNumberOnOLTPon.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuSerialNumberOnOLTPon proto.InternalMessageInfo
-
-func (m *OnuSerialNumberOnOLTPon) GetOltDeviceId() *common.ID {
-	if m != nil {
-		return m.OltDeviceId
+func (x *OnuSerialNumberOnOLTPon) GetOltDeviceId() *common.ID {
+	if x != nil {
+		return x.OltDeviceId
 	}
 	return nil
 }
 
-func (m *OnuSerialNumberOnOLTPon) GetPort() *Port {
-	if m != nil {
-		return m.Port
+func (x *OnuSerialNumberOnOLTPon) GetPort() *Port {
+	if x != nil {
+		return x.Port
 	}
 	return nil
 }
 
-func (m *OnuSerialNumberOnOLTPon) GetSerialNumber() string {
-	if m != nil {
-		return m.SerialNumber
+func (x *OnuSerialNumberOnOLTPon) GetSerialNumber() string {
+	if x != nil {
+		return x.SerialNumber
 	}
 	return ""
 }
 
 type UpdateDevice struct {
-	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	state protoimpl.MessageState `protogen:"open.v1"`
+	Id    string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` //Device id of the device, for now only updating the OLT device is supported, and only ip address of the OLT
 	// Types that are valid to be assigned to Address:
+	//
 	//	*UpdateDevice_Ipv4Address
 	//	*UpdateDevice_Ipv6Address
 	//	*UpdateDevice_HostAndPort
-	Address              isUpdateDevice_Address `protobuf_oneof:"address"`
-	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
-	XXX_unrecognized     []byte                 `json:"-"`
-	XXX_sizecache        int32                  `json:"-"`
+	Address       isUpdateDevice_Address `protobuf_oneof:"address"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *UpdateDevice) Reset()         { *m = UpdateDevice{} }
-func (m *UpdateDevice) String() string { return proto.CompactTextString(m) }
-func (*UpdateDevice) ProtoMessage()    {}
+func (x *UpdateDevice) Reset() {
+	*x = UpdateDevice{}
+	mi := &file_voltha_protos_device_proto_msgTypes[23]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *UpdateDevice) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateDevice) ProtoMessage() {}
+
+func (x *UpdateDevice) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[23]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use UpdateDevice.ProtoReflect.Descriptor instead.
 func (*UpdateDevice) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{23}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{23}
 }
 
-func (m *UpdateDevice) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_UpdateDevice.Unmarshal(m, b)
-}
-func (m *UpdateDevice) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_UpdateDevice.Marshal(b, m, deterministic)
-}
-func (m *UpdateDevice) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_UpdateDevice.Merge(m, src)
-}
-func (m *UpdateDevice) XXX_Size() int {
-	return xxx_messageInfo_UpdateDevice.Size(m)
-}
-func (m *UpdateDevice) XXX_DiscardUnknown() {
-	xxx_messageInfo_UpdateDevice.DiscardUnknown(m)
+func (x *UpdateDevice) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
 }
 
-var xxx_messageInfo_UpdateDevice proto.InternalMessageInfo
+func (x *UpdateDevice) GetAddress() isUpdateDevice_Address {
+	if x != nil {
+		return x.Address
+	}
+	return nil
+}
 
-func (m *UpdateDevice) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *UpdateDevice) GetIpv4Address() string {
+	if x != nil {
+		if x, ok := x.Address.(*UpdateDevice_Ipv4Address); ok {
+			return x.Ipv4Address
+		}
+	}
+	return ""
+}
+
+func (x *UpdateDevice) GetIpv6Address() string {
+	if x != nil {
+		if x, ok := x.Address.(*UpdateDevice_Ipv6Address); ok {
+			return x.Ipv6Address
+		}
+	}
+	return ""
+}
+
+func (x *UpdateDevice) GetHostAndPort() string {
+	if x != nil {
+		if x, ok := x.Address.(*UpdateDevice_HostAndPort); ok {
+			return x.HostAndPort
+		}
 	}
 	return ""
 }
@@ -2473,10 +2698,13 @@
 }
 
 type UpdateDevice_Ipv4Address struct {
+	// Device contact IPv4 address (format: "a.b.c.d" or can use hostname too)
 	Ipv4Address string `protobuf:"bytes,2,opt,name=ipv4_address,json=ipv4Address,proto3,oneof"`
 }
 
 type UpdateDevice_Ipv6Address struct {
+	// Device contact IPv6 address using the canonical string form
+	// ("xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx")
 	Ipv6Address string `protobuf:"bytes,3,opt,name=ipv6_address,json=ipv6Address,proto3,oneof"`
 }
 
@@ -2490,268 +2718,579 @@
 
 func (*UpdateDevice_HostAndPort) isUpdateDevice_Address() {}
 
-func (m *UpdateDevice) GetAddress() isUpdateDevice_Address {
-	if m != nil {
-		return m.Address
-	}
-	return nil
+type Port_PeerPort struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	DeviceId      string                 `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	PortNo        uint32                 `protobuf:"varint,2,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *UpdateDevice) GetIpv4Address() string {
-	if x, ok := m.GetAddress().(*UpdateDevice_Ipv4Address); ok {
-		return x.Ipv4Address
+func (x *Port_PeerPort) Reset() {
+	*x = Port_PeerPort{}
+	mi := &file_voltha_protos_device_proto_msgTypes[24]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Port_PeerPort) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Port_PeerPort) ProtoMessage() {}
+
+func (x *Port_PeerPort) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[24]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Port_PeerPort.ProtoReflect.Descriptor instead.
+func (*Port_PeerPort) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{13, 0}
+}
+
+func (x *Port_PeerPort) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *UpdateDevice) GetIpv6Address() string {
-	if x, ok := m.GetAddress().(*UpdateDevice_Ipv6Address); ok {
-		return x.Ipv6Address
+func (x *Port_PeerPort) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
+	}
+	return 0
+}
+
+type Device_ProxyAddress struct {
+	state              protoimpl.MessageState `protogen:"open.v1"`
+	DeviceId           string                 `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`                               // Which device to use as proxy to this device
+	DeviceType         string                 `protobuf:"bytes,2,opt,name=device_type,json=deviceType,proto3" json:"device_type,omitempty"`                         // The device type of the proxy device to use as the adapter name
+	ChannelId          uint32                 `protobuf:"varint,3,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`                           // Sub-address within proxy
+	ChannelGroupId     uint32                 `protobuf:"varint,4,opt,name=channel_group_id,json=channelGroupId,proto3" json:"channel_group_id,omitempty"`          // Channel Group index
+	ChannelTermination string                 `protobuf:"bytes,5,opt,name=channel_termination,json=channelTermination,proto3" json:"channel_termination,omitempty"` // Channel Termination name
+	OnuId              uint32                 `protobuf:"varint,6,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`                                       // onu identifier; optional
+	OnuSessionId       uint32                 `protobuf:"varint,7,opt,name=onu_session_id,json=onuSessionId,proto3" json:"onu_session_id,omitempty"`                // session identifier for the ONU; optional
+	AdapterEndpoint    string                 `protobuf:"bytes,8,opt,name=adapter_endpoint,json=adapterEndpoint,proto3" json:"adapter_endpoint,omitempty"`          // endpoint of the adapter that handles the proxy device
+	unknownFields      protoimpl.UnknownFields
+	sizeCache          protoimpl.SizeCache
+}
+
+func (x *Device_ProxyAddress) Reset() {
+	*x = Device_ProxyAddress{}
+	mi := &file_voltha_protos_device_proto_msgTypes[25]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Device_ProxyAddress) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Device_ProxyAddress) ProtoMessage() {}
+
+func (x *Device_ProxyAddress) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[25]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Device_ProxyAddress.ProtoReflect.Descriptor instead.
+func (*Device_ProxyAddress) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{15, 0}
+}
+
+func (x *Device_ProxyAddress) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *UpdateDevice) GetHostAndPort() string {
-	if x, ok := m.GetAddress().(*UpdateDevice_HostAndPort); ok {
-		return x.HostAndPort
+func (x *Device_ProxyAddress) GetDeviceType() string {
+	if x != nil {
+		return x.DeviceType
 	}
 	return ""
 }
 
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*UpdateDevice) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
+func (x *Device_ProxyAddress) GetChannelId() uint32 {
+	if x != nil {
+		return x.ChannelId
+	}
+	return 0
+}
+
+func (x *Device_ProxyAddress) GetChannelGroupId() uint32 {
+	if x != nil {
+		return x.ChannelGroupId
+	}
+	return 0
+}
+
+func (x *Device_ProxyAddress) GetChannelTermination() string {
+	if x != nil {
+		return x.ChannelTermination
+	}
+	return ""
+}
+
+func (x *Device_ProxyAddress) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *Device_ProxyAddress) GetOnuSessionId() uint32 {
+	if x != nil {
+		return x.OnuSessionId
+	}
+	return 0
+}
+
+func (x *Device_ProxyAddress) GetAdapterEndpoint() string {
+	if x != nil {
+		return x.AdapterEndpoint
+	}
+	return ""
+}
+
+var File_voltha_protos_device_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_device_proto_rawDesc = "" +
+	"\n" +
+	"\x1avoltha_protos/device.proto\x12\x06device\x1a\x19google/protobuf/any.proto\x1a\x1avoltha_protos/common.proto\x1a\x1fvoltha_protos/openflow_13.proto\"\xe2\x02\n" +
+	"\n" +
+	"DeviceType\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12\x1b\n" +
+	"\tvendor_id\x18\x05 \x01(\tR\bvendorId\x12\x1d\n" +
+	"\n" +
+	"vendor_ids\x18\x06 \x03(\tR\tvendorIds\x12\x18\n" +
+	"\aadapter\x18\x02 \x01(\tR\aadapter\x127\n" +
+	"\x18accepts_bulk_flow_update\x18\x03 \x01(\bR\x15acceptsBulkFlowUpdate\x12D\n" +
+	"\x1faccepts_add_remove_flow_updates\x18\x04 \x01(\bR\x1bacceptsAddRemoveFlowUpdates\x12L\n" +
+	"#accepts_direct_logical_flows_update\x18\a \x01(\bR\x1facceptsDirectLogicalFlowsUpdate\x12!\n" +
+	"\fadapter_type\x18\b \x01(\tR\vadapterType\"7\n" +
+	"\vDeviceTypes\x12(\n" +
+	"\x05items\x18\x01 \x03(\v2\x12.device.DeviceTypeR\x05items\"\xc0\x01\n" +
+	"\bPmConfig\x12\x12\n" +
+	"\x04name\x18\x01 \x01(\tR\x04name\x12+\n" +
+	"\x04type\x18\x02 \x01(\x0e2\x17.device.PmConfig.PmTypeR\x04type\x12\x18\n" +
+	"\aenabled\x18\x03 \x01(\bR\aenabled\x12\x1f\n" +
+	"\vsample_freq\x18\x04 \x01(\rR\n" +
+	"sampleFreq\"8\n" +
+	"\x06PmType\x12\v\n" +
+	"\aCOUNTER\x10\x00\x12\t\n" +
+	"\x05GAUGE\x10\x01\x12\t\n" +
+	"\x05STATE\x10\x02\x12\v\n" +
+	"\aCONTEXT\x10\x03\"\x93\x01\n" +
+	"\rPmGroupConfig\x12\x1d\n" +
+	"\n" +
+	"group_name\x18\x01 \x01(\tR\tgroupName\x12\x1d\n" +
+	"\n" +
+	"group_freq\x18\x02 \x01(\rR\tgroupFreq\x12\x18\n" +
+	"\aenabled\x18\x03 \x01(\bR\aenabled\x12*\n" +
+	"\ametrics\x18\x04 \x03(\v2\x10.device.PmConfigR\ametrics\"\xf3\x01\n" +
+	"\tPmConfigs\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12!\n" +
+	"\fdefault_freq\x18\x02 \x01(\rR\vdefaultFreq\x12\x18\n" +
+	"\agrouped\x18\x03 \x01(\bR\agrouped\x12#\n" +
+	"\rfreq_override\x18\x04 \x01(\bR\ffreqOverride\x12-\n" +
+	"\x06groups\x18\x05 \x03(\v2\x15.device.PmGroupConfigR\x06groups\x12*\n" +
+	"\ametrics\x18\x06 \x03(\v2\x10.device.PmConfigR\ametrics\x12\x19\n" +
+	"\bmax_skew\x18\a \x01(\rR\amaxSkew\"\x8f\x02\n" +
+	"\x05Image\x12\x12\n" +
+	"\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" +
+	"\aversion\x18\x02 \x01(\tR\aversion\x12\x12\n" +
+	"\x04hash\x18\x03 \x01(\rR\x04hash\x12)\n" +
+	"\x10install_datetime\x18\x04 \x01(\tR\x0finstallDatetime\x12\x1b\n" +
+	"\tis_active\x18\x05 \x01(\bR\bisActive\x12!\n" +
+	"\fis_committed\x18\x06 \x01(\bR\visCommitted\x12\x19\n" +
+	"\bis_valid\x18\a \x01(\bR\aisValid\x12\x10\n" +
+	"\x03url\x18\b \x01(\tR\x03url\x12\x16\n" +
+	"\x06vendor\x18\t \x01(\tR\x06vendor\x12\x14\n" +
+	"\x05crc32\x18\n" +
+	" \x01(\rR\x05crc32\"\xe7\a\n" +
+	"\rImageDownload\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
+	"\x04name\x18\x02 \x01(\tR\x04name\x12\x10\n" +
+	"\x03url\x18\x03 \x01(\tR\x03url\x12\x10\n" +
+	"\x03crc\x18\x04 \x01(\rR\x03crc\x12O\n" +
+	"\x0edownload_state\x18\x05 \x01(\x0e2(.device.ImageDownload.ImageDownloadStateR\rdownloadState\x12#\n" +
+	"\rimage_version\x18\x06 \x01(\tR\fimageVersion\x12)\n" +
+	"\x10downloaded_bytes\x18\a \x01(\rR\x0fdownloadedBytes\x12H\n" +
+	"\x06reason\x18\b \x01(\x0e20.device.ImageDownload.ImageDownloadFailureReasonR\x06reason\x12'\n" +
+	"\x0fadditional_info\x18\t \x01(\tR\x0eadditionalInfo\x12\x1f\n" +
+	"\vsave_config\x18\n" +
+	" \x01(\bR\n" +
+	"saveConfig\x12\x1b\n" +
+	"\tlocal_dir\x18\v \x01(\tR\blocalDir\x12I\n" +
+	"\vimage_state\x18\f \x01(\x0e2(.device.ImageDownload.ImageActivateStateR\n" +
+	"imageState\x12\x1b\n" +
+	"\tfile_size\x18\r \x01(\rR\bfileSize\"\xb7\x01\n" +
+	"\x12ImageDownloadState\x12\x14\n" +
+	"\x10DOWNLOAD_UNKNOWN\x10\x00\x12\x16\n" +
+	"\x12DOWNLOAD_SUCCEEDED\x10\x01\x12\x16\n" +
+	"\x12DOWNLOAD_REQUESTED\x10\x02\x12\x14\n" +
+	"\x10DOWNLOAD_STARTED\x10\x03\x12\x13\n" +
+	"\x0fDOWNLOAD_FAILED\x10\x04\x12\x18\n" +
+	"\x14DOWNLOAD_UNSUPPORTED\x10\x05\x12\x16\n" +
+	"\x12DOWNLOAD_CANCELLED\x10\x06\"\x86\x01\n" +
+	"\x1aImageDownloadFailureReason\x12\f\n" +
+	"\bNO_ERROR\x10\x00\x12\x0f\n" +
+	"\vINVALID_URL\x10\x01\x12\x0f\n" +
+	"\vDEVICE_BUSY\x10\x02\x12\x16\n" +
+	"\x12INSUFFICIENT_SPACE\x10\x03\x12\x11\n" +
+	"\rUNKNOWN_ERROR\x10\x04\x12\r\n" +
+	"\tCANCELLED\x10\x05\"\x8c\x01\n" +
+	"\x12ImageActivateState\x12\x11\n" +
+	"\rIMAGE_UNKNOWN\x10\x00\x12\x12\n" +
+	"\x0eIMAGE_INACTIVE\x10\x01\x12\x14\n" +
+	"\x10IMAGE_ACTIVATING\x10\x02\x12\x10\n" +
+	"\fIMAGE_ACTIVE\x10\x03\x12\x13\n" +
+	"\x0fIMAGE_REVERTING\x10\x04\x12\x12\n" +
+	"\x0eIMAGE_REVERTED\x10\x05:\x02\x18\x01\"A\n" +
+	"\x0eImageDownloads\x12+\n" +
+	"\x05items\x18\x02 \x03(\v2\x15.device.ImageDownloadR\x05items:\x02\x18\x01\"-\n" +
+	"\x06Images\x12#\n" +
+	"\x05image\x18\x01 \x03(\v2\r.device.ImageR\x05image\"\xb0\x01\n" +
+	"\bOnuImage\x12\x18\n" +
+	"\aversion\x18\x01 \x01(\tR\aversion\x12\x1e\n" +
+	"\n" +
+	"isCommited\x18\x02 \x01(\bR\n" +
+	"isCommited\x12\x1a\n" +
+	"\bisActive\x18\x03 \x01(\bR\bisActive\x12\x18\n" +
+	"\aisValid\x18\x04 \x01(\bR\aisValid\x12 \n" +
+	"\vproductCode\x18\x05 \x01(\tR\vproductCode\x12\x12\n" +
+	"\x04hash\x18\x06 \x01(\tR\x04hash\"3\n" +
+	"\tOnuImages\x12&\n" +
+	"\x05items\x18\x01 \x03(\v2\x10.device.OnuImageR\x05items\"c\n" +
+	"\x10DeviceImageState\x12\x1b\n" +
+	"\tdevice_id\x18\x01 \x01(\tR\bdeviceId\x122\n" +
+	"\n" +
+	"imageState\x18\x02 \x01(\v2\x12.device.ImageStateR\n" +
+	"imageState\"\x82\b\n" +
+	"\n" +
+	"ImageState\x12\x18\n" +
+	"\aversion\x18\x01 \x01(\tR\aversion\x12L\n" +
+	"\x0edownload_state\x18\x02 \x01(\x0e2%.device.ImageState.ImageDownloadStateR\rdownloadState\x12=\n" +
+	"\x06reason\x18\x03 \x01(\x0e2%.device.ImageState.ImageFailureReasonR\x06reason\x12H\n" +
+	"\vimage_state\x18\x04 \x01(\x0e2'.device.ImageState.ImageActivationStateR\n" +
+	"imageState\"\xd0\x01\n" +
+	"\x12ImageDownloadState\x12\x14\n" +
+	"\x10DOWNLOAD_UNKNOWN\x10\x00\x12\x16\n" +
+	"\x12DOWNLOAD_SUCCEEDED\x10\x01\x12\x16\n" +
+	"\x12DOWNLOAD_REQUESTED\x10\x02\x12\x14\n" +
+	"\x10DOWNLOAD_STARTED\x10\x03\x12\x13\n" +
+	"\x0fDOWNLOAD_FAILED\x10\x04\x12\x18\n" +
+	"\x14DOWNLOAD_UNSUPPORTED\x10\x05\x12\x17\n" +
+	"\x13DOWNLOAD_CANCELLING\x10\x06\x12\x16\n" +
+	"\x12DOWNLOAD_CANCELLED\x10\a\"\xf4\x01\n" +
+	"\x12ImageFailureReason\x12\f\n" +
+	"\bNO_ERROR\x10\x00\x12\x0f\n" +
+	"\vINVALID_URL\x10\x01\x12\x0f\n" +
+	"\vDEVICE_BUSY\x10\x02\x12\x16\n" +
+	"\x12INSUFFICIENT_SPACE\x10\x03\x12\x11\n" +
+	"\rUNKNOWN_ERROR\x10\x04\x12\x18\n" +
+	"\x14CANCELLED_ON_REQUEST\x10\x05\x12\x1a\n" +
+	"\x16CANCELLED_ON_ONU_STATE\x10\x06\x12\x1a\n" +
+	"\x16VENDOR_DEVICE_MISMATCH\x10\a\x12\x17\n" +
+	"\x13OMCI_TRANSFER_ERROR\x10\b\x12\x18\n" +
+	"\x14IMAGE_REFUSED_BY_ONU\x10\t\"\xb8\x02\n" +
+	"\x14ImageActivationState\x12\x11\n" +
+	"\rIMAGE_UNKNOWN\x10\x00\x12\x12\n" +
+	"\x0eIMAGE_INACTIVE\x10\x01\x12\x14\n" +
+	"\x10IMAGE_ACTIVATING\x10\x02\x12\x10\n" +
+	"\fIMAGE_ACTIVE\x10\x03\x12\x14\n" +
+	"\x10IMAGE_COMMITTING\x10\x04\x12\x13\n" +
+	"\x0fIMAGE_COMMITTED\x10\x05\x12\x1d\n" +
+	"\x19IMAGE_ACTIVATION_ABORTING\x10\x06\x12\x1c\n" +
+	"\x18IMAGE_ACTIVATION_ABORTED\x10\a\x12\x19\n" +
+	"\x15IMAGE_COMMIT_ABORTING\x10\b\x12\x18\n" +
+	"\x14IMAGE_COMMIT_ABORTED\x10\t\x12\x15\n" +
+	"\x11IMAGE_DOWNLOADING\x10\n" +
+	"\x12\x1d\n" +
+	"\x19IMAGE_DOWNLOADING_ABORTED\x10\v\"\xb7\x05\n" +
+	"\x04Port\x12\x17\n" +
+	"\aport_no\x18\x01 \x01(\rR\x06portNo\x12\x14\n" +
+	"\x05label\x18\x02 \x01(\tR\x05label\x12)\n" +
+	"\x04type\x18\x03 \x01(\x0e2\x15.device.Port.PortTypeR\x04type\x129\n" +
+	"\vadmin_state\x18\x05 \x01(\x0e2\x18.common.AdminState.TypesR\n" +
+	"adminState\x129\n" +
+	"\voper_status\x18\x06 \x01(\x0e2\x18.common.OperStatus.TypesR\n" +
+	"operStatus\x12\x1b\n" +
+	"\tdevice_id\x18\a \x01(\tR\bdeviceId\x12+\n" +
+	"\x05peers\x18\b \x03(\v2\x15.device.Port.PeerPortR\x05peers\x12\x1d\n" +
+	"\n" +
+	"rx_packets\x18\t \x01(\x06R\trxPackets\x12\x19\n" +
+	"\brx_bytes\x18\n" +
+	" \x01(\x06R\arxBytes\x12\x1b\n" +
+	"\trx_errors\x18\v \x01(\x06R\brxErrors\x12\x1d\n" +
+	"\n" +
+	"tx_packets\x18\f \x01(\x06R\ttxPackets\x12\x19\n" +
+	"\btx_bytes\x18\r \x01(\x06R\atxBytes\x12\x1b\n" +
+	"\ttx_errors\x18\x0e \x01(\x06R\btxErrors\x120\n" +
+	"\bofp_port\x18\x0f \x01(\v2\x15.openflow_13.ofp_portR\aofpPort\x1a@\n" +
+	"\bPeerPort\x12\x1b\n" +
+	"\tdevice_id\x18\x01 \x01(\tR\bdeviceId\x12\x17\n" +
+	"\aport_no\x18\x02 \x01(\rR\x06portNo\"s\n" +
+	"\bPortType\x12\v\n" +
+	"\aUNKNOWN\x10\x00\x12\x10\n" +
+	"\fETHERNET_NNI\x10\x01\x12\x10\n" +
+	"\fETHERNET_UNI\x10\x02\x12\v\n" +
+	"\aPON_OLT\x10\x03\x12\v\n" +
+	"\aPON_ONU\x10\x04\x12\r\n" +
+	"\tVENET_OLT\x10\x05\x12\r\n" +
+	"\tVENET_ONU\x10\x06\"+\n" +
+	"\x05Ports\x12\"\n" +
+	"\x05items\x18\x01 \x03(\v2\f.device.PortR\x05items\"\xd8\n" +
+	"\n" +
+	"\x06Device\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
+	"\x04type\x18\x02 \x01(\tR\x04type\x12\x12\n" +
+	"\x04root\x18\x03 \x01(\bR\x04root\x12\x1b\n" +
+	"\tparent_id\x18\x04 \x01(\tR\bparentId\x12$\n" +
+	"\x0eparent_port_no\x18\x14 \x01(\rR\fparentPortNo\x12\x16\n" +
+	"\x06vendor\x18\x05 \x01(\tR\x06vendor\x12\x14\n" +
+	"\x05model\x18\x06 \x01(\tR\x05model\x12)\n" +
+	"\x10hardware_version\x18\a \x01(\tR\x0fhardwareVersion\x12)\n" +
+	"\x10firmware_version\x18\b \x01(\tR\x0ffirmwareVersion\x12&\n" +
+	"\x06images\x18\t \x01(\v2\x0e.device.ImagesR\x06images\x12#\n" +
+	"\rserial_number\x18\n" +
+	" \x01(\tR\fserialNumber\x12\x1b\n" +
+	"\tvendor_id\x18\x18 \x01(\tR\bvendorId\x12)\n" +
+	"\x10adapter_endpoint\x18\x19 \x01(\tR\x0fadapterEndpoint\x12\x12\n" +
+	"\x04vlan\x18\f \x01(\rR\x04vlan\x12\x1f\n" +
+	"\vmac_address\x18\r \x01(\tR\n" +
+	"macAddress\x12#\n" +
+	"\fipv4_address\x18\x0e \x01(\tH\x00R\vipv4Address\x12#\n" +
+	"\fipv6_address\x18\x0f \x01(\tH\x00R\vipv6Address\x12$\n" +
+	"\rhost_and_port\x18\x15 \x01(\tH\x00R\vhostAndPort\x12\x1d\n" +
+	"\n" +
+	"extra_args\x18\x17 \x01(\tR\textraArgs\x12@\n" +
+	"\rproxy_address\x18\x13 \x01(\v2\x1b.device.Device.ProxyAddressR\fproxyAddress\x129\n" +
+	"\vadmin_state\x18\x10 \x01(\x0e2\x18.common.AdminState.TypesR\n" +
+	"adminState\x129\n" +
+	"\voper_status\x18\x11 \x01(\x0e2\x18.common.OperStatus.TypesR\n" +
+	"operStatus\x12\x16\n" +
+	"\x06reason\x18\x16 \x01(\tR\x06reason\x12B\n" +
+	"\x0econnect_status\x18\x12 \x01(\x0e2\x1b.common.ConnectStatus.TypesR\rconnectStatus\x12,\n" +
+	"\x06custom\x18@ \x01(\v2\x14.google.protobuf.AnyR\x06custom\x121\n" +
+	"\n" +
+	"pm_configs\x18\x83\x01 \x01(\v2\x11.device.PmConfigsR\tpmConfigs\x12?\n" +
+	"\x0fimage_downloads\x18\x85\x01 \x03(\v2\x15.device.ImageDownloadR\x0eimageDownloads\x1a\xae\x02\n" +
+	"\fProxyAddress\x12\x1b\n" +
+	"\tdevice_id\x18\x01 \x01(\tR\bdeviceId\x12\x1f\n" +
+	"\vdevice_type\x18\x02 \x01(\tR\n" +
+	"deviceType\x12\x1d\n" +
+	"\n" +
+	"channel_id\x18\x03 \x01(\rR\tchannelId\x12(\n" +
+	"\x10channel_group_id\x18\x04 \x01(\rR\x0echannelGroupId\x12/\n" +
+	"\x13channel_termination\x18\x05 \x01(\tR\x12channelTermination\x12\x15\n" +
+	"\x06onu_id\x18\x06 \x01(\rR\x05onuId\x12$\n" +
+	"\x0eonu_session_id\x18\a \x01(\rR\fonuSessionId\x12)\n" +
+	"\x10adapter_endpoint\x18\b \x01(\tR\x0fadapterEndpointB\t\n" +
+	"\aaddressJ\x04\b\v\x10\f\"\xc2\x01\n" +
+	"\x1aDeviceImageDownloadRequest\x12'\n" +
+	"\tdevice_id\x18\x01 \x03(\v2\n" +
+	".common.IDR\bdeviceId\x12#\n" +
+	"\x05image\x18\x02 \x01(\v2\r.device.ImageR\x05image\x12,\n" +
+	"\x11activateOnSuccess\x18\x03 \x01(\bR\x11activateOnSuccess\x12(\n" +
+	"\x0fcommitOnSuccess\x18\x04 \x01(\bR\x0fcommitOnSuccess\"\x81\x01\n" +
+	"\x12DeviceImageRequest\x12'\n" +
+	"\tdevice_id\x18\x01 \x03(\v2\n" +
+	".common.IDR\bdeviceId\x12\x18\n" +
+	"\aversion\x18\x02 \x01(\tR\aversion\x12(\n" +
+	"\x0fcommitOnSuccess\x18\x03 \x01(\bR\x0fcommitOnSuccess\"_\n" +
+	"\x13DeviceImageResponse\x12H\n" +
+	"\x13device_image_states\x18\x01 \x03(\v2\x18.device.DeviceImageStateR\x11deviceImageStates\"\xa5\x01\n" +
+	"\x10SelfTestResponse\x12?\n" +
+	"\x06result\x18\x01 \x01(\x0e2'.device.SelfTestResponse.SelfTestResultR\x06result\"P\n" +
+	"\x0eSelfTestResult\x12\v\n" +
+	"\aSUCCESS\x10\x00\x12\v\n" +
+	"\aFAILURE\x10\x01\x12\x11\n" +
+	"\rNOT_SUPPORTED\x10\x02\x12\x11\n" +
+	"\rUNKNOWN_ERROR\x10\x03\"/\n" +
+	"\aDevices\x12$\n" +
+	"\x05items\x18\x01 \x03(\v2\x0e.device.DeviceR\x05items\"\xa8\x03\n" +
+	"\x14SimulateAlarmRequest\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12\x1c\n" +
+	"\tindicator\x18\x02 \x01(\tR\tindicator\x12\x17\n" +
+	"\aintf_id\x18\x03 \x01(\tR\x06intfId\x12$\n" +
+	"\x0eport_type_name\x18\x04 \x01(\tR\fportTypeName\x12\"\n" +
+	"\ronu_device_id\x18\x05 \x01(\tR\vonuDeviceId\x123\n" +
+	"\x16inverse_bit_error_rate\x18\x06 \x01(\x05R\x13inverseBitErrorRate\x12\x14\n" +
+	"\x05drift\x18\a \x01(\x05R\x05drift\x12\x17\n" +
+	"\anew_eqd\x18\b \x01(\x05R\x06newEqd\x12*\n" +
+	"\x11onu_serial_number\x18\t \x01(\tR\x0fonuSerialNumber\x12H\n" +
+	"\toperation\x18\n" +
+	" \x01(\x0e2*.device.SimulateAlarmRequest.OperationTypeR\toperation\"%\n" +
+	"\rOperationType\x12\t\n" +
+	"\x05RAISE\x10\x00\x12\t\n" +
+	"\x05CLEAR\x10\x01\"\x90\x01\n" +
+	"\x17OnuSerialNumberOnOLTPon\x12.\n" +
+	"\rolt_device_id\x18\x01 \x01(\v2\n" +
+	".common.IDR\voltDeviceId\x12 \n" +
+	"\x04port\x18\x02 \x01(\v2\f.device.PortR\x04port\x12#\n" +
+	"\rserial_number\x18\x03 \x01(\tR\fserialNumber\"\x99\x01\n" +
+	"\fUpdateDevice\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12#\n" +
+	"\fipv4_address\x18\x02 \x01(\tH\x00R\vipv4Address\x12#\n" +
+	"\fipv6_address\x18\x03 \x01(\tH\x00R\vipv6Address\x12$\n" +
+	"\rhost_and_port\x18\x04 \x01(\tH\x00R\vhostAndPortB\t\n" +
+	"\aaddressBZ\n" +
+	"\x1aorg.opencord.voltha.deviceB\fVolthaDeviceZ.github.com/opencord/voltha-protos/v5/go/volthab\x06proto3"
+
+var (
+	file_voltha_protos_device_proto_rawDescOnce sync.Once
+	file_voltha_protos_device_proto_rawDescData []byte
+)
+
+func file_voltha_protos_device_proto_rawDescGZIP() []byte {
+	file_voltha_protos_device_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_device_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_device_proto_rawDesc), len(file_voltha_protos_device_proto_rawDesc)))
+	})
+	return file_voltha_protos_device_proto_rawDescData
+}
+
+var file_voltha_protos_device_proto_enumTypes = make([]protoimpl.EnumInfo, 10)
+var file_voltha_protos_device_proto_msgTypes = make([]protoimpl.MessageInfo, 26)
+var file_voltha_protos_device_proto_goTypes = []any{
+	(PmConfig_PmType)(0),                          // 0: device.PmConfig.PmType
+	(ImageDownload_ImageDownloadState)(0),         // 1: device.ImageDownload.ImageDownloadState
+	(ImageDownload_ImageDownloadFailureReason)(0), // 2: device.ImageDownload.ImageDownloadFailureReason
+	(ImageDownload_ImageActivateState)(0),         // 3: device.ImageDownload.ImageActivateState
+	(ImageState_ImageDownloadState)(0),            // 4: device.ImageState.ImageDownloadState
+	(ImageState_ImageFailureReason)(0),            // 5: device.ImageState.ImageFailureReason
+	(ImageState_ImageActivationState)(0),          // 6: device.ImageState.ImageActivationState
+	(Port_PortType)(0),                            // 7: device.Port.PortType
+	(SelfTestResponse_SelfTestResult)(0),          // 8: device.SelfTestResponse.SelfTestResult
+	(SimulateAlarmRequest_OperationType)(0),       // 9: device.SimulateAlarmRequest.OperationType
+	(*DeviceType)(nil),                            // 10: device.DeviceType
+	(*DeviceTypes)(nil),                           // 11: device.DeviceTypes
+	(*PmConfig)(nil),                              // 12: device.PmConfig
+	(*PmGroupConfig)(nil),                         // 13: device.PmGroupConfig
+	(*PmConfigs)(nil),                             // 14: device.PmConfigs
+	(*Image)(nil),                                 // 15: device.Image
+	(*ImageDownload)(nil),                         // 16: device.ImageDownload
+	(*ImageDownloads)(nil),                        // 17: device.ImageDownloads
+	(*Images)(nil),                                // 18: device.Images
+	(*OnuImage)(nil),                              // 19: device.OnuImage
+	(*OnuImages)(nil),                             // 20: device.OnuImages
+	(*DeviceImageState)(nil),                      // 21: device.DeviceImageState
+	(*ImageState)(nil),                            // 22: device.ImageState
+	(*Port)(nil),                                  // 23: device.Port
+	(*Ports)(nil),                                 // 24: device.Ports
+	(*Device)(nil),                                // 25: device.Device
+	(*DeviceImageDownloadRequest)(nil),            // 26: device.DeviceImageDownloadRequest
+	(*DeviceImageRequest)(nil),                    // 27: device.DeviceImageRequest
+	(*DeviceImageResponse)(nil),                   // 28: device.DeviceImageResponse
+	(*SelfTestResponse)(nil),                      // 29: device.SelfTestResponse
+	(*Devices)(nil),                               // 30: device.Devices
+	(*SimulateAlarmRequest)(nil),                  // 31: device.SimulateAlarmRequest
+	(*OnuSerialNumberOnOLTPon)(nil),               // 32: device.OnuSerialNumberOnOLTPon
+	(*UpdateDevice)(nil),                          // 33: device.UpdateDevice
+	(*Port_PeerPort)(nil),                         // 34: device.Port.PeerPort
+	(*Device_ProxyAddress)(nil),                   // 35: device.Device.ProxyAddress
+	(common.AdminState_Types)(0),                  // 36: common.AdminState.Types
+	(common.OperStatus_Types)(0),                  // 37: common.OperStatus.Types
+	(*openflow_13.OfpPort)(nil),                   // 38: openflow_13.ofp_port
+	(common.ConnectStatus_Types)(0),               // 39: common.ConnectStatus.Types
+	(*anypb.Any)(nil),                             // 40: google.protobuf.Any
+	(*common.ID)(nil),                             // 41: common.ID
+}
+var file_voltha_protos_device_proto_depIdxs = []int32{
+	10, // 0: device.DeviceTypes.items:type_name -> device.DeviceType
+	0,  // 1: device.PmConfig.type:type_name -> device.PmConfig.PmType
+	12, // 2: device.PmGroupConfig.metrics:type_name -> device.PmConfig
+	13, // 3: device.PmConfigs.groups:type_name -> device.PmGroupConfig
+	12, // 4: device.PmConfigs.metrics:type_name -> device.PmConfig
+	1,  // 5: device.ImageDownload.download_state:type_name -> device.ImageDownload.ImageDownloadState
+	2,  // 6: device.ImageDownload.reason:type_name -> device.ImageDownload.ImageDownloadFailureReason
+	3,  // 7: device.ImageDownload.image_state:type_name -> device.ImageDownload.ImageActivateState
+	16, // 8: device.ImageDownloads.items:type_name -> device.ImageDownload
+	15, // 9: device.Images.image:type_name -> device.Image
+	19, // 10: device.OnuImages.items:type_name -> device.OnuImage
+	22, // 11: device.DeviceImageState.imageState:type_name -> device.ImageState
+	4,  // 12: device.ImageState.download_state:type_name -> device.ImageState.ImageDownloadState
+	5,  // 13: device.ImageState.reason:type_name -> device.ImageState.ImageFailureReason
+	6,  // 14: device.ImageState.image_state:type_name -> device.ImageState.ImageActivationState
+	7,  // 15: device.Port.type:type_name -> device.Port.PortType
+	36, // 16: device.Port.admin_state:type_name -> common.AdminState.Types
+	37, // 17: device.Port.oper_status:type_name -> common.OperStatus.Types
+	34, // 18: device.Port.peers:type_name -> device.Port.PeerPort
+	38, // 19: device.Port.ofp_port:type_name -> openflow_13.ofp_port
+	23, // 20: device.Ports.items:type_name -> device.Port
+	18, // 21: device.Device.images:type_name -> device.Images
+	35, // 22: device.Device.proxy_address:type_name -> device.Device.ProxyAddress
+	36, // 23: device.Device.admin_state:type_name -> common.AdminState.Types
+	37, // 24: device.Device.oper_status:type_name -> common.OperStatus.Types
+	39, // 25: device.Device.connect_status:type_name -> common.ConnectStatus.Types
+	40, // 26: device.Device.custom:type_name -> google.protobuf.Any
+	14, // 27: device.Device.pm_configs:type_name -> device.PmConfigs
+	16, // 28: device.Device.image_downloads:type_name -> device.ImageDownload
+	41, // 29: device.DeviceImageDownloadRequest.device_id:type_name -> common.ID
+	15, // 30: device.DeviceImageDownloadRequest.image:type_name -> device.Image
+	41, // 31: device.DeviceImageRequest.device_id:type_name -> common.ID
+	21, // 32: device.DeviceImageResponse.device_image_states:type_name -> device.DeviceImageState
+	8,  // 33: device.SelfTestResponse.result:type_name -> device.SelfTestResponse.SelfTestResult
+	25, // 34: device.Devices.items:type_name -> device.Device
+	9,  // 35: device.SimulateAlarmRequest.operation:type_name -> device.SimulateAlarmRequest.OperationType
+	41, // 36: device.OnuSerialNumberOnOLTPon.olt_device_id:type_name -> common.ID
+	23, // 37: device.OnuSerialNumberOnOLTPon.port:type_name -> device.Port
+	38, // [38:38] is the sub-list for method output_type
+	38, // [38:38] is the sub-list for method input_type
+	38, // [38:38] is the sub-list for extension type_name
+	38, // [38:38] is the sub-list for extension extendee
+	0,  // [0:38] is the sub-list for field type_name
+}
+
+func init() { file_voltha_protos_device_proto_init() }
+func file_voltha_protos_device_proto_init() {
+	if File_voltha_protos_device_proto != nil {
+		return
+	}
+	file_voltha_protos_device_proto_msgTypes[15].OneofWrappers = []any{
+		(*Device_Ipv4Address)(nil),
+		(*Device_Ipv6Address)(nil),
+		(*Device_HostAndPort)(nil),
+	}
+	file_voltha_protos_device_proto_msgTypes[23].OneofWrappers = []any{
 		(*UpdateDevice_Ipv4Address)(nil),
 		(*UpdateDevice_Ipv6Address)(nil),
 		(*UpdateDevice_HostAndPort)(nil),
 	}
-}
-
-func init() {
-	proto.RegisterEnum("device.PmConfig_PmType", PmConfig_PmType_name, PmConfig_PmType_value)
-	proto.RegisterEnum("device.ImageDownload_ImageDownloadState", ImageDownload_ImageDownloadState_name, ImageDownload_ImageDownloadState_value)
-	proto.RegisterEnum("device.ImageDownload_ImageDownloadFailureReason", ImageDownload_ImageDownloadFailureReason_name, ImageDownload_ImageDownloadFailureReason_value)
-	proto.RegisterEnum("device.ImageDownload_ImageActivateState", ImageDownload_ImageActivateState_name, ImageDownload_ImageActivateState_value)
-	proto.RegisterEnum("device.ImageState_ImageDownloadState", ImageState_ImageDownloadState_name, ImageState_ImageDownloadState_value)
-	proto.RegisterEnum("device.ImageState_ImageFailureReason", ImageState_ImageFailureReason_name, ImageState_ImageFailureReason_value)
-	proto.RegisterEnum("device.ImageState_ImageActivationState", ImageState_ImageActivationState_name, ImageState_ImageActivationState_value)
-	proto.RegisterEnum("device.Port_PortType", Port_PortType_name, Port_PortType_value)
-	proto.RegisterEnum("device.SelfTestResponse_SelfTestResult", SelfTestResponse_SelfTestResult_name, SelfTestResponse_SelfTestResult_value)
-	proto.RegisterEnum("device.SimulateAlarmRequest_OperationType", SimulateAlarmRequest_OperationType_name, SimulateAlarmRequest_OperationType_value)
-	proto.RegisterType((*DeviceType)(nil), "device.DeviceType")
-	proto.RegisterType((*DeviceTypes)(nil), "device.DeviceTypes")
-	proto.RegisterType((*PmConfig)(nil), "device.PmConfig")
-	proto.RegisterType((*PmGroupConfig)(nil), "device.PmGroupConfig")
-	proto.RegisterType((*PmConfigs)(nil), "device.PmConfigs")
-	proto.RegisterType((*Image)(nil), "device.Image")
-	proto.RegisterType((*ImageDownload)(nil), "device.ImageDownload")
-	proto.RegisterType((*ImageDownloads)(nil), "device.ImageDownloads")
-	proto.RegisterType((*Images)(nil), "device.Images")
-	proto.RegisterType((*OnuImage)(nil), "device.OnuImage")
-	proto.RegisterType((*OnuImages)(nil), "device.OnuImages")
-	proto.RegisterType((*DeviceImageState)(nil), "device.DeviceImageState")
-	proto.RegisterType((*ImageState)(nil), "device.ImageState")
-	proto.RegisterType((*Port)(nil), "device.Port")
-	proto.RegisterType((*Port_PeerPort)(nil), "device.Port.PeerPort")
-	proto.RegisterType((*Ports)(nil), "device.Ports")
-	proto.RegisterType((*Device)(nil), "device.Device")
-	proto.RegisterType((*Device_ProxyAddress)(nil), "device.Device.ProxyAddress")
-	proto.RegisterType((*DeviceImageDownloadRequest)(nil), "device.DeviceImageDownloadRequest")
-	proto.RegisterType((*DeviceImageRequest)(nil), "device.DeviceImageRequest")
-	proto.RegisterType((*DeviceImageResponse)(nil), "device.DeviceImageResponse")
-	proto.RegisterType((*SelfTestResponse)(nil), "device.SelfTestResponse")
-	proto.RegisterType((*Devices)(nil), "device.Devices")
-	proto.RegisterType((*SimulateAlarmRequest)(nil), "device.SimulateAlarmRequest")
-	proto.RegisterType((*OnuSerialNumberOnOLTPon)(nil), "device.OnuSerialNumberOnOLTPon")
-	proto.RegisterType((*UpdateDevice)(nil), "device.UpdateDevice")
-}
-
-func init() { proto.RegisterFile("voltha_protos/device.proto", fileDescriptor_200940f73d155856) }
-
-var fileDescriptor_200940f73d155856 = []byte{
-	// 2938 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0x4b, 0x6f, 0x1b, 0xc9,
-	0xf1, 0x37, 0x49, 0xf1, 0x31, 0xc5, 0x87, 0x46, 0x2d, 0xc9, 0x1e, 0x4b, 0xeb, 0xbf, 0xbd, 0xe3,
-	0x7d, 0xc8, 0xeb, 0x5d, 0x69, 0xd7, 0xfe, 0x67, 0x37, 0x09, 0x10, 0xac, 0x29, 0x72, 0x64, 0x31,
-	0x91, 0x87, 0xca, 0x90, 0xd4, 0x66, 0xf7, 0x32, 0x18, 0x71, 0x9a, 0xd2, 0xc0, 0xc3, 0x69, 0x7a,
-	0x66, 0x28, 0xc9, 0x7b, 0x4b, 0x82, 0xe4, 0x14, 0x20, 0x01, 0x72, 0xca, 0x07, 0x08, 0x90, 0x53,
-	0x90, 0xdb, 0xe6, 0x18, 0xe4, 0x13, 0xe4, 0x98, 0x73, 0x2e, 0xf9, 0x00, 0xc9, 0x07, 0x08, 0xfa,
-	0x35, 0x0f, 0x4a, 0xf2, 0x7a, 0x83, 0x20, 0xc8, 0x85, 0x98, 0xfe, 0x55, 0x75, 0x75, 0x77, 0x75,
-	0xd7, 0xaf, 0xab, 0x9a, 0xb0, 0x71, 0x46, 0xfc, 0xf8, 0xd4, 0xb1, 0x67, 0x21, 0x89, 0x49, 0xb4,
-	0xe3, 0xe2, 0x33, 0x6f, 0x8c, 0xb7, 0x59, 0x0b, 0x55, 0x78, 0x6b, 0xe3, 0xf6, 0x09, 0x21, 0x27,
-	0x3e, 0xde, 0x61, 0xe8, 0xf1, 0x7c, 0xb2, 0xe3, 0x04, 0x2f, 0xb9, 0xca, 0xc6, 0x42, 0xf7, 0x31,
-	0x99, 0x4e, 0x49, 0x20, 0x64, 0x77, 0xf3, 0x32, 0x32, 0xc3, 0xc1, 0xc4, 0x27, 0xe7, 0xf6, 0x47,
-	0x8f, 0xb9, 0x82, 0xfe, 0xb7, 0x22, 0x40, 0x97, 0x0d, 0x31, 0x7c, 0x39, 0xc3, 0xa8, 0x05, 0x45,
-	0xcf, 0xd5, 0x0a, 0xf7, 0x0a, 0x5b, 0x8a, 0x55, 0xf4, 0x5c, 0xb4, 0x09, 0xca, 0x19, 0x0e, 0x5c,
-	0x12, 0xda, 0x9e, 0xab, 0x95, 0x19, 0x5c, 0xe3, 0x40, 0xcf, 0x45, 0x77, 0x00, 0x12, 0x61, 0xa4,
-	0x55, 0xee, 0x95, 0xb6, 0x14, 0x4b, 0x91, 0xd2, 0x08, 0x69, 0x50, 0x75, 0x5c, 0x67, 0x16, 0xe3,
-	0x50, 0x2b, 0xb2, 0x9e, 0xb2, 0x89, 0x3e, 0x01, 0xcd, 0x19, 0x8f, 0xf1, 0x2c, 0x8e, 0xec, 0xe3,
-	0xb9, 0xff, 0xdc, 0x66, 0x53, 0x9a, 0xcf, 0x5c, 0x27, 0xc6, 0x5a, 0xe9, 0x5e, 0x61, 0xab, 0x66,
-	0xad, 0x0b, 0xf9, 0xee, 0xdc, 0x7f, 0xbe, 0xe7, 0x93, 0xf3, 0x11, 0x13, 0xa2, 0x2e, 0xdc, 0x95,
-	0x1d, 0x1d, 0xd7, 0xb5, 0x43, 0x3c, 0x25, 0x67, 0x38, 0xdb, 0x3d, 0xd2, 0x96, 0x58, 0xff, 0x4d,
-	0xa1, 0xd6, 0x76, 0x5d, 0x8b, 0x29, 0xa5, 0x46, 0x22, 0x74, 0x00, 0xf7, 0xa5, 0x15, 0xd7, 0x0b,
-	0xf1, 0x38, 0xb6, 0x7d, 0x72, 0xe2, 0x8d, 0x1d, 0x9f, 0x59, 0x8a, 0xe4, 0x4c, 0xaa, 0xcc, 0x92,
-	0x1c, 0xb0, 0xcb, 0x34, 0x0f, 0xb8, 0x22, 0xb5, 0x16, 0x89, 0x39, 0xbd, 0x09, 0x0d, 0xb1, 0x2e,
-	0x3b, 0x7e, 0x39, 0xc3, 0x5a, 0x8d, 0xad, 0xb5, 0x2e, 0x30, 0xea, 0x55, 0xfd, 0x13, 0xa8, 0xa7,
-	0x3e, 0x8e, 0xd0, 0x16, 0x94, 0xbd, 0x18, 0x4f, 0x23, 0xad, 0x70, 0xaf, 0xb4, 0x55, 0x7f, 0x84,
-	0xb6, 0xc5, 0x8e, 0xa7, 0x3a, 0x16, 0x57, 0xd0, 0xff, 0x54, 0x80, 0xda, 0xe1, 0xb4, 0x43, 0x82,
-	0x89, 0x77, 0x82, 0x10, 0x2c, 0x05, 0xce, 0x14, 0x8b, 0xdd, 0x61, 0xdf, 0xe8, 0x21, 0x2c, 0xb1,
-	0x41, 0xa9, 0x83, 0x5b, 0x8f, 0x6e, 0x49, 0x4b, 0xb2, 0xcf, 0xf6, 0xe1, 0x94, 0x99, 0x63, 0x4a,
-	0x74, 0x43, 0x70, 0xe0, 0x1c, 0xfb, 0xd8, 0x15, 0x5e, 0x96, 0x4d, 0x74, 0x17, 0xea, 0x91, 0x33,
-	0x9d, 0xf9, 0xd8, 0x9e, 0x84, 0xf8, 0x05, 0xf3, 0x61, 0xd3, 0x02, 0x0e, 0xed, 0x85, 0xf8, 0x85,
-	0xfe, 0x6d, 0xa8, 0x70, 0x53, 0xa8, 0x0e, 0xd5, 0x4e, 0x7f, 0x64, 0x0e, 0x0d, 0x4b, 0xbd, 0x81,
-	0x14, 0x28, 0x3f, 0x6d, 0x8f, 0x9e, 0x1a, 0x6a, 0x81, 0x7e, 0x0e, 0x86, 0xed, 0xa1, 0xa1, 0x16,
-	0xb9, 0x8a, 0x39, 0x34, 0x7e, 0x34, 0x54, 0x4b, 0xfa, 0xaf, 0x0b, 0xd0, 0x3c, 0x9c, 0x3e, 0x0d,
-	0xc9, 0x7c, 0x26, 0xd6, 0x71, 0x07, 0xe0, 0x84, 0x36, 0xed, 0xcc, 0x6a, 0x14, 0x86, 0x98, 0x74,
-	0x49, 0x89, 0x98, 0x4d, 0xa5, 0xc8, 0xa6, 0xc2, 0xc5, 0x74, 0x26, 0xaf, 0x58, 0xc4, 0x7b, 0x50,
-	0x9d, 0xe2, 0x38, 0xf4, 0xc6, 0xf4, 0x10, 0x50, 0xc7, 0xaa, 0x8b, 0xee, 0xb0, 0xa4, 0x82, 0xfe,
-	0x8f, 0x02, 0x28, 0x12, 0x8d, 0x2e, 0x9d, 0xfa, 0x37, 0xa1, 0xe1, 0xe2, 0x89, 0x33, 0xf7, 0xe3,
-	0xec, 0x24, 0xea, 0x02, 0x93, 0xd3, 0x60, 0x73, 0x4a, 0xa7, 0x21, 0x9a, 0xe8, 0x3e, 0x34, 0x69,
-	0x27, 0x9b, 0x9c, 0xe1, 0x30, 0xf4, 0x5c, 0x2c, 0x4e, 0x64, 0x83, 0x82, 0x7d, 0x81, 0xa1, 0x0f,
-	0xa0, 0xc2, 0xf4, 0x23, 0xad, 0xcc, 0xa6, 0xba, 0x9e, 0x4e, 0x35, 0xe3, 0x2a, 0x4b, 0x28, 0x65,
-	0x97, 0x56, 0xf9, 0x9a, 0xa5, 0xa1, 0xdb, 0x50, 0x9b, 0x3a, 0x17, 0x76, 0xf4, 0x1c, 0x9f, 0xb3,
-	0x23, 0xdc, 0xb4, 0xaa, 0x53, 0xe7, 0x62, 0xf0, 0x1c, 0x9f, 0xeb, 0xbf, 0x2c, 0x42, 0xb9, 0x37,
-	0x75, 0x4e, 0xf0, 0x95, 0x67, 0x49, 0x83, 0xea, 0x19, 0x0e, 0x23, 0x8f, 0x04, 0x32, 0x5e, 0x45,
-	0x93, 0x6a, 0x9f, 0x3a, 0xd1, 0x29, 0x5b, 0x69, 0xd3, 0x62, 0xdf, 0xe8, 0x01, 0xa8, 0x5e, 0x10,
-	0xc5, 0x8e, 0xef, 0xdb, 0x34, 0x0c, 0x62, 0x6f, 0xca, 0x57, 0xaa, 0x58, 0xcb, 0x02, 0xef, 0x0a,
-	0x98, 0x92, 0x88, 0x17, 0xd9, 0xce, 0x38, 0xf6, 0xce, 0x30, 0x23, 0x91, 0x9a, 0x55, 0xf3, 0xa2,
-	0x36, 0x6b, 0x53, 0x5f, 0x7b, 0x91, 0x4d, 0x49, 0xcb, 0x8b, 0x63, 0xec, 0x6a, 0x15, 0x26, 0xaf,
-	0x7b, 0x51, 0x47, 0x42, 0x74, 0x45, 0x5e, 0x64, 0x9f, 0x39, 0xbe, 0xe7, 0x8a, 0xa0, 0xac, 0x7a,
-	0xd1, 0x11, 0x6d, 0x22, 0x15, 0x4a, 0xf3, 0xd0, 0x17, 0x31, 0x47, 0x3f, 0xd1, 0x4d, 0xa8, 0x70,
-	0x0a, 0xd2, 0x14, 0x06, 0x8a, 0x16, 0x5a, 0x83, 0xf2, 0x38, 0x1c, 0x3f, 0x7e, 0xa4, 0x01, 0x5b,
-	0x04, 0x6f, 0xe8, 0x7f, 0xaf, 0x42, 0x93, 0x79, 0xa4, 0x4b, 0xce, 0x03, 0x9f, 0x38, 0xee, 0xa5,
-	0xb3, 0x20, 0x3d, 0x55, 0xcc, 0x78, 0x4a, 0x8c, 0x5a, 0x4a, 0x47, 0x55, 0xa1, 0x34, 0x0e, 0xc7,
-	0x22, 0x70, 0xe8, 0x27, 0xea, 0x43, 0xcb, 0x15, 0x36, 0xed, 0x28, 0xa6, 0x7c, 0x52, 0x66, 0x31,
-	0xba, 0x25, 0x77, 0x2e, 0x37, 0x6c, 0xbe, 0x35, 0xa0, 0xfa, 0x56, 0xd3, 0xcd, 0x36, 0xe9, 0xb9,
-	0xf2, 0xa8, 0x92, 0x2d, 0x37, 0xa9, 0xc2, 0x86, 0x6f, 0x30, 0xf0, 0x48, 0xec, 0xd4, 0x03, 0x50,
-	0x65, 0x2f, 0xec, 0xda, 0xc7, 0x2f, 0x29, 0x23, 0xf2, 0x43, 0xb0, 0x9c, 0xe2, 0xbb, 0x14, 0x46,
-	0xfb, 0x50, 0x09, 0xb1, 0x13, 0x91, 0x80, 0x79, 0xaf, 0xf5, 0xe8, 0xc3, 0xd7, 0x98, 0xd8, 0x9e,
-	0xe3, 0xf9, 0xf3, 0x10, 0x5b, 0xac, 0x9f, 0x25, 0xfa, 0xa3, 0x77, 0x61, 0xd9, 0x71, 0x5d, 0x2f,
-	0xf6, 0x48, 0xe0, 0xf8, 0xb6, 0x17, 0x4c, 0x88, 0xf0, 0x7d, 0x2b, 0x85, 0x7b, 0xc1, 0x84, 0x70,
-	0x9a, 0x39, 0xc3, 0xf6, 0x98, 0x1d, 0x59, 0xb6, 0x13, 0x35, 0x4a, 0x33, 0x67, 0x58, 0x50, 0xc3,
-	0x26, 0x28, 0x3e, 0xa1, 0x44, 0xec, 0x7a, 0xa1, 0x56, 0xe7, 0xd7, 0x0d, 0x03, 0xba, 0x5e, 0x88,
-	0x7a, 0x50, 0xe7, 0x0e, 0xe0, 0xee, 0x6c, 0x7c, 0xad, 0x3b, 0xd9, 0x09, 0x73, 0x62, 0xcc, 0xdd,
-	0x09, 0xac, 0x33, 0xf7, 0xe5, 0x26, 0x28, 0x13, 0xcf, 0xc7, 0x76, 0xe4, 0x7d, 0x89, 0xb5, 0x26,
-	0xf3, 0x4f, 0x8d, 0x02, 0x03, 0xef, 0x4b, 0xac, 0x7f, 0x55, 0x00, 0x74, 0x79, 0x3b, 0xd0, 0x1a,
-	0xa8, 0xdd, 0xfe, 0x67, 0xe6, 0x41, 0xbf, 0xdd, 0xb5, 0x47, 0xe6, 0x0f, 0xcc, 0xfe, 0x67, 0xa6,
-	0x7a, 0x03, 0xdd, 0x04, 0x94, 0xa0, 0x83, 0x51, 0xa7, 0x63, 0x18, 0x5d, 0xa3, 0xab, 0x16, 0x72,
-	0xb8, 0x65, 0xfc, 0x70, 0x64, 0x0c, 0x86, 0x46, 0x57, 0x2d, 0xe6, 0xac, 0x0c, 0x86, 0x6d, 0x8b,
-	0xa2, 0x25, 0xb4, 0x0a, 0xcb, 0x09, 0xba, 0xd7, 0xee, 0x1d, 0x18, 0x5d, 0x75, 0x09, 0x69, 0xb0,
-	0x96, 0x19, 0x70, 0x30, 0x3a, 0x3c, 0xec, 0x33, 0xf5, 0x72, 0xce, 0x78, 0xa7, 0x6d, 0x76, 0x8c,
-	0x03, 0xda, 0xa3, 0xa2, 0xff, 0xbc, 0x00, 0x1b, 0xd7, 0xef, 0x17, 0x6a, 0x40, 0xcd, 0xec, 0xdb,
-	0x86, 0x65, 0xf5, 0x29, 0x77, 0x2f, 0x43, 0xbd, 0x67, 0x1e, 0xb5, 0x0f, 0x7a, 0x5d, 0x7b, 0x64,
-	0x1d, 0xa8, 0x05, 0x0a, 0x74, 0x8d, 0xa3, 0x5e, 0xc7, 0xb0, 0x77, 0x47, 0x83, 0xcf, 0xd5, 0x22,
-	0x1d, 0xa6, 0x67, 0x0e, 0x46, 0x7b, 0x7b, 0xbd, 0x4e, 0xcf, 0x30, 0x87, 0xf6, 0xe0, 0xb0, 0xdd,
-	0x31, 0xd4, 0x12, 0x5a, 0x81, 0xa6, 0x70, 0x80, 0x30, 0xb6, 0x84, 0x9a, 0xa0, 0xa4, 0x13, 0x29,
-	0xeb, 0xbf, 0x90, 0x2e, 0xcc, 0x6d, 0x01, 0xed, 0xd8, 0x7b, 0xd6, 0x7e, 0x6a, 0x64, 0xfc, 0x87,
-	0xa0, 0xc5, 0xa1, 0x9e, 0xd9, 0xee, 0x0c, 0x7b, 0x47, 0xf4, 0x2a, 0x59, 0x03, 0x95, 0x63, 0x0c,
-	0x69, 0x0f, 0x7b, 0xe6, 0x53, 0xb5, 0x88, 0x54, 0x68, 0x64, 0x50, 0x83, 0x7b, 0x8d, 0x23, 0x96,
-	0x71, 0x64, 0x58, 0x4c, 0x6d, 0x29, 0x35, 0xc8, 0x41, 0x3a, 0x9d, 0xef, 0x16, 0xb5, 0x82, 0xde,
-	0x86, 0x56, 0xce, 0x35, 0x11, 0x7a, 0x28, 0xaf, 0xe1, 0x62, 0x9e, 0x82, 0x73, 0x6a, 0xe2, 0x26,
-	0x66, 0x26, 0x3e, 0x80, 0x0a, 0x93, 0x45, 0xe8, 0x3e, 0x94, 0xd9, 0x69, 0x12, 0x37, 0x78, 0x33,
-	0xd7, 0xd5, 0xe2, 0x32, 0xfd, 0x0f, 0x05, 0xa8, 0xf5, 0x83, 0x39, 0x27, 0xdc, 0x0c, 0xb9, 0x16,
-	0xf2, 0xe4, 0xfa, 0x7f, 0x00, 0x92, 0xec, 0xb0, 0xcb, 0x68, 0xa6, 0x66, 0x65, 0x10, 0xb4, 0x01,
-	0x09, 0x59, 0x8a, 0xab, 0x26, 0x25, 0x4f, 0x0d, 0x24, 0x13, 0x8a, 0x5b, 0x26, 0x21, 0xc6, 0x7b,
-	0x50, 0x9f, 0x85, 0xc4, 0x9d, 0x8f, 0xe3, 0x0e, 0x71, 0xb1, 0x48, 0xdd, 0xb2, 0x50, 0x42, 0xea,
-	0x9c, 0x46, 0xd8, 0xb7, 0xfe, 0x18, 0x14, 0x39, 0xe3, 0x08, 0xbd, 0x93, 0x4f, 0x53, 0x92, 0x2b,
-	0x47, 0x6a, 0xc8, 0x24, 0x65, 0x0c, 0x2a, 0xcf, 0x5c, 0x7a, 0xb9, 0x00, 0xe3, 0xda, 0x76, 0x42,
-	0xa6, 0x35, 0x0e, 0xf4, 0x5c, 0xf4, 0x08, 0x32, 0xb1, 0xc8, 0x56, 0x9c, 0x49, 0x82, 0x52, 0x23,
-	0xd9, 0x88, 0xd5, 0x7f, 0x52, 0x03, 0xc8, 0xd8, 0xbf, 0xde, 0x9d, 0x07, 0x97, 0x78, 0x97, 0xe7,
-	0x46, 0x6f, 0x5f, 0x1e, 0xe0, 0x35, 0x48, 0xf7, 0x7b, 0x09, 0x49, 0x96, 0x5e, 0x6d, 0xe5, 0x6a,
-	0x66, 0xdc, 0xcf, 0x53, 0xd6, 0x12, 0xb3, 0xf1, 0xee, 0x75, 0x36, 0x44, 0xb0, 0x78, 0x24, 0xb8,
-	0xbc, 0xfe, 0xbf, 0xfc, 0xcf, 0x93, 0xd2, 0x2d, 0x58, 0x5d, 0x24, 0x25, 0x1a, 0x91, 0x95, 0x6b,
-	0xd8, 0xaa, 0xaa, 0xff, 0x53, 0x2e, 0xe9, 0xbf, 0xc6, 0x52, 0x1a, 0xac, 0x25, 0x13, 0xb0, 0xfb,
-	0xa6, 0xf4, 0x81, 0x5a, 0x46, 0x1b, 0x70, 0x33, 0x27, 0xe9, 0x9b, 0x23, 0x9b, 0xa7, 0xb3, 0x15,
-	0x2a, 0x3b, 0x32, 0xcc, 0x6e, 0xdf, 0xb2, 0xc5, 0xc0, 0xcf, 0x7a, 0x83, 0x67, 0xed, 0x61, 0x67,
-	0x5f, 0xad, 0xd2, 0x45, 0xf7, 0x9f, 0x75, 0x7a, 0xf6, 0xd0, 0x6a, 0x9b, 0x83, 0x3d, 0xc3, 0x12,
-	0x43, 0xd5, 0xe8, 0x50, 0x92, 0x86, 0xf6, 0x46, 0x03, 0xa3, 0x6b, 0xef, 0x7e, 0x4e, 0x8d, 0xaa,
-	0x8a, 0xfe, 0xc7, 0x22, 0xac, 0x5d, 0xb5, 0xdd, 0xff, 0x69, 0x76, 0x4c, 0xf4, 0x3a, 0xfd, 0x67,
-	0xcf, 0x7a, 0x43, 0x41, 0x8f, 0x09, 0x67, 0x0a, 0x94, 0x6d, 0xdd, 0x1d, 0xb8, 0x9d, 0x37, 0xd9,
-	0x37, 0xed, 0xf6, 0x6e, 0x9f, 0x53, 0x6a, 0x05, 0xbd, 0x01, 0xda, 0xd5, 0x62, 0xba, 0x8d, 0xe8,
-	0x36, 0xac, 0x67, 0x2d, 0xa6, 0x1d, 0x33, 0x4e, 0xc8, 0x8a, 0x8c, 0xae, 0xaa, 0xa0, 0x75, 0x58,
-	0xe1, 0x12, 0x79, 0x32, 0x68, 0x07, 0x48, 0x27, 0x92, 0x81, 0x93, 0x5e, 0x75, 0xfd, 0xab, 0x32,
-	0x2c, 0x1d, 0x92, 0x30, 0x46, 0xb7, 0xa0, 0x3a, 0x23, 0x61, 0x6c, 0x07, 0x84, 0x85, 0x7f, 0xd3,
-	0xaa, 0xd0, 0xa6, 0x49, 0x68, 0x96, 0xe7, 0x3b, 0xc7, 0xd8, 0x17, 0xe9, 0x1a, 0x6f, 0xa0, 0x07,
-	0xa2, 0x4a, 0xe2, 0x31, 0x9c, 0xe6, 0xda, 0x24, 0x8c, 0xd9, 0x4f, 0xa6, 0x46, 0xfa, 0x0e, 0xd4,
-	0x1d, 0x77, 0xea, 0x05, 0xb9, 0x9c, 0x4d, 0xdb, 0x16, 0x45, 0x75, 0x9b, 0x8a, 0x78, 0xc4, 0xb2,
-	0x52, 0xce, 0x02, 0x27, 0x41, 0x68, 0x57, 0x32, 0xc3, 0x21, 0xeb, 0x39, 0x8f, 0x18, 0xaf, 0x66,
-	0xba, 0xf6, 0x67, 0x38, 0x1c, 0x30, 0x89, 0xec, 0x4a, 0x12, 0x24, 0x4f, 0x97, 0xd5, 0x05, 0xba,
-	0x7c, 0x08, 0xe5, 0x19, 0xc6, 0x61, 0xa4, 0xd5, 0x16, 0x4a, 0x05, 0x36, 0x7d, 0x8c, 0x43, 0xfa,
-	0x61, 0x71, 0x1d, 0x5a, 0x3d, 0x85, 0x17, 0xf6, 0xcc, 0x19, 0x3f, 0xc7, 0x71, 0xc4, 0xd2, 0xb0,
-	0x8a, 0xa5, 0x84, 0x17, 0x87, 0x1c, 0xa0, 0xa9, 0x74, 0x78, 0x21, 0xf2, 0x42, 0x60, 0xc2, 0x6a,
-	0x78, 0xc1, 0xf3, 0xc1, 0x4d, 0x50, 0xc2, 0x0b, 0x1b, 0x87, 0x21, 0x09, 0x23, 0x96, 0x7b, 0x55,
-	0xac, 0x5a, 0x78, 0x61, 0xb0, 0x36, 0x35, 0x1b, 0xa7, 0x66, 0x1b, 0xdc, 0x6c, 0x9c, 0x35, 0x1b,
-	0x4b, 0xb3, 0x4d, 0x6e, 0x36, 0x4e, 0xcd, 0xc6, 0x89, 0xd9, 0x16, 0x37, 0x1b, 0x4b, 0xb3, 0x1f,
-	0x42, 0x8d, 0x4c, 0x66, 0x36, 0xdd, 0x3c, 0x6d, 0x99, 0xdd, 0x03, 0xeb, 0xdb, 0xd9, 0x37, 0x0a,
-	0x29, 0xb4, 0xaa, 0x64, 0x32, 0xa3, 0xcb, 0xdc, 0x78, 0x02, 0x35, 0xb9, 0xe4, 0x57, 0x5f, 0x32,
-	0x99, 0x23, 0x52, 0xcc, 0x1e, 0x11, 0x3d, 0x82, 0x9a, 0xdc, 0x73, 0x5a, 0xa9, 0xa6, 0xc1, 0xa6,
-	0x42, 0xc3, 0x18, 0xee, 0x1b, 0x96, 0x69, 0x0c, 0x6d, 0xd3, 0xec, 0xa9, 0x85, 0x1c, 0x32, 0x32,
-	0x7b, 0xbc, 0xb4, 0x3d, 0xa4, 0xf4, 0x70, 0x30, 0x54, 0x4b, 0x49, 0xc3, 0x1c, 0xf1, 0x0c, 0xe8,
-	0xc8, 0xa0, 0x8a, 0x54, 0x56, 0xce, 0x34, 0xcd, 0x91, 0x5a, 0xd1, 0x1f, 0x42, 0x99, 0x0e, 0x1a,
-	0x21, 0x3d, 0x7f, 0xa9, 0x36, 0xb2, 0x9b, 0x29, 0x2f, 0xd4, 0xbf, 0x02, 0x54, 0xf8, 0x8d, 0x7a,
-	0x55, 0x35, 0x92, 0xd4, 0xfb, 0x8a, 0x38, 0xb2, 0x08, 0x96, 0x42, 0x42, 0x62, 0x91, 0x1c, 0xb0,
-	0x6f, 0xea, 0x9a, 0x99, 0x13, 0xe2, 0x20, 0xb6, 0x45, 0x6a, 0xa0, 0x58, 0x35, 0x0e, 0xf4, 0x5c,
-	0xf4, 0x16, 0xb4, 0x84, 0x50, 0x7a, 0x68, 0x8d, 0x79, 0xa8, 0xc1, 0xd1, 0x43, 0x1e, 0x4a, 0x69,
-	0x21, 0x55, 0x5e, 0x2c, 0xa4, 0xa6, 0xc4, 0xc5, 0xbe, 0x48, 0x1c, 0x78, 0x83, 0x16, 0x1e, 0xa7,
-	0x4e, 0xe8, 0x9e, 0x3b, 0x61, 0x5a, 0xa0, 0xf0, 0x83, 0xbc, 0x2c, 0xf1, 0x4c, 0x8d, 0x32, 0xf1,
-	0xc2, 0x69, 0x4e, 0x95, 0x17, 0x70, 0xcb, 0x12, 0x97, 0xaa, 0xef, 0x40, 0x85, 0xdd, 0x81, 0xfc,
-	0x24, 0xd7, 0x1f, 0xb5, 0x72, 0x57, 0x67, 0x64, 0x09, 0x29, 0xad, 0x8d, 0x22, 0x1c, 0x7a, 0x8e,
-	0x6f, 0x07, 0xf3, 0xe9, 0x31, 0x0e, 0xd9, 0xd9, 0x56, 0xac, 0x06, 0x07, 0x4d, 0x86, 0xe5, 0xdf,
-	0xb2, 0xb4, 0x85, 0xb7, 0xac, 0x07, 0xa0, 0xca, 0x57, 0x1c, 0x1c, 0xb8, 0x33, 0xe2, 0x05, 0xb1,
-	0x76, 0x9b, 0x4f, 0x4a, 0xe0, 0x86, 0x80, 0xa9, 0xbf, 0xcf, 0x7c, 0x27, 0x60, 0x51, 0xd0, 0xb4,
-	0xd8, 0x37, 0xad, 0x6c, 0xa6, 0xce, 0xd8, 0x76, 0x5c, 0x37, 0xc4, 0x11, 0x8f, 0x01, 0xc5, 0x82,
-	0xa9, 0x33, 0x6e, 0x73, 0x04, 0xdd, 0x87, 0x86, 0x37, 0x3b, 0xfb, 0xff, 0x44, 0x83, 0x46, 0x82,
-	0xb2, 0x7f, 0xc3, 0xaa, 0x53, 0x34, 0xaf, 0xf4, 0x71, 0xa2, 0xb4, 0x9c, 0x51, 0xfa, 0x58, 0x2a,
-	0xbd, 0x05, 0xcd, 0x53, 0x12, 0xc5, 0xb6, 0x13, 0xb8, 0x3c, 0x70, 0xd6, 0xa5, 0x16, 0x85, 0xdb,
-	0x81, 0xcb, 0x62, 0xe3, 0x0e, 0x00, 0xbe, 0x88, 0x43, 0xc7, 0x76, 0xc2, 0x93, 0x48, 0xbb, 0xc5,
-	0x1f, 0x59, 0x18, 0xd2, 0x0e, 0x4f, 0x22, 0xf4, 0x04, 0x9a, 0xb3, 0x90, 0x5c, 0xbc, 0x4c, 0x86,
-	0x5a, 0x65, 0xfe, 0xdd, 0xcc, 0x3f, 0x45, 0x6d, 0x1f, 0x52, 0x1d, 0x31, 0xb0, 0xd5, 0x98, 0x65,
-	0x5a, 0x8b, 0x44, 0xa9, 0xfe, 0xfb, 0x44, 0xb9, 0xf2, 0x0d, 0x88, 0xf2, 0x66, 0x92, 0x8f, 0xdd,
-	0xe4, 0x87, 0x52, 0x24, 0x5a, 0xbb, 0xd0, 0x1a, 0x93, 0x20, 0xc0, 0xe3, 0x58, 0x5a, 0x45, 0xcc,
-	0xea, 0xa6, 0xb4, 0xda, 0xe1, 0xd2, 0x9c, 0xe1, 0xe6, 0x38, 0x0b, 0xa2, 0xf7, 0xa1, 0x32, 0x9e,
-	0x47, 0x31, 0x99, 0x6a, 0x4f, 0x98, 0x33, 0xd6, 0xb6, 0xf9, 0x9b, 0xeb, 0xb6, 0x7c, 0x73, 0xdd,
-	0x6e, 0x07, 0x2f, 0x2d, 0xa1, 0x83, 0x3e, 0x02, 0x98, 0x4d, 0x45, 0x25, 0x1b, 0x69, 0x3f, 0x2d,
-	0xb0, 0x2e, 0x2b, 0x8b, 0xcf, 0x32, 0x91, 0xa5, 0xcc, 0x92, 0x67, 0xa6, 0x4f, 0x61, 0x99, 0x67,
-	0x83, 0x32, 0xc7, 0x8c, 0xb4, 0x9f, 0x15, 0x5e, 0x55, 0x7b, 0xb4, 0xbc, 0x5c, 0xc5, 0xb2, 0xf1,
-	0xfb, 0x22, 0x34, 0xb2, 0x5b, 0xf2, 0x6a, 0x06, 0xbc, 0x0b, 0x75, 0x21, 0xcc, 0x50, 0x06, 0xb8,
-	0xe9, 0x63, 0xef, 0x1d, 0x80, 0xf1, 0xa9, 0x13, 0x04, 0xd8, 0xa7, 0xdd, 0xf9, 0xe3, 0x8e, 0x22,
-	0x90, 0x9e, 0x8b, 0xb6, 0x40, 0x95, 0x62, 0xfe, 0x20, 0x27, 0xa8, 0xa4, 0x69, 0xb5, 0x04, 0xce,
-	0x9e, 0xaa, 0x7a, 0x2e, 0xda, 0x81, 0x55, 0xa9, 0x19, 0xe3, 0x70, 0xea, 0x05, 0x2c, 0xab, 0x11,
-	0xbc, 0x81, 0x84, 0x68, 0x98, 0x4a, 0xd0, 0x3a, 0x54, 0x48, 0x30, 0xa7, 0x06, 0x2b, 0xfc, 0x35,
-	0x86, 0x04, 0x73, 0x4e, 0x4c, 0x14, 0x8e, 0x70, 0x44, 0xa3, 0x5f, 0xde, 0x85, 0x4d, 0xab, 0x41,
-	0x82, 0xf9, 0x80, 0x83, 0xd7, 0x84, 0x6a, 0xed, 0xca, 0x50, 0xdd, 0x55, 0xa0, 0x2a, 0x0e, 0xf8,
-	0xf7, 0x97, 0x6a, 0x75, 0xb5, 0xa1, 0xff, 0xb9, 0x00, 0x1b, 0x99, 0x62, 0x25, 0xf1, 0x34, 0x7e,
-	0x31, 0xc7, 0x51, 0x8c, 0xde, 0xcd, 0xfb, 0x93, 0x6e, 0x0d, 0xc8, 0x13, 0xd4, 0xeb, 0x66, 0x7c,
-	0x9b, 0x14, 0x80, 0xbc, 0x7a, 0xb9, 0xb2, 0x00, 0x44, 0xef, 0xc3, 0x8a, 0x23, 0xea, 0xdf, 0x7e,
-	0x30, 0x98, 0x8f, 0xc7, 0x34, 0xd0, 0x38, 0x4b, 0x5f, 0x16, 0xa0, 0x2d, 0x58, 0xe6, 0xaf, 0x60,
-	0xa9, 0x2e, 0xaf, 0xe9, 0x16, 0x61, 0xfd, 0xc7, 0x05, 0x40, 0x99, 0x45, 0x7c, 0xe3, 0xc9, 0x5f,
-	0xff, 0xd0, 0x77, 0xc5, 0x1c, 0x4a, 0x57, 0xcf, 0xc1, 0x86, 0xd5, 0xdc, 0x14, 0xa2, 0x19, 0x09,
-	0x22, 0x8c, 0xf6, 0x61, 0x55, 0xce, 0x21, 0xad, 0x7b, 0xe4, 0x65, 0xa7, 0xe5, 0xd9, 0x25, 0x53,
-	0xe9, 0xad, 0xb8, 0x0b, 0x48, 0xa4, 0xff, 0xb6, 0x00, 0xea, 0x00, 0xfb, 0x93, 0x21, 0x8e, 0xe2,
-	0xc4, 0xfc, 0xa7, 0x34, 0xfc, 0xa3, 0xb9, 0x1f, 0xb3, 0xc3, 0x9e, 0x29, 0xa5, 0x16, 0x35, 0xb3,
-	0xc0, 0xdc, 0x8f, 0x2d, 0xd1, 0x4d, 0x3f, 0x84, 0x56, 0x5e, 0x42, 0x2f, 0x71, 0x56, 0x22, 0x0d,
-	0x06, 0xea, 0x0d, 0xda, 0xa0, 0x95, 0xce, 0xc8, 0xa2, 0x89, 0xf6, 0x0a, 0x34, 0xcd, 0xfe, 0xd0,
-	0x4e, 0x6b, 0x9c, 0xe2, 0xe5, 0x9a, 0xa2, 0xa4, 0xef, 0x40, 0x95, 0x2f, 0x87, 0x32, 0x73, 0xee,
-	0x6e, 0x6f, 0xe5, 0x97, 0x2b, 0x6f, 0xf7, 0xdf, 0x95, 0x60, 0x6d, 0xe0, 0x4d, 0xe7, 0xbe, 0x13,
-	0xe3, 0xb6, 0xef, 0x84, 0x53, 0xb9, 0x7f, 0x8b, 0x77, 0xfd, 0x1b, 0xa0, 0x78, 0x81, 0xeb, 0x8d,
-	0x9d, 0x98, 0xc8, 0x7f, 0x50, 0x52, 0x80, 0xe6, 0x37, 0x5e, 0x10, 0x4f, 0x64, 0xe4, 0x2a, 0x56,
-	0x85, 0x36, 0xc5, 0xed, 0x4e, 0xaf, 0x75, 0x1a, 0xf4, 0xfc, 0x89, 0x9d, 0xdf, 0xff, 0x8d, 0x99,
-	0xc8, 0x7a, 0xd8, 0x2b, 0xbb, 0x0e, 0x4d, 0x1a, 0x6a, 0xe9, 0x81, 0x11, 0x2f, 0x04, 0x24, 0x98,
-	0x77, 0xe5, 0x39, 0x79, 0x0c, 0x37, 0xbd, 0x80, 0x1e, 0x0d, 0x6c, 0x1f, 0x7b, 0x31, 0xcf, 0xe1,
-	0xec, 0x90, 0xb2, 0x3d, 0x8d, 0xda, 0xb2, 0xb5, 0x2a, 0xa4, 0xbb, 0x5e, 0xcc, 0xf2, 0x39, 0x8b,
-	0x57, 0xa4, 0x65, 0x37, 0xf4, 0x26, 0x31, 0x0b, 0xdd, 0xb2, 0xc5, 0x1b, 0x74, 0xb6, 0x01, 0x3e,
-	0xb7, 0xf1, 0x0b, 0x97, 0x85, 0x6a, 0xd9, 0xaa, 0x04, 0xf8, 0xdc, 0x78, 0xe1, 0xa2, 0xf7, 0x60,
-	0x85, 0x87, 0x7c, 0xf6, 0xf6, 0xe6, 0xaf, 0x87, 0xcb, 0x2c, 0xea, 0x33, 0x17, 0xf8, 0x3e, 0x28,
-	0xf4, 0x2a, 0xe0, 0xe4, 0x02, 0xec, 0x00, 0xbc, 0x97, 0x1c, 0x80, 0x2b, 0x3c, 0xca, 0xae, 0x12,
-	0xa6, 0xcd, 0x12, 0xfc, 0xb4, 0xb3, 0xfe, 0x36, 0x34, 0x73, 0x32, 0xa4, 0x40, 0xd9, 0x6a, 0xf7,
-	0x06, 0x06, 0xff, 0x4f, 0xa3, 0x73, 0x60, 0xb4, 0x2d, 0xb5, 0xa0, 0xff, 0xaa, 0x00, 0xb7, 0xfa,
-	0xf9, 0x49, 0xf4, 0x83, 0xfe, 0xc1, 0xf0, 0x90, 0x04, 0x68, 0x1b, 0x9a, 0xc4, 0x8f, 0xed, 0x3c,
-	0xfd, 0xe6, 0x23, 0xae, 0x4e, 0xfc, 0x38, 0x71, 0xe6, 0x3d, 0x58, 0x62, 0xb7, 0x35, 0x27, 0x8c,
-	0x7c, 0xde, 0xc7, 0x24, 0x97, 0x93, 0x98, 0xd2, 0xe5, 0x24, 0x46, 0xff, 0x4d, 0x01, 0x1a, 0xfc,
-	0x8f, 0xa7, 0x6b, 0x32, 0xc4, 0xc5, 0x44, 0xa3, 0xf8, 0x3a, 0x89, 0x46, 0xe9, 0xb5, 0x12, 0x8d,
-	0xa5, 0x2b, 0x12, 0x8d, 0x0c, 0xc5, 0xee, 0x7e, 0x01, 0x1b, 0x24, 0x3c, 0x61, 0x09, 0xfc, 0x98,
-	0x84, 0xee, 0x36, 0xff, 0xef, 0x51, 0xac, 0x74, 0xb7, 0x71, 0xc4, 0x9a, 0x7c, 0xda, 0x5f, 0x6c,
-	0x9f, 0x78, 0xf1, 0xe9, 0xfc, 0x98, 0x7a, 0x6b, 0x47, 0x76, 0xd8, 0xe1, 0x1d, 0x3e, 0x10, 0x7f,
-	0x56, 0x9e, 0x7d, 0x6b, 0xe7, 0x84, 0x08, 0xec, 0xb8, 0xc2, 0xc0, 0xc7, 0xff, 0x0a, 0x00, 0x00,
-	0xff, 0xff, 0x7b, 0x3a, 0xcb, 0x63, 0x2c, 0x1d, 0x00, 0x00,
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_device_proto_rawDesc), len(file_voltha_protos_device_proto_rawDesc)),
+			NumEnums:      10,
+			NumMessages:   26,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_device_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_device_proto_depIdxs,
+		EnumInfos:         file_voltha_protos_device_proto_enumTypes,
+		MessageInfos:      file_voltha_protos_device_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_device_proto = out.File
+	file_voltha_protos_device_proto_goTypes = nil
+	file_voltha_protos_device_proto_depIdxs = nil
 }
diff --git a/go/voltha/events.pb.go b/go/voltha/events.pb.go
index 3125fa9..38bd8c3 100644
--- a/go/voltha/events.pb.go
+++ b/go/voltha/events.pb.go
@@ -1,27 +1,28 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/events.proto
 
 package voltha
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	timestamp "github.com/golang/protobuf/ptypes/timestamp"
 	common "github.com/opencord/voltha-protos/v5/go/common"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type EventFilterRuleKey_EventFilterRuleType int32
 
@@ -34,83 +35,146 @@
 	EventFilterRuleKey_device_event_type EventFilterRuleKey_EventFilterRuleType = 5
 )
 
-var EventFilterRuleKey_EventFilterRuleType_name = map[int32]string{
-	0: "filter_all",
-	1: "category",
-	2: "sub_category",
-	3: "kpi_event_type",
-	4: "config_event_type",
-	5: "device_event_type",
-}
+// Enum value maps for EventFilterRuleKey_EventFilterRuleType.
+var (
+	EventFilterRuleKey_EventFilterRuleType_name = map[int32]string{
+		0: "filter_all",
+		1: "category",
+		2: "sub_category",
+		3: "kpi_event_type",
+		4: "config_event_type",
+		5: "device_event_type",
+	}
+	EventFilterRuleKey_EventFilterRuleType_value = map[string]int32{
+		"filter_all":        0,
+		"category":          1,
+		"sub_category":      2,
+		"kpi_event_type":    3,
+		"config_event_type": 4,
+		"device_event_type": 5,
+	}
+)
 
-var EventFilterRuleKey_EventFilterRuleType_value = map[string]int32{
-	"filter_all":        0,
-	"category":          1,
-	"sub_category":      2,
-	"kpi_event_type":    3,
-	"config_event_type": 4,
-	"device_event_type": 5,
+func (x EventFilterRuleKey_EventFilterRuleType) Enum() *EventFilterRuleKey_EventFilterRuleType {
+	p := new(EventFilterRuleKey_EventFilterRuleType)
+	*p = x
+	return p
 }
 
 func (x EventFilterRuleKey_EventFilterRuleType) String() string {
-	return proto.EnumName(EventFilterRuleKey_EventFilterRuleType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (EventFilterRuleKey_EventFilterRuleType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_events_proto_enumTypes[0].Descriptor()
+}
+
+func (EventFilterRuleKey_EventFilterRuleType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_events_proto_enumTypes[0]
+}
+
+func (x EventFilterRuleKey_EventFilterRuleType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use EventFilterRuleKey_EventFilterRuleType.Descriptor instead.
 func (EventFilterRuleKey_EventFilterRuleType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{0, 0}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{0, 0}
 }
 
 type ConfigEventType_Types int32
 
 const (
-	ConfigEventType_add    ConfigEventType_Types = 0
-	ConfigEventType_remove ConfigEventType_Types = 1
-	ConfigEventType_update ConfigEventType_Types = 2
+	ConfigEventType_add    ConfigEventType_Types = 0 // A new config has been added
+	ConfigEventType_remove ConfigEventType_Types = 1 // A config has been removed
+	ConfigEventType_update ConfigEventType_Types = 2 // A config has been updated
 )
 
-var ConfigEventType_Types_name = map[int32]string{
-	0: "add",
-	1: "remove",
-	2: "update",
-}
+// Enum value maps for ConfigEventType_Types.
+var (
+	ConfigEventType_Types_name = map[int32]string{
+		0: "add",
+		1: "remove",
+		2: "update",
+	}
+	ConfigEventType_Types_value = map[string]int32{
+		"add":    0,
+		"remove": 1,
+		"update": 2,
+	}
+)
 
-var ConfigEventType_Types_value = map[string]int32{
-	"add":    0,
-	"remove": 1,
-	"update": 2,
+func (x ConfigEventType_Types) Enum() *ConfigEventType_Types {
+	p := new(ConfigEventType_Types)
+	*p = x
+	return p
 }
 
 func (x ConfigEventType_Types) String() string {
-	return proto.EnumName(ConfigEventType_Types_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ConfigEventType_Types) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_events_proto_enumTypes[1].Descriptor()
+}
+
+func (ConfigEventType_Types) Type() protoreflect.EnumType {
+	return &file_voltha_protos_events_proto_enumTypes[1]
+}
+
+func (x ConfigEventType_Types) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ConfigEventType_Types.Descriptor instead.
 func (ConfigEventType_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{4, 0}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{4, 0}
 }
 
 type KpiEventType_Types int32
 
 const (
-	KpiEventType_slice KpiEventType_Types = 0
-	KpiEventType_ts    KpiEventType_Types = 1
+	KpiEventType_slice KpiEventType_Types = 0 // slice: a set of path/metric data for same time-stamp
+	KpiEventType_ts    KpiEventType_Types = 1 // time-series: array of data for same metric
 )
 
-var KpiEventType_Types_name = map[int32]string{
-	0: "slice",
-	1: "ts",
-}
+// Enum value maps for KpiEventType_Types.
+var (
+	KpiEventType_Types_name = map[int32]string{
+		0: "slice",
+		1: "ts",
+	}
+	KpiEventType_Types_value = map[string]int32{
+		"slice": 0,
+		"ts":    1,
+	}
+)
 
-var KpiEventType_Types_value = map[string]int32{
-	"slice": 0,
-	"ts":    1,
+func (x KpiEventType_Types) Enum() *KpiEventType_Types {
+	p := new(KpiEventType_Types)
+	*p = x
+	return p
 }
 
 func (x KpiEventType_Types) String() string {
-	return proto.EnumName(KpiEventType_Types_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (KpiEventType_Types) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_events_proto_enumTypes[2].Descriptor()
+}
+
+func (KpiEventType_Types) Type() protoreflect.EnumType {
+	return &file_voltha_protos_events_proto_enumTypes[2]
+}
+
+func (x KpiEventType_Types) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use KpiEventType_Types.Descriptor instead.
 func (KpiEventType_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{6, 0}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{6, 0}
 }
 
 type EventCategory_Types int32
@@ -121,33 +185,54 @@
 	EventCategory_EQUIPMENT     EventCategory_Types = 2
 	EventCategory_SERVICE       EventCategory_Types = 3
 	EventCategory_PROCESSING    EventCategory_Types = 4
-	EventCategory_SECURITY      EventCategory_Types = 5
+	EventCategory_SECURITY      EventCategory_Types = 5 // Add new event areas here
 )
 
-var EventCategory_Types_name = map[int32]string{
-	0: "COMMUNICATION",
-	1: "ENVIRONMENT",
-	2: "EQUIPMENT",
-	3: "SERVICE",
-	4: "PROCESSING",
-	5: "SECURITY",
-}
+// Enum value maps for EventCategory_Types.
+var (
+	EventCategory_Types_name = map[int32]string{
+		0: "COMMUNICATION",
+		1: "ENVIRONMENT",
+		2: "EQUIPMENT",
+		3: "SERVICE",
+		4: "PROCESSING",
+		5: "SECURITY",
+	}
+	EventCategory_Types_value = map[string]int32{
+		"COMMUNICATION": 0,
+		"ENVIRONMENT":   1,
+		"EQUIPMENT":     2,
+		"SERVICE":       3,
+		"PROCESSING":    4,
+		"SECURITY":      5,
+	}
+)
 
-var EventCategory_Types_value = map[string]int32{
-	"COMMUNICATION": 0,
-	"ENVIRONMENT":   1,
-	"EQUIPMENT":     2,
-	"SERVICE":       3,
-	"PROCESSING":    4,
-	"SECURITY":      5,
+func (x EventCategory_Types) Enum() *EventCategory_Types {
+	p := new(EventCategory_Types)
+	*p = x
+	return p
 }
 
 func (x EventCategory_Types) String() string {
-	return proto.EnumName(EventCategory_Types_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (EventCategory_Types) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_events_proto_enumTypes[3].Descriptor()
+}
+
+func (EventCategory_Types) Type() protoreflect.EnumType {
+	return &file_voltha_protos_events_proto_enumTypes[3]
+}
+
+func (x EventCategory_Types) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use EventCategory_Types.Descriptor instead.
 func (EventCategory_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{16, 0}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{16, 0}
 }
 
 type EventSubCategory_Types int32
@@ -158,33 +243,54 @@
 	EventSubCategory_ONT  EventSubCategory_Types = 2
 	EventSubCategory_ONU  EventSubCategory_Types = 3
 	EventSubCategory_NNI  EventSubCategory_Types = 4
-	EventSubCategory_NONE EventSubCategory_Types = 5
+	EventSubCategory_NONE EventSubCategory_Types = 5 //Adding None for RPC Events
 )
 
-var EventSubCategory_Types_name = map[int32]string{
-	0: "PON",
-	1: "OLT",
-	2: "ONT",
-	3: "ONU",
-	4: "NNI",
-	5: "NONE",
-}
+// Enum value maps for EventSubCategory_Types.
+var (
+	EventSubCategory_Types_name = map[int32]string{
+		0: "PON",
+		1: "OLT",
+		2: "ONT",
+		3: "ONU",
+		4: "NNI",
+		5: "NONE",
+	}
+	EventSubCategory_Types_value = map[string]int32{
+		"PON":  0,
+		"OLT":  1,
+		"ONT":  2,
+		"ONU":  3,
+		"NNI":  4,
+		"NONE": 5,
+	}
+)
 
-var EventSubCategory_Types_value = map[string]int32{
-	"PON":  0,
-	"OLT":  1,
-	"ONT":  2,
-	"ONU":  3,
-	"NNI":  4,
-	"NONE": 5,
+func (x EventSubCategory_Types) Enum() *EventSubCategory_Types {
+	p := new(EventSubCategory_Types)
+	*p = x
+	return p
 }
 
 func (x EventSubCategory_Types) String() string {
-	return proto.EnumName(EventSubCategory_Types_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (EventSubCategory_Types) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_events_proto_enumTypes[4].Descriptor()
+}
+
+func (EventSubCategory_Types) Type() protoreflect.EnumType {
+	return &file_voltha_protos_events_proto_enumTypes[4]
+}
+
+func (x EventSubCategory_Types) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use EventSubCategory_Types.Descriptor instead.
 func (EventSubCategory_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{17, 0}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{17, 0}
 }
 
 type EventType_Types int32
@@ -198,753 +304,840 @@
 	EventType_KPI_EVENT3   EventType_Types = 5
 )
 
-var EventType_Types_name = map[int32]string{
-	0: "CONFIG_EVENT",
-	1: "KPI_EVENT",
-	2: "KPI_EVENT2",
-	3: "DEVICE_EVENT",
-	4: "RPC_EVENT",
-	5: "KPI_EVENT3",
-}
+// Enum value maps for EventType_Types.
+var (
+	EventType_Types_name = map[int32]string{
+		0: "CONFIG_EVENT",
+		1: "KPI_EVENT",
+		2: "KPI_EVENT2",
+		3: "DEVICE_EVENT",
+		4: "RPC_EVENT",
+		5: "KPI_EVENT3",
+	}
+	EventType_Types_value = map[string]int32{
+		"CONFIG_EVENT": 0,
+		"KPI_EVENT":    1,
+		"KPI_EVENT2":   2,
+		"DEVICE_EVENT": 3,
+		"RPC_EVENT":    4,
+		"KPI_EVENT3":   5,
+	}
+)
 
-var EventType_Types_value = map[string]int32{
-	"CONFIG_EVENT": 0,
-	"KPI_EVENT":    1,
-	"KPI_EVENT2":   2,
-	"DEVICE_EVENT": 3,
-	"RPC_EVENT":    4,
-	"KPI_EVENT3":   5,
+func (x EventType_Types) Enum() *EventType_Types {
+	p := new(EventType_Types)
+	*p = x
+	return p
 }
 
 func (x EventType_Types) String() string {
-	return proto.EnumName(EventType_Types_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (EventType_Types) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_events_proto_enumTypes[5].Descriptor()
+}
+
+func (EventType_Types) Type() protoreflect.EnumType {
+	return &file_voltha_protos_events_proto_enumTypes[5]
+}
+
+func (x EventType_Types) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use EventType_Types.Descriptor instead.
 func (EventType_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{18, 0}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{18, 0}
 }
 
 type EventFilterRuleKey struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *EventFilterRuleKey) Reset()         { *m = EventFilterRuleKey{} }
-func (m *EventFilterRuleKey) String() string { return proto.CompactTextString(m) }
-func (*EventFilterRuleKey) ProtoMessage()    {}
+func (x *EventFilterRuleKey) Reset() {
+	*x = EventFilterRuleKey{}
+	mi := &file_voltha_protos_events_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *EventFilterRuleKey) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EventFilterRuleKey) ProtoMessage() {}
+
+func (x *EventFilterRuleKey) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EventFilterRuleKey.ProtoReflect.Descriptor instead.
 func (*EventFilterRuleKey) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{0}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *EventFilterRuleKey) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EventFilterRuleKey.Unmarshal(m, b)
-}
-func (m *EventFilterRuleKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EventFilterRuleKey.Marshal(b, m, deterministic)
-}
-func (m *EventFilterRuleKey) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EventFilterRuleKey.Merge(m, src)
-}
-func (m *EventFilterRuleKey) XXX_Size() int {
-	return xxx_messageInfo_EventFilterRuleKey.Size(m)
-}
-func (m *EventFilterRuleKey) XXX_DiscardUnknown() {
-	xxx_messageInfo_EventFilterRuleKey.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EventFilterRuleKey proto.InternalMessageInfo
-
 type EventFilterRule struct {
-	Key                  EventFilterRuleKey_EventFilterRuleType `protobuf:"varint,1,opt,name=key,proto3,enum=event.EventFilterRuleKey_EventFilterRuleType" json:"key,omitempty"`
-	Value                string                                 `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                               `json:"-"`
-	XXX_unrecognized     []byte                                 `json:"-"`
-	XXX_sizecache        int32                                  `json:"-"`
+	state         protoimpl.MessageState                 `protogen:"open.v1"`
+	Key           EventFilterRuleKey_EventFilterRuleType `protobuf:"varint,1,opt,name=key,proto3,enum=event.EventFilterRuleKey_EventFilterRuleType" json:"key,omitempty"`
+	Value         string                                 `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *EventFilterRule) Reset()         { *m = EventFilterRule{} }
-func (m *EventFilterRule) String() string { return proto.CompactTextString(m) }
-func (*EventFilterRule) ProtoMessage()    {}
+func (x *EventFilterRule) Reset() {
+	*x = EventFilterRule{}
+	mi := &file_voltha_protos_events_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *EventFilterRule) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EventFilterRule) ProtoMessage() {}
+
+func (x *EventFilterRule) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EventFilterRule.ProtoReflect.Descriptor instead.
 func (*EventFilterRule) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{1}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *EventFilterRule) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EventFilterRule.Unmarshal(m, b)
-}
-func (m *EventFilterRule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EventFilterRule.Marshal(b, m, deterministic)
-}
-func (m *EventFilterRule) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EventFilterRule.Merge(m, src)
-}
-func (m *EventFilterRule) XXX_Size() int {
-	return xxx_messageInfo_EventFilterRule.Size(m)
-}
-func (m *EventFilterRule) XXX_DiscardUnknown() {
-	xxx_messageInfo_EventFilterRule.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EventFilterRule proto.InternalMessageInfo
-
-func (m *EventFilterRule) GetKey() EventFilterRuleKey_EventFilterRuleType {
-	if m != nil {
-		return m.Key
+func (x *EventFilterRule) GetKey() EventFilterRuleKey_EventFilterRuleType {
+	if x != nil {
+		return x.Key
 	}
 	return EventFilterRuleKey_filter_all
 }
 
-func (m *EventFilterRule) GetValue() string {
-	if m != nil {
-		return m.Value
+func (x *EventFilterRule) GetValue() string {
+	if x != nil {
+		return x.Value
 	}
 	return ""
 }
 
 type EventFilter struct {
-	Id                   string             `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	Enable               bool               `protobuf:"varint,2,opt,name=enable,proto3" json:"enable,omitempty"`
-	DeviceId             string             `protobuf:"bytes,3,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	EventType            string             `protobuf:"bytes,4,opt,name=event_type,json=eventType,proto3" json:"event_type,omitempty"`
-	Rules                []*EventFilterRule `protobuf:"bytes,5,rep,name=rules,proto3" json:"rules,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	Enable        bool                   `protobuf:"varint,2,opt,name=enable,proto3" json:"enable,omitempty"`
+	DeviceId      string                 `protobuf:"bytes,3,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	EventType     string                 `protobuf:"bytes,4,opt,name=event_type,json=eventType,proto3" json:"event_type,omitempty"`
+	Rules         []*EventFilterRule     `protobuf:"bytes,5,rep,name=rules,proto3" json:"rules,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *EventFilter) Reset()         { *m = EventFilter{} }
-func (m *EventFilter) String() string { return proto.CompactTextString(m) }
-func (*EventFilter) ProtoMessage()    {}
+func (x *EventFilter) Reset() {
+	*x = EventFilter{}
+	mi := &file_voltha_protos_events_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *EventFilter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EventFilter) ProtoMessage() {}
+
+func (x *EventFilter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EventFilter.ProtoReflect.Descriptor instead.
 func (*EventFilter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{2}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *EventFilter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EventFilter.Unmarshal(m, b)
-}
-func (m *EventFilter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EventFilter.Marshal(b, m, deterministic)
-}
-func (m *EventFilter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EventFilter.Merge(m, src)
-}
-func (m *EventFilter) XXX_Size() int {
-	return xxx_messageInfo_EventFilter.Size(m)
-}
-func (m *EventFilter) XXX_DiscardUnknown() {
-	xxx_messageInfo_EventFilter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EventFilter proto.InternalMessageInfo
-
-func (m *EventFilter) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *EventFilter) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *EventFilter) GetEnable() bool {
-	if m != nil {
-		return m.Enable
+func (x *EventFilter) GetEnable() bool {
+	if x != nil {
+		return x.Enable
 	}
 	return false
 }
 
-func (m *EventFilter) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *EventFilter) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *EventFilter) GetEventType() string {
-	if m != nil {
-		return m.EventType
+func (x *EventFilter) GetEventType() string {
+	if x != nil {
+		return x.EventType
 	}
 	return ""
 }
 
-func (m *EventFilter) GetRules() []*EventFilterRule {
-	if m != nil {
-		return m.Rules
+func (x *EventFilter) GetRules() []*EventFilterRule {
+	if x != nil {
+		return x.Rules
 	}
 	return nil
 }
 
 type EventFilters struct {
-	Filters              []*EventFilter `protobuf:"bytes,1,rep,name=filters,proto3" json:"filters,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
-	XXX_unrecognized     []byte         `json:"-"`
-	XXX_sizecache        int32          `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Filters       []*EventFilter         `protobuf:"bytes,1,rep,name=filters,proto3" json:"filters,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *EventFilters) Reset()         { *m = EventFilters{} }
-func (m *EventFilters) String() string { return proto.CompactTextString(m) }
-func (*EventFilters) ProtoMessage()    {}
+func (x *EventFilters) Reset() {
+	*x = EventFilters{}
+	mi := &file_voltha_protos_events_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *EventFilters) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EventFilters) ProtoMessage() {}
+
+func (x *EventFilters) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EventFilters.ProtoReflect.Descriptor instead.
 func (*EventFilters) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{3}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *EventFilters) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EventFilters.Unmarshal(m, b)
-}
-func (m *EventFilters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EventFilters.Marshal(b, m, deterministic)
-}
-func (m *EventFilters) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EventFilters.Merge(m, src)
-}
-func (m *EventFilters) XXX_Size() int {
-	return xxx_messageInfo_EventFilters.Size(m)
-}
-func (m *EventFilters) XXX_DiscardUnknown() {
-	xxx_messageInfo_EventFilters.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EventFilters proto.InternalMessageInfo
-
-func (m *EventFilters) GetFilters() []*EventFilter {
-	if m != nil {
-		return m.Filters
+func (x *EventFilters) GetFilters() []*EventFilter {
+	if x != nil {
+		return x.Filters
 	}
 	return nil
 }
 
 type ConfigEventType struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ConfigEventType) Reset()         { *m = ConfigEventType{} }
-func (m *ConfigEventType) String() string { return proto.CompactTextString(m) }
-func (*ConfigEventType) ProtoMessage()    {}
+func (x *ConfigEventType) Reset() {
+	*x = ConfigEventType{}
+	mi := &file_voltha_protos_events_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ConfigEventType) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ConfigEventType) ProtoMessage() {}
+
+func (x *ConfigEventType) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ConfigEventType.ProtoReflect.Descriptor instead.
 func (*ConfigEventType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{4}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *ConfigEventType) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ConfigEventType.Unmarshal(m, b)
-}
-func (m *ConfigEventType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ConfigEventType.Marshal(b, m, deterministic)
-}
-func (m *ConfigEventType) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ConfigEventType.Merge(m, src)
-}
-func (m *ConfigEventType) XXX_Size() int {
-	return xxx_messageInfo_ConfigEventType.Size(m)
-}
-func (m *ConfigEventType) XXX_DiscardUnknown() {
-	xxx_messageInfo_ConfigEventType.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ConfigEventType proto.InternalMessageInfo
-
 type ConfigEvent struct {
-	Type                 ConfigEventType_Types `protobuf:"varint,1,opt,name=type,proto3,enum=event.ConfigEventType_Types" json:"type,omitempty"`
-	Hash                 string                `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"`
-	Data                 string                `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Type          ConfigEventType_Types  `protobuf:"varint,1,opt,name=type,proto3,enum=event.ConfigEventType_Types" json:"type,omitempty"`
+	Hash          string                 `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"` // hash for this change, can be used for quick lookup
+	Data          string                 `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` // the actual new data, in json format
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ConfigEvent) Reset()         { *m = ConfigEvent{} }
-func (m *ConfigEvent) String() string { return proto.CompactTextString(m) }
-func (*ConfigEvent) ProtoMessage()    {}
+func (x *ConfigEvent) Reset() {
+	*x = ConfigEvent{}
+	mi := &file_voltha_protos_events_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ConfigEvent) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ConfigEvent) ProtoMessage() {}
+
+func (x *ConfigEvent) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ConfigEvent.ProtoReflect.Descriptor instead.
 func (*ConfigEvent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{5}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *ConfigEvent) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ConfigEvent.Unmarshal(m, b)
-}
-func (m *ConfigEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ConfigEvent.Marshal(b, m, deterministic)
-}
-func (m *ConfigEvent) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ConfigEvent.Merge(m, src)
-}
-func (m *ConfigEvent) XXX_Size() int {
-	return xxx_messageInfo_ConfigEvent.Size(m)
-}
-func (m *ConfigEvent) XXX_DiscardUnknown() {
-	xxx_messageInfo_ConfigEvent.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ConfigEvent proto.InternalMessageInfo
-
-func (m *ConfigEvent) GetType() ConfigEventType_Types {
-	if m != nil {
-		return m.Type
+func (x *ConfigEvent) GetType() ConfigEventType_Types {
+	if x != nil {
+		return x.Type
 	}
 	return ConfigEventType_add
 }
 
-func (m *ConfigEvent) GetHash() string {
-	if m != nil {
-		return m.Hash
+func (x *ConfigEvent) GetHash() string {
+	if x != nil {
+		return x.Hash
 	}
 	return ""
 }
 
-func (m *ConfigEvent) GetData() string {
-	if m != nil {
-		return m.Data
+func (x *ConfigEvent) GetData() string {
+	if x != nil {
+		return x.Data
 	}
 	return ""
 }
 
 type KpiEventType struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *KpiEventType) Reset()         { *m = KpiEventType{} }
-func (m *KpiEventType) String() string { return proto.CompactTextString(m) }
-func (*KpiEventType) ProtoMessage()    {}
+func (x *KpiEventType) Reset() {
+	*x = KpiEventType{}
+	mi := &file_voltha_protos_events_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *KpiEventType) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KpiEventType) ProtoMessage() {}
+
+func (x *KpiEventType) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use KpiEventType.ProtoReflect.Descriptor instead.
 func (*KpiEventType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{6}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *KpiEventType) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_KpiEventType.Unmarshal(m, b)
-}
-func (m *KpiEventType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_KpiEventType.Marshal(b, m, deterministic)
-}
-func (m *KpiEventType) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_KpiEventType.Merge(m, src)
-}
-func (m *KpiEventType) XXX_Size() int {
-	return xxx_messageInfo_KpiEventType.Size(m)
-}
-func (m *KpiEventType) XXX_DiscardUnknown() {
-	xxx_messageInfo_KpiEventType.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_KpiEventType proto.InternalMessageInfo
-
-//
 // Struct to convey a dictionary of metric metadata.
 type MetricMetaData struct {
-	Title           string  `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
-	Ts              float64 `protobuf:"fixed64,2,opt,name=ts,proto3" json:"ts,omitempty"`
-	LogicalDeviceId string  `protobuf:"bytes,3,opt,name=logical_device_id,json=logicalDeviceId,proto3" json:"logical_device_id,omitempty"`
+	state           protoimpl.MessageState `protogen:"open.v1"`
+	Title           string                 `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`                                              // Metric group or individual metric name
+	Ts              float64                `protobuf:"fixed64,2,opt,name=ts,proto3" json:"ts,omitempty"`                                                  // UTC time-stamp of data (seconds since epoch) of
+	LogicalDeviceId string                 `protobuf:"bytes,3,opt,name=logical_device_id,json=logicalDeviceId,proto3" json:"logical_device_id,omitempty"` // The logical device ID of the VOLTHA
 	// (equivalent to the DPID that ONOS has
 	// for the VOLTHA device without the
-	//  'of:' prefix
-	SerialNo             string            `protobuf:"bytes,4,opt,name=serial_no,json=serialNo,proto3" json:"serial_no,omitempty"`
-	DeviceId             string            `protobuf:"bytes,5,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	Context              map[string]string `protobuf:"bytes,6,rep,name=context,proto3" json:"context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	Uuid                 string            `protobuf:"bytes,7,opt,name=uuid,proto3" json:"uuid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
+	//
+	//	'of:' prefix
+	SerialNo      string            `protobuf:"bytes,4,opt,name=serial_no,json=serialNo,proto3" json:"serial_no,omitempty"`                                                         // The OLT, ONU, ... device serial number
+	DeviceId      string            `protobuf:"bytes,5,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`                                                         // The OLT, ONU, ... physical device ID
+	Context       map[string]string `protobuf:"bytes,6,rep,name=context,proto3" json:"context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Name value pairs that provide additional
+	Uuid          string            `protobuf:"bytes,7,opt,name=uuid,proto3" json:"uuid,omitempty"`                                                                                 // Transaction identifier used to match On
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *MetricMetaData) Reset()         { *m = MetricMetaData{} }
-func (m *MetricMetaData) String() string { return proto.CompactTextString(m) }
-func (*MetricMetaData) ProtoMessage()    {}
+func (x *MetricMetaData) Reset() {
+	*x = MetricMetaData{}
+	mi := &file_voltha_protos_events_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MetricMetaData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MetricMetaData) ProtoMessage() {}
+
+func (x *MetricMetaData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MetricMetaData.ProtoReflect.Descriptor instead.
 func (*MetricMetaData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{7}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *MetricMetaData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MetricMetaData.Unmarshal(m, b)
-}
-func (m *MetricMetaData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MetricMetaData.Marshal(b, m, deterministic)
-}
-func (m *MetricMetaData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MetricMetaData.Merge(m, src)
-}
-func (m *MetricMetaData) XXX_Size() int {
-	return xxx_messageInfo_MetricMetaData.Size(m)
-}
-func (m *MetricMetaData) XXX_DiscardUnknown() {
-	xxx_messageInfo_MetricMetaData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MetricMetaData proto.InternalMessageInfo
-
-func (m *MetricMetaData) GetTitle() string {
-	if m != nil {
-		return m.Title
+func (x *MetricMetaData) GetTitle() string {
+	if x != nil {
+		return x.Title
 	}
 	return ""
 }
 
-func (m *MetricMetaData) GetTs() float64 {
-	if m != nil {
-		return m.Ts
+func (x *MetricMetaData) GetTs() float64 {
+	if x != nil {
+		return x.Ts
 	}
 	return 0
 }
 
-func (m *MetricMetaData) GetLogicalDeviceId() string {
-	if m != nil {
-		return m.LogicalDeviceId
+func (x *MetricMetaData) GetLogicalDeviceId() string {
+	if x != nil {
+		return x.LogicalDeviceId
 	}
 	return ""
 }
 
-func (m *MetricMetaData) GetSerialNo() string {
-	if m != nil {
-		return m.SerialNo
+func (x *MetricMetaData) GetSerialNo() string {
+	if x != nil {
+		return x.SerialNo
 	}
 	return ""
 }
 
-func (m *MetricMetaData) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *MetricMetaData) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *MetricMetaData) GetContext() map[string]string {
-	if m != nil {
-		return m.Context
+func (x *MetricMetaData) GetContext() map[string]string {
+	if x != nil {
+		return x.Context
 	}
 	return nil
 }
 
-func (m *MetricMetaData) GetUuid() string {
-	if m != nil {
-		return m.Uuid
+func (x *MetricMetaData) GetUuid() string {
+	if x != nil {
+		return x.Uuid
 	}
 	return ""
 }
 
-//
 // Struct to convey a dictionary of metric->value pairs. Typically used in
 // pure shared-timestamp or shared-timestamp + shared object prefix situations.
 type MetricValuePairs struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Metric / value pairs.
-	Metrics              map[string]float32 `protobuf:"bytes,1,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
+	Metrics       map[string]float32 `protobuf:"bytes,1,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *MetricValuePairs) Reset()         { *m = MetricValuePairs{} }
-func (m *MetricValuePairs) String() string { return proto.CompactTextString(m) }
-func (*MetricValuePairs) ProtoMessage()    {}
+func (x *MetricValuePairs) Reset() {
+	*x = MetricValuePairs{}
+	mi := &file_voltha_protos_events_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MetricValuePairs) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MetricValuePairs) ProtoMessage() {}
+
+func (x *MetricValuePairs) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[8]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MetricValuePairs.ProtoReflect.Descriptor instead.
 func (*MetricValuePairs) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{8}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{8}
 }
 
-func (m *MetricValuePairs) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MetricValuePairs.Unmarshal(m, b)
-}
-func (m *MetricValuePairs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MetricValuePairs.Marshal(b, m, deterministic)
-}
-func (m *MetricValuePairs) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MetricValuePairs.Merge(m, src)
-}
-func (m *MetricValuePairs) XXX_Size() int {
-	return xxx_messageInfo_MetricValuePairs.Size(m)
-}
-func (m *MetricValuePairs) XXX_DiscardUnknown() {
-	xxx_messageInfo_MetricValuePairs.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MetricValuePairs proto.InternalMessageInfo
-
-func (m *MetricValuePairs) GetMetrics() map[string]float32 {
-	if m != nil {
-		return m.Metrics
+func (x *MetricValuePairs) GetMetrics() map[string]float32 {
+	if x != nil {
+		return x.Metrics
 	}
 	return nil
 }
 
-//
 // Struct to group metadata for a metric (or group of metrics) with the key-value
 // pairs of collected metrics
 type MetricInformation struct {
-	Metadata             *MetricMetaData    `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
-	Metrics              map[string]float32 `protobuf:"bytes,2,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Metadata      *MetricMetaData        `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
+	Metrics       map[string]float32     `protobuf:"bytes,2,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *MetricInformation) Reset()         { *m = MetricInformation{} }
-func (m *MetricInformation) String() string { return proto.CompactTextString(m) }
-func (*MetricInformation) ProtoMessage()    {}
+func (x *MetricInformation) Reset() {
+	*x = MetricInformation{}
+	mi := &file_voltha_protos_events_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MetricInformation) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MetricInformation) ProtoMessage() {}
+
+func (x *MetricInformation) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[9]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MetricInformation.ProtoReflect.Descriptor instead.
 func (*MetricInformation) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{9}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{9}
 }
 
-func (m *MetricInformation) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MetricInformation.Unmarshal(m, b)
-}
-func (m *MetricInformation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MetricInformation.Marshal(b, m, deterministic)
-}
-func (m *MetricInformation) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MetricInformation.Merge(m, src)
-}
-func (m *MetricInformation) XXX_Size() int {
-	return xxx_messageInfo_MetricInformation.Size(m)
-}
-func (m *MetricInformation) XXX_DiscardUnknown() {
-	xxx_messageInfo_MetricInformation.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MetricInformation proto.InternalMessageInfo
-
-func (m *MetricInformation) GetMetadata() *MetricMetaData {
-	if m != nil {
-		return m.Metadata
+func (x *MetricInformation) GetMetadata() *MetricMetaData {
+	if x != nil {
+		return x.Metadata
 	}
 	return nil
 }
 
-func (m *MetricInformation) GetMetrics() map[string]float32 {
-	if m != nil {
-		return m.Metrics
+func (x *MetricInformation) GetMetrics() map[string]float32 {
+	if x != nil {
+		return x.Metrics
 	}
 	return nil
 }
 
-//
 // Struct to group metadata for a metric (or group of metrics) with the key-value
 // pairs of collected metrics using 64-bit double precision floating point.
 // This supports both floating-point metrics and large integer counters up to 2^53
 // (e.g., FEC counters, GEM counters, optical power levels).
 type MetricInformation64 struct {
-	Metadata             *MetricMetaData    `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
-	Metrics              map[string]float64 `protobuf:"bytes,2,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Metadata      *MetricMetaData        `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
+	Metrics       map[string]float64     `protobuf:"bytes,2,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *MetricInformation64) Reset()         { *m = MetricInformation64{} }
-func (m *MetricInformation64) String() string { return proto.CompactTextString(m) }
-func (*MetricInformation64) ProtoMessage()    {}
+func (x *MetricInformation64) Reset() {
+	*x = MetricInformation64{}
+	mi := &file_voltha_protos_events_proto_msgTypes[10]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MetricInformation64) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MetricInformation64) ProtoMessage() {}
+
+func (x *MetricInformation64) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[10]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MetricInformation64.ProtoReflect.Descriptor instead.
 func (*MetricInformation64) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{10}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{10}
 }
 
-func (m *MetricInformation64) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MetricInformation64.Unmarshal(m, b)
-}
-func (m *MetricInformation64) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MetricInformation64.Marshal(b, m, deterministic)
-}
-func (m *MetricInformation64) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MetricInformation64.Merge(m, src)
-}
-func (m *MetricInformation64) XXX_Size() int {
-	return xxx_messageInfo_MetricInformation64.Size(m)
-}
-func (m *MetricInformation64) XXX_DiscardUnknown() {
-	xxx_messageInfo_MetricInformation64.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MetricInformation64 proto.InternalMessageInfo
-
-func (m *MetricInformation64) GetMetadata() *MetricMetaData {
-	if m != nil {
-		return m.Metadata
+func (x *MetricInformation64) GetMetadata() *MetricMetaData {
+	if x != nil {
+		return x.Metadata
 	}
 	return nil
 }
 
-func (m *MetricInformation64) GetMetrics() map[string]float64 {
-	if m != nil {
-		return m.Metrics
+func (x *MetricInformation64) GetMetrics() map[string]float64 {
+	if x != nil {
+		return x.Metrics
 	}
 	return nil
 }
 
-//
 // Legacy KPI Event structured.  In mid-August, the KPI event format was updated
-//                               to a more easily parsable format. See VOL-1140
-//                               for more information.
+//
+//	to a more easily parsable format. See VOL-1140
+//	for more information.
 type KpiEvent struct {
-	Type                 KpiEventType_Types           `protobuf:"varint,1,opt,name=type,proto3,enum=event.KpiEventType_Types" json:"type,omitempty"`
-	Ts                   float32                      `protobuf:"fixed32,2,opt,name=ts,proto3" json:"ts,omitempty"`
-	Prefixes             map[string]*MetricValuePairs `protobuf:"bytes,3,rep,name=prefixes,proto3" json:"prefixes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
-	XXX_unrecognized     []byte                       `json:"-"`
-	XXX_sizecache        int32                        `json:"-"`
+	state         protoimpl.MessageState       `protogen:"open.v1"`
+	Type          KpiEventType_Types           `protobuf:"varint,1,opt,name=type,proto3,enum=event.KpiEventType_Types" json:"type,omitempty"`
+	Ts            float32                      `protobuf:"fixed32,2,opt,name=ts,proto3" json:"ts,omitempty"` // UTC time-stamp of data in slice mode (seconds since epoc)
+	Prefixes      map[string]*MetricValuePairs `protobuf:"bytes,3,rep,name=prefixes,proto3" json:"prefixes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *KpiEvent) Reset()         { *m = KpiEvent{} }
-func (m *KpiEvent) String() string { return proto.CompactTextString(m) }
-func (*KpiEvent) ProtoMessage()    {}
+func (x *KpiEvent) Reset() {
+	*x = KpiEvent{}
+	mi := &file_voltha_protos_events_proto_msgTypes[11]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *KpiEvent) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KpiEvent) ProtoMessage() {}
+
+func (x *KpiEvent) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[11]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use KpiEvent.ProtoReflect.Descriptor instead.
 func (*KpiEvent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{11}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{11}
 }
 
-func (m *KpiEvent) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_KpiEvent.Unmarshal(m, b)
-}
-func (m *KpiEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_KpiEvent.Marshal(b, m, deterministic)
-}
-func (m *KpiEvent) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_KpiEvent.Merge(m, src)
-}
-func (m *KpiEvent) XXX_Size() int {
-	return xxx_messageInfo_KpiEvent.Size(m)
-}
-func (m *KpiEvent) XXX_DiscardUnknown() {
-	xxx_messageInfo_KpiEvent.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_KpiEvent proto.InternalMessageInfo
-
-func (m *KpiEvent) GetType() KpiEventType_Types {
-	if m != nil {
-		return m.Type
+func (x *KpiEvent) GetType() KpiEventType_Types {
+	if x != nil {
+		return x.Type
 	}
 	return KpiEventType_slice
 }
 
-func (m *KpiEvent) GetTs() float32 {
-	if m != nil {
-		return m.Ts
+func (x *KpiEvent) GetTs() float32 {
+	if x != nil {
+		return x.Ts
 	}
 	return 0
 }
 
-func (m *KpiEvent) GetPrefixes() map[string]*MetricValuePairs {
-	if m != nil {
-		return m.Prefixes
+func (x *KpiEvent) GetPrefixes() map[string]*MetricValuePairs {
+	if x != nil {
+		return x.Prefixes
 	}
 	return nil
 }
 
 type KpiEvent2 struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Type of KPI Event
 	Type KpiEventType_Types `protobuf:"varint,1,opt,name=type,proto3,enum=event.KpiEventType_Types" json:"type,omitempty"`
 	// Fields used when for slice:
-	Ts                   float64              `protobuf:"fixed64,2,opt,name=ts,proto3" json:"ts,omitempty"`
-	SliceData            []*MetricInformation `protobuf:"bytes,3,rep,name=slice_data,json=sliceData,proto3" json:"slice_data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	Ts            float64              `protobuf:"fixed64,2,opt,name=ts,proto3" json:"ts,omitempty"` // UTC time-stamp of data in slice mode (seconds since epoch)
+	SliceData     []*MetricInformation `protobuf:"bytes,3,rep,name=slice_data,json=sliceData,proto3" json:"slice_data,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *KpiEvent2) Reset()         { *m = KpiEvent2{} }
-func (m *KpiEvent2) String() string { return proto.CompactTextString(m) }
-func (*KpiEvent2) ProtoMessage()    {}
+func (x *KpiEvent2) Reset() {
+	*x = KpiEvent2{}
+	mi := &file_voltha_protos_events_proto_msgTypes[12]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *KpiEvent2) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KpiEvent2) ProtoMessage() {}
+
+func (x *KpiEvent2) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[12]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use KpiEvent2.ProtoReflect.Descriptor instead.
 func (*KpiEvent2) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{12}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{12}
 }
 
-func (m *KpiEvent2) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_KpiEvent2.Unmarshal(m, b)
-}
-func (m *KpiEvent2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_KpiEvent2.Marshal(b, m, deterministic)
-}
-func (m *KpiEvent2) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_KpiEvent2.Merge(m, src)
-}
-func (m *KpiEvent2) XXX_Size() int {
-	return xxx_messageInfo_KpiEvent2.Size(m)
-}
-func (m *KpiEvent2) XXX_DiscardUnknown() {
-	xxx_messageInfo_KpiEvent2.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_KpiEvent2 proto.InternalMessageInfo
-
-func (m *KpiEvent2) GetType() KpiEventType_Types {
-	if m != nil {
-		return m.Type
+func (x *KpiEvent2) GetType() KpiEventType_Types {
+	if x != nil {
+		return x.Type
 	}
 	return KpiEventType_slice
 }
 
-func (m *KpiEvent2) GetTs() float64 {
-	if m != nil {
-		return m.Ts
+func (x *KpiEvent2) GetTs() float64 {
+	if x != nil {
+		return x.Ts
 	}
 	return 0
 }
 
-func (m *KpiEvent2) GetSliceData() []*MetricInformation {
-	if m != nil {
-		return m.SliceData
+func (x *KpiEvent2) GetSliceData() []*MetricInformation {
+	if x != nil {
+		return x.SliceData
 	}
 	return nil
 }
 
-//
 // KpiEvent3 with support for 64-bit unsigned integer counters.
 // Use this for metrics that require full 64-bit precision (e.g., FEC counters, GEM counters).
 type KpiEvent3 struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Type of KPI Event
 	Type KpiEventType_Types `protobuf:"varint,1,opt,name=type,proto3,enum=event.KpiEventType_Types" json:"type,omitempty"`
 	// Fields used when for slice:
-	Ts                   float64                `protobuf:"fixed64,2,opt,name=ts,proto3" json:"ts,omitempty"`
-	SliceData            []*MetricInformation64 `protobuf:"bytes,3,rep,name=slice_data,json=sliceData,proto3" json:"slice_data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
-	XXX_unrecognized     []byte                 `json:"-"`
-	XXX_sizecache        int32                  `json:"-"`
+	Ts            float64                `protobuf:"fixed64,2,opt,name=ts,proto3" json:"ts,omitempty"` // UTC time-stamp of data in slice mode (seconds since epoch)
+	SliceData     []*MetricInformation64 `protobuf:"bytes,3,rep,name=slice_data,json=sliceData,proto3" json:"slice_data,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *KpiEvent3) Reset()         { *m = KpiEvent3{} }
-func (m *KpiEvent3) String() string { return proto.CompactTextString(m) }
-func (*KpiEvent3) ProtoMessage()    {}
+func (x *KpiEvent3) Reset() {
+	*x = KpiEvent3{}
+	mi := &file_voltha_protos_events_proto_msgTypes[13]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *KpiEvent3) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KpiEvent3) ProtoMessage() {}
+
+func (x *KpiEvent3) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[13]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use KpiEvent3.ProtoReflect.Descriptor instead.
 func (*KpiEvent3) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{13}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{13}
 }
 
-func (m *KpiEvent3) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_KpiEvent3.Unmarshal(m, b)
-}
-func (m *KpiEvent3) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_KpiEvent3.Marshal(b, m, deterministic)
-}
-func (m *KpiEvent3) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_KpiEvent3.Merge(m, src)
-}
-func (m *KpiEvent3) XXX_Size() int {
-	return xxx_messageInfo_KpiEvent3.Size(m)
-}
-func (m *KpiEvent3) XXX_DiscardUnknown() {
-	xxx_messageInfo_KpiEvent3.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_KpiEvent3 proto.InternalMessageInfo
-
-func (m *KpiEvent3) GetType() KpiEventType_Types {
-	if m != nil {
-		return m.Type
+func (x *KpiEvent3) GetType() KpiEventType_Types {
+	if x != nil {
+		return x.Type
 	}
 	return KpiEventType_slice
 }
 
-func (m *KpiEvent3) GetTs() float64 {
-	if m != nil {
-		return m.Ts
+func (x *KpiEvent3) GetTs() float64 {
+	if x != nil {
+		return x.Ts
 	}
 	return 0
 }
 
-func (m *KpiEvent3) GetSliceData() []*MetricInformation64 {
-	if m != nil {
-		return m.SliceData
+func (x *KpiEvent3) GetSliceData() []*MetricInformation64 {
+	if x != nil {
+		return x.SliceData
 	}
 	return nil
 }
 
-//
 // Describes the events specific to device
 type DeviceEvent struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Identifier of the originating resource of the event, for ex: device_id
 	ResourceId string `protobuf:"bytes,1,opt,name=resource_id,json=resourceId,proto3" json:"resource_id,omitempty"`
 	// device_event_name indicates clearly the name of the device event
@@ -952,68 +1145,72 @@
 	// Textual explanation of the device event
 	Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
 	// Key/Value storage for extra information that may give context to the event
-	Context              map[string]string `protobuf:"bytes,4,rep,name=context,proto3" json:"context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
+	Context       map[string]string `protobuf:"bytes,4,rep,name=context,proto3" json:"context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *DeviceEvent) Reset()         { *m = DeviceEvent{} }
-func (m *DeviceEvent) String() string { return proto.CompactTextString(m) }
-func (*DeviceEvent) ProtoMessage()    {}
+func (x *DeviceEvent) Reset() {
+	*x = DeviceEvent{}
+	mi := &file_voltha_protos_events_proto_msgTypes[14]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DeviceEvent) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeviceEvent) ProtoMessage() {}
+
+func (x *DeviceEvent) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[14]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeviceEvent.ProtoReflect.Descriptor instead.
 func (*DeviceEvent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{14}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{14}
 }
 
-func (m *DeviceEvent) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeviceEvent.Unmarshal(m, b)
-}
-func (m *DeviceEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeviceEvent.Marshal(b, m, deterministic)
-}
-func (m *DeviceEvent) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceEvent.Merge(m, src)
-}
-func (m *DeviceEvent) XXX_Size() int {
-	return xxx_messageInfo_DeviceEvent.Size(m)
-}
-func (m *DeviceEvent) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeviceEvent.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeviceEvent proto.InternalMessageInfo
-
-func (m *DeviceEvent) GetResourceId() string {
-	if m != nil {
-		return m.ResourceId
+func (x *DeviceEvent) GetResourceId() string {
+	if x != nil {
+		return x.ResourceId
 	}
 	return ""
 }
 
-func (m *DeviceEvent) GetDeviceEventName() string {
-	if m != nil {
-		return m.DeviceEventName
+func (x *DeviceEvent) GetDeviceEventName() string {
+	if x != nil {
+		return x.DeviceEventName
 	}
 	return ""
 }
 
-func (m *DeviceEvent) GetDescription() string {
-	if m != nil {
-		return m.Description
+func (x *DeviceEvent) GetDescription() string {
+	if x != nil {
+		return x.Description
 	}
 	return ""
 }
 
-func (m *DeviceEvent) GetContext() map[string]string {
-	if m != nil {
-		return m.Context
+func (x *DeviceEvent) GetContext() map[string]string {
+	if x != nil {
+		return x.Context
 	}
 	return nil
 }
 
-//
 // Describes the events specific to an RPC request
 type RPCEvent struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// RPC name
 	Rpc string `protobuf:"bytes,1,opt,name=rpc,proto3" json:"rpc,omitempty"`
 	// The operation id of that request.  Can be a log correlation ID
@@ -1027,197 +1224,213 @@
 	// Textual explanation of the event
 	Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"`
 	// Key/Value storage for extra information that may give context to the event
-	Context map[string]string `protobuf:"bytes,7,rep,name=context,proto3" json:"context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	Context map[string]string `protobuf:"bytes,7,rep,name=context,proto3" json:"context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	// Status of the RPC Event
-	Status               *common.OperationResp `protobuf:"bytes,8,opt,name=status,proto3" json:"status,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
+	Status        *common.OperationResp `protobuf:"bytes,8,opt,name=status,proto3" json:"status,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *RPCEvent) Reset()         { *m = RPCEvent{} }
-func (m *RPCEvent) String() string { return proto.CompactTextString(m) }
-func (*RPCEvent) ProtoMessage()    {}
+func (x *RPCEvent) Reset() {
+	*x = RPCEvent{}
+	mi := &file_voltha_protos_events_proto_msgTypes[15]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *RPCEvent) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RPCEvent) ProtoMessage() {}
+
+func (x *RPCEvent) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[15]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use RPCEvent.ProtoReflect.Descriptor instead.
 func (*RPCEvent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{15}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{15}
 }
 
-func (m *RPCEvent) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RPCEvent.Unmarshal(m, b)
-}
-func (m *RPCEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RPCEvent.Marshal(b, m, deterministic)
-}
-func (m *RPCEvent) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RPCEvent.Merge(m, src)
-}
-func (m *RPCEvent) XXX_Size() int {
-	return xxx_messageInfo_RPCEvent.Size(m)
-}
-func (m *RPCEvent) XXX_DiscardUnknown() {
-	xxx_messageInfo_RPCEvent.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_RPCEvent proto.InternalMessageInfo
-
-func (m *RPCEvent) GetRpc() string {
-	if m != nil {
-		return m.Rpc
+func (x *RPCEvent) GetRpc() string {
+	if x != nil {
+		return x.Rpc
 	}
 	return ""
 }
 
-func (m *RPCEvent) GetOperationId() string {
-	if m != nil {
-		return m.OperationId
+func (x *RPCEvent) GetOperationId() string {
+	if x != nil {
+		return x.OperationId
 	}
 	return ""
 }
 
-func (m *RPCEvent) GetService() string {
-	if m != nil {
-		return m.Service
+func (x *RPCEvent) GetService() string {
+	if x != nil {
+		return x.Service
 	}
 	return ""
 }
 
-func (m *RPCEvent) GetStackId() string {
-	if m != nil {
-		return m.StackId
+func (x *RPCEvent) GetStackId() string {
+	if x != nil {
+		return x.StackId
 	}
 	return ""
 }
 
-func (m *RPCEvent) GetResourceId() string {
-	if m != nil {
-		return m.ResourceId
+func (x *RPCEvent) GetResourceId() string {
+	if x != nil {
+		return x.ResourceId
 	}
 	return ""
 }
 
-func (m *RPCEvent) GetDescription() string {
-	if m != nil {
-		return m.Description
+func (x *RPCEvent) GetDescription() string {
+	if x != nil {
+		return x.Description
 	}
 	return ""
 }
 
-func (m *RPCEvent) GetContext() map[string]string {
-	if m != nil {
-		return m.Context
+func (x *RPCEvent) GetContext() map[string]string {
+	if x != nil {
+		return x.Context
 	}
 	return nil
 }
 
-func (m *RPCEvent) GetStatus() *common.OperationResp {
-	if m != nil {
-		return m.Status
+func (x *RPCEvent) GetStatus() *common.OperationResp {
+	if x != nil {
+		return x.Status
 	}
 	return nil
 }
 
-//
 // Identify the area of the system impacted by the event.
 type EventCategory struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *EventCategory) Reset()         { *m = EventCategory{} }
-func (m *EventCategory) String() string { return proto.CompactTextString(m) }
-func (*EventCategory) ProtoMessage()    {}
+func (x *EventCategory) Reset() {
+	*x = EventCategory{}
+	mi := &file_voltha_protos_events_proto_msgTypes[16]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *EventCategory) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EventCategory) ProtoMessage() {}
+
+func (x *EventCategory) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[16]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EventCategory.ProtoReflect.Descriptor instead.
 func (*EventCategory) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{16}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{16}
 }
 
-func (m *EventCategory) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EventCategory.Unmarshal(m, b)
-}
-func (m *EventCategory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EventCategory.Marshal(b, m, deterministic)
-}
-func (m *EventCategory) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EventCategory.Merge(m, src)
-}
-func (m *EventCategory) XXX_Size() int {
-	return xxx_messageInfo_EventCategory.Size(m)
-}
-func (m *EventCategory) XXX_DiscardUnknown() {
-	xxx_messageInfo_EventCategory.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EventCategory proto.InternalMessageInfo
-
-//
 // Identify the functional category originating the event
 type EventSubCategory struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *EventSubCategory) Reset()         { *m = EventSubCategory{} }
-func (m *EventSubCategory) String() string { return proto.CompactTextString(m) }
-func (*EventSubCategory) ProtoMessage()    {}
+func (x *EventSubCategory) Reset() {
+	*x = EventSubCategory{}
+	mi := &file_voltha_protos_events_proto_msgTypes[17]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *EventSubCategory) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EventSubCategory) ProtoMessage() {}
+
+func (x *EventSubCategory) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[17]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EventSubCategory.ProtoReflect.Descriptor instead.
 func (*EventSubCategory) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{17}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{17}
 }
 
-func (m *EventSubCategory) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EventSubCategory.Unmarshal(m, b)
-}
-func (m *EventSubCategory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EventSubCategory.Marshal(b, m, deterministic)
-}
-func (m *EventSubCategory) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EventSubCategory.Merge(m, src)
-}
-func (m *EventSubCategory) XXX_Size() int {
-	return xxx_messageInfo_EventSubCategory.Size(m)
-}
-func (m *EventSubCategory) XXX_DiscardUnknown() {
-	xxx_messageInfo_EventSubCategory.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EventSubCategory proto.InternalMessageInfo
-
-//
 // Identify the type of event
 type EventType struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *EventType) Reset()         { *m = EventType{} }
-func (m *EventType) String() string { return proto.CompactTextString(m) }
-func (*EventType) ProtoMessage()    {}
+func (x *EventType) Reset() {
+	*x = EventType{}
+	mi := &file_voltha_protos_events_proto_msgTypes[18]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *EventType) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EventType) ProtoMessage() {}
+
+func (x *EventType) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[18]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EventType.ProtoReflect.Descriptor instead.
 func (*EventType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{18}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{18}
 }
 
-func (m *EventType) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EventType.Unmarshal(m, b)
-}
-func (m *EventType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EventType.Marshal(b, m, deterministic)
-}
-func (m *EventType) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EventType.Merge(m, src)
-}
-func (m *EventType) XXX_Size() int {
-	return xxx_messageInfo_EventType.Size(m)
-}
-func (m *EventType) XXX_DiscardUnknown() {
-	xxx_messageInfo_EventType.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EventType proto.InternalMessageInfo
-
-//
 // Identify the functional category originating the event
 type EventHeader struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Unique ID for this event.  e.g. voltha.some_olt.1234
 	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 	// Refers to the functional area affect by the event
@@ -1236,140 +1449,210 @@
 	// the event was first raised from the source entity.
 	// If the source entity doesn't send the raised_ts, this shall be set
 	// to timestamp when the event was received.
-	RaisedTs *timestamp.Timestamp `protobuf:"bytes,6,opt,name=raised_ts,json=raisedTs,proto3" json:"raised_ts,omitempty"`
+	RaisedTs *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=raised_ts,json=raisedTs,proto3" json:"raised_ts,omitempty"`
 	// Timestamp at which the event was reported.
 	// This represents the UTC time stamp since epoch (in seconds) when the
 	// the event was reported (this time stamp is >= raised_ts).
 	// If the source entity that reported this event doesn't send the
 	// reported_ts, this shall be set to the same value as raised_ts.
-	ReportedTs           *timestamp.Timestamp `protobuf:"bytes,7,opt,name=reported_ts,json=reportedTs,proto3" json:"reported_ts,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	ReportedTs    *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=reported_ts,json=reportedTs,proto3" json:"reported_ts,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *EventHeader) Reset()         { *m = EventHeader{} }
-func (m *EventHeader) String() string { return proto.CompactTextString(m) }
-func (*EventHeader) ProtoMessage()    {}
+func (x *EventHeader) Reset() {
+	*x = EventHeader{}
+	mi := &file_voltha_protos_events_proto_msgTypes[19]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *EventHeader) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EventHeader) ProtoMessage() {}
+
+func (x *EventHeader) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[19]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EventHeader.ProtoReflect.Descriptor instead.
 func (*EventHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{19}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{19}
 }
 
-func (m *EventHeader) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EventHeader.Unmarshal(m, b)
-}
-func (m *EventHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EventHeader.Marshal(b, m, deterministic)
-}
-func (m *EventHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EventHeader.Merge(m, src)
-}
-func (m *EventHeader) XXX_Size() int {
-	return xxx_messageInfo_EventHeader.Size(m)
-}
-func (m *EventHeader) XXX_DiscardUnknown() {
-	xxx_messageInfo_EventHeader.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EventHeader proto.InternalMessageInfo
-
-func (m *EventHeader) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *EventHeader) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *EventHeader) GetCategory() EventCategory_Types {
-	if m != nil {
-		return m.Category
+func (x *EventHeader) GetCategory() EventCategory_Types {
+	if x != nil {
+		return x.Category
 	}
 	return EventCategory_COMMUNICATION
 }
 
-func (m *EventHeader) GetSubCategory() EventSubCategory_Types {
-	if m != nil {
-		return m.SubCategory
+func (x *EventHeader) GetSubCategory() EventSubCategory_Types {
+	if x != nil {
+		return x.SubCategory
 	}
 	return EventSubCategory_PON
 }
 
-func (m *EventHeader) GetType() EventType_Types {
-	if m != nil {
-		return m.Type
+func (x *EventHeader) GetType() EventType_Types {
+	if x != nil {
+		return x.Type
 	}
 	return EventType_CONFIG_EVENT
 }
 
-func (m *EventHeader) GetTypeVersion() string {
-	if m != nil {
-		return m.TypeVersion
+func (x *EventHeader) GetTypeVersion() string {
+	if x != nil {
+		return x.TypeVersion
 	}
 	return ""
 }
 
-func (m *EventHeader) GetRaisedTs() *timestamp.Timestamp {
-	if m != nil {
-		return m.RaisedTs
+func (x *EventHeader) GetRaisedTs() *timestamppb.Timestamp {
+	if x != nil {
+		return x.RaisedTs
 	}
 	return nil
 }
 
-func (m *EventHeader) GetReportedTs() *timestamp.Timestamp {
-	if m != nil {
-		return m.ReportedTs
+func (x *EventHeader) GetReportedTs() *timestamppb.Timestamp {
+	if x != nil {
+		return x.ReportedTs
 	}
 	return nil
 }
 
-//
 // Event Structure
 type Event struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// event header
 	Header *EventHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"`
 	// oneof event types referred by EventType.
 	//
 	// Types that are valid to be assigned to EventType:
+	//
 	//	*Event_ConfigEvent
 	//	*Event_KpiEvent
 	//	*Event_KpiEvent2
 	//	*Event_DeviceEvent
 	//	*Event_RpcEvent
 	//	*Event_KpiEvent3
-	EventType            isEvent_EventType `protobuf_oneof:"event_type"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
+	EventType     isEvent_EventType `protobuf_oneof:"event_type"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *Event) Reset()         { *m = Event{} }
-func (m *Event) String() string { return proto.CompactTextString(m) }
-func (*Event) ProtoMessage()    {}
+func (x *Event) Reset() {
+	*x = Event{}
+	mi := &file_voltha_protos_events_proto_msgTypes[20]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Event) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Event) ProtoMessage() {}
+
+func (x *Event) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[20]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Event.ProtoReflect.Descriptor instead.
 func (*Event) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{20}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{20}
 }
 
-func (m *Event) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Event.Unmarshal(m, b)
-}
-func (m *Event) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Event.Marshal(b, m, deterministic)
-}
-func (m *Event) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Event.Merge(m, src)
-}
-func (m *Event) XXX_Size() int {
-	return xxx_messageInfo_Event.Size(m)
-}
-func (m *Event) XXX_DiscardUnknown() {
-	xxx_messageInfo_Event.DiscardUnknown(m)
+func (x *Event) GetHeader() *EventHeader {
+	if x != nil {
+		return x.Header
+	}
+	return nil
 }
 
-var xxx_messageInfo_Event proto.InternalMessageInfo
+func (x *Event) GetEventType() isEvent_EventType {
+	if x != nil {
+		return x.EventType
+	}
+	return nil
+}
 
-func (m *Event) GetHeader() *EventHeader {
-	if m != nil {
-		return m.Header
+func (x *Event) GetConfigEvent() *ConfigEvent {
+	if x != nil {
+		if x, ok := x.EventType.(*Event_ConfigEvent); ok {
+			return x.ConfigEvent
+		}
+	}
+	return nil
+}
+
+func (x *Event) GetKpiEvent() *KpiEvent {
+	if x != nil {
+		if x, ok := x.EventType.(*Event_KpiEvent); ok {
+			return x.KpiEvent
+		}
+	}
+	return nil
+}
+
+func (x *Event) GetKpiEvent2() *KpiEvent2 {
+	if x != nil {
+		if x, ok := x.EventType.(*Event_KpiEvent2); ok {
+			return x.KpiEvent2
+		}
+	}
+	return nil
+}
+
+func (x *Event) GetDeviceEvent() *DeviceEvent {
+	if x != nil {
+		if x, ok := x.EventType.(*Event_DeviceEvent); ok {
+			return x.DeviceEvent
+		}
+	}
+	return nil
+}
+
+func (x *Event) GetRpcEvent() *RPCEvent {
+	if x != nil {
+		if x, ok := x.EventType.(*Event_RpcEvent); ok {
+			return x.RpcEvent
+		}
+	}
+	return nil
+}
+
+func (x *Event) GetKpiEvent3() *KpiEvent3 {
+	if x != nil {
+		if x, ok := x.EventType.(*Event_KpiEvent3); ok {
+			return x.KpiEvent3
+		}
 	}
 	return nil
 }
@@ -1379,26 +1662,32 @@
 }
 
 type Event_ConfigEvent struct {
+	// Refers to ConfigEvent
 	ConfigEvent *ConfigEvent `protobuf:"bytes,2,opt,name=config_event,json=configEvent,proto3,oneof"`
 }
 
 type Event_KpiEvent struct {
+	// Refers to KpiEvent
 	KpiEvent *KpiEvent `protobuf:"bytes,3,opt,name=kpi_event,json=kpiEvent,proto3,oneof"`
 }
 
 type Event_KpiEvent2 struct {
+	// Refers to KpiEvent2
 	KpiEvent2 *KpiEvent2 `protobuf:"bytes,4,opt,name=kpi_event2,json=kpiEvent2,proto3,oneof"`
 }
 
 type Event_DeviceEvent struct {
+	// Refers to DeviceEvent
 	DeviceEvent *DeviceEvent `protobuf:"bytes,5,opt,name=device_event,json=deviceEvent,proto3,oneof"`
 }
 
 type Event_RpcEvent struct {
+	// Refers to an RPC Event
 	RpcEvent *RPCEvent `protobuf:"bytes,6,opt,name=rpc_event,json=rpcEvent,proto3,oneof"`
 }
 
 type Event_KpiEvent3 struct {
+	// Refers to KpiEvent3 (64-bit counter support)
 	KpiEvent3 *KpiEvent3 `protobuf:"bytes,7,opt,name=kpi_event3,json=kpiEvent3,proto3,oneof"`
 }
 
@@ -1414,58 +1703,262 @@
 
 func (*Event_KpiEvent3) isEvent_EventType() {}
 
-func (m *Event) GetEventType() isEvent_EventType {
-	if m != nil {
-		return m.EventType
-	}
-	return nil
+var File_voltha_protos_events_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_events_proto_rawDesc = "" +
+	"\n" +
+	"\x1avoltha_protos/events.proto\x12\x05event\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1avoltha_protos/common.proto\"\x9e\x01\n" +
+	"\x12EventFilterRuleKey\"\x87\x01\n" +
+	"\x13EventFilterRuleType\x12\x0e\n" +
+	"\n" +
+	"filter_all\x10\x00\x12\f\n" +
+	"\bcategory\x10\x01\x12\x10\n" +
+	"\fsub_category\x10\x02\x12\x12\n" +
+	"\x0ekpi_event_type\x10\x03\x12\x15\n" +
+	"\x11config_event_type\x10\x04\x12\x15\n" +
+	"\x11device_event_type\x10\x05\"h\n" +
+	"\x0fEventFilterRule\x12?\n" +
+	"\x03key\x18\x01 \x01(\x0e2-.event.EventFilterRuleKey.EventFilterRuleTypeR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\tR\x05value\"\x9f\x01\n" +
+	"\vEventFilter\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n" +
+	"\x06enable\x18\x02 \x01(\bR\x06enable\x12\x1b\n" +
+	"\tdevice_id\x18\x03 \x01(\tR\bdeviceId\x12\x1d\n" +
+	"\n" +
+	"event_type\x18\x04 \x01(\tR\teventType\x12,\n" +
+	"\x05rules\x18\x05 \x03(\v2\x16.event.EventFilterRuleR\x05rules\"<\n" +
+	"\fEventFilters\x12,\n" +
+	"\afilters\x18\x01 \x03(\v2\x12.event.EventFilterR\afilters\";\n" +
+	"\x0fConfigEventType\"(\n" +
+	"\x05Types\x12\a\n" +
+	"\x03add\x10\x00\x12\n" +
+	"\n" +
+	"\x06remove\x10\x01\x12\n" +
+	"\n" +
+	"\x06update\x10\x02\"g\n" +
+	"\vConfigEvent\x120\n" +
+	"\x04type\x18\x01 \x01(\x0e2\x1c.event.ConfigEventType.TypesR\x04type\x12\x12\n" +
+	"\x04hash\x18\x02 \x01(\tR\x04hash\x12\x12\n" +
+	"\x04data\x18\x03 \x01(\tR\x04data\"*\n" +
+	"\fKpiEventType\"\x1a\n" +
+	"\x05Types\x12\t\n" +
+	"\x05slice\x10\x00\x12\x06\n" +
+	"\x02ts\x10\x01\"\xaa\x02\n" +
+	"\x0eMetricMetaData\x12\x14\n" +
+	"\x05title\x18\x01 \x01(\tR\x05title\x12\x0e\n" +
+	"\x02ts\x18\x02 \x01(\x01R\x02ts\x12*\n" +
+	"\x11logical_device_id\x18\x03 \x01(\tR\x0flogicalDeviceId\x12\x1b\n" +
+	"\tserial_no\x18\x04 \x01(\tR\bserialNo\x12\x1b\n" +
+	"\tdevice_id\x18\x05 \x01(\tR\bdeviceId\x12<\n" +
+	"\acontext\x18\x06 \x03(\v2\".event.MetricMetaData.ContextEntryR\acontext\x12\x12\n" +
+	"\x04uuid\x18\a \x01(\tR\x04uuid\x1a:\n" +
+	"\fContextEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x8e\x01\n" +
+	"\x10MetricValuePairs\x12>\n" +
+	"\ametrics\x18\x01 \x03(\v2$.event.MetricValuePairs.MetricsEntryR\ametrics\x1a:\n" +
+	"\fMetricsEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\x02R\x05value:\x028\x01\"\xc3\x01\n" +
+	"\x11MetricInformation\x121\n" +
+	"\bmetadata\x18\x01 \x01(\v2\x15.event.MetricMetaDataR\bmetadata\x12?\n" +
+	"\ametrics\x18\x02 \x03(\v2%.event.MetricInformation.MetricsEntryR\ametrics\x1a:\n" +
+	"\fMetricsEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\x02R\x05value:\x028\x01\"\xc7\x01\n" +
+	"\x13MetricInformation64\x121\n" +
+	"\bmetadata\x18\x01 \x01(\v2\x15.event.MetricMetaDataR\bmetadata\x12A\n" +
+	"\ametrics\x18\x02 \x03(\v2'.event.MetricInformation64.MetricsEntryR\ametrics\x1a:\n" +
+	"\fMetricsEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\x01R\x05value:\x028\x01\"\xda\x01\n" +
+	"\bKpiEvent\x12-\n" +
+	"\x04type\x18\x01 \x01(\x0e2\x19.event.KpiEventType.TypesR\x04type\x12\x0e\n" +
+	"\x02ts\x18\x02 \x01(\x02R\x02ts\x129\n" +
+	"\bprefixes\x18\x03 \x03(\v2\x1d.event.KpiEvent.PrefixesEntryR\bprefixes\x1aT\n" +
+	"\rPrefixesEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12-\n" +
+	"\x05value\x18\x02 \x01(\v2\x17.event.MetricValuePairsR\x05value:\x028\x01\"\x83\x01\n" +
+	"\tKpiEvent2\x12-\n" +
+	"\x04type\x18\x01 \x01(\x0e2\x19.event.KpiEventType.TypesR\x04type\x12\x0e\n" +
+	"\x02ts\x18\x02 \x01(\x01R\x02ts\x127\n" +
+	"\n" +
+	"slice_data\x18\x03 \x03(\v2\x18.event.MetricInformationR\tsliceData\"\x85\x01\n" +
+	"\tKpiEvent3\x12-\n" +
+	"\x04type\x18\x01 \x01(\x0e2\x19.event.KpiEventType.TypesR\x04type\x12\x0e\n" +
+	"\x02ts\x18\x02 \x01(\x01R\x02ts\x129\n" +
+	"\n" +
+	"slice_data\x18\x03 \x03(\v2\x1a.event.MetricInformation64R\tsliceData\"\xf3\x01\n" +
+	"\vDeviceEvent\x12\x1f\n" +
+	"\vresource_id\x18\x01 \x01(\tR\n" +
+	"resourceId\x12*\n" +
+	"\x11device_event_name\x18\x02 \x01(\tR\x0fdeviceEventName\x12 \n" +
+	"\vdescription\x18\x03 \x01(\tR\vdescription\x129\n" +
+	"\acontext\x18\x04 \x03(\v2\x1f.event.DeviceEvent.ContextEntryR\acontext\x1a:\n" +
+	"\fContextEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xda\x02\n" +
+	"\bRPCEvent\x12\x10\n" +
+	"\x03rpc\x18\x01 \x01(\tR\x03rpc\x12!\n" +
+	"\foperation_id\x18\x02 \x01(\tR\voperationId\x12\x18\n" +
+	"\aservice\x18\x03 \x01(\tR\aservice\x12\x19\n" +
+	"\bstack_id\x18\x04 \x01(\tR\astackId\x12\x1f\n" +
+	"\vresource_id\x18\x05 \x01(\tR\n" +
+	"resourceId\x12 \n" +
+	"\vdescription\x18\x06 \x01(\tR\vdescription\x126\n" +
+	"\acontext\x18\a \x03(\v2\x1c.event.RPCEvent.ContextEntryR\acontext\x12-\n" +
+	"\x06status\x18\b \x01(\v2\x15.common.OperationRespR\x06status\x1a:\n" +
+	"\fContextEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"v\n" +
+	"\rEventCategory\"e\n" +
+	"\x05Types\x12\x11\n" +
+	"\rCOMMUNICATION\x10\x00\x12\x0f\n" +
+	"\vENVIRONMENT\x10\x01\x12\r\n" +
+	"\tEQUIPMENT\x10\x02\x12\v\n" +
+	"\aSERVICE\x10\x03\x12\x0e\n" +
+	"\n" +
+	"PROCESSING\x10\x04\x12\f\n" +
+	"\bSECURITY\x10\x05\"R\n" +
+	"\x10EventSubCategory\">\n" +
+	"\x05Types\x12\a\n" +
+	"\x03PON\x10\x00\x12\a\n" +
+	"\x03OLT\x10\x01\x12\a\n" +
+	"\x03ONT\x10\x02\x12\a\n" +
+	"\x03ONU\x10\x03\x12\a\n" +
+	"\x03NNI\x10\x04\x12\b\n" +
+	"\x04NONE\x10\x05\"v\n" +
+	"\tEventType\"i\n" +
+	"\x05Types\x12\x10\n" +
+	"\fCONFIG_EVENT\x10\x00\x12\r\n" +
+	"\tKPI_EVENT\x10\x01\x12\x0e\n" +
+	"\n" +
+	"KPI_EVENT2\x10\x02\x12\x10\n" +
+	"\fDEVICE_EVENT\x10\x03\x12\r\n" +
+	"\tRPC_EVENT\x10\x04\x12\x0e\n" +
+	"\n" +
+	"KPI_EVENT3\x10\x05\"\xdc\x02\n" +
+	"\vEventHeader\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x126\n" +
+	"\bcategory\x18\x02 \x01(\x0e2\x1a.event.EventCategory.TypesR\bcategory\x12@\n" +
+	"\fsub_category\x18\x03 \x01(\x0e2\x1d.event.EventSubCategory.TypesR\vsubCategory\x12*\n" +
+	"\x04type\x18\x04 \x01(\x0e2\x16.event.EventType.TypesR\x04type\x12!\n" +
+	"\ftype_version\x18\x05 \x01(\tR\vtypeVersion\x127\n" +
+	"\traised_ts\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\braisedTs\x12;\n" +
+	"\vreported_ts\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\n" +
+	"reportedTs\"\xf9\x02\n" +
+	"\x05Event\x12*\n" +
+	"\x06header\x18\x01 \x01(\v2\x12.event.EventHeaderR\x06header\x127\n" +
+	"\fconfig_event\x18\x02 \x01(\v2\x12.event.ConfigEventH\x00R\vconfigEvent\x12.\n" +
+	"\tkpi_event\x18\x03 \x01(\v2\x0f.event.KpiEventH\x00R\bkpiEvent\x121\n" +
+	"\n" +
+	"kpi_event2\x18\x04 \x01(\v2\x10.event.KpiEvent2H\x00R\tkpiEvent2\x127\n" +
+	"\fdevice_event\x18\x05 \x01(\v2\x12.event.DeviceEventH\x00R\vdeviceEvent\x12.\n" +
+	"\trpc_event\x18\x06 \x01(\v2\x0f.event.RPCEventH\x00R\brpcEvent\x121\n" +
+	"\n" +
+	"kpi_event3\x18\a \x01(\v2\x10.event.KpiEvent3H\x00R\tkpiEvent3B\f\n" +
+	"\n" +
+	"event_typeBL\n" +
+	"\x1aorg.opencord.voltha.eventsZ.github.com/opencord/voltha-protos/v5/go/volthab\x06proto3"
+
+var (
+	file_voltha_protos_events_proto_rawDescOnce sync.Once
+	file_voltha_protos_events_proto_rawDescData []byte
+)
+
+func file_voltha_protos_events_proto_rawDescGZIP() []byte {
+	file_voltha_protos_events_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_events_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_events_proto_rawDesc), len(file_voltha_protos_events_proto_rawDesc)))
+	})
+	return file_voltha_protos_events_proto_rawDescData
 }
 
-func (m *Event) GetConfigEvent() *ConfigEvent {
-	if x, ok := m.GetEventType().(*Event_ConfigEvent); ok {
-		return x.ConfigEvent
-	}
-	return nil
+var file_voltha_protos_events_proto_enumTypes = make([]protoimpl.EnumInfo, 6)
+var file_voltha_protos_events_proto_msgTypes = make([]protoimpl.MessageInfo, 28)
+var file_voltha_protos_events_proto_goTypes = []any{
+	(EventFilterRuleKey_EventFilterRuleType)(0), // 0: event.EventFilterRuleKey.EventFilterRuleType
+	(ConfigEventType_Types)(0),                  // 1: event.ConfigEventType.Types
+	(KpiEventType_Types)(0),                     // 2: event.KpiEventType.Types
+	(EventCategory_Types)(0),                    // 3: event.EventCategory.Types
+	(EventSubCategory_Types)(0),                 // 4: event.EventSubCategory.Types
+	(EventType_Types)(0),                        // 5: event.EventType.Types
+	(*EventFilterRuleKey)(nil),                  // 6: event.EventFilterRuleKey
+	(*EventFilterRule)(nil),                     // 7: event.EventFilterRule
+	(*EventFilter)(nil),                         // 8: event.EventFilter
+	(*EventFilters)(nil),                        // 9: event.EventFilters
+	(*ConfigEventType)(nil),                     // 10: event.ConfigEventType
+	(*ConfigEvent)(nil),                         // 11: event.ConfigEvent
+	(*KpiEventType)(nil),                        // 12: event.KpiEventType
+	(*MetricMetaData)(nil),                      // 13: event.MetricMetaData
+	(*MetricValuePairs)(nil),                    // 14: event.MetricValuePairs
+	(*MetricInformation)(nil),                   // 15: event.MetricInformation
+	(*MetricInformation64)(nil),                 // 16: event.MetricInformation64
+	(*KpiEvent)(nil),                            // 17: event.KpiEvent
+	(*KpiEvent2)(nil),                           // 18: event.KpiEvent2
+	(*KpiEvent3)(nil),                           // 19: event.KpiEvent3
+	(*DeviceEvent)(nil),                         // 20: event.DeviceEvent
+	(*RPCEvent)(nil),                            // 21: event.RPCEvent
+	(*EventCategory)(nil),                       // 22: event.EventCategory
+	(*EventSubCategory)(nil),                    // 23: event.EventSubCategory
+	(*EventType)(nil),                           // 24: event.EventType
+	(*EventHeader)(nil),                         // 25: event.EventHeader
+	(*Event)(nil),                               // 26: event.Event
+	nil,                                         // 27: event.MetricMetaData.ContextEntry
+	nil,                                         // 28: event.MetricValuePairs.MetricsEntry
+	nil,                                         // 29: event.MetricInformation.MetricsEntry
+	nil,                                         // 30: event.MetricInformation64.MetricsEntry
+	nil,                                         // 31: event.KpiEvent.PrefixesEntry
+	nil,                                         // 32: event.DeviceEvent.ContextEntry
+	nil,                                         // 33: event.RPCEvent.ContextEntry
+	(*common.OperationResp)(nil),                // 34: common.OperationResp
+	(*timestamppb.Timestamp)(nil),               // 35: google.protobuf.Timestamp
+}
+var file_voltha_protos_events_proto_depIdxs = []int32{
+	0,  // 0: event.EventFilterRule.key:type_name -> event.EventFilterRuleKey.EventFilterRuleType
+	7,  // 1: event.EventFilter.rules:type_name -> event.EventFilterRule
+	8,  // 2: event.EventFilters.filters:type_name -> event.EventFilter
+	1,  // 3: event.ConfigEvent.type:type_name -> event.ConfigEventType.Types
+	27, // 4: event.MetricMetaData.context:type_name -> event.MetricMetaData.ContextEntry
+	28, // 5: event.MetricValuePairs.metrics:type_name -> event.MetricValuePairs.MetricsEntry
+	13, // 6: event.MetricInformation.metadata:type_name -> event.MetricMetaData
+	29, // 7: event.MetricInformation.metrics:type_name -> event.MetricInformation.MetricsEntry
+	13, // 8: event.MetricInformation64.metadata:type_name -> event.MetricMetaData
+	30, // 9: event.MetricInformation64.metrics:type_name -> event.MetricInformation64.MetricsEntry
+	2,  // 10: event.KpiEvent.type:type_name -> event.KpiEventType.Types
+	31, // 11: event.KpiEvent.prefixes:type_name -> event.KpiEvent.PrefixesEntry
+	2,  // 12: event.KpiEvent2.type:type_name -> event.KpiEventType.Types
+	15, // 13: event.KpiEvent2.slice_data:type_name -> event.MetricInformation
+	2,  // 14: event.KpiEvent3.type:type_name -> event.KpiEventType.Types
+	16, // 15: event.KpiEvent3.slice_data:type_name -> event.MetricInformation64
+	32, // 16: event.DeviceEvent.context:type_name -> event.DeviceEvent.ContextEntry
+	33, // 17: event.RPCEvent.context:type_name -> event.RPCEvent.ContextEntry
+	34, // 18: event.RPCEvent.status:type_name -> common.OperationResp
+	3,  // 19: event.EventHeader.category:type_name -> event.EventCategory.Types
+	4,  // 20: event.EventHeader.sub_category:type_name -> event.EventSubCategory.Types
+	5,  // 21: event.EventHeader.type:type_name -> event.EventType.Types
+	35, // 22: event.EventHeader.raised_ts:type_name -> google.protobuf.Timestamp
+	35, // 23: event.EventHeader.reported_ts:type_name -> google.protobuf.Timestamp
+	25, // 24: event.Event.header:type_name -> event.EventHeader
+	11, // 25: event.Event.config_event:type_name -> event.ConfigEvent
+	17, // 26: event.Event.kpi_event:type_name -> event.KpiEvent
+	18, // 27: event.Event.kpi_event2:type_name -> event.KpiEvent2
+	20, // 28: event.Event.device_event:type_name -> event.DeviceEvent
+	21, // 29: event.Event.rpc_event:type_name -> event.RPCEvent
+	19, // 30: event.Event.kpi_event3:type_name -> event.KpiEvent3
+	14, // 31: event.KpiEvent.PrefixesEntry.value:type_name -> event.MetricValuePairs
+	32, // [32:32] is the sub-list for method output_type
+	32, // [32:32] is the sub-list for method input_type
+	32, // [32:32] is the sub-list for extension type_name
+	32, // [32:32] is the sub-list for extension extendee
+	0,  // [0:32] is the sub-list for field type_name
 }
 
-func (m *Event) GetKpiEvent() *KpiEvent {
-	if x, ok := m.GetEventType().(*Event_KpiEvent); ok {
-		return x.KpiEvent
+func init() { file_voltha_protos_events_proto_init() }
+func file_voltha_protos_events_proto_init() {
+	if File_voltha_protos_events_proto != nil {
+		return
 	}
-	return nil
-}
-
-func (m *Event) GetKpiEvent2() *KpiEvent2 {
-	if x, ok := m.GetEventType().(*Event_KpiEvent2); ok {
-		return x.KpiEvent2
-	}
-	return nil
-}
-
-func (m *Event) GetDeviceEvent() *DeviceEvent {
-	if x, ok := m.GetEventType().(*Event_DeviceEvent); ok {
-		return x.DeviceEvent
-	}
-	return nil
-}
-
-func (m *Event) GetRpcEvent() *RPCEvent {
-	if x, ok := m.GetEventType().(*Event_RpcEvent); ok {
-		return x.RpcEvent
-	}
-	return nil
-}
-
-func (m *Event) GetKpiEvent3() *KpiEvent3 {
-	if x, ok := m.GetEventType().(*Event_KpiEvent3); ok {
-		return x.KpiEvent3
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*Event) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
+	file_voltha_protos_events_proto_msgTypes[20].OneofWrappers = []any{
 		(*Event_ConfigEvent)(nil),
 		(*Event_KpiEvent)(nil),
 		(*Event_KpiEvent2)(nil),
@@ -1473,141 +1966,22 @@
 		(*Event_RpcEvent)(nil),
 		(*Event_KpiEvent3)(nil),
 	}
-}
-
-func init() {
-	proto.RegisterEnum("event.EventFilterRuleKey_EventFilterRuleType", EventFilterRuleKey_EventFilterRuleType_name, EventFilterRuleKey_EventFilterRuleType_value)
-	proto.RegisterEnum("event.ConfigEventType_Types", ConfigEventType_Types_name, ConfigEventType_Types_value)
-	proto.RegisterEnum("event.KpiEventType_Types", KpiEventType_Types_name, KpiEventType_Types_value)
-	proto.RegisterEnum("event.EventCategory_Types", EventCategory_Types_name, EventCategory_Types_value)
-	proto.RegisterEnum("event.EventSubCategory_Types", EventSubCategory_Types_name, EventSubCategory_Types_value)
-	proto.RegisterEnum("event.EventType_Types", EventType_Types_name, EventType_Types_value)
-	proto.RegisterType((*EventFilterRuleKey)(nil), "event.EventFilterRuleKey")
-	proto.RegisterType((*EventFilterRule)(nil), "event.EventFilterRule")
-	proto.RegisterType((*EventFilter)(nil), "event.EventFilter")
-	proto.RegisterType((*EventFilters)(nil), "event.EventFilters")
-	proto.RegisterType((*ConfigEventType)(nil), "event.ConfigEventType")
-	proto.RegisterType((*ConfigEvent)(nil), "event.ConfigEvent")
-	proto.RegisterType((*KpiEventType)(nil), "event.KpiEventType")
-	proto.RegisterType((*MetricMetaData)(nil), "event.MetricMetaData")
-	proto.RegisterMapType((map[string]string)(nil), "event.MetricMetaData.ContextEntry")
-	proto.RegisterType((*MetricValuePairs)(nil), "event.MetricValuePairs")
-	proto.RegisterMapType((map[string]float32)(nil), "event.MetricValuePairs.MetricsEntry")
-	proto.RegisterType((*MetricInformation)(nil), "event.MetricInformation")
-	proto.RegisterMapType((map[string]float32)(nil), "event.MetricInformation.MetricsEntry")
-	proto.RegisterType((*MetricInformation64)(nil), "event.MetricInformation64")
-	proto.RegisterMapType((map[string]float64)(nil), "event.MetricInformation64.MetricsEntry")
-	proto.RegisterType((*KpiEvent)(nil), "event.KpiEvent")
-	proto.RegisterMapType((map[string]*MetricValuePairs)(nil), "event.KpiEvent.PrefixesEntry")
-	proto.RegisterType((*KpiEvent2)(nil), "event.KpiEvent2")
-	proto.RegisterType((*KpiEvent3)(nil), "event.KpiEvent3")
-	proto.RegisterType((*DeviceEvent)(nil), "event.DeviceEvent")
-	proto.RegisterMapType((map[string]string)(nil), "event.DeviceEvent.ContextEntry")
-	proto.RegisterType((*RPCEvent)(nil), "event.RPCEvent")
-	proto.RegisterMapType((map[string]string)(nil), "event.RPCEvent.ContextEntry")
-	proto.RegisterType((*EventCategory)(nil), "event.EventCategory")
-	proto.RegisterType((*EventSubCategory)(nil), "event.EventSubCategory")
-	proto.RegisterType((*EventType)(nil), "event.EventType")
-	proto.RegisterType((*EventHeader)(nil), "event.EventHeader")
-	proto.RegisterType((*Event)(nil), "event.Event")
-}
-
-func init() { proto.RegisterFile("voltha_protos/events.proto", fileDescriptor_e63e6c07044fd2c4) }
-
-var fileDescriptor_e63e6c07044fd2c4 = []byte{
-	// 1493 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0xcd, 0x6e, 0xdb, 0x46,
-	0x10, 0x16, 0xa9, 0xff, 0xa1, 0x6c, 0xd3, 0x9b, 0x26, 0x55, 0x94, 0x04, 0x71, 0x88, 0x16, 0x35,
-	0x8c, 0x58, 0x6e, 0xe4, 0xd4, 0x6e, 0x7e, 0x90, 0x34, 0x51, 0x94, 0x98, 0x48, 0x2c, 0xa9, 0xb4,
-	0x6c, 0xa0, 0xbd, 0x08, 0x34, 0xb9, 0x96, 0x09, 0x4b, 0x22, 0xc1, 0x5d, 0x09, 0xf1, 0xb9, 0x28,
-	0x7a, 0xeb, 0x23, 0xb4, 0xf7, 0xbe, 0x46, 0x0f, 0x7d, 0x87, 0xa0, 0x6f, 0xd1, 0x53, 0x6f, 0xc5,
-	0xfe, 0x50, 0x22, 0x69, 0xb9, 0x01, 0x92, 0xf6, 0x44, 0xee, 0xec, 0xcc, 0xce, 0x37, 0xdf, 0xec,
-	0xce, 0xce, 0x42, 0x6d, 0xea, 0x0f, 0xe9, 0xa9, 0xdd, 0x0f, 0x42, 0x9f, 0xfa, 0x64, 0x0b, 0x4f,
-	0xf1, 0x98, 0x92, 0x3a, 0x1f, 0xa1, 0x3c, 0x1f, 0xd5, 0x6e, 0x0e, 0x7c, 0x7f, 0x30, 0xc4, 0x5b,
-	0x76, 0xe0, 0x6d, 0xd9, 0xe3, 0xb1, 0x4f, 0x6d, 0xea, 0xf9, 0x63, 0xa9, 0x54, 0xbb, 0x2d, 0x67,
-	0xf9, 0xe8, 0x78, 0x72, 0xb2, 0x45, 0xbd, 0x11, 0x26, 0xd4, 0x1e, 0x05, 0x52, 0x21, 0xe5, 0xc1,
-	0xf1, 0x47, 0x23, 0x7f, 0x2c, 0xe6, 0x8c, 0x5f, 0x14, 0x40, 0x2d, 0xe6, 0xe4, 0xa5, 0x37, 0xa4,
-	0x38, 0xb4, 0x26, 0x43, 0xfc, 0x1a, 0x9f, 0x1b, 0x3f, 0x29, 0x70, 0x25, 0x25, 0xee, 0x9d, 0x07,
-	0x18, 0x2d, 0x03, 0x9c, 0x70, 0x49, 0xdf, 0x1e, 0x0e, 0xf5, 0x0c, 0xaa, 0x40, 0xc9, 0xb1, 0x29,
-	0x1e, 0xf8, 0xe1, 0xb9, 0xae, 0x20, 0x1d, 0x2a, 0x64, 0x72, 0xdc, 0x9f, 0x49, 0x54, 0x84, 0x60,
-	0xf9, 0x2c, 0xf0, 0xfa, 0x3c, 0x8c, 0x3e, 0x3d, 0x0f, 0xb0, 0x9e, 0x45, 0x57, 0x61, 0xd5, 0xf1,
-	0xc7, 0x27, 0xde, 0x20, 0x2e, 0xce, 0x31, 0xb1, 0x8b, 0xa7, 0x9e, 0x83, 0xe3, 0xe2, 0xbc, 0x71,
-	0x0a, 0x2b, 0x29, 0x20, 0xe8, 0x29, 0x64, 0xcf, 0xf0, 0x79, 0x55, 0x59, 0x53, 0xd6, 0x97, 0x1b,
-	0x9b, 0x75, 0xae, 0x5e, 0xbf, 0x18, 0x44, 0x7d, 0x41, 0x00, 0x16, 0xb3, 0x44, 0x9f, 0x40, 0x7e,
-	0x6a, 0x0f, 0x27, 0xb8, 0xaa, 0xae, 0x29, 0xeb, 0x65, 0x4b, 0x0c, 0x8c, 0x5f, 0x15, 0xd0, 0x62,
-	0x26, 0x68, 0x19, 0x54, 0xcf, 0xe5, 0x5e, 0xca, 0x96, 0xea, 0xb9, 0xe8, 0x1a, 0x14, 0xf0, 0xd8,
-	0x3e, 0x1e, 0x0a, 0xb3, 0x92, 0x25, 0x47, 0xe8, 0x06, 0x94, 0x25, 0x70, 0xcf, 0xad, 0x66, 0xb9,
-	0x7a, 0x49, 0x08, 0x4c, 0x17, 0xdd, 0x02, 0x98, 0x87, 0x53, 0xcd, 0xf1, 0xd9, 0x32, 0x97, 0x70,
-	0x3e, 0xef, 0x42, 0x3e, 0x9c, 0x0c, 0x31, 0xa9, 0xe6, 0xd7, 0xb2, 0xeb, 0x5a, 0xe3, 0xda, 0xe2,
-	0x60, 0x2c, 0xa1, 0x64, 0x3c, 0x86, 0x4a, 0x6c, 0x86, 0xa0, 0xbb, 0x50, 0x14, 0xd9, 0x20, 0x55,
-	0x85, 0xdb, 0xa3, 0x05, 0xf6, 0x91, 0x8a, 0xf1, 0x08, 0x56, 0x9a, 0x9c, 0xf7, 0x56, 0xe4, 0xde,
-	0x58, 0x87, 0x3c, 0xfb, 0x12, 0x54, 0x84, 0xac, 0xed, 0xba, 0x7a, 0x06, 0x01, 0x14, 0x42, 0x3c,
-	0xf2, 0xa7, 0x58, 0x57, 0xd8, 0xff, 0x24, 0x70, 0x6d, 0x8a, 0x75, 0xd5, 0x18, 0x80, 0x16, 0x33,
-	0x46, 0x5f, 0x42, 0x8e, 0x07, 0x24, 0x72, 0x70, 0x53, 0xba, 0x4d, 0x2d, 0x5f, 0xe7, 0x6b, 0x5b,
-	0x5c, 0x13, 0x21, 0xc8, 0x9d, 0xda, 0xe4, 0x54, 0x52, 0xce, 0xff, 0x99, 0xcc, 0xb5, 0xa9, 0x2d,
-	0x49, 0xe3, 0xff, 0xc6, 0x06, 0x54, 0x5e, 0x07, 0xde, 0x1c, 0x62, 0x2d, 0x82, 0x58, 0x86, 0x3c,
-	0x19, 0x7a, 0x0e, 0xd6, 0x33, 0xa8, 0x00, 0x2a, 0x25, 0xba, 0x62, 0xfc, 0xa6, 0xc2, 0xf2, 0x3e,
-	0xa6, 0xa1, 0xe7, 0xec, 0x63, 0x6a, 0xbf, 0xb0, 0xa9, 0xcd, 0x52, 0x4b, 0x3d, 0x3a, 0xc4, 0x32,
-	0x6f, 0x62, 0xc0, 0x52, 0x49, 0x09, 0x77, 0xad, 0x58, 0x2a, 0x25, 0x68, 0x03, 0x56, 0x87, 0xfe,
-	0xc0, 0x73, 0xec, 0x61, 0x3f, 0x9d, 0xba, 0x15, 0x39, 0xf1, 0x22, 0xca, 0xe0, 0x0d, 0x28, 0x13,
-	0x1c, 0x7a, 0xf6, 0xb0, 0x3f, 0xf6, 0x65, 0x02, 0x4b, 0x42, 0xd0, 0xf6, 0x93, 0xb9, 0xcf, 0xa7,
-	0x72, 0xff, 0x18, 0x8a, 0x8e, 0x3f, 0xa6, 0xf8, 0x2d, 0xad, 0x16, 0x78, 0x7a, 0x0c, 0xc9, 0x53,
-	0x12, 0x33, 0xa3, 0x8d, 0x29, 0xb5, 0xc6, 0x34, 0x3c, 0xb7, 0x22, 0x13, 0x46, 0xce, 0x64, 0xe2,
-	0xb9, 0xd5, 0xa2, 0x20, 0x87, 0xfd, 0xd7, 0x1e, 0x42, 0x25, 0xae, 0x8c, 0xf4, 0xf9, 0x49, 0x28,
-	0xff, 0xcb, 0xd6, 0x7e, 0xa8, 0x7e, 0xad, 0x18, 0x3f, 0x2b, 0xa0, 0x0b, 0xc7, 0x47, 0x4c, 0xd6,
-	0xb5, 0xbd, 0x90, 0xa0, 0x27, 0x50, 0x1c, 0x71, 0x59, 0xb4, 0x83, 0x3e, 0x4b, 0x40, 0x9c, 0x6b,
-	0x4a, 0x01, 0x91, 0x20, 0xa5, 0x11, 0x03, 0x14, 0x9f, 0x78, 0x1f, 0x20, 0x35, 0x0e, 0xe8, 0x77,
-	0x05, 0x56, 0x85, 0xb1, 0x39, 0x3e, 0xf1, 0xc3, 0x11, 0x2f, 0x6a, 0xe8, 0x1e, 0x94, 0x46, 0x98,
-	0xda, 0x7c, 0x5f, 0xb0, 0x65, 0xb4, 0xc6, 0xd5, 0x85, 0xac, 0x59, 0x33, 0x35, 0xf4, 0x74, 0x1e,
-	0x84, 0xca, 0x83, 0xf8, 0x3c, 0x61, 0x11, 0x5b, 0xfd, 0x7f, 0x88, 0xe2, 0x0f, 0x05, 0xae, 0x5c,
-	0xf0, 0xb3, 0x73, 0xff, 0x43, 0xe2, 0x78, 0x96, 0x8e, 0xe3, 0x8b, 0xcb, 0xe2, 0xd8, 0xb9, 0xff,
-	0xdf, 0x44, 0xa2, 0xc4, 0x23, 0x79, 0xa7, 0x40, 0x29, 0x3a, 0x7a, 0x68, 0x33, 0x71, 0xc0, 0xaf,
-	0x4b, 0x20, 0xf1, 0x93, 0x99, 0x38, 0xdd, 0xf3, 0x03, 0xa6, 0xf2, 0x03, 0xf6, 0x00, 0x4a, 0x41,
-	0x88, 0x4f, 0xbc, 0xb7, 0x98, 0x54, 0xb3, 0x3c, 0x96, 0x5b, 0xa9, 0x25, 0xea, 0x5d, 0x39, 0x2f,
-	0x22, 0x98, 0xa9, 0xd7, 0x7a, 0xb0, 0x94, 0x98, 0x5a, 0x10, 0xc3, 0x66, 0x3c, 0x06, 0xad, 0xf1,
-	0xe9, 0x25, 0x7b, 0x36, 0x1e, 0xdc, 0x0f, 0x0a, 0x94, 0x23, 0xd7, 0x8d, 0x0f, 0x8f, 0x4e, 0x94,
-	0x8f, 0x5d, 0x00, 0x5e, 0x8a, 0xfa, 0xb2, 0x7a, 0xb1, 0xf8, 0xaa, 0x97, 0xe5, 0xca, 0x2a, 0x73,
-	0x5d, 0x96, 0x6b, 0xe3, 0xc7, 0x18, 0x8a, 0xed, 0x8f, 0x45, 0xf1, 0x60, 0x01, 0x8a, 0xda, 0xe5,
-	0x3b, 0x26, 0x8e, 0xe3, 0x2f, 0x05, 0x34, 0x51, 0xe0, 0x44, 0xb6, 0x6f, 0x83, 0x16, 0x62, 0xe2,
-	0x4f, 0x42, 0x51, 0xc8, 0x04, 0xd5, 0x10, 0x89, 0x4c, 0x97, 0x15, 0xcc, 0xc4, 0xe5, 0x3c, 0xb6,
-	0x47, 0x51, 0x89, 0x59, 0x71, 0xe7, 0x0b, 0xb5, 0xed, 0x11, 0x46, 0x6b, 0xa0, 0xb9, 0x98, 0x38,
-	0xa1, 0x17, 0x30, 0xc7, 0xb2, 0xac, 0xc6, 0x45, 0xe8, 0xc1, 0xbc, 0x30, 0xe6, 0x38, 0xec, 0xdb,
-	0x12, 0x76, 0x0c, 0xd3, 0xe2, 0xaa, 0xf8, 0x51, 0x15, 0xf0, 0x9d, 0x0a, 0x25, 0xab, 0xdb, 0x14,
-	0x21, 0xeb, 0x90, 0x0d, 0x03, 0x27, 0x32, 0x0c, 0x03, 0x07, 0xdd, 0x81, 0x8a, 0x1f, 0xe0, 0x90,
-	0xd3, 0xc5, 0x58, 0x10, 0xf6, 0xda, 0x4c, 0x66, 0xba, 0xa8, 0x0a, 0x45, 0x82, 0x43, 0x86, 0x51,
-	0x86, 0x15, 0x0d, 0xd1, 0x75, 0x28, 0x11, 0x6a, 0x3b, 0x67, 0xcc, 0x30, 0x27, 0xa7, 0xd8, 0xd8,
-	0x74, 0xd3, 0xe4, 0xe6, 0x2f, 0x90, 0x9b, 0x22, 0xac, 0x70, 0x91, 0xb0, 0x9d, 0x39, 0x61, 0x45,
-	0x4e, 0x58, 0x74, 0xe3, 0x46, 0xe1, 0x5c, 0x72, 0x87, 0x6c, 0x42, 0x81, 0x50, 0x9b, 0x4e, 0x48,
-	0xb5, 0x24, 0x4b, 0x90, 0x6c, 0xfe, 0x3a, 0x51, 0x50, 0x16, 0x26, 0x81, 0x25, 0x95, 0x3e, 0x8a,
-	0xdc, 0x29, 0x2c, 0x71, 0x24, 0x4d, 0xd9, 0xfc, 0x19, 0x38, 0xba, 0xb8, 0x57, 0x61, 0xa9, 0xd9,
-	0xd9, 0xdf, 0x3f, 0x6c, 0x9b, 0xcd, 0x67, 0x3d, 0xb3, 0xd3, 0xd6, 0x33, 0x68, 0x05, 0xb4, 0x56,
-	0xfb, 0xc8, 0xb4, 0x3a, 0xed, 0xfd, 0x56, 0xbb, 0xa7, 0x2b, 0x68, 0x09, 0xca, 0xad, 0x6f, 0x0f,
-	0xcd, 0x2e, 0x1f, 0xaa, 0x48, 0x83, 0xe2, 0x41, 0xcb, 0x3a, 0x32, 0x9b, 0x2d, 0x3d, 0xcb, 0x7a,
-	0xce, 0xae, 0xd5, 0x69, 0xb6, 0x0e, 0x0e, 0xcc, 0xf6, 0x2b, 0x3d, 0xc7, 0x7a, 0xce, 0x83, 0x56,
-	0xf3, 0xd0, 0x32, 0x7b, 0xdf, 0xe9, 0x79, 0xc3, 0x02, 0x9d, 0xfb, 0x3d, 0x98, 0x1c, 0xcf, 0x5c,
-	0x3f, 0x89, 0xb5, 0x35, 0x5d, 0xee, 0xb0, 0x08, 0xd9, 0xce, 0x1b, 0xe6, 0x88, 0xfd, 0x70, 0x17,
-	0xfc, 0xe7, 0x50, 0xcf, 0xb2, 0x9f, 0x76, 0xdb, 0xd4, 0x73, 0xa8, 0x04, 0xb9, 0x76, 0xa7, 0xdd,
-	0xd2, 0xf3, 0xc6, 0x14, 0xca, 0xf3, 0x06, 0xc4, 0x8b, 0x16, 0xd3, 0xa1, 0xd2, 0xec, 0xb4, 0x5f,
-	0x9a, 0xaf, 0xfa, 0xad, 0x23, 0x06, 0x33, 0xc3, 0x50, 0xbf, 0xee, 0x9a, 0x72, 0xa8, 0x30, 0xa0,
-	0xb3, 0x61, 0x43, 0x57, 0x99, 0xc1, 0x8b, 0x16, 0x0b, 0x42, 0x6a, 0x64, 0x99, 0x81, 0xd5, 0x6d,
-	0xca, 0x61, 0x2e, 0x61, 0xb0, 0xad, 0xe7, 0x8d, 0x3f, 0x55, 0xd9, 0x81, 0xee, 0x61, 0xdb, 0x5d,
-	0xd0, 0x81, 0xee, 0xcc, 0xbb, 0x6d, 0x9e, 0x80, 0xe5, 0xd9, 0x79, 0x4f, 0x50, 0x2f, 0xab, 0xc6,
-	0x4c, 0x17, 0x7d, 0x93, 0xec, 0xcb, 0xf9, 0xde, 0x5d, 0x9e, 0x55, 0xe4, 0x34, 0x7d, 0xd2, 0x5c,
-	0x23, 0x73, 0x11, 0xda, 0x90, 0xa5, 0x2a, 0xc7, 0x2d, 0x13, 0x6d, 0xea, 0x85, 0x3a, 0x75, 0x07,
-	0x2a, 0xec, 0xdb, 0x9f, 0xe2, 0x90, 0xb0, 0xfd, 0x2c, 0x36, 0xbc, 0xc6, 0x64, 0x47, 0x42, 0x84,
-	0x76, 0xa1, 0x1c, 0xda, 0x1e, 0xc1, 0x6e, 0x9f, 0x12, 0xbe, 0xdf, 0x59, 0xe5, 0x12, 0xcf, 0x98,
-	0x7a, 0xf4, 0x8c, 0xa9, 0xf7, 0xa2, 0x67, 0x8c, 0x55, 0x12, 0xca, 0x3d, 0x82, 0x1e, 0xb1, 0xb3,
-	0x14, 0xf8, 0x21, 0x15, 0xa6, 0xc5, 0xf7, 0x9a, 0x42, 0xa4, 0xde, 0x23, 0xc6, 0xdf, 0x2a, 0xe4,
-	0xc5, 0xe1, 0xdf, 0x80, 0xc2, 0x29, 0xa7, 0x58, 0x5e, 0xcd, 0x89, 0xbe, 0x59, 0x90, 0x6f, 0x49,
-	0x0d, 0xb4, 0x0b, 0x95, 0xf8, 0x73, 0x45, 0xde, 0x39, 0xe8, 0x62, 0xcb, 0xbb, 0x97, 0xb1, 0x34,
-	0x27, 0xd6, 0x23, 0xd7, 0xa1, 0x3c, 0x7b, 0xfb, 0x70, 0xca, 0xb5, 0xc6, 0x4a, 0xaa, 0xc6, 0xef,
-	0x65, 0xac, 0xd2, 0x59, 0x74, 0xe5, 0xde, 0x03, 0x98, 0xe9, 0x37, 0x38, 0xd3, 0x5a, 0x43, 0x4f,
-	0x19, 0x34, 0xf6, 0x32, 0x56, 0xf9, 0x6c, 0x76, 0x8f, 0xed, 0x42, 0x25, 0x5e, 0x96, 0x39, 0xd5,
-	0x73, 0x6c, 0xb1, 0x6a, 0xca, 0xb0, 0xc5, 0xea, 0x34, 0xc3, 0x16, 0x06, 0x8e, 0xb4, 0x2a, 0x24,
-	0xb0, 0x45, 0x25, 0x85, 0x61, 0x0b, 0x03, 0xe7, 0x22, 0xb6, 0x6d, 0x49, 0x7b, 0x1a, 0xdb, 0x76,
-	0x1c, 0xdb, 0xf6, 0xf3, 0x4a, 0xfc, 0xe5, 0xf3, 0xfc, 0x0d, 0xd4, 0xfc, 0x70, 0x50, 0xf7, 0x03,
-	0x3c, 0x76, 0xfc, 0xd0, 0xad, 0x8b, 0x27, 0xa9, 0x58, 0x81, 0x7c, 0x5f, 0x1f, 0x78, 0xf4, 0x74,
-	0x72, 0xcc, 0xaa, 0xd3, 0x56, 0xa4, 0xb2, 0x25, 0x54, 0x36, 0xe5, 0xab, 0x75, 0xfa, 0xd5, 0xd6,
-	0xc0, 0x97, 0xb2, 0xe3, 0x02, 0x17, 0x6e, 0xff, 0x13, 0x00, 0x00, 0xff, 0xff, 0xf2, 0x61, 0x0b,
-	0xb2, 0x3c, 0x0f, 0x00, 0x00,
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_events_proto_rawDesc), len(file_voltha_protos_events_proto_rawDesc)),
+			NumEnums:      6,
+			NumMessages:   28,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_events_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_events_proto_depIdxs,
+		EnumInfos:         file_voltha_protos_events_proto_enumTypes,
+		MessageInfos:      file_voltha_protos_events_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_events_proto = out.File
+	file_voltha_protos_events_proto_goTypes = nil
+	file_voltha_protos_events_proto_depIdxs = nil
 }
diff --git a/go/voltha/logical_device.pb.go b/go/voltha/logical_device.pb.go
index bd0e4c4..ba19ad1 100644
--- a/go/voltha/logical_device.pb.go
+++ b/go/voltha/logical_device.pb.go
@@ -1,195 +1,212 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/logical_device.proto
 
 package voltha
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
 	openflow_13 "github.com/opencord/voltha-protos/v5/go/openflow_13"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type LogicalPortId struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// unique id of logical device
 	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 	// id of the port on the logical device
-	PortId               string   `protobuf:"bytes,2,opt,name=port_id,json=portId,proto3" json:"port_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	PortId        string `protobuf:"bytes,2,opt,name=port_id,json=portId,proto3" json:"port_id,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *LogicalPortId) Reset()         { *m = LogicalPortId{} }
-func (m *LogicalPortId) String() string { return proto.CompactTextString(m) }
-func (*LogicalPortId) ProtoMessage()    {}
+func (x *LogicalPortId) Reset() {
+	*x = LogicalPortId{}
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *LogicalPortId) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LogicalPortId) ProtoMessage() {}
+
+func (x *LogicalPortId) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LogicalPortId.ProtoReflect.Descriptor instead.
 func (*LogicalPortId) Descriptor() ([]byte, []int) {
-	return fileDescriptor_caf139ab3abc8240, []int{0}
+	return file_voltha_protos_logical_device_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *LogicalPortId) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LogicalPortId.Unmarshal(m, b)
-}
-func (m *LogicalPortId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LogicalPortId.Marshal(b, m, deterministic)
-}
-func (m *LogicalPortId) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LogicalPortId.Merge(m, src)
-}
-func (m *LogicalPortId) XXX_Size() int {
-	return xxx_messageInfo_LogicalPortId.Size(m)
-}
-func (m *LogicalPortId) XXX_DiscardUnknown() {
-	xxx_messageInfo_LogicalPortId.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_LogicalPortId proto.InternalMessageInfo
-
-func (m *LogicalPortId) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *LogicalPortId) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *LogicalPortId) GetPortId() string {
-	if m != nil {
-		return m.PortId
+func (x *LogicalPortId) GetPortId() string {
+	if x != nil {
+		return x.PortId
 	}
 	return ""
 }
 
 type LogicalPort struct {
-	Id                   string                    `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	OfpPort              *openflow_13.OfpPort      `protobuf:"bytes,2,opt,name=ofp_port,json=ofpPort,proto3" json:"ofp_port,omitempty"`
-	DeviceId             string                    `protobuf:"bytes,3,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	DevicePortNo         uint32                    `protobuf:"varint,4,opt,name=device_port_no,json=devicePortNo,proto3" json:"device_port_no,omitempty"`
-	RootPort             bool                      `protobuf:"varint,5,opt,name=root_port,json=rootPort,proto3" json:"root_port,omitempty"`
-	OfpPortStats         *openflow_13.OfpPortStats `protobuf:"bytes,6,opt,name=ofp_port_stats,json=ofpPortStats,proto3" json:"ofp_port_stats,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
-	XXX_unrecognized     []byte                    `json:"-"`
-	XXX_sizecache        int32                     `json:"-"`
+	state         protoimpl.MessageState    `protogen:"open.v1"`
+	Id            string                    `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	OfpPort       *openflow_13.OfpPort      `protobuf:"bytes,2,opt,name=ofp_port,json=ofpPort,proto3" json:"ofp_port,omitempty"`
+	DeviceId      string                    `protobuf:"bytes,3,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	DevicePortNo  uint32                    `protobuf:"varint,4,opt,name=device_port_no,json=devicePortNo,proto3" json:"device_port_no,omitempty"`
+	RootPort      bool                      `protobuf:"varint,5,opt,name=root_port,json=rootPort,proto3" json:"root_port,omitempty"`
+	OfpPortStats  *openflow_13.OfpPortStats `protobuf:"bytes,6,opt,name=ofp_port_stats,json=ofpPortStats,proto3" json:"ofp_port_stats,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *LogicalPort) Reset()         { *m = LogicalPort{} }
-func (m *LogicalPort) String() string { return proto.CompactTextString(m) }
-func (*LogicalPort) ProtoMessage()    {}
+func (x *LogicalPort) Reset() {
+	*x = LogicalPort{}
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *LogicalPort) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LogicalPort) ProtoMessage() {}
+
+func (x *LogicalPort) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LogicalPort.ProtoReflect.Descriptor instead.
 func (*LogicalPort) Descriptor() ([]byte, []int) {
-	return fileDescriptor_caf139ab3abc8240, []int{1}
+	return file_voltha_protos_logical_device_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *LogicalPort) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LogicalPort.Unmarshal(m, b)
-}
-func (m *LogicalPort) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LogicalPort.Marshal(b, m, deterministic)
-}
-func (m *LogicalPort) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LogicalPort.Merge(m, src)
-}
-func (m *LogicalPort) XXX_Size() int {
-	return xxx_messageInfo_LogicalPort.Size(m)
-}
-func (m *LogicalPort) XXX_DiscardUnknown() {
-	xxx_messageInfo_LogicalPort.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_LogicalPort proto.InternalMessageInfo
-
-func (m *LogicalPort) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *LogicalPort) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *LogicalPort) GetOfpPort() *openflow_13.OfpPort {
-	if m != nil {
-		return m.OfpPort
+func (x *LogicalPort) GetOfpPort() *openflow_13.OfpPort {
+	if x != nil {
+		return x.OfpPort
 	}
 	return nil
 }
 
-func (m *LogicalPort) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *LogicalPort) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *LogicalPort) GetDevicePortNo() uint32 {
-	if m != nil {
-		return m.DevicePortNo
+func (x *LogicalPort) GetDevicePortNo() uint32 {
+	if x != nil {
+		return x.DevicePortNo
 	}
 	return 0
 }
 
-func (m *LogicalPort) GetRootPort() bool {
-	if m != nil {
-		return m.RootPort
+func (x *LogicalPort) GetRootPort() bool {
+	if x != nil {
+		return x.RootPort
 	}
 	return false
 }
 
-func (m *LogicalPort) GetOfpPortStats() *openflow_13.OfpPortStats {
-	if m != nil {
-		return m.OfpPortStats
+func (x *LogicalPort) GetOfpPortStats() *openflow_13.OfpPortStats {
+	if x != nil {
+		return x.OfpPortStats
 	}
 	return nil
 }
 
 type LogicalPorts struct {
-	Items                []*LogicalPort `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
-	XXX_unrecognized     []byte         `json:"-"`
-	XXX_sizecache        int32          `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*LogicalPort         `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *LogicalPorts) Reset()         { *m = LogicalPorts{} }
-func (m *LogicalPorts) String() string { return proto.CompactTextString(m) }
-func (*LogicalPorts) ProtoMessage()    {}
+func (x *LogicalPorts) Reset() {
+	*x = LogicalPorts{}
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *LogicalPorts) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LogicalPorts) ProtoMessage() {}
+
+func (x *LogicalPorts) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LogicalPorts.ProtoReflect.Descriptor instead.
 func (*LogicalPorts) Descriptor() ([]byte, []int) {
-	return fileDescriptor_caf139ab3abc8240, []int{2}
+	return file_voltha_protos_logical_device_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *LogicalPorts) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LogicalPorts.Unmarshal(m, b)
-}
-func (m *LogicalPorts) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LogicalPorts.Marshal(b, m, deterministic)
-}
-func (m *LogicalPorts) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LogicalPorts.Merge(m, src)
-}
-func (m *LogicalPorts) XXX_Size() int {
-	return xxx_messageInfo_LogicalPorts.Size(m)
-}
-func (m *LogicalPorts) XXX_DiscardUnknown() {
-	xxx_messageInfo_LogicalPorts.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_LogicalPorts proto.InternalMessageInfo
-
-func (m *LogicalPorts) GetItems() []*LogicalPort {
-	if m != nil {
-		return m.Items
+func (x *LogicalPorts) GetItems() []*LogicalPort {
+	if x != nil {
+		return x.Items
 	}
 	return nil
 }
 
 type LogicalDevice struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// unique id of logical device
 	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 	// unique datapath id for the logical device (used by the SDN controller)
@@ -199,151 +216,206 @@
 	// device features
 	SwitchFeatures *openflow_13.OfpSwitchFeatures `protobuf:"bytes,4,opt,name=switch_features,json=switchFeatures,proto3" json:"switch_features,omitempty"`
 	// name of the root device anchoring logical device
-	RootDeviceId         string   `protobuf:"bytes,5,opt,name=root_device_id,json=rootDeviceId,proto3" json:"root_device_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	RootDeviceId  string `protobuf:"bytes,5,opt,name=root_device_id,json=rootDeviceId,proto3" json:"root_device_id,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *LogicalDevice) Reset()         { *m = LogicalDevice{} }
-func (m *LogicalDevice) String() string { return proto.CompactTextString(m) }
-func (*LogicalDevice) ProtoMessage()    {}
+func (x *LogicalDevice) Reset() {
+	*x = LogicalDevice{}
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *LogicalDevice) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LogicalDevice) ProtoMessage() {}
+
+func (x *LogicalDevice) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LogicalDevice.ProtoReflect.Descriptor instead.
 func (*LogicalDevice) Descriptor() ([]byte, []int) {
-	return fileDescriptor_caf139ab3abc8240, []int{3}
+	return file_voltha_protos_logical_device_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *LogicalDevice) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LogicalDevice.Unmarshal(m, b)
-}
-func (m *LogicalDevice) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LogicalDevice.Marshal(b, m, deterministic)
-}
-func (m *LogicalDevice) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LogicalDevice.Merge(m, src)
-}
-func (m *LogicalDevice) XXX_Size() int {
-	return xxx_messageInfo_LogicalDevice.Size(m)
-}
-func (m *LogicalDevice) XXX_DiscardUnknown() {
-	xxx_messageInfo_LogicalDevice.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_LogicalDevice proto.InternalMessageInfo
-
-func (m *LogicalDevice) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *LogicalDevice) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *LogicalDevice) GetDatapathId() uint64 {
-	if m != nil {
-		return m.DatapathId
+func (x *LogicalDevice) GetDatapathId() uint64 {
+	if x != nil {
+		return x.DatapathId
 	}
 	return 0
 }
 
-func (m *LogicalDevice) GetDesc() *openflow_13.OfpDesc {
-	if m != nil {
-		return m.Desc
+func (x *LogicalDevice) GetDesc() *openflow_13.OfpDesc {
+	if x != nil {
+		return x.Desc
 	}
 	return nil
 }
 
-func (m *LogicalDevice) GetSwitchFeatures() *openflow_13.OfpSwitchFeatures {
-	if m != nil {
-		return m.SwitchFeatures
+func (x *LogicalDevice) GetSwitchFeatures() *openflow_13.OfpSwitchFeatures {
+	if x != nil {
+		return x.SwitchFeatures
 	}
 	return nil
 }
 
-func (m *LogicalDevice) GetRootDeviceId() string {
-	if m != nil {
-		return m.RootDeviceId
+func (x *LogicalDevice) GetRootDeviceId() string {
+	if x != nil {
+		return x.RootDeviceId
 	}
 	return ""
 }
 
 type LogicalDevices struct {
-	Items                []*LogicalDevice `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*LogicalDevice       `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *LogicalDevices) Reset()         { *m = LogicalDevices{} }
-func (m *LogicalDevices) String() string { return proto.CompactTextString(m) }
-func (*LogicalDevices) ProtoMessage()    {}
+func (x *LogicalDevices) Reset() {
+	*x = LogicalDevices{}
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *LogicalDevices) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LogicalDevices) ProtoMessage() {}
+
+func (x *LogicalDevices) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LogicalDevices.ProtoReflect.Descriptor instead.
 func (*LogicalDevices) Descriptor() ([]byte, []int) {
-	return fileDescriptor_caf139ab3abc8240, []int{4}
+	return file_voltha_protos_logical_device_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *LogicalDevices) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LogicalDevices.Unmarshal(m, b)
-}
-func (m *LogicalDevices) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LogicalDevices.Marshal(b, m, deterministic)
-}
-func (m *LogicalDevices) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LogicalDevices.Merge(m, src)
-}
-func (m *LogicalDevices) XXX_Size() int {
-	return xxx_messageInfo_LogicalDevices.Size(m)
-}
-func (m *LogicalDevices) XXX_DiscardUnknown() {
-	xxx_messageInfo_LogicalDevices.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_LogicalDevices proto.InternalMessageInfo
-
-func (m *LogicalDevices) GetItems() []*LogicalDevice {
-	if m != nil {
-		return m.Items
+func (x *LogicalDevices) GetItems() []*LogicalDevice {
+	if x != nil {
+		return x.Items
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterType((*LogicalPortId)(nil), "logical_device.LogicalPortId")
-	proto.RegisterType((*LogicalPort)(nil), "logical_device.LogicalPort")
-	proto.RegisterType((*LogicalPorts)(nil), "logical_device.LogicalPorts")
-	proto.RegisterType((*LogicalDevice)(nil), "logical_device.LogicalDevice")
-	proto.RegisterType((*LogicalDevices)(nil), "logical_device.LogicalDevices")
+var File_voltha_protos_logical_device_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_logical_device_proto_rawDesc = "" +
+	"\n" +
+	"\"voltha_protos/logical_device.proto\x12\x0elogical_device\x1a\x1cgoogle/api/annotations.proto\x1a\x1fvoltha_protos/openflow_13.proto\"8\n" +
+	"\rLogicalPortId\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12\x17\n" +
+	"\aport_id\x18\x02 \x01(\tR\x06portId\"\xf2\x01\n" +
+	"\vLogicalPort\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x120\n" +
+	"\bofp_port\x18\x02 \x01(\v2\x15.openflow_13.ofp_portR\aofpPort\x12\x1b\n" +
+	"\tdevice_id\x18\x03 \x01(\tR\bdeviceId\x12$\n" +
+	"\x0edevice_port_no\x18\x04 \x01(\rR\fdevicePortNo\x12\x1b\n" +
+	"\troot_port\x18\x05 \x01(\bR\brootPort\x12A\n" +
+	"\x0eofp_port_stats\x18\x06 \x01(\v2\x1b.openflow_13.ofp_port_statsR\fofpPortStats\"A\n" +
+	"\fLogicalPorts\x121\n" +
+	"\x05items\x18\x01 \x03(\v2\x1b.logical_device.LogicalPortR\x05items\"\xdc\x01\n" +
+	"\rLogicalDevice\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12\x1f\n" +
+	"\vdatapath_id\x18\x02 \x01(\x04R\n" +
+	"datapathId\x12)\n" +
+	"\x04desc\x18\x03 \x01(\v2\x15.openflow_13.ofp_descR\x04desc\x12I\n" +
+	"\x0fswitch_features\x18\x04 \x01(\v2 .openflow_13.ofp_switch_featuresR\x0eswitchFeatures\x12$\n" +
+	"\x0eroot_device_id\x18\x05 \x01(\tR\frootDeviceId\"E\n" +
+	"\x0eLogicalDevices\x123\n" +
+	"\x05items\x18\x01 \x03(\v2\x1d.logical_device.LogicalDeviceR\x05itemsBe\n" +
+	"\"org.opencord.voltha.logical_deviceB\x0fOFLogicalDeviceZ.github.com/opencord/voltha-protos/v5/go/volthab\x06proto3"
+
+var (
+	file_voltha_protos_logical_device_proto_rawDescOnce sync.Once
+	file_voltha_protos_logical_device_proto_rawDescData []byte
+)
+
+func file_voltha_protos_logical_device_proto_rawDescGZIP() []byte {
+	file_voltha_protos_logical_device_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_logical_device_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_logical_device_proto_rawDesc), len(file_voltha_protos_logical_device_proto_rawDesc)))
+	})
+	return file_voltha_protos_logical_device_proto_rawDescData
 }
 
-func init() {
-	proto.RegisterFile("voltha_protos/logical_device.proto", fileDescriptor_caf139ab3abc8240)
+var file_voltha_protos_logical_device_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
+var file_voltha_protos_logical_device_proto_goTypes = []any{
+	(*LogicalPortId)(nil),                 // 0: logical_device.LogicalPortId
+	(*LogicalPort)(nil),                   // 1: logical_device.LogicalPort
+	(*LogicalPorts)(nil),                  // 2: logical_device.LogicalPorts
+	(*LogicalDevice)(nil),                 // 3: logical_device.LogicalDevice
+	(*LogicalDevices)(nil),                // 4: logical_device.LogicalDevices
+	(*openflow_13.OfpPort)(nil),           // 5: openflow_13.ofp_port
+	(*openflow_13.OfpPortStats)(nil),      // 6: openflow_13.ofp_port_stats
+	(*openflow_13.OfpDesc)(nil),           // 7: openflow_13.ofp_desc
+	(*openflow_13.OfpSwitchFeatures)(nil), // 8: openflow_13.ofp_switch_features
+}
+var file_voltha_protos_logical_device_proto_depIdxs = []int32{
+	5, // 0: logical_device.LogicalPort.ofp_port:type_name -> openflow_13.ofp_port
+	6, // 1: logical_device.LogicalPort.ofp_port_stats:type_name -> openflow_13.ofp_port_stats
+	1, // 2: logical_device.LogicalPorts.items:type_name -> logical_device.LogicalPort
+	7, // 3: logical_device.LogicalDevice.desc:type_name -> openflow_13.ofp_desc
+	8, // 4: logical_device.LogicalDevice.switch_features:type_name -> openflow_13.ofp_switch_features
+	3, // 5: logical_device.LogicalDevices.items:type_name -> logical_device.LogicalDevice
+	6, // [6:6] is the sub-list for method output_type
+	6, // [6:6] is the sub-list for method input_type
+	6, // [6:6] is the sub-list for extension type_name
+	6, // [6:6] is the sub-list for extension extendee
+	0, // [0:6] is the sub-list for field type_name
 }
 
-var fileDescriptor_caf139ab3abc8240 = []byte{
-	// 447 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x53, 0xd1, 0x6a, 0xdb, 0x30,
-	0x14, 0xc5, 0x69, 0x92, 0xa6, 0x37, 0xa9, 0x0b, 0x86, 0x31, 0xd3, 0x6e, 0xd4, 0x98, 0x3d, 0x64,
-	0x0f, 0xb3, 0xd7, 0x86, 0xc1, 0x5e, 0x5b, 0xba, 0x42, 0x60, 0x6c, 0x43, 0x7b, 0xdb, 0x8b, 0x51,
-	0x2d, 0xc5, 0x11, 0xb8, 0xbe, 0xc6, 0x52, 0xd3, 0x9f, 0xdd, 0x57, 0xec, 0x0b, 0x86, 0xae, 0xec,
-	0x2d, 0x4e, 0xd2, 0x47, 0x1d, 0x9d, 0x73, 0xee, 0xd1, 0xb9, 0x36, 0xc4, 0x1b, 0x2c, 0xcd, 0x9a,
-	0x67, 0x75, 0x83, 0x06, 0x75, 0x5a, 0x62, 0xa1, 0x72, 0x5e, 0x66, 0x42, 0x6e, 0x54, 0x2e, 0x13,
-	0x42, 0x03, 0xbf, 0x8f, 0x9e, 0xbf, 0x29, 0x10, 0x8b, 0x52, 0xa6, 0xbc, 0x56, 0x29, 0xaf, 0x2a,
-	0x34, 0xdc, 0x28, 0xac, 0xb4, 0x63, 0x9f, 0x5f, 0xf6, 0x1d, 0xb1, 0x96, 0xd5, 0xaa, 0xc4, 0xe7,
-	0xec, 0x6a, 0xe1, 0x08, 0xf1, 0x67, 0x38, 0xfd, 0xea, 0x0c, 0x7f, 0x60, 0x63, 0x96, 0x22, 0xf0,
-	0x61, 0xa0, 0x44, 0xe8, 0x45, 0xde, 0xfc, 0x84, 0x0d, 0x94, 0x08, 0x5e, 0xc3, 0x71, 0x8d, 0x8d,
-	0xc9, 0x94, 0x08, 0x07, 0x04, 0x8e, 0x6b, 0x22, 0xc6, 0x7f, 0x3c, 0x98, 0x6e, 0x49, 0xf7, 0x84,
-	0x1f, 0x61, 0x82, 0xab, 0x3a, 0xb3, 0x6c, 0x52, 0x4e, 0xaf, 0x5f, 0x25, 0xdb, 0xf3, 0xbb, 0x4b,
-	0x76, 0x8c, 0xab, 0x9a, 0x1c, 0x2e, 0xe0, 0xc4, 0x3d, 0xca, 0x0e, 0x3b, 0x22, 0xa3, 0x89, 0x03,
-	0x96, 0x22, 0x78, 0x07, 0x7e, 0x7b, 0x49, 0x71, 0x2a, 0x0c, 0x87, 0x91, 0x37, 0x3f, 0x65, 0x33,
-	0x87, 0x5a, 0x83, 0x6f, 0x68, 0x2d, 0x1a, 0x44, 0xe3, 0xa6, 0x8e, 0x22, 0x6f, 0x3e, 0x61, 0x13,
-	0x0b, 0x90, 0xff, 0x0d, 0xf8, 0xdd, 0xd0, 0x4c, 0x1b, 0x6e, 0x74, 0x38, 0xa6, 0x5c, 0x17, 0x07,
-	0x73, 0x39, 0x0a, 0x9b, 0xb5, 0xe9, 0x7e, 0xda, 0x53, 0x7c, 0x03, 0xb3, 0xad, 0x37, 0xeb, 0xe0,
-	0x0a, 0x46, 0xca, 0xc8, 0x47, 0x1d, 0x7a, 0xd1, 0x11, 0x39, 0xed, 0xec, 0x6c, 0x8b, 0xcc, 0x1c,
-	0x33, 0xfe, 0xed, 0xfd, 0xab, 0xfc, 0x8e, 0x48, 0x7b, 0xcd, 0x5d, 0xc2, 0x54, 0x70, 0xc3, 0x6b,
-	0x6e, 0xd6, 0x5d, 0xed, 0x43, 0x06, 0x1d, 0xb4, 0x14, 0xc1, 0x7b, 0x18, 0x0a, 0xa9, 0x73, 0xea,
-	0xe8, 0x50, 0xad, 0xf6, 0x92, 0x11, 0x25, 0x58, 0xc2, 0x99, 0x7e, 0x56, 0x26, 0x5f, 0x67, 0x2b,
-	0xc9, 0xcd, 0x53, 0x23, 0x35, 0xf5, 0x36, 0xbd, 0x8e, 0xf6, 0x54, 0x3b, 0x3c, 0xe6, 0x3b, 0xe0,
-	0xbe, 0x3d, 0xdb, 0x0d, 0x50, 0xb7, 0xff, 0x77, 0x34, 0xa2, 0xc8, 0x33, 0x8b, 0xde, 0xb5, 0x7b,
-	0x8a, 0xbf, 0x80, 0xdf, 0x7b, 0x9d, 0x0e, 0x16, 0xfd, 0x8e, 0xde, 0xbe, 0xd0, 0x91, 0xa3, 0xb7,
-	0x2d, 0xdd, 0x4a, 0x88, 0xb1, 0x29, 0x28, 0x63, 0x8e, 0x8d, 0x48, 0xdc, 0x77, 0xbc, 0x23, 0xbd,
-	0x3d, 0xfb, 0x7e, 0xdf, 0x53, 0xff, 0x4a, 0x0a, 0x65, 0xd6, 0x4f, 0x0f, 0x49, 0x8e, 0x8f, 0x69,
-	0xa7, 0x4d, 0x9d, 0xf6, 0x43, 0xfb, 0x0f, 0x6c, 0x3e, 0xa5, 0x05, 0xb6, 0xd8, 0xc3, 0x98, 0xc0,
-	0xc5, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7f, 0xd8, 0xd6, 0x61, 0x7a, 0x03, 0x00, 0x00,
+func init() { file_voltha_protos_logical_device_proto_init() }
+func file_voltha_protos_logical_device_proto_init() {
+	if File_voltha_protos_logical_device_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_logical_device_proto_rawDesc), len(file_voltha_protos_logical_device_proto_rawDesc)),
+			NumEnums:      0,
+			NumMessages:   5,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_logical_device_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_logical_device_proto_depIdxs,
+		MessageInfos:      file_voltha_protos_logical_device_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_logical_device_proto = out.File
+	file_voltha_protos_logical_device_proto_goTypes = nil
+	file_voltha_protos_logical_device_proto_depIdxs = nil
 }
diff --git a/go/voltha/voltha.pb.go b/go/voltha/voltha.pb.go
index 9870cc4..9be170a 100644
--- a/go/voltha/voltha.pb.go
+++ b/go/voltha/voltha.pb.go
@@ -1,13 +1,17 @@
+//
+// Top-level Voltha API definition
+//
+// For details, see individual definition files.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/voltha.proto
 
 package voltha
 
 import (
-	context "context"
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	empty "github.com/golang/protobuf/ptypes/empty"
 	common "github.com/opencord/voltha-protos/v5/go/common"
 	extension "github.com/opencord/voltha-protos/v5/go/extension"
 	health "github.com/opencord/voltha-protos/v5/go/health"
@@ -16,191 +20,179 @@
 	voip_system_profile "github.com/opencord/voltha-protos/v5/go/voip_system_profile"
 	voip_user_profile "github.com/opencord/voltha-protos/v5/go/voip_user_profile"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
-	grpc "google.golang.org/grpc"
-	codes "google.golang.org/grpc/codes"
-	status "google.golang.org/grpc/status"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	emptypb "google.golang.org/protobuf/types/known/emptypb"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+// Symbols defined in public import of voltha_protos/common.proto.
 
-// Key from public import voltha_protos/common.proto
-type Key = common.Key
-
-// ID from public import voltha_protos/common.proto
-type ID = common.ID
-
-// IDs from public import voltha_protos/common.proto
-type IDs = common.IDs
-
-// Connection from public import voltha_protos/common.proto
-type Connection = common.Connection
-
-// AdminState from public import voltha_protos/common.proto
-type AdminState = common.AdminState
-
-// OperStatus from public import voltha_protos/common.proto
-type OperStatus = common.OperStatus
-
-// ConnectStatus from public import voltha_protos/common.proto
-type ConnectStatus = common.ConnectStatus
-
-// OperationResp from public import voltha_protos/common.proto
-type OperationResp = common.OperationResp
-
-// PortStatistics from public import voltha_protos/common.proto
-type PortStatistics = common.PortStatistics
-
-// TestModeKeys from public import voltha_protos/common.proto
 type TestModeKeys = common.TestModeKeys
 
+const TestModeKeys_api_test = common.TestModeKeys_api_test
+
 var TestModeKeys_name = common.TestModeKeys_name
 var TestModeKeys_value = common.TestModeKeys_value
 
-const TestModeKeys_api_test = TestModeKeys(common.TestModeKeys_api_test)
-
-// AdminState_Types from public import voltha_protos/common.proto
 type AdminState_Types = common.AdminState_Types
 
+const AdminState_UNKNOWN = common.AdminState_UNKNOWN
+const AdminState_PREPROVISIONED = common.AdminState_PREPROVISIONED
+const AdminState_ENABLED = common.AdminState_ENABLED
+const AdminState_DISABLED = common.AdminState_DISABLED
+const AdminState_DOWNLOADING_IMAGE = common.AdminState_DOWNLOADING_IMAGE
+
 var AdminState_Types_name = common.AdminState_Types_name
 var AdminState_Types_value = common.AdminState_Types_value
 
-const AdminState_UNKNOWN = AdminState_Types(common.AdminState_UNKNOWN)
-const AdminState_PREPROVISIONED = AdminState_Types(common.AdminState_PREPROVISIONED)
-const AdminState_ENABLED = AdminState_Types(common.AdminState_ENABLED)
-const AdminState_DISABLED = AdminState_Types(common.AdminState_DISABLED)
-const AdminState_DOWNLOADING_IMAGE = AdminState_Types(common.AdminState_DOWNLOADING_IMAGE)
-
-// OperStatus_Types from public import voltha_protos/common.proto
 type OperStatus_Types = common.OperStatus_Types
 
+const OperStatus_UNKNOWN = common.OperStatus_UNKNOWN
+const OperStatus_DISCOVERED = common.OperStatus_DISCOVERED
+const OperStatus_ACTIVATING = common.OperStatus_ACTIVATING
+const OperStatus_TESTING = common.OperStatus_TESTING
+const OperStatus_ACTIVE = common.OperStatus_ACTIVE
+const OperStatus_FAILED = common.OperStatus_FAILED
+const OperStatus_RECONCILING = common.OperStatus_RECONCILING
+const OperStatus_RECONCILING_FAILED = common.OperStatus_RECONCILING_FAILED
+const OperStatus_REBOOTED = common.OperStatus_REBOOTED
+
 var OperStatus_Types_name = common.OperStatus_Types_name
 var OperStatus_Types_value = common.OperStatus_Types_value
 
-const OperStatus_UNKNOWN = OperStatus_Types(common.OperStatus_UNKNOWN)
-const OperStatus_DISCOVERED = OperStatus_Types(common.OperStatus_DISCOVERED)
-const OperStatus_ACTIVATING = OperStatus_Types(common.OperStatus_ACTIVATING)
-const OperStatus_TESTING = OperStatus_Types(common.OperStatus_TESTING)
-const OperStatus_ACTIVE = OperStatus_Types(common.OperStatus_ACTIVE)
-const OperStatus_FAILED = OperStatus_Types(common.OperStatus_FAILED)
-const OperStatus_RECONCILING = OperStatus_Types(common.OperStatus_RECONCILING)
-const OperStatus_RECONCILING_FAILED = OperStatus_Types(common.OperStatus_RECONCILING_FAILED)
-const OperStatus_REBOOTED = OperStatus_Types(common.OperStatus_REBOOTED)
-
-// ConnectStatus_Types from public import voltha_protos/common.proto
 type ConnectStatus_Types = common.ConnectStatus_Types
 
+const ConnectStatus_UNKNOWN = common.ConnectStatus_UNKNOWN
+const ConnectStatus_UNREACHABLE = common.ConnectStatus_UNREACHABLE
+const ConnectStatus_REACHABLE = common.ConnectStatus_REACHABLE
+
 var ConnectStatus_Types_name = common.ConnectStatus_Types_name
 var ConnectStatus_Types_value = common.ConnectStatus_Types_value
 
-const ConnectStatus_UNKNOWN = ConnectStatus_Types(common.ConnectStatus_UNKNOWN)
-const ConnectStatus_UNREACHABLE = ConnectStatus_Types(common.ConnectStatus_UNREACHABLE)
-const ConnectStatus_REACHABLE = ConnectStatus_Types(common.ConnectStatus_REACHABLE)
-
-// OperationResp_OperationReturnCode from public import voltha_protos/common.proto
 type OperationResp_OperationReturnCode = common.OperationResp_OperationReturnCode
 
+const OperationResp_OPERATION_SUCCESS = common.OperationResp_OPERATION_SUCCESS
+const OperationResp_OPERATION_FAILURE = common.OperationResp_OPERATION_FAILURE
+const OperationResp_OPERATION_UNSUPPORTED = common.OperationResp_OPERATION_UNSUPPORTED
+const OperationResp_OPERATION_IN_PROGRESS = common.OperationResp_OPERATION_IN_PROGRESS
+
 var OperationResp_OperationReturnCode_name = common.OperationResp_OperationReturnCode_name
 var OperationResp_OperationReturnCode_value = common.OperationResp_OperationReturnCode_value
 
-const OperationResp_OPERATION_SUCCESS = OperationResp_OperationReturnCode(common.OperationResp_OPERATION_SUCCESS)
-const OperationResp_OPERATION_FAILURE = OperationResp_OperationReturnCode(common.OperationResp_OPERATION_FAILURE)
-const OperationResp_OPERATION_UNSUPPORTED = OperationResp_OperationReturnCode(common.OperationResp_OPERATION_UNSUPPORTED)
-const OperationResp_OPERATION_IN_PROGRESS = OperationResp_OperationReturnCode(common.OperationResp_OPERATION_IN_PROGRESS)
+type Key = common.Key
+type ID = common.ID
+type IDs = common.IDs
+type Connection = common.Connection
+type AdminState = common.AdminState
+type OperStatus = common.OperStatus
+type ConnectStatus = common.ConnectStatus
+type OperationResp = common.OperationResp
+type PortStatistics = common.PortStatistics
 
 // CoreInstance represents a core instance.  It is data held in memory when a core
 // is running.  This data is not persistent.
 type CoreInstance struct {
-	InstanceId           string               `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"`
-	Health               *health.HealthStatus `protobuf:"bytes,2,opt,name=health,proto3" json:"health,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	InstanceId    string                 `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"`
+	Health        *health.HealthStatus   `protobuf:"bytes,2,opt,name=health,proto3" json:"health,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *CoreInstance) Reset()         { *m = CoreInstance{} }
-func (m *CoreInstance) String() string { return proto.CompactTextString(m) }
-func (*CoreInstance) ProtoMessage()    {}
+func (x *CoreInstance) Reset() {
+	*x = CoreInstance{}
+	mi := &file_voltha_protos_voltha_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *CoreInstance) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CoreInstance) ProtoMessage() {}
+
+func (x *CoreInstance) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voltha_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use CoreInstance.ProtoReflect.Descriptor instead.
 func (*CoreInstance) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e084f1a60ce7016c, []int{0}
+	return file_voltha_protos_voltha_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *CoreInstance) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CoreInstance.Unmarshal(m, b)
-}
-func (m *CoreInstance) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CoreInstance.Marshal(b, m, deterministic)
-}
-func (m *CoreInstance) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CoreInstance.Merge(m, src)
-}
-func (m *CoreInstance) XXX_Size() int {
-	return xxx_messageInfo_CoreInstance.Size(m)
-}
-func (m *CoreInstance) XXX_DiscardUnknown() {
-	xxx_messageInfo_CoreInstance.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_CoreInstance proto.InternalMessageInfo
-
-func (m *CoreInstance) GetInstanceId() string {
-	if m != nil {
-		return m.InstanceId
+func (x *CoreInstance) GetInstanceId() string {
+	if x != nil {
+		return x.InstanceId
 	}
 	return ""
 }
 
-func (m *CoreInstance) GetHealth() *health.HealthStatus {
-	if m != nil {
-		return m.Health
+func (x *CoreInstance) GetHealth() *health.HealthStatus {
+	if x != nil {
+		return x.Health
 	}
 	return nil
 }
 
 type CoreInstances struct {
-	Items                []*CoreInstance `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*CoreInstance        `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *CoreInstances) Reset()         { *m = CoreInstances{} }
-func (m *CoreInstances) String() string { return proto.CompactTextString(m) }
-func (*CoreInstances) ProtoMessage()    {}
+func (x *CoreInstances) Reset() {
+	*x = CoreInstances{}
+	mi := &file_voltha_protos_voltha_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *CoreInstances) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CoreInstances) ProtoMessage() {}
+
+func (x *CoreInstances) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voltha_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use CoreInstances.ProtoReflect.Descriptor instead.
 func (*CoreInstances) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e084f1a60ce7016c, []int{1}
+	return file_voltha_protos_voltha_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *CoreInstances) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CoreInstances.Unmarshal(m, b)
-}
-func (m *CoreInstances) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CoreInstances.Marshal(b, m, deterministic)
-}
-func (m *CoreInstances) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CoreInstances.Merge(m, src)
-}
-func (m *CoreInstances) XXX_Size() int {
-	return xxx_messageInfo_CoreInstances.Size(m)
-}
-func (m *CoreInstances) XXX_DiscardUnknown() {
-	xxx_messageInfo_CoreInstances.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_CoreInstances proto.InternalMessageInfo
-
-func (m *CoreInstances) GetItems() []*CoreInstance {
-	if m != nil {
-		return m.Items
+func (x *CoreInstances) GetItems() []*CoreInstance {
+	if x != nil {
+		return x.Items
 	}
 	return nil
 }
@@ -209,3230 +201,484 @@
 // the entire cluster. However, some items (e.g. adapters) will be held by all cores
 // for better performance
 type Voltha struct {
-	Version              string                  `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
-	Adapters             []*Adapter              `protobuf:"bytes,2,rep,name=adapters,proto3" json:"adapters,omitempty"`
-	LogicalDevices       []*LogicalDevice        `protobuf:"bytes,3,rep,name=logical_devices,json=logicalDevices,proto3" json:"logical_devices,omitempty"`
-	Devices              []*Device               `protobuf:"bytes,4,rep,name=devices,proto3" json:"devices,omitempty"`
-	DeviceTypes          []*DeviceType           `protobuf:"bytes,5,rep,name=device_types,json=deviceTypes,proto3" json:"device_types,omitempty"`
-	EventFilters         []*EventFilter          `protobuf:"bytes,7,rep,name=event_filters,json=eventFilters,proto3" json:"event_filters,omitempty"`
-	OmciMibDatabase      []*omci.MibDeviceData   `protobuf:"bytes,28,rep,name=omci_mib_database,json=omciMibDatabase,proto3" json:"omci_mib_database,omitempty"`
-	OmciAlarmDatabase    []*omci.AlarmDeviceData `protobuf:"bytes,29,rep,name=omci_alarm_database,json=omciAlarmDatabase,proto3" json:"omci_alarm_database,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                `json:"-"`
-	XXX_unrecognized     []byte                  `json:"-"`
-	XXX_sizecache        int32                   `json:"-"`
+	state             protoimpl.MessageState  `protogen:"open.v1"`
+	Version           string                  `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
+	Adapters          []*Adapter              `protobuf:"bytes,2,rep,name=adapters,proto3" json:"adapters,omitempty"`
+	LogicalDevices    []*LogicalDevice        `protobuf:"bytes,3,rep,name=logical_devices,json=logicalDevices,proto3" json:"logical_devices,omitempty"`
+	Devices           []*Device               `protobuf:"bytes,4,rep,name=devices,proto3" json:"devices,omitempty"`
+	DeviceTypes       []*DeviceType           `protobuf:"bytes,5,rep,name=device_types,json=deviceTypes,proto3" json:"device_types,omitempty"`
+	EventFilters      []*EventFilter          `protobuf:"bytes,7,rep,name=event_filters,json=eventFilters,proto3" json:"event_filters,omitempty"`
+	OmciMibDatabase   []*omci.MibDeviceData   `protobuf:"bytes,28,rep,name=omci_mib_database,json=omciMibDatabase,proto3" json:"omci_mib_database,omitempty"`
+	OmciAlarmDatabase []*omci.AlarmDeviceData `protobuf:"bytes,29,rep,name=omci_alarm_database,json=omciAlarmDatabase,proto3" json:"omci_alarm_database,omitempty"`
+	unknownFields     protoimpl.UnknownFields
+	sizeCache         protoimpl.SizeCache
 }
 
-func (m *Voltha) Reset()         { *m = Voltha{} }
-func (m *Voltha) String() string { return proto.CompactTextString(m) }
-func (*Voltha) ProtoMessage()    {}
+func (x *Voltha) Reset() {
+	*x = Voltha{}
+	mi := &file_voltha_protos_voltha_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Voltha) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Voltha) ProtoMessage() {}
+
+func (x *Voltha) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voltha_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Voltha.ProtoReflect.Descriptor instead.
 func (*Voltha) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e084f1a60ce7016c, []int{2}
+	return file_voltha_protos_voltha_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *Voltha) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Voltha.Unmarshal(m, b)
-}
-func (m *Voltha) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Voltha.Marshal(b, m, deterministic)
-}
-func (m *Voltha) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Voltha.Merge(m, src)
-}
-func (m *Voltha) XXX_Size() int {
-	return xxx_messageInfo_Voltha.Size(m)
-}
-func (m *Voltha) XXX_DiscardUnknown() {
-	xxx_messageInfo_Voltha.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Voltha proto.InternalMessageInfo
-
-func (m *Voltha) GetVersion() string {
-	if m != nil {
-		return m.Version
+func (x *Voltha) GetVersion() string {
+	if x != nil {
+		return x.Version
 	}
 	return ""
 }
 
-func (m *Voltha) GetAdapters() []*Adapter {
-	if m != nil {
-		return m.Adapters
+func (x *Voltha) GetAdapters() []*Adapter {
+	if x != nil {
+		return x.Adapters
 	}
 	return nil
 }
 
-func (m *Voltha) GetLogicalDevices() []*LogicalDevice {
-	if m != nil {
-		return m.LogicalDevices
+func (x *Voltha) GetLogicalDevices() []*LogicalDevice {
+	if x != nil {
+		return x.LogicalDevices
 	}
 	return nil
 }
 
-func (m *Voltha) GetDevices() []*Device {
-	if m != nil {
-		return m.Devices
+func (x *Voltha) GetDevices() []*Device {
+	if x != nil {
+		return x.Devices
 	}
 	return nil
 }
 
-func (m *Voltha) GetDeviceTypes() []*DeviceType {
-	if m != nil {
-		return m.DeviceTypes
+func (x *Voltha) GetDeviceTypes() []*DeviceType {
+	if x != nil {
+		return x.DeviceTypes
 	}
 	return nil
 }
 
-func (m *Voltha) GetEventFilters() []*EventFilter {
-	if m != nil {
-		return m.EventFilters
+func (x *Voltha) GetEventFilters() []*EventFilter {
+	if x != nil {
+		return x.EventFilters
 	}
 	return nil
 }
 
-func (m *Voltha) GetOmciMibDatabase() []*omci.MibDeviceData {
-	if m != nil {
-		return m.OmciMibDatabase
+func (x *Voltha) GetOmciMibDatabase() []*omci.MibDeviceData {
+	if x != nil {
+		return x.OmciMibDatabase
 	}
 	return nil
 }
 
-func (m *Voltha) GetOmciAlarmDatabase() []*omci.AlarmDeviceData {
-	if m != nil {
-		return m.OmciAlarmDatabase
+func (x *Voltha) GetOmciAlarmDatabase() []*omci.AlarmDeviceData {
+	if x != nil {
+		return x.OmciAlarmDatabase
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterType((*CoreInstance)(nil), "voltha.CoreInstance")
-	proto.RegisterType((*CoreInstances)(nil), "voltha.CoreInstances")
-	proto.RegisterType((*Voltha)(nil), "voltha.Voltha")
-}
+var File_voltha_protos_voltha_proto protoreflect.FileDescriptor
 
-func init() { proto.RegisterFile("voltha_protos/voltha.proto", fileDescriptor_e084f1a60ce7016c) }
+const file_voltha_protos_voltha_proto_rawDesc = "" +
+	"\n" +
+	"\x1avoltha_protos/voltha.proto\x12\x06voltha\x1a\x1cgoogle/api/annotations.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1avoltha_protos/common.proto\x1a\x1avoltha_protos/health.proto\x1a\"voltha_protos/logical_device.proto\x1a\x1avoltha_protos/device.proto\x1a\x1bvoltha_protos/adapter.proto\x1a\x1fvoltha_protos/openflow_13.proto\x1a\x1avoltha_protos/events.proto\x1a\x1evoltha_protos/extensions.proto\x1a'voltha_protos/voip_system_profile.proto\x1a%voltha_protos/voip_user_profile.proto\x1a\x1fvoltha_protos/omci_mib_db.proto\x1a!voltha_protos/omci_alarm_db.proto\x1a\x1dvoltha_protos/omci_test.proto\"]\n" +
+	"\fCoreInstance\x12\x1f\n" +
+	"\vinstance_id\x18\x01 \x01(\tR\n" +
+	"instanceId\x12,\n" +
+	"\x06health\x18\x02 \x01(\v2\x14.health.HealthStatusR\x06health\";\n" +
+	"\rCoreInstances\x12*\n" +
+	"\x05items\x18\x01 \x03(\v2\x14.voltha.CoreInstanceR\x05items\"\xc0\x03\n" +
+	"\x06Voltha\x12\x18\n" +
+	"\aversion\x18\x01 \x01(\tR\aversion\x12,\n" +
+	"\badapters\x18\x02 \x03(\v2\x10.adapter.AdapterR\badapters\x12F\n" +
+	"\x0flogical_devices\x18\x03 \x03(\v2\x1d.logical_device.LogicalDeviceR\x0elogicalDevices\x12(\n" +
+	"\adevices\x18\x04 \x03(\v2\x0e.device.DeviceR\adevices\x125\n" +
+	"\fdevice_types\x18\x05 \x03(\v2\x12.device.DeviceTypeR\vdeviceTypes\x127\n" +
+	"\revent_filters\x18\a \x03(\v2\x12.event.EventFilterR\feventFilters\x12?\n" +
+	"\x11omci_mib_database\x18\x1c \x03(\v2\x13.omci.MibDeviceDataR\x0fomciMibDatabase\x12E\n" +
+	"\x13omci_alarm_database\x18\x1d \x03(\v2\x15.omci.AlarmDeviceDataR\x11omciAlarmDatabaseJ\x04\b\x06\x10\a2\xbb;\n" +
+	"\rVolthaService\x12D\n" +
+	"\tGetVoltha\x12\x16.google.protobuf.Empty\x1a\x0e.voltha.Voltha\"\x0f\x82\xd3\xe4\x93\x02\t\x12\a/api/v1\x12]\n" +
+	"\x11ListCoreInstances\x12\x16.google.protobuf.Empty\x1a\x15.voltha.CoreInstances\"\x19\x82\xd3\xe4\x93\x02\x13\x12\x11/api/v1/instances\x12S\n" +
+	"\x0fGetCoreInstance\x12\n" +
+	".common.ID\x1a\x14.voltha.CoreInstance\"\x1e\x82\xd3\xe4\x93\x02\x18\x12\x16/api/v1/instances/{id}\x12S\n" +
+	"\fListAdapters\x12\x16.google.protobuf.Empty\x1a\x11.adapter.Adapters\"\x18\x82\xd3\xe4\x93\x02\x12\x12\x10/api/v1/adapters\x12m\n" +
+	"\x12ListLogicalDevices\x12\x16.google.protobuf.Empty\x1a\x1e.logical_device.LogicalDevices\"\x1f\x82\xd3\xe4\x93\x02\x19\x12\x17/api/v1/logical_devices\x12c\n" +
+	"\x10GetLogicalDevice\x12\n" +
+	".common.ID\x1a\x1d.logical_device.LogicalDevice\"$\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/v1/logical_devices/{id}\x12n\n" +
+	"\x16ListLogicalDevicePorts\x12\n" +
+	".common.ID\x1a\x1c.logical_device.LogicalPorts\"*\x82\xd3\xe4\x93\x02$\x12\"/api/v1/logical_devices/{id}/ports\x12\x88\x01\n" +
+	"\x14GetLogicalDevicePort\x12\x1d.logical_device.LogicalPortId\x1a\x1b.logical_device.LogicalPort\"4\x82\xd3\xe4\x93\x02.\x12,/api/v1/logical_devices/{id}/ports/{port_id}\x12\x8d\x01\n" +
+	"\x17EnableLogicalDevicePort\x12\x1d.logical_device.LogicalPortId\x1a\x16.google.protobuf.Empty\";\x82\xd3\xe4\x93\x025\"3/api/v1/logical_devices/{id}/ports/{port_id}/enable\x12\x8f\x01\n" +
+	"\x18DisableLogicalDevicePort\x12\x1d.logical_device.LogicalPortId\x1a\x16.google.protobuf.Empty\"<\x82\xd3\xe4\x93\x026\"4/api/v1/logical_devices/{id}/ports/{port_id}/disable\x12d\n" +
+	"\x16ListLogicalDeviceFlows\x12\n" +
+	".common.ID\x1a\x12.openflow_13.Flows\"*\x82\xd3\xe4\x93\x02$\x12\"/api/v1/logical_devices/{id}/flows\x12\x83\x01\n" +
+	"\x1cUpdateLogicalDeviceFlowTable\x12\x1c.openflow_13.FlowTableUpdate\x1a\x16.google.protobuf.Empty\"-\x82\xd3\xe4\x93\x02':\x01*\"\"/api/v1/logical_devices/{id}/flows\x12\x84\x01\n" +
+	"\x1dUpdateLogicalDeviceMeterTable\x12\x1b.openflow_13.MeterModUpdate\x1a\x16.google.protobuf.Empty\".\x82\xd3\xe4\x93\x02(:\x01*\"#/api/v1/logical_devices/{id}/meters\x12g\n" +
+	"\x17ListLogicalDeviceMeters\x12\n" +
+	".common.ID\x1a\x13.openflow_13.Meters\"+\x82\xd3\xe4\x93\x02%\x12#/api/v1/logical_devices/{id}/meters\x12t\n" +
+	"\x1bListLogicalDeviceFlowGroups\x12\n" +
+	".common.ID\x1a\x17.openflow_13.FlowGroups\"0\x82\xd3\xe4\x93\x02*\x12(/api/v1/logical_devices/{id}/flow_groups\x12\x93\x01\n" +
+	"!UpdateLogicalDeviceFlowGroupTable\x12!.openflow_13.FlowGroupTableUpdate\x1a\x16.google.protobuf.Empty\"3\x82\xd3\xe4\x93\x02-:\x01*\"(/api/v1/logical_devices/{id}/flow_groups\x12O\n" +
+	"\vListDevices\x12\x16.google.protobuf.Empty\x1a\x0f.device.Devices\"\x17\x82\xd3\xe4\x93\x02\x11\x12\x0f/api/v1/devices\x12O\n" +
+	"\rListDeviceIds\x12\x16.google.protobuf.Empty\x1a\v.common.IDs\"\x19\x82\xd3\xe4\x93\x02\x13\x12\x11/api/v1/deviceids\x12U\n" +
+	"\x10ReconcileDevices\x12\v.common.IDs\x1a\x16.google.protobuf.Empty\"\x1c\x82\xd3\xe4\x93\x02\x16:\x01*\"\x11/api/v1/deviceids\x12E\n" +
+	"\tGetDevice\x12\n" +
+	".common.ID\x1a\x0e.device.Device\"\x1c\x82\xd3\xe4\x93\x02\x16\x12\x14/api/v1/devices/{id}\x12J\n" +
+	"\fCreateDevice\x12\x0e.device.Device\x1a\x0e.device.Device\"\x1a\x82\xd3\xe4\x93\x02\x14:\x01*\"\x0f/api/v1/devices\x12W\n" +
+	"\fEnableDevice\x12\n" +
+	".common.ID\x1a\x16.google.protobuf.Empty\"#\x82\xd3\xe4\x93\x02\x1d\"\x1b/api/v1/devices/{id}/enable\x12Y\n" +
+	"\rDisableDevice\x12\n" +
+	".common.ID\x1a\x16.google.protobuf.Empty\"$\x82\xd3\xe4\x93\x02\x1e\"\x1c/api/v1/devices/{id}/disable\x12W\n" +
+	"\fRebootDevice\x12\n" +
+	".common.ID\x1a\x16.google.protobuf.Empty\"#\x82\xd3\xe4\x93\x02\x1d\"\x1b/api/v1/devices/{id}/reboot\x12W\n" +
+	"\fDeleteDevice\x12\n" +
+	".common.ID\x1a\x16.google.protobuf.Empty\"#\x82\xd3\xe4\x93\x02\x1d*\x1b/api/v1/devices/{id}/delete\x12b\n" +
+	"\x11ForceDeleteDevice\x12\n" +
+	".common.ID\x1a\x16.google.protobuf.Empty\")\x82\xd3\xe4\x93\x02#*!/api/v1/devices/{id}/force_delete\x12x\n" +
+	"\rDownloadImage\x12\x15.device.ImageDownload\x1a\x15.common.OperationResp\"9\x82\xd3\xe4\x93\x020:\x01*\"+/api/v1/devices/{id}/image_downloads/{name}\x88\x02\x01\x12\x85\x01\n" +
+	"\x16GetImageDownloadStatus\x12\x15.device.ImageDownload\x1a\x15.device.ImageDownload\"=\x82\xd3\xe4\x93\x024\x122/api/v1/devices/{id}/image_downloads/{name}/status\x88\x02\x01\x12x\n" +
+	"\x10GetImageDownload\x12\x15.device.ImageDownload\x1a\x15.device.ImageDownload\"6\x82\xd3\xe4\x93\x02-\x12+/api/v1/devices/{id}/image_downloads/{name}\x88\x02\x01\x12i\n" +
+	"\x12ListImageDownloads\x12\n" +
+	".common.ID\x1a\x16.device.ImageDownloads\"/\x82\xd3\xe4\x93\x02&\x12$/api/v1/devices/{id}/image_downloads\x88\x02\x01\x12{\n" +
+	"\x13CancelImageDownload\x12\x15.device.ImageDownload\x1a\x15.common.OperationResp\"6\x82\xd3\xe4\x93\x02-*+/api/v1/devices/{id}/image_downloads/{name}\x88\x02\x01\x12\x8b\x01\n" +
+	"\x13ActivateImageUpdate\x12\x15.device.ImageDownload\x1a\x15.common.OperationResp\"F\x82\xd3\xe4\x93\x02=:\x01*\"8/api/v1/devices/{id}/image_downloads/{name}/image_update\x88\x02\x01\x12\x89\x01\n" +
+	"\x11RevertImageUpdate\x12\x15.device.ImageDownload\x1a\x15.common.OperationResp\"F\x82\xd3\xe4\x93\x02=:\x01*\"8/api/v1/devices/{id}/image_downloads/{name}/image_revert\x88\x02\x01\x12\x88\x01\n" +
+	"\x15DownloadImageToDevice\x12\".device.DeviceImageDownloadRequest\x1a\x1b.device.DeviceImageResponse\".\x82\xd3\xe4\x93\x02(\x12&/api/v1/devices/images/download_images\x12w\n" +
+	"\x0eGetImageStatus\x12\x1a.device.DeviceImageRequest\x1a\x1b.device.DeviceImageResponse\",\x82\xd3\xe4\x93\x02&\x12$/api/v1/devices/images/images_status\x12\x89\x01\n" +
+	"\x19AbortImageUpgradeToDevice\x12\x1a.device.DeviceImageRequest\x1a\x1b.device.DeviceImageResponse\"3\x82\xd3\xe4\x93\x02-\x12+/api/v1/devices/images/abort_upgrade_images\x12V\n" +
+	"\fGetOnuImages\x12\n" +
+	".common.ID\x1a\x11.device.OnuImages\"'\x82\xd3\xe4\x93\x02!\x12\x1f/api/v1/devices/{id}/onu_images\x12{\n" +
+	"\rActivateImage\x12\x1a.device.DeviceImageRequest\x1a\x1b.device.DeviceImageResponse\"1\x82\xd3\xe4\x93\x02+:\x01*\"&/api/v1/devices/images/activate_images\x12w\n" +
+	"\vCommitImage\x12\x1a.device.DeviceImageRequest\x1a\x1b.device.DeviceImageResponse\"/\x82\xd3\xe4\x93\x02):\x01*\"$/api/v1/devices/images/commit_images\x12P\n" +
+	"\x0fListDevicePorts\x12\n" +
+	".common.ID\x1a\r.device.Ports\"\"\x82\xd3\xe4\x93\x02\x1c\x12\x1a/api/v1/devices/{id}/ports\x12]\n" +
+	"\x13ListDevicePmConfigs\x12\n" +
+	".common.ID\x1a\x11.device.PmConfigs\"'\x82\xd3\xe4\x93\x02!\x12\x1f/api/v1/devices/{id}/pm_configs\x12n\n" +
+	"\x15UpdateDevicePmConfigs\x12\x11.device.PmConfigs\x1a\x16.google.protobuf.Empty\"*\x82\xd3\xe4\x93\x02$:\x01*\"\x1f/api/v1/devices/{id}/pm_configs\x12U\n" +
+	"\x0fListDeviceFlows\x12\n" +
+	".common.ID\x1a\x12.openflow_13.Flows\"\"\x82\xd3\xe4\x93\x02\x1c\x12\x1a/api/v1/devices/{id}/flows\x12e\n" +
+	"\x14ListDeviceFlowGroups\x12\n" +
+	".common.ID\x1a\x17.openflow_13.FlowGroups\"(\x82\xd3\xe4\x93\x02\"\x12 /api/v1/devices/{id}/flow_groups\x12\\\n" +
+	"\x0fListDeviceTypes\x12\x16.google.protobuf.Empty\x1a\x13.device.DeviceTypes\"\x1c\x82\xd3\xe4\x93\x02\x16\x12\x14/api/v1/device_types\x12R\n" +
+	"\rGetDeviceType\x12\n" +
+	".common.ID\x1a\x12.device.DeviceType\"!\x82\xd3\xe4\x93\x02\x1b\x12\x19/api/v1/device_types/{id}\x12F\n" +
+	"\x10StreamPacketsOut\x12\x16.openflow_13.PacketOut\x1a\x16.google.protobuf.Empty\"\x00(\x01\x12E\n" +
+	"\x10ReceivePacketsIn\x12\x16.google.protobuf.Empty\x1a\x15.openflow_13.PacketIn\"\x000\x01\x12K\n" +
+	"\x13ReceiveChangeEvents\x12\x16.google.protobuf.Empty\x1a\x18.openflow_13.ChangeEvent\"\x000\x01\x12]\n" +
+	"\x11CreateEventFilter\x12\x12.event.EventFilter\x1a\x12.event.EventFilter\" \x82\xd3\xe4\x93\x02\x1a:\x01*\"\x15/api/v1/event_filters\x12U\n" +
+	"\x0eGetEventFilter\x12\n" +
+	".common.ID\x1a\x13.event.EventFilters\"\"\x82\xd3\xe4\x93\x02\x1c\x12\x1a/api/v1/event_filters/{id}\x12b\n" +
+	"\x11UpdateEventFilter\x12\x12.event.EventFilter\x1a\x12.event.EventFilter\"%\x82\xd3\xe4\x93\x02\x1f:\x01*\x1a\x1a/api/v1/event_filters/{id}\x12c\n" +
+	"\x11DeleteEventFilter\x12\x12.event.EventFilter\x1a\x16.google.protobuf.Empty\"\"\x82\xd3\xe4\x93\x02\x1c*\x1a/api/v1/event_filters/{id}\x12^\n" +
+	"\x10ListEventFilters\x12\x16.google.protobuf.Empty\x1a\x13.event.EventFilters\"\x1d\x82\xd3\xe4\x93\x02\x17\x12\x15/api/v1/event_filters\x12L\n" +
+	"\tGetImages\x12\n" +
+	".common.ID\x1a\x0e.device.Images\"#\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/v1/devices/{id}/images\x12X\n" +
+	"\bSelfTest\x12\n" +
+	".common.ID\x1a\x18.device.SelfTestResponse\"&\x82\xd3\xe4\x93\x02 \"\x1e/api/v1/devices/{id}/self_test\x12V\n" +
+	"\x10GetMibDeviceData\x12\n" +
+	".common.ID\x1a\x13.omci.MibDeviceData\"!\x82\xd3\xe4\x93\x02\x1b\x12\x19/api/v1/openomci/{id}/mib\x12\\\n" +
+	"\x12GetAlarmDeviceData\x12\n" +
+	".common.ID\x1a\x15.omci.AlarmDeviceData\"#\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/v1/openomci/{id}/alarm\x12s\n" +
+	"\rSimulateAlarm\x12\x1c.device.SimulateAlarmRequest\x1a\x15.common.OperationResp\"-\x82\xd3\xe4\x93\x02':\x01*\"\"/api/v1/devices/{id}/simulate_larm\x12M\n" +
+	"\n" +
+	"EnablePort\x12\f.device.Port\x1a\x16.google.protobuf.Empty\"\x19\x82\xd3\xe4\x93\x02\x13:\x01*\"\x0e/v1/EnablePort\x12O\n" +
+	"\vDisablePort\x12\f.device.Port\x1a\x16.google.protobuf.Empty\"\x1a\x82\xd3\xe4\x93\x02\x14:\x01*\"\x0f/v1/DisablePort\x12^\n" +
+	"\vGetExtValue\x12\x19.extension.ValueSpecifier\x1a\x17.extension.ReturnValues\"\x1b\x82\xd3\xe4\x93\x02\x15\x12\x13/api/v1/GetExtValue\x12W\n" +
+	"\vSetExtValue\x12\x13.extension.ValueSet\x1a\x16.google.protobuf.Empty\"\x1b\x82\xd3\xe4\x93\x02\x15\x12\x13/api/v1/SetExtValue\x12d\n" +
+	"\x13StartOmciTestAction\x12\x15.omci.OmciTestRequest\x1a\x12.omci.TestResponse\"\"\x82\xd3\xe4\x93\x02\x1c:\x01*\"\x17/api/v1/start_omci_test\x12\x85\x01\n" +
+	"\x14PutVoipSystemProfile\x12-.voip_system_profile.VoipSystemProfileRequest\x1a\x16.google.protobuf.Empty\"&\x82\xd3\xe4\x93\x02 :\x01*\"\x1b/api/v1/voip_system_profile\x12p\n" +
+	"\x17DeleteVoipSystemProfile\x12\v.common.Key\x1a\x16.google.protobuf.Empty\"0\x82\xd3\xe4\x93\x02**(/api/v1/voip_system_profile/{key}/delete\x12}\n" +
+	"\x12PutVoipUserProfile\x12).voip_user_profile.VoipUserProfileRequest\x1a\x16.google.protobuf.Empty\"$\x82\xd3\xe4\x93\x02\x1e:\x01*\"\x19/api/v1/voip_user_profile\x12l\n" +
+	"\x15DeleteVoipUserProfile\x12\v.common.Key\x1a\x16.google.protobuf.Empty\".\x82\xd3\xe4\x93\x02(*&/api/v1/voip_user_profile/{key}/delete\x12Z\n" +
+	"\x10DisableOnuDevice\x12\n" +
+	".common.ID\x1a\x16.google.protobuf.Empty\"\"\x82\xd3\xe4\x93\x02\x1c\"\x1a/api/v1/disable_onu_device\x12X\n" +
+	"\x0fEnableOnuDevice\x12\n" +
+	".common.ID\x1a\x16.google.protobuf.Empty\"!\x82\xd3\xe4\x93\x02\x1b\"\x19/api/v1/enable_onu_device\x12|\n" +
+	"\x16DisableOnuSerialNumber\x12\x1f.device.OnuSerialNumberOnOLTPon\x1a\x16.google.protobuf.Empty\")\x82\xd3\xe4\x93\x02#\"!/api/v1/disable_onu_serial_number\x12z\n" +
+	"\x15EnableOnuSerialNumber\x12\x1f.device.OnuSerialNumberOnOLTPon\x1a\x16.google.protobuf.Empty\"(\x82\xd3\xe4\x93\x02\"\" /api/v1/enable_onu_serial_number\x12[\n" +
+	"\fUpdateDevice\x12\x14.device.UpdateDevice\x1a\x16.google.protobuf.Empty\"\x1d\x82\xd3\xe4\x93\x02\x17\"\x15/api/v1/update_deviceBl\n" +
+	"\x13org.opencord.volthaB\fVolthaProtosZ.github.com/opencord/voltha-protos/v5/go/voltha\xaa\x02\x16Opencord.Voltha.VolthaP\x02b\x06proto3"
 
-var fileDescriptor_e084f1a60ce7016c = []byte{
-	// 2389 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0xeb, 0x72, 0x1b, 0xb7,
-	0x15, 0x0e, 0xe5, 0xc4, 0x17, 0x88, 0xba, 0x10, 0xd4, 0x85, 0xa2, 0x24, 0x4b, 0x82, 0x6f, 0x32,
-	0x6d, 0x93, 0xbe, 0xa6, 0x6d, 0xdc, 0x4c, 0xc7, 0xd1, 0xad, 0x4a, 0xec, 0x52, 0x43, 0xda, 0x72,
-	0x9a, 0xc6, 0xd9, 0x59, 0x92, 0x10, 0xbd, 0x93, 0xe5, 0x2e, 0xbb, 0x00, 0x25, 0xab, 0xaa, 0xff,
-	0xb4, 0xcd, 0x8c, 0x3b, 0x9d, 0x4e, 0x7f, 0xe4, 0x2d, 0xfa, 0x0a, 0xfd, 0xd3, 0x77, 0xe8, 0x2b,
-	0xf4, 0x41, 0x3a, 0x38, 0x00, 0xc8, 0xbd, 0x60, 0x29, 0xd1, 0xf5, 0x4c, 0xfe, 0x98, 0x5e, 0x9c,
-	0x83, 0xef, 0xfb, 0x70, 0x70, 0x80, 0x05, 0xce, 0x0a, 0x15, 0x0f, 0x7d, 0x97, 0xbf, 0xb6, 0xad,
-	0x6e, 0xe0, 0x73, 0x9f, 0x55, 0xe4, 0x53, 0x19, 0x9e, 0xf0, 0x79, 0xf9, 0x54, 0x5c, 0x6a, 0xfb,
-	0x7e, 0xdb, 0xa5, 0x15, 0xbb, 0xeb, 0x54, 0x6c, 0xcf, 0xf3, 0xb9, 0xcd, 0x1d, 0xdf, 0x63, 0xd2,
-	0xab, 0xb8, 0xa8, 0xac, 0xf0, 0xd4, 0xe8, 0x1d, 0x54, 0x68, 0xa7, 0xcb, 0x8f, 0x95, 0x31, 0x06,
-	0xdf, 0xf4, 0x3b, 0x1d, 0xdf, 0x33, 0xdb, 0x5e, 0x53, 0xdb, 0xe5, 0xaf, 0x95, 0x8d, 0x44, 0x6d,
-	0xae, 0xdf, 0x76, 0x9a, 0xb6, 0x6b, 0xb5, 0xe8, 0xa1, 0xd3, 0xa4, 0xe6, 0xfe, 0x11, 0xdb, 0x62,
-	0xd4, 0x66, 0xb7, 0xec, 0x2e, 0xa7, 0x81, 0x32, 0xae, 0x44, 0x8d, 0x7e, 0x97, 0x7a, 0x07, 0xae,
-	0x7f, 0x64, 0xdd, 0x7b, 0x60, 0x46, 0xa6, 0x87, 0xd4, 0xe3, 0x7a, 0xb8, 0x97, 0x63, 0xb6, 0x37,
-	0x9c, 0x7a, 0x2c, 0x14, 0x8e, 0x1b, 0xf1, 0x80, 0x3a, 0x5d, 0x8b, 0x1d, 0x33, 0x4e, 0x3b, 0xa2,
-	0xe9, 0xc0, 0x71, 0xb5, 0xc4, 0x6b, 0x06, 0xc7, 0x1e, 0xa3, 0x41, 0xcc, 0x2d, 0x2e, 0xb6, 0xd3,
-	0x74, 0xac, 0x8e, 0xd3, 0xb0, 0x5a, 0x0d, 0xe5, 0xb0, 0x66, 0x70, 0xb0, 0x5d, 0x3b, 0xe8, 0x0c,
-	0x5c, 0x96, 0x0d, 0x2e, 0x9c, 0x32, 0x2e, 0xcd, 0xe4, 0x15, 0xca, 0x6e, 0xf8, 0x01, 0xdd, 0xf5,
-	0x18, 0xb7, 0xbd, 0x26, 0xc5, 0x2b, 0x68, 0xdc, 0x51, 0xff, 0xb7, 0x9c, 0x56, 0x21, 0xb3, 0x9a,
-	0x59, 0xbf, 0x54, 0x43, 0xba, 0x69, 0xb7, 0x85, 0x6f, 0xa3, 0xf3, 0x72, 0xb6, 0x0a, 0x63, 0xab,
-	0x99, 0xf5, 0xf1, 0xfb, 0x33, 0x65, 0x35, 0x79, 0xbf, 0x86, 0x9f, 0x3a, 0xb7, 0x79, 0x8f, 0xd5,
-	0x94, 0x0f, 0x79, 0x8c, 0x26, 0xc2, 0xf0, 0x0c, 0x97, 0xd0, 0x27, 0x0e, 0xa7, 0x1d, 0x56, 0xc8,
-	0xac, 0x9e, 0x83, 0xde, 0x2a, 0xeb, 0xc2, 0x5e, 0x35, 0xe9, 0x42, 0xfe, 0x7d, 0x0e, 0x9d, 0xdf,
-	0x07, 0x33, 0x2e, 0xa0, 0x0b, 0x87, 0x34, 0x10, 0xb1, 0x56, 0x92, 0xf4, 0x23, 0xbe, 0x8d, 0x2e,
-	0xaa, 0x19, 0x66, 0x85, 0x31, 0xc0, 0x9c, 0x2e, 0xeb, 0x29, 0x7f, 0x22, 0x7f, 0x6b, 0x7d, 0x0f,
-	0xbc, 0x8d, 0xa6, 0xa2, 0xf9, 0xc4, 0x0a, 0xe7, 0xa0, 0xd3, 0x72, 0x39, 0x96, 0x67, 0x4f, 0xe5,
-	0xe3, 0x26, 0x3c, 0xd5, 0x26, 0xdd, 0xf0, 0x23, 0xc3, 0xeb, 0xe8, 0x82, 0xee, 0xff, 0x31, 0xf4,
-	0x9f, 0x2c, 0xab, 0x7e, 0xaa, 0x83, 0x36, 0xe3, 0x47, 0x28, 0x2b, 0xff, 0x6b, 0xf1, 0xe3, 0x2e,
-	0x65, 0x85, 0x4f, 0xc0, 0x1d, 0x47, 0xdd, 0x9f, 0x1f, 0x77, 0x69, 0x6d, 0xbc, 0xd5, 0xff, 0x3f,
-	0xc3, 0x3f, 0x43, 0x13, 0x90, 0x7a, 0xd6, 0x81, 0xe3, 0xc2, 0xd8, 0x2e, 0xa8, 0x7e, 0xd0, 0x5a,
-	0xde, 0x12, 0xff, 0x6e, 0x83, 0xa9, 0x96, 0xa5, 0x83, 0x07, 0x86, 0x7f, 0x85, 0x72, 0x83, 0x3c,
-	0xb1, 0xb9, 0xdd, 0xb0, 0x19, 0x2d, 0x2c, 0x41, 0xe7, 0x7c, 0x59, 0x58, 0xca, 0xcf, 0x9c, 0x86,
-	0x64, 0xdd, 0xb4, 0xb9, 0x5d, 0x9b, 0x12, 0x6d, 0xa2, 0x49, 0xf9, 0xe2, 0x2d, 0x94, 0x0f, 0xe7,
-	0x91, 0x86, 0x58, 0x06, 0x88, 0x59, 0x09, 0xf1, 0x44, 0xd8, 0x42, 0x20, 0x40, 0x29, 0x1b, 0x95,
-	0xff, 0x97, 0x1f, 0x5f, 0x3c, 0x3f, 0x7d, 0xe1, 0xfe, 0xbf, 0x1e, 0xa3, 0x09, 0x39, 0x85, 0x75,
-	0x1a, 0x08, 0x77, 0xbc, 0x89, 0x2e, 0xed, 0x50, 0xae, 0xa6, 0x75, 0xae, 0x2c, 0x37, 0x90, 0xb2,
-	0xde, 0x40, 0xca, 0x5b, 0x62, 0x03, 0x29, 0x4e, 0xea, 0xb4, 0x90, 0x7e, 0x64, 0xea, 0x4f, 0xff,
-	0xf9, 0xef, 0x8f, 0x63, 0x97, 0xf0, 0x05, 0xd8, 0x87, 0x0e, 0xef, 0xe1, 0x57, 0x28, 0xf7, 0xd4,
-	0x61, 0x3c, 0x9a, 0x5b, 0x69, 0x68, 0xb3, 0xa6, 0x24, 0x63, 0x64, 0x01, 0x40, 0xf3, 0x38, 0xa7,
-	0x40, 0x2b, 0x4e, 0x1f, 0xa9, 0x8e, 0xa6, 0x76, 0x68, 0x04, 0x1d, 0xa3, 0xb2, 0xda, 0xc0, 0x76,
-	0x37, 0x8b, 0xc6, 0xac, 0x25, 0x97, 0x01, 0xaf, 0x80, 0xe7, 0x12, 0x78, 0x95, 0x13, 0xa7, 0xf5,
-	0x16, 0xd7, 0x51, 0x56, 0x68, 0x7e, 0xa2, 0x73, 0x31, 0x4d, 0x6e, 0x2e, 0x9e, 0xbf, 0x8c, 0x14,
-	0x00, 0x1a, 0xe3, 0x69, 0x0d, 0xdd, 0x4f, 0xe8, 0x0e, 0xc2, 0x02, 0xf4, 0x69, 0x34, 0x3d, 0xd3,
-	0xa0, 0x2f, 0x0f, 0xcd, 0x72, 0x46, 0x56, 0x80, 0x67, 0x01, 0xcf, 0x6b, 0x9e, 0xd8, 0x62, 0xc1,
-	0x4d, 0x34, 0xbd, 0x43, 0xa3, 0x6c, 0x91, 0xc8, 0x0c, 0x5f, 0x46, 0xe4, 0x2a, 0xe0, 0x5f, 0xc6,
-	0x4b, 0x29, 0xf8, 0x32, 0x50, 0x1e, 0x9a, 0x4b, 0x8c, 0x69, 0xcf, 0x0f, 0x38, 0x8b, 0x50, 0x2d,
-	0xa5, 0x50, 0x81, 0x27, 0x29, 0x01, 0xd3, 0x55, 0x4c, 0x86, 0x31, 0x55, 0xba, 0x80, 0xfa, 0x2e,
-	0x83, 0x66, 0xe2, 0xa3, 0x12, 0x28, 0x78, 0x79, 0x08, 0xc5, 0x6e, 0xab, 0xb8, 0x38, 0xc4, 0x4c,
-	0x1e, 0x82, 0x80, 0x32, 0xbe, 0x7d, 0xba, 0x80, 0xca, 0x89, 0xf8, 0xb1, 0xc4, 0xd0, 0xff, 0x9e,
-	0x41, 0xf3, 0x5b, 0x9e, 0xdd, 0x70, 0xe9, 0xc8, 0x6a, 0x52, 0xe6, 0x9c, 0x3c, 0x06, 0x21, 0x8f,
-	0xc8, 0x83, 0x51, 0x84, 0x54, 0x28, 0x88, 0xc0, 0xff, 0xc8, 0xa0, 0xc2, 0xa6, 0xc3, 0x3e, 0xa8,
-	0xa0, 0x5f, 0x82, 0xa0, 0x4f, 0xc9, 0xc3, 0x91, 0x04, 0xb5, 0xa4, 0x0a, 0xdc, 0x32, 0x24, 0xc7,
-	0xb6, 0xeb, 0x1f, 0x45, 0x93, 0x03, 0x97, 0xc3, 0x6f, 0x76, 0xb0, 0x9f, 0x31, 0x25, 0x0e, 0x00,
-	0xeb, 0xcf, 0x19, 0xb4, 0xf4, 0xa2, 0xdb, 0xb2, 0x39, 0x4d, 0x10, 0x3d, 0x07, 0x19, 0x4b, 0x09,
-	0x02, 0x68, 0x97, 0x7d, 0x52, 0x87, 0x7e, 0x07, 0x24, 0xdc, 0x20, 0x67, 0x90, 0xf0, 0x59, 0xa6,
-	0x84, 0xff, 0x92, 0x41, 0xcb, 0x06, 0x15, 0xcf, 0x28, 0xa7, 0x81, 0x94, 0xb1, 0x18, 0x91, 0x01,
-	0x86, 0x67, 0x7e, 0xeb, 0x14, 0x15, 0x65, 0x50, 0xb1, 0x4e, 0xae, 0x0c, 0x55, 0xd1, 0x11, 0x60,
-	0x20, 0xa3, 0x8d, 0xe6, 0x13, 0x21, 0x07, 0xaa, 0x68, 0xcc, 0xf3, 0x49, 0x2d, 0x8c, 0xdc, 0x02,
-	0xae, 0x6b, 0xf8, 0x2c, 0x5c, 0x98, 0xa3, 0x45, 0xe3, 0xdc, 0xee, 0x04, 0x7e, 0xaf, 0x1b, 0x25,
-	0x9b, 0x4f, 0xc4, 0x5f, 0x3a, 0x91, 0xbb, 0x40, 0x58, 0xc2, 0xeb, 0xa7, 0x86, 0xd8, 0x6a, 0x4b,
-	0xd8, 0x1f, 0x33, 0x68, 0x2d, 0x65, 0xae, 0x01, 0x53, 0x46, 0x7a, 0xcd, 0x4c, 0x78, 0x96, 0x59,
-	0x7f, 0x00, 0x92, 0xee, 0x90, 0x33, 0x4b, 0x12, 0x41, 0xaf, 0xa2, 0x71, 0x11, 0x8b, 0xd3, 0x76,
-	0xf4, 0xa9, 0xe8, 0x41, 0x82, 0x91, 0x79, 0x20, 0xcb, 0xe1, 0x29, 0x4d, 0xa6, 0xb7, 0xee, 0x2a,
-	0x9a, 0x18, 0x00, 0xee, 0xb6, 0xd2, 0x21, 0xc7, 0x07, 0x61, 0x36, 0xbc, 0x24, 0x25, 0x9c, 0xd3,
-	0x62, 0xf8, 0x05, 0x9a, 0xae, 0xd1, 0xa6, 0xef, 0x35, 0x1d, 0x97, 0x6a, 0x99, 0xe1, 0xbe, 0xa9,
-	0xf1, 0x58, 0x02, 0xcc, 0x39, 0x92, 0xc4, 0x14, 0x03, 0xdf, 0x82, 0x03, 0x82, 0xe1, 0xdd, 0x12,
-	0x3b, 0x62, 0x69, 0x18, 0x3c, 0x13, 0x1b, 0xa9, 0x7c, 0x89, 0x7c, 0x89, 0xb2, 0x1b, 0x01, 0xb5,
-	0xb9, 0x92, 0x86, 0x63, 0xbd, 0x13, 0x68, 0x45, 0x40, 0x9b, 0x21, 0xf1, 0xb8, 0x09, 0x49, 0x2f,
-	0x51, 0x56, 0x6e, 0xca, 0x06, 0x55, 0x69, 0x83, 0xbc, 0x02, 0x78, 0xcb, 0x64, 0xd1, 0xa4, 0x4e,
-	0x6f, 0xaf, 0xbf, 0x45, 0x13, 0x6a, 0x77, 0x1d, 0x01, 0x59, 0xbd, 0x44, 0xc9, 0x92, 0x11, 0x59,
-	0xef, 0x93, 0x2f, 0x51, 0xb6, 0x46, 0x1b, 0xbe, 0xcf, 0x3f, 0x98, 0xe6, 0x00, 0xe0, 0x04, 0xf0,
-	0x26, 0x75, 0x29, 0x7f, 0x8f, 0x60, 0x94, 0xcc, 0xc0, 0x2d, 0x80, 0xc3, 0x0d, 0x94, 0xdb, 0xf6,
-	0x83, 0x26, 0x1d, 0x19, 0xfd, 0x26, 0xa0, 0x5f, 0x29, 0xad, 0x19, 0xd1, 0x0f, 0x04, 0xa6, 0xa5,
-	0x38, 0xde, 0xa0, 0x89, 0x4d, 0xff, 0xc8, 0x73, 0x7d, 0xbb, 0xb5, 0xdb, 0xb1, 0xdb, 0x14, 0xcf,
-	0xea, 0x34, 0x80, 0x47, 0x6d, 0x2b, 0xce, 0x6a, 0xda, 0x6a, 0x97, 0x06, 0x70, 0xe5, 0xad, 0x51,
-	0xd6, 0x25, 0xbf, 0x00, 0xa6, 0xbb, 0xe4, 0x96, 0x91, 0xc9, 0x11, 0x10, 0x56, 0x4b, 0x61, 0xb0,
-	0xca, 0x89, 0x67, 0x77, 0xe8, 0xdb, 0xcf, 0x32, 0xa5, 0x77, 0x63, 0x19, 0xfc, 0x43, 0x06, 0xcd,
-	0xed, 0x50, 0x1e, 0xa1, 0x91, 0x97, 0xa5, 0x74, 0x0d, 0xa6, 0x66, 0xf2, 0x39, 0x68, 0x78, 0x88,
-	0xef, 0x8f, 0xa0, 0xa1, 0xc2, 0x80, 0x49, 0xe8, 0x78, 0x03, 0x27, 0xb8, 0x08, 0xe4, 0x88, 0x02,
-	0x3e, 0x95, 0xdb, 0x19, 0x1e, 0x25, 0x08, 0x82, 0xd9, 0x91, 0x47, 0xd5, 0x08, 0x18, 0x8b, 0x4d,
-	0xb0, 0x89, 0x90, 0x91, 0x0a, 0x30, 0x5e, 0xc7, 0x57, 0xcf, 0xc2, 0x28, 0xa8, 0x4e, 0x50, 0x7e,
-	0x43, 0x9c, 0xbc, 0xdd, 0x33, 0x8e, 0xd3, 0x38, 0xd9, 0x6a, 0x9c, 0xa5, 0x51, 0xc7, 0xf9, 0xb7,
-	0x0c, 0xca, 0x3f, 0x69, 0x72, 0xe7, 0xd0, 0xe6, 0x14, 0x88, 0xe4, 0xeb, 0x61, 0x44, 0xf6, 0x6d,
-	0x60, 0xff, 0x9c, 0xfc, 0x7c, 0x94, 0x69, 0x96, 0xcd, 0x3d, 0xe0, 0x53, 0x79, 0xf7, 0xd7, 0x0c,
-	0xca, 0xd5, 0xe8, 0x21, 0x0d, 0xf8, 0x4f, 0xa2, 0x25, 0x00, 0x6a, 0xa5, 0xe5, 0x5d, 0x06, 0xcd,
-	0x46, 0x96, 0xdf, 0x73, 0x5f, 0x2d, 0x73, 0x12, 0xdd, 0x8d, 0x23, 0xaa, 0x6a, 0xf4, 0xf7, 0x3d,
-	0xca, 0x78, 0x71, 0xd1, 0xe0, 0x23, 0xe4, 0xf9, 0x1e, 0xa3, 0xfa, 0x4c, 0x83, 0xaf, 0xc7, 0x25,
-	0x82, 0x0c, 0x56, 0xd1, 0xf2, 0x2c, 0xf9, 0x8c, 0x8f, 0xd0, 0xa4, 0x5e, 0x06, 0x6a, 0x15, 0x16,
-	0x8d, 0xf0, 0x67, 0xa0, 0xbe, 0x9d, 0x96, 0x9d, 0x8a, 0x5a, 0xfe, 0x58, 0x72, 0x09, 0x8a, 0xf9,
-	0x58, 0x78, 0xd2, 0xf0, 0xfb, 0xd3, 0xd1, 0x0e, 0xec, 0xd6, 0x20, 0x0e, 0xef, 0x2d, 0xe2, 0x41,
-	0xda, 0xa2, 0x54, 0x22, 0x6c, 0x41, 0x69, 0xf5, 0x24, 0x9d, 0x0e, 0xc2, 0x3e, 0xca, 0xee, 0x50,
-	0x5e, 0xf5, 0x7a, 0xbb, 0xf2, 0x39, 0xbc, 0x16, 0x73, 0x9a, 0xad, 0x6f, 0x26, 0x37, 0x80, 0x63,
-	0x0d, 0xaf, 0x18, 0xd3, 0xc0, 0xf7, 0x7a, 0x1a, 0xf7, 0x04, 0x4d, 0x44, 0x16, 0xc0, 0xfb, 0x0f,
-	0xeb, 0x1e, 0x50, 0xde, 0x22, 0x69, 0xd3, 0x6a, 0x2b, 0x1a, 0xc5, 0x2c, 0x5e, 0xd6, 0x47, 0x68,
-	0x7c, 0xc3, 0xef, 0x74, 0x1c, 0xfe, 0x7f, 0x52, 0xcb, 0x4d, 0xe7, 0x26, 0x49, 0x9b, 0xd6, 0x26,
-	0x90, 0x84, 0x88, 0xf7, 0xd0, 0xd4, 0xe0, 0x80, 0x95, 0xbc, 0xaf, 0x4e, 0x68, 0x32, 0x79, 0x41,
-	0x25, 0x00, 0xbf, 0x84, 0x8b, 0xc6, 0x60, 0xca, 0x8b, 0xe9, 0x2b, 0x94, 0x0f, 0x21, 0x76, 0x36,
-	0x7c, 0xef, 0xc0, 0x69, 0xa7, 0x4c, 0x53, 0xdf, 0x7c, 0xca, 0x34, 0x75, 0x3b, 0x56, 0x53, 0xe1,
-	0x78, 0x68, 0x56, 0x6e, 0x07, 0x71, 0x82, 0x24, 0x68, 0xea, 0xbb, 0x57, 0x5d, 0xaa, 0xc8, 0x69,
-	0x64, 0x22, 0x40, 0x2f, 0xc2, 0x01, 0x3a, 0xdb, 0x9d, 0x6d, 0x78, 0x94, 0xe4, 0x5d, 0x8d, 0xa2,
-	0x99, 0x28, 0xec, 0x28, 0xd7, 0x85, 0x75, 0x20, 0x20, 0x78, 0x35, 0x95, 0x40, 0x5f, 0x13, 0xbe,
-	0x0d, 0xab, 0x97, 0x45, 0xba, 0xb4, 0x13, 0x74, 0x3e, 0x59, 0xdd, 0x63, 0x69, 0xc7, 0x55, 0x59,
-	0x16, 0xc4, 0x35, 0x34, 0xd1, 0x3f, 0xf5, 0x0a, 0xff, 0x58, 0x64, 0x12, 0x78, 0x64, 0x0d, 0xe0,
-	0x16, 0xf1, 0x82, 0x09, 0x4e, 0x1e, 0x81, 0xb7, 0xd1, 0x74, 0x9d, 0x07, 0xd4, 0xee, 0xec, 0xd9,
-	0xcd, 0xef, 0x29, 0x67, 0xd5, 0x1e, 0xc7, 0x73, 0x91, 0x40, 0x48, 0x43, 0xb5, 0xc7, 0x53, 0xe7,
-	0xf7, 0xa3, 0xf5, 0x0c, 0xde, 0x82, 0x83, 0x3e, 0x75, 0x0e, 0xa9, 0x02, 0xda, 0xf5, 0x86, 0xd4,
-	0xda, 0x92, 0xf8, 0xbb, 0x1e, 0xf9, 0xe8, 0x6e, 0x06, 0x7f, 0x85, 0xf2, 0x0a, 0x66, 0xe3, 0xb5,
-	0xed, 0xb5, 0x29, 0xd4, 0x30, 0xd3, 0x83, 0x58, 0x88, 0x20, 0x85, 0xba, 0x00, 0xd8, 0x2b, 0x94,
-	0x93, 0xc7, 0xfb, 0x50, 0x25, 0x14, 0x1b, 0xaa, 0xa3, 0x45, 0x43, 0x1b, 0x59, 0x85, 0xd8, 0x15,
-	0xc9, 0xac, 0x8e, 0x5d, 0xa4, 0xd4, 0x2a, 0x53, 0x55, 0xbc, 0x1e, 0xc2, 0xd8, 0xd1, 0x9b, 0x6e,
-	0x02, 0xd3, 0x90, 0xaa, 0x11, 0x50, 0x39, 0x23, 0x0d, 0x94, 0x93, 0x2b, 0xee, 0x7d, 0x54, 0x5f,
-	0x03, 0x82, 0x95, 0xe2, 0x10, 0x02, 0x21, 0xbd, 0x89, 0x72, 0xf2, 0x04, 0x7d, 0x1a, 0x47, 0xda,
-	0x94, 0xab, 0x81, 0x94, 0x86, 0x0d, 0xe4, 0x3b, 0x34, 0x2d, 0x16, 0x43, 0x38, 0x00, 0x43, 0x56,
-	0x83, 0x21, 0x5a, 0xcb, 0x40, 0x32, 0x8f, 0xcd, 0x53, 0x80, 0x9f, 0xc2, 0x25, 0xd0, 0xf0, 0x5a,
-	0x9a, 0x8c, 0x1c, 0x5c, 0x98, 0xbe, 0x59, 0xe0, 0xc5, 0xf4, 0xa3, 0x09, 0xc3, 0x5f, 0xa3, 0x8b,
-	0x75, 0xea, 0x1e, 0x3c, 0xa7, 0x8c, 0x47, 0xc0, 0x0a, 0x1a, 0x4c, 0x5b, 0xfb, 0x9b, 0xff, 0x75,
-	0x80, 0x5d, 0x25, 0x97, 0x8d, 0xb0, 0x8c, 0xba, 0x07, 0xf0, 0x11, 0x05, 0xef, 0xc3, 0x69, 0x3a,
-	0x52, 0x51, 0x8f, 0xd7, 0x44, 0x12, 0x25, 0xf7, 0xe4, 0xd2, 0x15, 0x89, 0x2e, 0xfc, 0x54, 0x31,
-	0xc4, 0x69, 0xe0, 0x6f, 0x11, 0xde, 0xa1, 0x3c, 0x56, 0x66, 0x8f, 0x20, 0x9b, 0x2b, 0xf1, 0xc9,
-	0x78, 0x44, 0xb1, 0xa1, 0xa8, 0x8f, 0x19, 0x9a, 0xa8, 0x3b, 0x9d, 0x9e, 0x6b, 0x73, 0x0a, 0xfd,
-	0xf1, 0x52, 0x3f, 0x10, 0xe1, 0x66, 0xfd, 0x9a, 0x4c, 0x39, 0x15, 0x26, 0x8a, 0x59, 0xd1, 0x18,
-	0x29, 0x24, 0x4b, 0x20, 0x89, 0xbc, 0x7c, 0x86, 0x90, 0xbc, 0x44, 0x43, 0xed, 0x30, 0x1b, 0x7e,
-	0x1b, 0xa6, 0xa6, 0xa2, 0xaa, 0x3e, 0x90, 0x49, 0x01, 0x3f, 0xe8, 0xad, 0xea, 0x23, 0xea, 0xea,
-	0x3c, 0x02, 0xde, 0xe0, 0x92, 0x7f, 0x78, 0xaf, 0x12, 0xea, 0x2e, 0x00, 0xbf, 0x43, 0xe3, 0x62,
-	0xc9, 0xbf, 0xe1, 0xfb, 0xb6, 0xdb, 0xa3, 0x78, 0xa1, 0xdc, 0xff, 0xbc, 0x57, 0x86, 0x96, 0x7a,
-	0x97, 0x36, 0x9d, 0x03, 0x87, 0x06, 0xc5, 0xf9, 0x90, 0xa9, 0x46, 0x79, 0x2f, 0xf0, 0xc0, 0x81,
-	0x91, 0x45, 0x80, 0x9f, 0xc5, 0x79, 0x1d, 0x91, 0x30, 0xe0, 0x4b, 0x34, 0x5e, 0x0f, 0x3d, 0xe6,
-	0x13, 0xf8, 0x34, 0x5d, 0x77, 0x02, 0x38, 0x8c, 0xd4, 0x42, 0xf9, 0x3a, 0xb7, 0x03, 0x5e, 0xed,
-	0x34, 0x1d, 0x91, 0xc4, 0xe2, 0xe8, 0xe5, 0x7b, 0x58, 0x25, 0x88, 0x6e, 0xd5, 0x93, 0x89, 0x65,
-	0x73, 0x24, 0xdb, 0xd5, 0x8a, 0x27, 0xfd, 0xb2, 0x3f, 0x13, 0x78, 0x56, 0xff, 0x5b, 0xa1, 0x08,
-	0xcf, 0x0f, 0x19, 0x34, 0xb3, 0xd7, 0xe3, 0xfb, 0xbe, 0xd3, 0xad, 0xc3, 0x27, 0xcd, 0x3d, 0xf9,
-	0xa9, 0x12, 0xdf, 0x29, 0x9b, 0xbe, 0x73, 0x26, 0xfc, 0x34, 0x7f, 0xda, 0x10, 0xf5, 0x8a, 0xeb,
-	0x27, 0xae, 0x01, 0x55, 0xe8, 0xe8, 0xa2, 0x79, 0xb9, 0xbd, 0x25, 0x95, 0xf4, 0x8b, 0x4f, 0x5f,
-	0xd1, 0xe3, 0x54, 0x1e, 0x55, 0x1f, 0x2c, 0xad, 0x0f, 0xe1, 0xa9, 0x9c, 0x7c, 0x4f, 0x8f, 0xfb,
-	0x75, 0x89, 0xb7, 0x08, 0xab, 0x81, 0xbf, 0x60, 0x34, 0xd0, 0x64, 0x37, 0xcb, 0xc9, 0xaf, 0xb6,
-	0x31, 0x9f, 0xd3, 0x86, 0xac, 0x0b, 0x39, 0x0b, 0x11, 0x29, 0x61, 0x44, 0x31, 0x60, 0x17, 0xcd,
-	0x0e, 0x06, 0x1c, 0x56, 0x70, 0xa6, 0xe1, 0xaa, 0x7b, 0x51, 0xe9, 0x7a, 0x2a, 0x47, 0x74, 0xb0,
-	0xdf, 0xa0, 0x69, 0xb5, 0x2e, 0xaa, 0x5e, 0x6f, 0x84, 0x1a, 0x8c, 0x4e, 0xa1, 0xc1, 0x41, 0x4d,
-	0xa2, 0x58, 0xe2, 0x5a, 0x20, 0x97, 0x26, 0xfe, 0x1a, 0x4d, 0xc9, 0x35, 0x3c, 0x1a, 0xb4, 0xda,
-	0x2e, 0x07, 0x61, 0x92, 0xc5, 0xb3, 0x30, 0xf2, 0x1f, 0xd1, 0xdc, 0x40, 0x75, 0x9d, 0x06, 0x8e,
-	0xed, 0xfe, 0xa6, 0xd7, 0x69, 0xd0, 0x00, 0xaf, 0x84, 0xae, 0x31, 0x61, 0x43, 0xd5, 0xab, 0x3e,
-	0x7d, 0xbe, 0xe7, 0x7b, 0xa7, 0x15, 0x95, 0xc8, 0x9a, 0x69, 0x40, 0x0c, 0x90, 0x2c, 0x4f, 0x72,
-	0xfc, 0x01, 0xcd, 0xf6, 0xc7, 0xf5, 0x61, 0xc8, 0xd5, 0xa9, 0x94, 0xac, 0x1a, 0x86, 0x1c, 0xe5,
-	0xfe, 0x1d, 0xca, 0x86, 0xcf, 0xf0, 0x78, 0x46, 0x53, 0x86, 0x5b, 0x53, 0x79, 0xd4, 0x5b, 0x78,
-	0x70, 0x10, 0x92, 0xa5, 0x03, 0x15, 0xd6, 0x2f, 0x5c, 0x94, 0xf7, 0x83, 0x36, 0x9c, 0xc3, 0x9a,
-	0x7e, 0xd0, 0x52, 0x5f, 0x3d, 0xbf, 0xc8, 0xca, 0xaf, 0xb2, 0x7b, 0xf0, 0x17, 0x05, 0xdf, 0x94,
-	0xdb, 0x0e, 0x7f, 0xdd, 0x6b, 0x88, 0x89, 0xac, 0x68, 0x4f, 0xf5, 0xb7, 0x24, 0x77, 0xf4, 0xdf,
-	0x37, 0x3c, 0xaa, 0xb4, 0x7d, 0xd5, 0xf6, 0xcf, 0xb1, 0xb9, 0xaa, 0xc6, 0xdb, 0x0f, 0x7f, 0xe4,
-	0xdd, 0x1b, 0x6b, 0x9c, 0x07, 0xff, 0x07, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x88, 0xec, 0xd4,
-	0x9c, 0x99, 0x22, 0x00, 0x00,
-}
+var (
+	file_voltha_protos_voltha_proto_rawDescOnce sync.Once
+	file_voltha_protos_voltha_proto_rawDescData []byte
+)
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ context.Context
-var _ grpc.ClientConn
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-const _ = grpc.SupportPackageIsVersion4
-
-// VolthaServiceClient is the client API for VolthaService service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
-type VolthaServiceClient interface {
-	// Get high level information on the Voltha cluster
-	GetVoltha(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Voltha, error)
-	// List all Voltha cluster core instances
-	ListCoreInstances(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*CoreInstances, error)
-	// Get details on a Voltha cluster instance
-	GetCoreInstance(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*CoreInstance, error)
-	// List all active adapters (plugins) in the Voltha cluster
-	ListAdapters(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Adapters, error)
-	// List all logical devices managed by the Voltha cluster
-	ListLogicalDevices(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*LogicalDevices, error)
-	// Get additional information on a given logical device
-	GetLogicalDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*LogicalDevice, error)
-	// List ports of a logical device
-	ListLogicalDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*LogicalPorts, error)
-	// Gets a logical device port
-	GetLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*LogicalPort, error)
-	// Enables a logical device port
-	EnableLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Disables a logical device port
-	DisableLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*empty.Empty, error)
-	// List all flows of a logical device
-	ListLogicalDeviceFlows(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Flows, error)
-	// Update flow table for logical device
-	UpdateLogicalDeviceFlowTable(ctx context.Context, in *openflow_13.FlowTableUpdate, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Update meter table for logical device
-	UpdateLogicalDeviceMeterTable(ctx context.Context, in *openflow_13.MeterModUpdate, opts ...grpc.CallOption) (*empty.Empty, error)
-	// List all meters of a logical device
-	ListLogicalDeviceMeters(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Meters, error)
-	// List all flow groups of a logical device
-	ListLogicalDeviceFlowGroups(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.FlowGroups, error)
-	// Update group table for device
-	UpdateLogicalDeviceFlowGroupTable(ctx context.Context, in *openflow_13.FlowGroupTableUpdate, opts ...grpc.CallOption) (*empty.Empty, error)
-	// List all physical devices controlled by the Voltha cluster
-	ListDevices(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Devices, error)
-	// List all physical devices IDs controlled by the Voltha cluster
-	ListDeviceIds(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*common.IDs, error)
-	// Request to a voltha Core to reconcile a set of devices based on their IDs
-	ReconcileDevices(ctx context.Context, in *common.IDs, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Get more information on a given physical device
-	GetDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Device, error)
-	// Pre-provision a new physical device
-	CreateDevice(ctx context.Context, in *Device, opts ...grpc.CallOption) (*Device, error)
-	// Enable a device.  If the device was in pre-provisioned state then it
-	// will transition to ENABLED state.  If it was is DISABLED state then it
-	// will transition to ENABLED state as well.
-	EnableDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Disable a device
-	DisableDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Reboot a device
-	RebootDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Delete a device
-	DeleteDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Forcefully delete a device
-	ForceDeleteDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Request an image download to the standby partition
-	// of a device.
-	// Note that the call is expected to be non-blocking.
-	DownloadImage(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error)
-	// Get image download status on a device
-	// The request retrieves progress on device and updates db record
-	// Deprecated in voltha 2.8, will be removed
-	GetImageDownloadStatus(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*ImageDownload, error)
-	// Get image download db record
-	// Deprecated in voltha 2.8, will be removed
-	GetImageDownload(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*ImageDownload, error)
-	// List image download db records for a given device
-	// Deprecated in voltha 2.8, will be removed
-	ListImageDownloads(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*ImageDownloads, error)
-	// Cancel an existing image download process on a device
-	// Deprecated in voltha 2.8, will be removed
-	CancelImageDownload(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error)
-	// Activate the specified image at a standby partition
-	// to active partition.
-	// Depending on the device implementation, this call
-	// may or may not cause device reboot.
-	// If no reboot, then a reboot is required to make the
-	// activated image running on device
-	// Note that the call is expected to be non-blocking.
-	// Deprecated in voltha 2.8, will be removed
-	ActivateImageUpdate(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error)
-	// Revert the specified image at standby partition
-	// to active partition, and revert to previous image
-	// Depending on the device implementation, this call
-	// may or may not cause device reboot.
-	// If no reboot, then a reboot is required to make the
-	// previous image running on device
-	// Note that the call is expected to be non-blocking.
-	// Deprecated in voltha 2.8, will be removed
-	RevertImageUpdate(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error)
-	// Downloads a certain image to the standby partition of the devices
-	// Note that the call is expected to be non-blocking.
-	DownloadImageToDevice(ctx context.Context, in *DeviceImageDownloadRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
-	// Get image status on a number of devices devices
-	// Polled from northbound systems to get state of download/activate/commit
-	GetImageStatus(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
-	// Aborts the upgrade of an image on a device
-	// To be used carefully, stops any further operations for the Image on the given devices
-	// Might also stop if possible existing work, but no guarantees are given,
-	// depends on implementation and procedure status.
-	AbortImageUpgradeToDevice(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
-	// Get Both Active and Standby image for a given device
-	GetOnuImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*OnuImages, error)
-	// Activate the specified image from a standby partition
-	// to active partition.
-	// Depending on the device implementation, this call
-	// may or may not cause device reboot.
-	// If no reboot, then a reboot is required to make the
-	// activated image running on device
-	// Note that the call is expected to be non-blocking.
-	ActivateImage(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
-	// Commit the specified image to be default.
-	// Depending on the device implementation, this call
-	// may or may not cause device reboot.
-	// If no reboot, then a reboot is required to make the
-	// activated image running on device upon next reboot
-	// Note that the call is expected to be non-blocking.
-	CommitImage(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
-	// List ports of a device
-	ListDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Ports, error)
-	// List pm config of a device
-	ListDevicePmConfigs(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*PmConfigs, error)
-	// Update the pm config of a device
-	UpdateDevicePmConfigs(ctx context.Context, in *PmConfigs, opts ...grpc.CallOption) (*empty.Empty, error)
-	// List all flows of a device
-	ListDeviceFlows(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Flows, error)
-	// List all flow groups of a device
-	ListDeviceFlowGroups(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.FlowGroups, error)
-	// List device types known to Voltha
-	ListDeviceTypes(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*DeviceTypes, error)
-	// Get additional information on a device type
-	GetDeviceType(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*DeviceType, error)
-	// Stream control packets to the dataplane
-	StreamPacketsOut(ctx context.Context, opts ...grpc.CallOption) (VolthaService_StreamPacketsOutClient, error)
-	// Receive control packet stream
-	ReceivePacketsIn(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (VolthaService_ReceivePacketsInClient, error)
-	ReceiveChangeEvents(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (VolthaService_ReceiveChangeEventsClient, error)
-	CreateEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*EventFilter, error)
-	// Get all filters present for a device
-	GetEventFilter(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*EventFilters, error)
-	UpdateEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*EventFilter, error)
-	DeleteEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Get all the filters present
-	ListEventFilters(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*EventFilters, error)
-	GetImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Images, error)
-	SelfTest(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*SelfTestResponse, error)
-	// OpenOMCI MIB information
-	GetMibDeviceData(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*omci.MibDeviceData, error)
-	// OpenOMCI ALARM information
-	GetAlarmDeviceData(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*omci.AlarmDeviceData, error)
-	// Simulate an Alarm
-	SimulateAlarm(ctx context.Context, in *SimulateAlarmRequest, opts ...grpc.CallOption) (*common.OperationResp, error)
-	EnablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*empty.Empty, error)
-	DisablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*empty.Empty, error)
-	GetExtValue(ctx context.Context, in *extension.ValueSpecifier, opts ...grpc.CallOption) (*extension.ReturnValues, error)
-	SetExtValue(ctx context.Context, in *extension.ValueSet, opts ...grpc.CallOption) (*empty.Empty, error)
-	// omci start and stop cli implementation
-	StartOmciTestAction(ctx context.Context, in *omci.OmciTestRequest, opts ...grpc.CallOption) (*omci.TestResponse, error)
-	// Saves or updates system wide configuration into voltha KV
-	PutVoipSystemProfile(ctx context.Context, in *voip_system_profile.VoipSystemProfileRequest, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Deletes the given profile from voltha KV
-	DeleteVoipSystemProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Saves or updates a profile (VOIP) into voltha KV
-	PutVoipUserProfile(ctx context.Context, in *voip_user_profile.VoipUserProfileRequest, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Deletes the given profile from voltha KV
-	DeleteVoipUserProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Disables the ONU, stops it from participating in the ranging process. different from DisableDevice
-	DisableOnuDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Enables the ONU at the PLOAM , enables the ONU to participate in the ranging process. different from EnableDevice
-	EnableOnuDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Disables the ONU at the PLOAM , different from DisableDevice. This would be used if the Device is not present in the VOLTHA
-	DisableOnuSerialNumber(ctx context.Context, in *OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Disables the ONU at the PLOAM , different from EnableDevice. This would be used if the Device is not present in the VOLTHA
-	EnableOnuSerialNumber(ctx context.Context, in *OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Update the Device configuration, for now only ip address updation is supported
-	UpdateDevice(ctx context.Context, in *UpdateDevice, opts ...grpc.CallOption) (*empty.Empty, error)
+func file_voltha_protos_voltha_proto_rawDescGZIP() []byte {
+	file_voltha_protos_voltha_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_voltha_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_voltha_proto_rawDesc), len(file_voltha_protos_voltha_proto_rawDesc)))
+	})
+	return file_voltha_protos_voltha_proto_rawDescData
 }
 
-type volthaServiceClient struct {
-	cc *grpc.ClientConn
+var file_voltha_protos_voltha_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
+var file_voltha_protos_voltha_proto_goTypes = []any{
+	(*CoreInstance)(nil),                                 // 0: voltha.CoreInstance
+	(*CoreInstances)(nil),                                // 1: voltha.CoreInstances
+	(*Voltha)(nil),                                       // 2: voltha.Voltha
+	(*health.HealthStatus)(nil),                          // 3: health.HealthStatus
+	(*Adapter)(nil),                                      // 4: adapter.Adapter
+	(*LogicalDevice)(nil),                                // 5: logical_device.LogicalDevice
+	(*Device)(nil),                                       // 6: device.Device
+	(*DeviceType)(nil),                                   // 7: device.DeviceType
+	(*EventFilter)(nil),                                  // 8: event.EventFilter
+	(*omci.MibDeviceData)(nil),                           // 9: omci.MibDeviceData
+	(*omci.AlarmDeviceData)(nil),                         // 10: omci.AlarmDeviceData
+	(*emptypb.Empty)(nil),                                // 11: google.protobuf.Empty
+	(*common.ID)(nil),                                    // 12: common.ID
+	(*LogicalPortId)(nil),                                // 13: logical_device.LogicalPortId
+	(*openflow_13.FlowTableUpdate)(nil),                  // 14: openflow_13.FlowTableUpdate
+	(*openflow_13.MeterModUpdate)(nil),                   // 15: openflow_13.MeterModUpdate
+	(*openflow_13.FlowGroupTableUpdate)(nil),             // 16: openflow_13.FlowGroupTableUpdate
+	(*common.IDs)(nil),                                   // 17: common.IDs
+	(*ImageDownload)(nil),                                // 18: device.ImageDownload
+	(*DeviceImageDownloadRequest)(nil),                   // 19: device.DeviceImageDownloadRequest
+	(*DeviceImageRequest)(nil),                           // 20: device.DeviceImageRequest
+	(*PmConfigs)(nil),                                    // 21: device.PmConfigs
+	(*openflow_13.PacketOut)(nil),                        // 22: openflow_13.PacketOut
+	(*SimulateAlarmRequest)(nil),                         // 23: device.SimulateAlarmRequest
+	(*Port)(nil),                                         // 24: device.Port
+	(*extension.ValueSpecifier)(nil),                     // 25: extension.ValueSpecifier
+	(*extension.ValueSet)(nil),                           // 26: extension.ValueSet
+	(*omci.OmciTestRequest)(nil),                         // 27: omci.OmciTestRequest
+	(*voip_system_profile.VoipSystemProfileRequest)(nil), // 28: voip_system_profile.VoipSystemProfileRequest
+	(*common.Key)(nil),                                   // 29: common.Key
+	(*voip_user_profile.VoipUserProfileRequest)(nil),     // 30: voip_user_profile.VoipUserProfileRequest
+	(*OnuSerialNumberOnOLTPon)(nil),                      // 31: device.OnuSerialNumberOnOLTPon
+	(*UpdateDevice)(nil),                                 // 32: device.UpdateDevice
+	(*Adapters)(nil),                                     // 33: adapter.Adapters
+	(*LogicalDevices)(nil),                               // 34: logical_device.LogicalDevices
+	(*LogicalPorts)(nil),                                 // 35: logical_device.LogicalPorts
+	(*LogicalPort)(nil),                                  // 36: logical_device.LogicalPort
+	(*openflow_13.Flows)(nil),                            // 37: openflow_13.Flows
+	(*openflow_13.Meters)(nil),                           // 38: openflow_13.Meters
+	(*openflow_13.FlowGroups)(nil),                       // 39: openflow_13.FlowGroups
+	(*Devices)(nil),                                      // 40: device.Devices
+	(*common.OperationResp)(nil),                         // 41: common.OperationResp
+	(*ImageDownloads)(nil),                               // 42: device.ImageDownloads
+	(*DeviceImageResponse)(nil),                          // 43: device.DeviceImageResponse
+	(*OnuImages)(nil),                                    // 44: device.OnuImages
+	(*Ports)(nil),                                        // 45: device.Ports
+	(*DeviceTypes)(nil),                                  // 46: device.DeviceTypes
+	(*openflow_13.PacketIn)(nil),                         // 47: openflow_13.PacketIn
+	(*openflow_13.ChangeEvent)(nil),                      // 48: openflow_13.ChangeEvent
+	(*EventFilters)(nil),                                 // 49: event.EventFilters
+	(*Images)(nil),                                       // 50: device.Images
+	(*SelfTestResponse)(nil),                             // 51: device.SelfTestResponse
+	(*extension.ReturnValues)(nil),                       // 52: extension.ReturnValues
+	(*omci.TestResponse)(nil),                            // 53: omci.TestResponse
 }
-
-func NewVolthaServiceClient(cc *grpc.ClientConn) VolthaServiceClient {
-	return &volthaServiceClient{cc}
+var file_voltha_protos_voltha_proto_depIdxs = []int32{
+	3,  // 0: voltha.CoreInstance.health:type_name -> health.HealthStatus
+	0,  // 1: voltha.CoreInstances.items:type_name -> voltha.CoreInstance
+	4,  // 2: voltha.Voltha.adapters:type_name -> adapter.Adapter
+	5,  // 3: voltha.Voltha.logical_devices:type_name -> logical_device.LogicalDevice
+	6,  // 4: voltha.Voltha.devices:type_name -> device.Device
+	7,  // 5: voltha.Voltha.device_types:type_name -> device.DeviceType
+	8,  // 6: voltha.Voltha.event_filters:type_name -> event.EventFilter
+	9,  // 7: voltha.Voltha.omci_mib_database:type_name -> omci.MibDeviceData
+	10, // 8: voltha.Voltha.omci_alarm_database:type_name -> omci.AlarmDeviceData
+	11, // 9: voltha.VolthaService.GetVoltha:input_type -> google.protobuf.Empty
+	11, // 10: voltha.VolthaService.ListCoreInstances:input_type -> google.protobuf.Empty
+	12, // 11: voltha.VolthaService.GetCoreInstance:input_type -> common.ID
+	11, // 12: voltha.VolthaService.ListAdapters:input_type -> google.protobuf.Empty
+	11, // 13: voltha.VolthaService.ListLogicalDevices:input_type -> google.protobuf.Empty
+	12, // 14: voltha.VolthaService.GetLogicalDevice:input_type -> common.ID
+	12, // 15: voltha.VolthaService.ListLogicalDevicePorts:input_type -> common.ID
+	13, // 16: voltha.VolthaService.GetLogicalDevicePort:input_type -> logical_device.LogicalPortId
+	13, // 17: voltha.VolthaService.EnableLogicalDevicePort:input_type -> logical_device.LogicalPortId
+	13, // 18: voltha.VolthaService.DisableLogicalDevicePort:input_type -> logical_device.LogicalPortId
+	12, // 19: voltha.VolthaService.ListLogicalDeviceFlows:input_type -> common.ID
+	14, // 20: voltha.VolthaService.UpdateLogicalDeviceFlowTable:input_type -> openflow_13.FlowTableUpdate
+	15, // 21: voltha.VolthaService.UpdateLogicalDeviceMeterTable:input_type -> openflow_13.MeterModUpdate
+	12, // 22: voltha.VolthaService.ListLogicalDeviceMeters:input_type -> common.ID
+	12, // 23: voltha.VolthaService.ListLogicalDeviceFlowGroups:input_type -> common.ID
+	16, // 24: voltha.VolthaService.UpdateLogicalDeviceFlowGroupTable:input_type -> openflow_13.FlowGroupTableUpdate
+	11, // 25: voltha.VolthaService.ListDevices:input_type -> google.protobuf.Empty
+	11, // 26: voltha.VolthaService.ListDeviceIds:input_type -> google.protobuf.Empty
+	17, // 27: voltha.VolthaService.ReconcileDevices:input_type -> common.IDs
+	12, // 28: voltha.VolthaService.GetDevice:input_type -> common.ID
+	6,  // 29: voltha.VolthaService.CreateDevice:input_type -> device.Device
+	12, // 30: voltha.VolthaService.EnableDevice:input_type -> common.ID
+	12, // 31: voltha.VolthaService.DisableDevice:input_type -> common.ID
+	12, // 32: voltha.VolthaService.RebootDevice:input_type -> common.ID
+	12, // 33: voltha.VolthaService.DeleteDevice:input_type -> common.ID
+	12, // 34: voltha.VolthaService.ForceDeleteDevice:input_type -> common.ID
+	18, // 35: voltha.VolthaService.DownloadImage:input_type -> device.ImageDownload
+	18, // 36: voltha.VolthaService.GetImageDownloadStatus:input_type -> device.ImageDownload
+	18, // 37: voltha.VolthaService.GetImageDownload:input_type -> device.ImageDownload
+	12, // 38: voltha.VolthaService.ListImageDownloads:input_type -> common.ID
+	18, // 39: voltha.VolthaService.CancelImageDownload:input_type -> device.ImageDownload
+	18, // 40: voltha.VolthaService.ActivateImageUpdate:input_type -> device.ImageDownload
+	18, // 41: voltha.VolthaService.RevertImageUpdate:input_type -> device.ImageDownload
+	19, // 42: voltha.VolthaService.DownloadImageToDevice:input_type -> device.DeviceImageDownloadRequest
+	20, // 43: voltha.VolthaService.GetImageStatus:input_type -> device.DeviceImageRequest
+	20, // 44: voltha.VolthaService.AbortImageUpgradeToDevice:input_type -> device.DeviceImageRequest
+	12, // 45: voltha.VolthaService.GetOnuImages:input_type -> common.ID
+	20, // 46: voltha.VolthaService.ActivateImage:input_type -> device.DeviceImageRequest
+	20, // 47: voltha.VolthaService.CommitImage:input_type -> device.DeviceImageRequest
+	12, // 48: voltha.VolthaService.ListDevicePorts:input_type -> common.ID
+	12, // 49: voltha.VolthaService.ListDevicePmConfigs:input_type -> common.ID
+	21, // 50: voltha.VolthaService.UpdateDevicePmConfigs:input_type -> device.PmConfigs
+	12, // 51: voltha.VolthaService.ListDeviceFlows:input_type -> common.ID
+	12, // 52: voltha.VolthaService.ListDeviceFlowGroups:input_type -> common.ID
+	11, // 53: voltha.VolthaService.ListDeviceTypes:input_type -> google.protobuf.Empty
+	12, // 54: voltha.VolthaService.GetDeviceType:input_type -> common.ID
+	22, // 55: voltha.VolthaService.StreamPacketsOut:input_type -> openflow_13.PacketOut
+	11, // 56: voltha.VolthaService.ReceivePacketsIn:input_type -> google.protobuf.Empty
+	11, // 57: voltha.VolthaService.ReceiveChangeEvents:input_type -> google.protobuf.Empty
+	8,  // 58: voltha.VolthaService.CreateEventFilter:input_type -> event.EventFilter
+	12, // 59: voltha.VolthaService.GetEventFilter:input_type -> common.ID
+	8,  // 60: voltha.VolthaService.UpdateEventFilter:input_type -> event.EventFilter
+	8,  // 61: voltha.VolthaService.DeleteEventFilter:input_type -> event.EventFilter
+	11, // 62: voltha.VolthaService.ListEventFilters:input_type -> google.protobuf.Empty
+	12, // 63: voltha.VolthaService.GetImages:input_type -> common.ID
+	12, // 64: voltha.VolthaService.SelfTest:input_type -> common.ID
+	12, // 65: voltha.VolthaService.GetMibDeviceData:input_type -> common.ID
+	12, // 66: voltha.VolthaService.GetAlarmDeviceData:input_type -> common.ID
+	23, // 67: voltha.VolthaService.SimulateAlarm:input_type -> device.SimulateAlarmRequest
+	24, // 68: voltha.VolthaService.EnablePort:input_type -> device.Port
+	24, // 69: voltha.VolthaService.DisablePort:input_type -> device.Port
+	25, // 70: voltha.VolthaService.GetExtValue:input_type -> extension.ValueSpecifier
+	26, // 71: voltha.VolthaService.SetExtValue:input_type -> extension.ValueSet
+	27, // 72: voltha.VolthaService.StartOmciTestAction:input_type -> omci.OmciTestRequest
+	28, // 73: voltha.VolthaService.PutVoipSystemProfile:input_type -> voip_system_profile.VoipSystemProfileRequest
+	29, // 74: voltha.VolthaService.DeleteVoipSystemProfile:input_type -> common.Key
+	30, // 75: voltha.VolthaService.PutVoipUserProfile:input_type -> voip_user_profile.VoipUserProfileRequest
+	29, // 76: voltha.VolthaService.DeleteVoipUserProfile:input_type -> common.Key
+	12, // 77: voltha.VolthaService.DisableOnuDevice:input_type -> common.ID
+	12, // 78: voltha.VolthaService.EnableOnuDevice:input_type -> common.ID
+	31, // 79: voltha.VolthaService.DisableOnuSerialNumber:input_type -> device.OnuSerialNumberOnOLTPon
+	31, // 80: voltha.VolthaService.EnableOnuSerialNumber:input_type -> device.OnuSerialNumberOnOLTPon
+	32, // 81: voltha.VolthaService.UpdateDevice:input_type -> device.UpdateDevice
+	2,  // 82: voltha.VolthaService.GetVoltha:output_type -> voltha.Voltha
+	1,  // 83: voltha.VolthaService.ListCoreInstances:output_type -> voltha.CoreInstances
+	0,  // 84: voltha.VolthaService.GetCoreInstance:output_type -> voltha.CoreInstance
+	33, // 85: voltha.VolthaService.ListAdapters:output_type -> adapter.Adapters
+	34, // 86: voltha.VolthaService.ListLogicalDevices:output_type -> logical_device.LogicalDevices
+	5,  // 87: voltha.VolthaService.GetLogicalDevice:output_type -> logical_device.LogicalDevice
+	35, // 88: voltha.VolthaService.ListLogicalDevicePorts:output_type -> logical_device.LogicalPorts
+	36, // 89: voltha.VolthaService.GetLogicalDevicePort:output_type -> logical_device.LogicalPort
+	11, // 90: voltha.VolthaService.EnableLogicalDevicePort:output_type -> google.protobuf.Empty
+	11, // 91: voltha.VolthaService.DisableLogicalDevicePort:output_type -> google.protobuf.Empty
+	37, // 92: voltha.VolthaService.ListLogicalDeviceFlows:output_type -> openflow_13.Flows
+	11, // 93: voltha.VolthaService.UpdateLogicalDeviceFlowTable:output_type -> google.protobuf.Empty
+	11, // 94: voltha.VolthaService.UpdateLogicalDeviceMeterTable:output_type -> google.protobuf.Empty
+	38, // 95: voltha.VolthaService.ListLogicalDeviceMeters:output_type -> openflow_13.Meters
+	39, // 96: voltha.VolthaService.ListLogicalDeviceFlowGroups:output_type -> openflow_13.FlowGroups
+	11, // 97: voltha.VolthaService.UpdateLogicalDeviceFlowGroupTable:output_type -> google.protobuf.Empty
+	40, // 98: voltha.VolthaService.ListDevices:output_type -> device.Devices
+	17, // 99: voltha.VolthaService.ListDeviceIds:output_type -> common.IDs
+	11, // 100: voltha.VolthaService.ReconcileDevices:output_type -> google.protobuf.Empty
+	6,  // 101: voltha.VolthaService.GetDevice:output_type -> device.Device
+	6,  // 102: voltha.VolthaService.CreateDevice:output_type -> device.Device
+	11, // 103: voltha.VolthaService.EnableDevice:output_type -> google.protobuf.Empty
+	11, // 104: voltha.VolthaService.DisableDevice:output_type -> google.protobuf.Empty
+	11, // 105: voltha.VolthaService.RebootDevice:output_type -> google.protobuf.Empty
+	11, // 106: voltha.VolthaService.DeleteDevice:output_type -> google.protobuf.Empty
+	11, // 107: voltha.VolthaService.ForceDeleteDevice:output_type -> google.protobuf.Empty
+	41, // 108: voltha.VolthaService.DownloadImage:output_type -> common.OperationResp
+	18, // 109: voltha.VolthaService.GetImageDownloadStatus:output_type -> device.ImageDownload
+	18, // 110: voltha.VolthaService.GetImageDownload:output_type -> device.ImageDownload
+	42, // 111: voltha.VolthaService.ListImageDownloads:output_type -> device.ImageDownloads
+	41, // 112: voltha.VolthaService.CancelImageDownload:output_type -> common.OperationResp
+	41, // 113: voltha.VolthaService.ActivateImageUpdate:output_type -> common.OperationResp
+	41, // 114: voltha.VolthaService.RevertImageUpdate:output_type -> common.OperationResp
+	43, // 115: voltha.VolthaService.DownloadImageToDevice:output_type -> device.DeviceImageResponse
+	43, // 116: voltha.VolthaService.GetImageStatus:output_type -> device.DeviceImageResponse
+	43, // 117: voltha.VolthaService.AbortImageUpgradeToDevice:output_type -> device.DeviceImageResponse
+	44, // 118: voltha.VolthaService.GetOnuImages:output_type -> device.OnuImages
+	43, // 119: voltha.VolthaService.ActivateImage:output_type -> device.DeviceImageResponse
+	43, // 120: voltha.VolthaService.CommitImage:output_type -> device.DeviceImageResponse
+	45, // 121: voltha.VolthaService.ListDevicePorts:output_type -> device.Ports
+	21, // 122: voltha.VolthaService.ListDevicePmConfigs:output_type -> device.PmConfigs
+	11, // 123: voltha.VolthaService.UpdateDevicePmConfigs:output_type -> google.protobuf.Empty
+	37, // 124: voltha.VolthaService.ListDeviceFlows:output_type -> openflow_13.Flows
+	39, // 125: voltha.VolthaService.ListDeviceFlowGroups:output_type -> openflow_13.FlowGroups
+	46, // 126: voltha.VolthaService.ListDeviceTypes:output_type -> device.DeviceTypes
+	7,  // 127: voltha.VolthaService.GetDeviceType:output_type -> device.DeviceType
+	11, // 128: voltha.VolthaService.StreamPacketsOut:output_type -> google.protobuf.Empty
+	47, // 129: voltha.VolthaService.ReceivePacketsIn:output_type -> openflow_13.PacketIn
+	48, // 130: voltha.VolthaService.ReceiveChangeEvents:output_type -> openflow_13.ChangeEvent
+	8,  // 131: voltha.VolthaService.CreateEventFilter:output_type -> event.EventFilter
+	49, // 132: voltha.VolthaService.GetEventFilter:output_type -> event.EventFilters
+	8,  // 133: voltha.VolthaService.UpdateEventFilter:output_type -> event.EventFilter
+	11, // 134: voltha.VolthaService.DeleteEventFilter:output_type -> google.protobuf.Empty
+	49, // 135: voltha.VolthaService.ListEventFilters:output_type -> event.EventFilters
+	50, // 136: voltha.VolthaService.GetImages:output_type -> device.Images
+	51, // 137: voltha.VolthaService.SelfTest:output_type -> device.SelfTestResponse
+	9,  // 138: voltha.VolthaService.GetMibDeviceData:output_type -> omci.MibDeviceData
+	10, // 139: voltha.VolthaService.GetAlarmDeviceData:output_type -> omci.AlarmDeviceData
+	41, // 140: voltha.VolthaService.SimulateAlarm:output_type -> common.OperationResp
+	11, // 141: voltha.VolthaService.EnablePort:output_type -> google.protobuf.Empty
+	11, // 142: voltha.VolthaService.DisablePort:output_type -> google.protobuf.Empty
+	52, // 143: voltha.VolthaService.GetExtValue:output_type -> extension.ReturnValues
+	11, // 144: voltha.VolthaService.SetExtValue:output_type -> google.protobuf.Empty
+	53, // 145: voltha.VolthaService.StartOmciTestAction:output_type -> omci.TestResponse
+	11, // 146: voltha.VolthaService.PutVoipSystemProfile:output_type -> google.protobuf.Empty
+	11, // 147: voltha.VolthaService.DeleteVoipSystemProfile:output_type -> google.protobuf.Empty
+	11, // 148: voltha.VolthaService.PutVoipUserProfile:output_type -> google.protobuf.Empty
+	11, // 149: voltha.VolthaService.DeleteVoipUserProfile:output_type -> google.protobuf.Empty
+	11, // 150: voltha.VolthaService.DisableOnuDevice:output_type -> google.protobuf.Empty
+	11, // 151: voltha.VolthaService.EnableOnuDevice:output_type -> google.protobuf.Empty
+	11, // 152: voltha.VolthaService.DisableOnuSerialNumber:output_type -> google.protobuf.Empty
+	11, // 153: voltha.VolthaService.EnableOnuSerialNumber:output_type -> google.protobuf.Empty
+	11, // 154: voltha.VolthaService.UpdateDevice:output_type -> google.protobuf.Empty
+	82, // [82:155] is the sub-list for method output_type
+	9,  // [9:82] is the sub-list for method input_type
+	9,  // [9:9] is the sub-list for extension type_name
+	9,  // [9:9] is the sub-list for extension extendee
+	0,  // [0:9] is the sub-list for field type_name
 }
 
-func (c *volthaServiceClient) GetVoltha(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Voltha, error) {
-	out := new(Voltha)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetVoltha", in, out, opts...)
-	if err != nil {
-		return nil, err
+func init() { file_voltha_protos_voltha_proto_init() }
+func file_voltha_protos_voltha_proto_init() {
+	if File_voltha_protos_voltha_proto != nil {
+		return
 	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListCoreInstances(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*CoreInstances, error) {
-	out := new(CoreInstances)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListCoreInstances", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetCoreInstance(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*CoreInstance, error) {
-	out := new(CoreInstance)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetCoreInstance", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListAdapters(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Adapters, error) {
-	out := new(Adapters)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListAdapters", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListLogicalDevices(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*LogicalDevices, error) {
-	out := new(LogicalDevices)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListLogicalDevices", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetLogicalDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*LogicalDevice, error) {
-	out := new(LogicalDevice)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetLogicalDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListLogicalDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*LogicalPorts, error) {
-	out := new(LogicalPorts)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListLogicalDevicePorts", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*LogicalPort, error) {
-	out := new(LogicalPort)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetLogicalDevicePort", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) EnableLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/EnableLogicalDevicePort", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DisableLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DisableLogicalDevicePort", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListLogicalDeviceFlows(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Flows, error) {
-	out := new(openflow_13.Flows)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListLogicalDeviceFlows", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) UpdateLogicalDeviceFlowTable(ctx context.Context, in *openflow_13.FlowTableUpdate, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/UpdateLogicalDeviceFlowTable", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) UpdateLogicalDeviceMeterTable(ctx context.Context, in *openflow_13.MeterModUpdate, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/UpdateLogicalDeviceMeterTable", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListLogicalDeviceMeters(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Meters, error) {
-	out := new(openflow_13.Meters)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListLogicalDeviceMeters", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListLogicalDeviceFlowGroups(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.FlowGroups, error) {
-	out := new(openflow_13.FlowGroups)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListLogicalDeviceFlowGroups", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) UpdateLogicalDeviceFlowGroupTable(ctx context.Context, in *openflow_13.FlowGroupTableUpdate, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/UpdateLogicalDeviceFlowGroupTable", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListDevices(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Devices, error) {
-	out := new(Devices)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListDevices", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListDeviceIds(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*common.IDs, error) {
-	out := new(common.IDs)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListDeviceIds", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ReconcileDevices(ctx context.Context, in *common.IDs, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ReconcileDevices", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Device, error) {
-	out := new(Device)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) CreateDevice(ctx context.Context, in *Device, opts ...grpc.CallOption) (*Device, error) {
-	out := new(Device)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/CreateDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) EnableDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/EnableDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DisableDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DisableDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) RebootDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/RebootDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DeleteDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DeleteDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ForceDeleteDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ForceDeleteDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// Deprecated: Do not use.
-func (c *volthaServiceClient) DownloadImage(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error) {
-	out := new(common.OperationResp)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DownloadImage", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// Deprecated: Do not use.
-func (c *volthaServiceClient) GetImageDownloadStatus(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*ImageDownload, error) {
-	out := new(ImageDownload)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetImageDownloadStatus", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// Deprecated: Do not use.
-func (c *volthaServiceClient) GetImageDownload(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*ImageDownload, error) {
-	out := new(ImageDownload)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetImageDownload", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// Deprecated: Do not use.
-func (c *volthaServiceClient) ListImageDownloads(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*ImageDownloads, error) {
-	out := new(ImageDownloads)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListImageDownloads", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// Deprecated: Do not use.
-func (c *volthaServiceClient) CancelImageDownload(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error) {
-	out := new(common.OperationResp)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/CancelImageDownload", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// Deprecated: Do not use.
-func (c *volthaServiceClient) ActivateImageUpdate(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error) {
-	out := new(common.OperationResp)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ActivateImageUpdate", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// Deprecated: Do not use.
-func (c *volthaServiceClient) RevertImageUpdate(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error) {
-	out := new(common.OperationResp)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/RevertImageUpdate", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DownloadImageToDevice(ctx context.Context, in *DeviceImageDownloadRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
-	out := new(DeviceImageResponse)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DownloadImageToDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetImageStatus(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
-	out := new(DeviceImageResponse)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetImageStatus", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) AbortImageUpgradeToDevice(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
-	out := new(DeviceImageResponse)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/AbortImageUpgradeToDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetOnuImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*OnuImages, error) {
-	out := new(OnuImages)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetOnuImages", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ActivateImage(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
-	out := new(DeviceImageResponse)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ActivateImage", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) CommitImage(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
-	out := new(DeviceImageResponse)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/CommitImage", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Ports, error) {
-	out := new(Ports)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListDevicePorts", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListDevicePmConfigs(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*PmConfigs, error) {
-	out := new(PmConfigs)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListDevicePmConfigs", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) UpdateDevicePmConfigs(ctx context.Context, in *PmConfigs, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/UpdateDevicePmConfigs", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListDeviceFlows(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Flows, error) {
-	out := new(openflow_13.Flows)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListDeviceFlows", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListDeviceFlowGroups(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.FlowGroups, error) {
-	out := new(openflow_13.FlowGroups)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListDeviceFlowGroups", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListDeviceTypes(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*DeviceTypes, error) {
-	out := new(DeviceTypes)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListDeviceTypes", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetDeviceType(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*DeviceType, error) {
-	out := new(DeviceType)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetDeviceType", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) StreamPacketsOut(ctx context.Context, opts ...grpc.CallOption) (VolthaService_StreamPacketsOutClient, error) {
-	stream, err := c.cc.NewStream(ctx, &_VolthaService_serviceDesc.Streams[0], "/voltha.VolthaService/StreamPacketsOut", opts...)
-	if err != nil {
-		return nil, err
-	}
-	x := &volthaServiceStreamPacketsOutClient{stream}
-	return x, nil
-}
-
-type VolthaService_StreamPacketsOutClient interface {
-	Send(*openflow_13.PacketOut) error
-	CloseAndRecv() (*empty.Empty, error)
-	grpc.ClientStream
-}
-
-type volthaServiceStreamPacketsOutClient struct {
-	grpc.ClientStream
-}
-
-func (x *volthaServiceStreamPacketsOutClient) Send(m *openflow_13.PacketOut) error {
-	return x.ClientStream.SendMsg(m)
-}
-
-func (x *volthaServiceStreamPacketsOutClient) CloseAndRecv() (*empty.Empty, error) {
-	if err := x.ClientStream.CloseSend(); err != nil {
-		return nil, err
-	}
-	m := new(empty.Empty)
-	if err := x.ClientStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-func (c *volthaServiceClient) ReceivePacketsIn(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (VolthaService_ReceivePacketsInClient, error) {
-	stream, err := c.cc.NewStream(ctx, &_VolthaService_serviceDesc.Streams[1], "/voltha.VolthaService/ReceivePacketsIn", opts...)
-	if err != nil {
-		return nil, err
-	}
-	x := &volthaServiceReceivePacketsInClient{stream}
-	if err := x.ClientStream.SendMsg(in); err != nil {
-		return nil, err
-	}
-	if err := x.ClientStream.CloseSend(); err != nil {
-		return nil, err
-	}
-	return x, nil
-}
-
-type VolthaService_ReceivePacketsInClient interface {
-	Recv() (*openflow_13.PacketIn, error)
-	grpc.ClientStream
-}
-
-type volthaServiceReceivePacketsInClient struct {
-	grpc.ClientStream
-}
-
-func (x *volthaServiceReceivePacketsInClient) Recv() (*openflow_13.PacketIn, error) {
-	m := new(openflow_13.PacketIn)
-	if err := x.ClientStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-func (c *volthaServiceClient) ReceiveChangeEvents(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (VolthaService_ReceiveChangeEventsClient, error) {
-	stream, err := c.cc.NewStream(ctx, &_VolthaService_serviceDesc.Streams[2], "/voltha.VolthaService/ReceiveChangeEvents", opts...)
-	if err != nil {
-		return nil, err
-	}
-	x := &volthaServiceReceiveChangeEventsClient{stream}
-	if err := x.ClientStream.SendMsg(in); err != nil {
-		return nil, err
-	}
-	if err := x.ClientStream.CloseSend(); err != nil {
-		return nil, err
-	}
-	return x, nil
-}
-
-type VolthaService_ReceiveChangeEventsClient interface {
-	Recv() (*openflow_13.ChangeEvent, error)
-	grpc.ClientStream
-}
-
-type volthaServiceReceiveChangeEventsClient struct {
-	grpc.ClientStream
-}
-
-func (x *volthaServiceReceiveChangeEventsClient) Recv() (*openflow_13.ChangeEvent, error) {
-	m := new(openflow_13.ChangeEvent)
-	if err := x.ClientStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-func (c *volthaServiceClient) CreateEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*EventFilter, error) {
-	out := new(EventFilter)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/CreateEventFilter", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetEventFilter(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*EventFilters, error) {
-	out := new(EventFilters)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetEventFilter", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) UpdateEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*EventFilter, error) {
-	out := new(EventFilter)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/UpdateEventFilter", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DeleteEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DeleteEventFilter", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListEventFilters(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*EventFilters, error) {
-	out := new(EventFilters)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListEventFilters", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Images, error) {
-	out := new(Images)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetImages", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) SelfTest(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*SelfTestResponse, error) {
-	out := new(SelfTestResponse)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/SelfTest", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetMibDeviceData(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*omci.MibDeviceData, error) {
-	out := new(omci.MibDeviceData)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetMibDeviceData", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetAlarmDeviceData(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*omci.AlarmDeviceData, error) {
-	out := new(omci.AlarmDeviceData)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetAlarmDeviceData", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) SimulateAlarm(ctx context.Context, in *SimulateAlarmRequest, opts ...grpc.CallOption) (*common.OperationResp, error) {
-	out := new(common.OperationResp)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/SimulateAlarm", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) EnablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/EnablePort", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DisablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DisablePort", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetExtValue(ctx context.Context, in *extension.ValueSpecifier, opts ...grpc.CallOption) (*extension.ReturnValues, error) {
-	out := new(extension.ReturnValues)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetExtValue", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) SetExtValue(ctx context.Context, in *extension.ValueSet, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/SetExtValue", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) StartOmciTestAction(ctx context.Context, in *omci.OmciTestRequest, opts ...grpc.CallOption) (*omci.TestResponse, error) {
-	out := new(omci.TestResponse)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/StartOmciTestAction", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) PutVoipSystemProfile(ctx context.Context, in *voip_system_profile.VoipSystemProfileRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/PutVoipSystemProfile", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DeleteVoipSystemProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DeleteVoipSystemProfile", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) PutVoipUserProfile(ctx context.Context, in *voip_user_profile.VoipUserProfileRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/PutVoipUserProfile", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DeleteVoipUserProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DeleteVoipUserProfile", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DisableOnuDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DisableOnuDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) EnableOnuDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/EnableOnuDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DisableOnuSerialNumber(ctx context.Context, in *OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DisableOnuSerialNumber", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) EnableOnuSerialNumber(ctx context.Context, in *OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/EnableOnuSerialNumber", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) UpdateDevice(ctx context.Context, in *UpdateDevice, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/UpdateDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// VolthaServiceServer is the server API for VolthaService service.
-type VolthaServiceServer interface {
-	// Get high level information on the Voltha cluster
-	GetVoltha(context.Context, *empty.Empty) (*Voltha, error)
-	// List all Voltha cluster core instances
-	ListCoreInstances(context.Context, *empty.Empty) (*CoreInstances, error)
-	// Get details on a Voltha cluster instance
-	GetCoreInstance(context.Context, *common.ID) (*CoreInstance, error)
-	// List all active adapters (plugins) in the Voltha cluster
-	ListAdapters(context.Context, *empty.Empty) (*Adapters, error)
-	// List all logical devices managed by the Voltha cluster
-	ListLogicalDevices(context.Context, *empty.Empty) (*LogicalDevices, error)
-	// Get additional information on a given logical device
-	GetLogicalDevice(context.Context, *common.ID) (*LogicalDevice, error)
-	// List ports of a logical device
-	ListLogicalDevicePorts(context.Context, *common.ID) (*LogicalPorts, error)
-	// Gets a logical device port
-	GetLogicalDevicePort(context.Context, *LogicalPortId) (*LogicalPort, error)
-	// Enables a logical device port
-	EnableLogicalDevicePort(context.Context, *LogicalPortId) (*empty.Empty, error)
-	// Disables a logical device port
-	DisableLogicalDevicePort(context.Context, *LogicalPortId) (*empty.Empty, error)
-	// List all flows of a logical device
-	ListLogicalDeviceFlows(context.Context, *common.ID) (*openflow_13.Flows, error)
-	// Update flow table for logical device
-	UpdateLogicalDeviceFlowTable(context.Context, *openflow_13.FlowTableUpdate) (*empty.Empty, error)
-	// Update meter table for logical device
-	UpdateLogicalDeviceMeterTable(context.Context, *openflow_13.MeterModUpdate) (*empty.Empty, error)
-	// List all meters of a logical device
-	ListLogicalDeviceMeters(context.Context, *common.ID) (*openflow_13.Meters, error)
-	// List all flow groups of a logical device
-	ListLogicalDeviceFlowGroups(context.Context, *common.ID) (*openflow_13.FlowGroups, error)
-	// Update group table for device
-	UpdateLogicalDeviceFlowGroupTable(context.Context, *openflow_13.FlowGroupTableUpdate) (*empty.Empty, error)
-	// List all physical devices controlled by the Voltha cluster
-	ListDevices(context.Context, *empty.Empty) (*Devices, error)
-	// List all physical devices IDs controlled by the Voltha cluster
-	ListDeviceIds(context.Context, *empty.Empty) (*common.IDs, error)
-	// Request to a voltha Core to reconcile a set of devices based on their IDs
-	ReconcileDevices(context.Context, *common.IDs) (*empty.Empty, error)
-	// Get more information on a given physical device
-	GetDevice(context.Context, *common.ID) (*Device, error)
-	// Pre-provision a new physical device
-	CreateDevice(context.Context, *Device) (*Device, error)
-	// Enable a device.  If the device was in pre-provisioned state then it
-	// will transition to ENABLED state.  If it was is DISABLED state then it
-	// will transition to ENABLED state as well.
-	EnableDevice(context.Context, *common.ID) (*empty.Empty, error)
-	// Disable a device
-	DisableDevice(context.Context, *common.ID) (*empty.Empty, error)
-	// Reboot a device
-	RebootDevice(context.Context, *common.ID) (*empty.Empty, error)
-	// Delete a device
-	DeleteDevice(context.Context, *common.ID) (*empty.Empty, error)
-	// Forcefully delete a device
-	ForceDeleteDevice(context.Context, *common.ID) (*empty.Empty, error)
-	// Request an image download to the standby partition
-	// of a device.
-	// Note that the call is expected to be non-blocking.
-	DownloadImage(context.Context, *ImageDownload) (*common.OperationResp, error)
-	// Get image download status on a device
-	// The request retrieves progress on device and updates db record
-	// Deprecated in voltha 2.8, will be removed
-	GetImageDownloadStatus(context.Context, *ImageDownload) (*ImageDownload, error)
-	// Get image download db record
-	// Deprecated in voltha 2.8, will be removed
-	GetImageDownload(context.Context, *ImageDownload) (*ImageDownload, error)
-	// List image download db records for a given device
-	// Deprecated in voltha 2.8, will be removed
-	ListImageDownloads(context.Context, *common.ID) (*ImageDownloads, error)
-	// Cancel an existing image download process on a device
-	// Deprecated in voltha 2.8, will be removed
-	CancelImageDownload(context.Context, *ImageDownload) (*common.OperationResp, error)
-	// Activate the specified image at a standby partition
-	// to active partition.
-	// Depending on the device implementation, this call
-	// may or may not cause device reboot.
-	// If no reboot, then a reboot is required to make the
-	// activated image running on device
-	// Note that the call is expected to be non-blocking.
-	// Deprecated in voltha 2.8, will be removed
-	ActivateImageUpdate(context.Context, *ImageDownload) (*common.OperationResp, error)
-	// Revert the specified image at standby partition
-	// to active partition, and revert to previous image
-	// Depending on the device implementation, this call
-	// may or may not cause device reboot.
-	// If no reboot, then a reboot is required to make the
-	// previous image running on device
-	// Note that the call is expected to be non-blocking.
-	// Deprecated in voltha 2.8, will be removed
-	RevertImageUpdate(context.Context, *ImageDownload) (*common.OperationResp, error)
-	// Downloads a certain image to the standby partition of the devices
-	// Note that the call is expected to be non-blocking.
-	DownloadImageToDevice(context.Context, *DeviceImageDownloadRequest) (*DeviceImageResponse, error)
-	// Get image status on a number of devices devices
-	// Polled from northbound systems to get state of download/activate/commit
-	GetImageStatus(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error)
-	// Aborts the upgrade of an image on a device
-	// To be used carefully, stops any further operations for the Image on the given devices
-	// Might also stop if possible existing work, but no guarantees are given,
-	// depends on implementation and procedure status.
-	AbortImageUpgradeToDevice(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error)
-	// Get Both Active and Standby image for a given device
-	GetOnuImages(context.Context, *common.ID) (*OnuImages, error)
-	// Activate the specified image from a standby partition
-	// to active partition.
-	// Depending on the device implementation, this call
-	// may or may not cause device reboot.
-	// If no reboot, then a reboot is required to make the
-	// activated image running on device
-	// Note that the call is expected to be non-blocking.
-	ActivateImage(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error)
-	// Commit the specified image to be default.
-	// Depending on the device implementation, this call
-	// may or may not cause device reboot.
-	// If no reboot, then a reboot is required to make the
-	// activated image running on device upon next reboot
-	// Note that the call is expected to be non-blocking.
-	CommitImage(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error)
-	// List ports of a device
-	ListDevicePorts(context.Context, *common.ID) (*Ports, error)
-	// List pm config of a device
-	ListDevicePmConfigs(context.Context, *common.ID) (*PmConfigs, error)
-	// Update the pm config of a device
-	UpdateDevicePmConfigs(context.Context, *PmConfigs) (*empty.Empty, error)
-	// List all flows of a device
-	ListDeviceFlows(context.Context, *common.ID) (*openflow_13.Flows, error)
-	// List all flow groups of a device
-	ListDeviceFlowGroups(context.Context, *common.ID) (*openflow_13.FlowGroups, error)
-	// List device types known to Voltha
-	ListDeviceTypes(context.Context, *empty.Empty) (*DeviceTypes, error)
-	// Get additional information on a device type
-	GetDeviceType(context.Context, *common.ID) (*DeviceType, error)
-	// Stream control packets to the dataplane
-	StreamPacketsOut(VolthaService_StreamPacketsOutServer) error
-	// Receive control packet stream
-	ReceivePacketsIn(*empty.Empty, VolthaService_ReceivePacketsInServer) error
-	ReceiveChangeEvents(*empty.Empty, VolthaService_ReceiveChangeEventsServer) error
-	CreateEventFilter(context.Context, *EventFilter) (*EventFilter, error)
-	// Get all filters present for a device
-	GetEventFilter(context.Context, *common.ID) (*EventFilters, error)
-	UpdateEventFilter(context.Context, *EventFilter) (*EventFilter, error)
-	DeleteEventFilter(context.Context, *EventFilter) (*empty.Empty, error)
-	// Get all the filters present
-	ListEventFilters(context.Context, *empty.Empty) (*EventFilters, error)
-	GetImages(context.Context, *common.ID) (*Images, error)
-	SelfTest(context.Context, *common.ID) (*SelfTestResponse, error)
-	// OpenOMCI MIB information
-	GetMibDeviceData(context.Context, *common.ID) (*omci.MibDeviceData, error)
-	// OpenOMCI ALARM information
-	GetAlarmDeviceData(context.Context, *common.ID) (*omci.AlarmDeviceData, error)
-	// Simulate an Alarm
-	SimulateAlarm(context.Context, *SimulateAlarmRequest) (*common.OperationResp, error)
-	EnablePort(context.Context, *Port) (*empty.Empty, error)
-	DisablePort(context.Context, *Port) (*empty.Empty, error)
-	GetExtValue(context.Context, *extension.ValueSpecifier) (*extension.ReturnValues, error)
-	SetExtValue(context.Context, *extension.ValueSet) (*empty.Empty, error)
-	// omci start and stop cli implementation
-	StartOmciTestAction(context.Context, *omci.OmciTestRequest) (*omci.TestResponse, error)
-	// Saves or updates system wide configuration into voltha KV
-	PutVoipSystemProfile(context.Context, *voip_system_profile.VoipSystemProfileRequest) (*empty.Empty, error)
-	// Deletes the given profile from voltha KV
-	DeleteVoipSystemProfile(context.Context, *common.Key) (*empty.Empty, error)
-	// Saves or updates a profile (VOIP) into voltha KV
-	PutVoipUserProfile(context.Context, *voip_user_profile.VoipUserProfileRequest) (*empty.Empty, error)
-	// Deletes the given profile from voltha KV
-	DeleteVoipUserProfile(context.Context, *common.Key) (*empty.Empty, error)
-	// Disables the ONU, stops it from participating in the ranging process. different from DisableDevice
-	DisableOnuDevice(context.Context, *common.ID) (*empty.Empty, error)
-	// Enables the ONU at the PLOAM , enables the ONU to participate in the ranging process. different from EnableDevice
-	EnableOnuDevice(context.Context, *common.ID) (*empty.Empty, error)
-	// Disables the ONU at the PLOAM , different from DisableDevice. This would be used if the Device is not present in the VOLTHA
-	DisableOnuSerialNumber(context.Context, *OnuSerialNumberOnOLTPon) (*empty.Empty, error)
-	// Disables the ONU at the PLOAM , different from EnableDevice. This would be used if the Device is not present in the VOLTHA
-	EnableOnuSerialNumber(context.Context, *OnuSerialNumberOnOLTPon) (*empty.Empty, error)
-	// Update the Device configuration, for now only ip address updation is supported
-	UpdateDevice(context.Context, *UpdateDevice) (*empty.Empty, error)
-}
-
-// UnimplementedVolthaServiceServer can be embedded to have forward compatible implementations.
-type UnimplementedVolthaServiceServer struct {
-}
-
-func (*UnimplementedVolthaServiceServer) GetVoltha(ctx context.Context, req *empty.Empty) (*Voltha, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetVoltha not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListCoreInstances(ctx context.Context, req *empty.Empty) (*CoreInstances, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListCoreInstances not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetCoreInstance(ctx context.Context, req *common.ID) (*CoreInstance, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetCoreInstance not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListAdapters(ctx context.Context, req *empty.Empty) (*Adapters, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListAdapters not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListLogicalDevices(ctx context.Context, req *empty.Empty) (*LogicalDevices, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListLogicalDevices not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetLogicalDevice(ctx context.Context, req *common.ID) (*LogicalDevice, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetLogicalDevice not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListLogicalDevicePorts(ctx context.Context, req *common.ID) (*LogicalPorts, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListLogicalDevicePorts not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetLogicalDevicePort(ctx context.Context, req *LogicalPortId) (*LogicalPort, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetLogicalDevicePort not implemented")
-}
-func (*UnimplementedVolthaServiceServer) EnableLogicalDevicePort(ctx context.Context, req *LogicalPortId) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method EnableLogicalDevicePort not implemented")
-}
-func (*UnimplementedVolthaServiceServer) DisableLogicalDevicePort(ctx context.Context, req *LogicalPortId) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DisableLogicalDevicePort not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListLogicalDeviceFlows(ctx context.Context, req *common.ID) (*openflow_13.Flows, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListLogicalDeviceFlows not implemented")
-}
-func (*UnimplementedVolthaServiceServer) UpdateLogicalDeviceFlowTable(ctx context.Context, req *openflow_13.FlowTableUpdate) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method UpdateLogicalDeviceFlowTable not implemented")
-}
-func (*UnimplementedVolthaServiceServer) UpdateLogicalDeviceMeterTable(ctx context.Context, req *openflow_13.MeterModUpdate) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method UpdateLogicalDeviceMeterTable not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListLogicalDeviceMeters(ctx context.Context, req *common.ID) (*openflow_13.Meters, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListLogicalDeviceMeters not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListLogicalDeviceFlowGroups(ctx context.Context, req *common.ID) (*openflow_13.FlowGroups, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListLogicalDeviceFlowGroups not implemented")
-}
-func (*UnimplementedVolthaServiceServer) UpdateLogicalDeviceFlowGroupTable(ctx context.Context, req *openflow_13.FlowGroupTableUpdate) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method UpdateLogicalDeviceFlowGroupTable not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListDevices(ctx context.Context, req *empty.Empty) (*Devices, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListDevices not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListDeviceIds(ctx context.Context, req *empty.Empty) (*common.IDs, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListDeviceIds not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ReconcileDevices(ctx context.Context, req *common.IDs) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ReconcileDevices not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetDevice(ctx context.Context, req *common.ID) (*Device, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetDevice not implemented")
-}
-func (*UnimplementedVolthaServiceServer) CreateDevice(ctx context.Context, req *Device) (*Device, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method CreateDevice not implemented")
-}
-func (*UnimplementedVolthaServiceServer) EnableDevice(ctx context.Context, req *common.ID) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method EnableDevice not implemented")
-}
-func (*UnimplementedVolthaServiceServer) DisableDevice(ctx context.Context, req *common.ID) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DisableDevice not implemented")
-}
-func (*UnimplementedVolthaServiceServer) RebootDevice(ctx context.Context, req *common.ID) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method RebootDevice not implemented")
-}
-func (*UnimplementedVolthaServiceServer) DeleteDevice(ctx context.Context, req *common.ID) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DeleteDevice not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ForceDeleteDevice(ctx context.Context, req *common.ID) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ForceDeleteDevice not implemented")
-}
-func (*UnimplementedVolthaServiceServer) DownloadImage(ctx context.Context, req *ImageDownload) (*common.OperationResp, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DownloadImage not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetImageDownloadStatus(ctx context.Context, req *ImageDownload) (*ImageDownload, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetImageDownloadStatus not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetImageDownload(ctx context.Context, req *ImageDownload) (*ImageDownload, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetImageDownload not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListImageDownloads(ctx context.Context, req *common.ID) (*ImageDownloads, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListImageDownloads not implemented")
-}
-func (*UnimplementedVolthaServiceServer) CancelImageDownload(ctx context.Context, req *ImageDownload) (*common.OperationResp, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method CancelImageDownload not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ActivateImageUpdate(ctx context.Context, req *ImageDownload) (*common.OperationResp, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ActivateImageUpdate not implemented")
-}
-func (*UnimplementedVolthaServiceServer) RevertImageUpdate(ctx context.Context, req *ImageDownload) (*common.OperationResp, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method RevertImageUpdate not implemented")
-}
-func (*UnimplementedVolthaServiceServer) DownloadImageToDevice(ctx context.Context, req *DeviceImageDownloadRequest) (*DeviceImageResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DownloadImageToDevice not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetImageStatus(ctx context.Context, req *DeviceImageRequest) (*DeviceImageResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetImageStatus not implemented")
-}
-func (*UnimplementedVolthaServiceServer) AbortImageUpgradeToDevice(ctx context.Context, req *DeviceImageRequest) (*DeviceImageResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method AbortImageUpgradeToDevice not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetOnuImages(ctx context.Context, req *common.ID) (*OnuImages, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetOnuImages not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ActivateImage(ctx context.Context, req *DeviceImageRequest) (*DeviceImageResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ActivateImage not implemented")
-}
-func (*UnimplementedVolthaServiceServer) CommitImage(ctx context.Context, req *DeviceImageRequest) (*DeviceImageResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method CommitImage not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListDevicePorts(ctx context.Context, req *common.ID) (*Ports, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListDevicePorts not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListDevicePmConfigs(ctx context.Context, req *common.ID) (*PmConfigs, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListDevicePmConfigs not implemented")
-}
-func (*UnimplementedVolthaServiceServer) UpdateDevicePmConfigs(ctx context.Context, req *PmConfigs) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method UpdateDevicePmConfigs not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListDeviceFlows(ctx context.Context, req *common.ID) (*openflow_13.Flows, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListDeviceFlows not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListDeviceFlowGroups(ctx context.Context, req *common.ID) (*openflow_13.FlowGroups, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListDeviceFlowGroups not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListDeviceTypes(ctx context.Context, req *empty.Empty) (*DeviceTypes, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListDeviceTypes not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetDeviceType(ctx context.Context, req *common.ID) (*DeviceType, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetDeviceType not implemented")
-}
-func (*UnimplementedVolthaServiceServer) StreamPacketsOut(srv VolthaService_StreamPacketsOutServer) error {
-	return status.Errorf(codes.Unimplemented, "method StreamPacketsOut not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ReceivePacketsIn(req *empty.Empty, srv VolthaService_ReceivePacketsInServer) error {
-	return status.Errorf(codes.Unimplemented, "method ReceivePacketsIn not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ReceiveChangeEvents(req *empty.Empty, srv VolthaService_ReceiveChangeEventsServer) error {
-	return status.Errorf(codes.Unimplemented, "method ReceiveChangeEvents not implemented")
-}
-func (*UnimplementedVolthaServiceServer) CreateEventFilter(ctx context.Context, req *EventFilter) (*EventFilter, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method CreateEventFilter not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetEventFilter(ctx context.Context, req *common.ID) (*EventFilters, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetEventFilter not implemented")
-}
-func (*UnimplementedVolthaServiceServer) UpdateEventFilter(ctx context.Context, req *EventFilter) (*EventFilter, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method UpdateEventFilter not implemented")
-}
-func (*UnimplementedVolthaServiceServer) DeleteEventFilter(ctx context.Context, req *EventFilter) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DeleteEventFilter not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListEventFilters(ctx context.Context, req *empty.Empty) (*EventFilters, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListEventFilters not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetImages(ctx context.Context, req *common.ID) (*Images, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetImages not implemented")
-}
-func (*UnimplementedVolthaServiceServer) SelfTest(ctx context.Context, req *common.ID) (*SelfTestResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method SelfTest not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetMibDeviceData(ctx context.Context, req *common.ID) (*omci.MibDeviceData, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetMibDeviceData not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetAlarmDeviceData(ctx context.Context, req *common.ID) (*omci.AlarmDeviceData, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetAlarmDeviceData not implemented")
-}
-func (*UnimplementedVolthaServiceServer) SimulateAlarm(ctx context.Context, req *SimulateAlarmRequest) (*common.OperationResp, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method SimulateAlarm not implemented")
-}
-func (*UnimplementedVolthaServiceServer) EnablePort(ctx context.Context, req *Port) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method EnablePort not implemented")
-}
-func (*UnimplementedVolthaServiceServer) DisablePort(ctx context.Context, req *Port) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DisablePort not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetExtValue(ctx context.Context, req *extension.ValueSpecifier) (*extension.ReturnValues, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetExtValue not implemented")
-}
-func (*UnimplementedVolthaServiceServer) SetExtValue(ctx context.Context, req *extension.ValueSet) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method SetExtValue not implemented")
-}
-func (*UnimplementedVolthaServiceServer) StartOmciTestAction(ctx context.Context, req *omci.OmciTestRequest) (*omci.TestResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method StartOmciTestAction not implemented")
-}
-func (*UnimplementedVolthaServiceServer) PutVoipSystemProfile(ctx context.Context, req *voip_system_profile.VoipSystemProfileRequest) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method PutVoipSystemProfile not implemented")
-}
-func (*UnimplementedVolthaServiceServer) DeleteVoipSystemProfile(ctx context.Context, req *common.Key) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DeleteVoipSystemProfile not implemented")
-}
-func (*UnimplementedVolthaServiceServer) PutVoipUserProfile(ctx context.Context, req *voip_user_profile.VoipUserProfileRequest) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method PutVoipUserProfile not implemented")
-}
-func (*UnimplementedVolthaServiceServer) DeleteVoipUserProfile(ctx context.Context, req *common.Key) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DeleteVoipUserProfile not implemented")
-}
-func (*UnimplementedVolthaServiceServer) DisableOnuDevice(ctx context.Context, req *common.ID) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DisableOnuDevice not implemented")
-}
-func (*UnimplementedVolthaServiceServer) EnableOnuDevice(ctx context.Context, req *common.ID) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method EnableOnuDevice not implemented")
-}
-func (*UnimplementedVolthaServiceServer) DisableOnuSerialNumber(ctx context.Context, req *OnuSerialNumberOnOLTPon) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DisableOnuSerialNumber not implemented")
-}
-func (*UnimplementedVolthaServiceServer) EnableOnuSerialNumber(ctx context.Context, req *OnuSerialNumberOnOLTPon) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method EnableOnuSerialNumber not implemented")
-}
-func (*UnimplementedVolthaServiceServer) UpdateDevice(ctx context.Context, req *UpdateDevice) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method UpdateDevice not implemented")
-}
-
-func RegisterVolthaServiceServer(s *grpc.Server, srv VolthaServiceServer) {
-	s.RegisterService(&_VolthaService_serviceDesc, srv)
-}
-
-func _VolthaService_GetVoltha_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.(VolthaServiceServer).GetVoltha(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetVoltha",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetVoltha(ctx, req.(*empty.Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListCoreInstances_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.(VolthaServiceServer).ListCoreInstances(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListCoreInstances",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListCoreInstances(ctx, req.(*empty.Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetCoreInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetCoreInstance(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetCoreInstance",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetCoreInstance(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListAdapters_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.(VolthaServiceServer).ListAdapters(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListAdapters",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListAdapters(ctx, req.(*empty.Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListLogicalDevices_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.(VolthaServiceServer).ListLogicalDevices(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListLogicalDevices",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListLogicalDevices(ctx, req.(*empty.Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetLogicalDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetLogicalDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetLogicalDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetLogicalDevice(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListLogicalDevicePorts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListLogicalDevicePorts(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListLogicalDevicePorts",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListLogicalDevicePorts(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetLogicalDevicePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(LogicalPortId)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetLogicalDevicePort(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetLogicalDevicePort",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetLogicalDevicePort(ctx, req.(*LogicalPortId))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_EnableLogicalDevicePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(LogicalPortId)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).EnableLogicalDevicePort(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/EnableLogicalDevicePort",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).EnableLogicalDevicePort(ctx, req.(*LogicalPortId))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DisableLogicalDevicePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(LogicalPortId)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DisableLogicalDevicePort(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DisableLogicalDevicePort",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DisableLogicalDevicePort(ctx, req.(*LogicalPortId))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListLogicalDeviceFlows_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListLogicalDeviceFlows(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListLogicalDeviceFlows",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListLogicalDeviceFlows(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_UpdateLogicalDeviceFlowTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(openflow_13.FlowTableUpdate)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).UpdateLogicalDeviceFlowTable(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/UpdateLogicalDeviceFlowTable",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).UpdateLogicalDeviceFlowTable(ctx, req.(*openflow_13.FlowTableUpdate))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_UpdateLogicalDeviceMeterTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(openflow_13.MeterModUpdate)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).UpdateLogicalDeviceMeterTable(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/UpdateLogicalDeviceMeterTable",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).UpdateLogicalDeviceMeterTable(ctx, req.(*openflow_13.MeterModUpdate))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListLogicalDeviceMeters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListLogicalDeviceMeters(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListLogicalDeviceMeters",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListLogicalDeviceMeters(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListLogicalDeviceFlowGroups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListLogicalDeviceFlowGroups(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListLogicalDeviceFlowGroups",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListLogicalDeviceFlowGroups(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_UpdateLogicalDeviceFlowGroupTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(openflow_13.FlowGroupTableUpdate)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).UpdateLogicalDeviceFlowGroupTable(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/UpdateLogicalDeviceFlowGroupTable",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).UpdateLogicalDeviceFlowGroupTable(ctx, req.(*openflow_13.FlowGroupTableUpdate))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListDevices_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.(VolthaServiceServer).ListDevices(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListDevices",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListDevices(ctx, req.(*empty.Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListDeviceIds_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.(VolthaServiceServer).ListDeviceIds(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListDeviceIds",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListDeviceIds(ctx, req.(*empty.Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ReconcileDevices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.IDs)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ReconcileDevices(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ReconcileDevices",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ReconcileDevices(ctx, req.(*common.IDs))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetDevice(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_CreateDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(Device)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).CreateDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/CreateDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).CreateDevice(ctx, req.(*Device))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_EnableDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).EnableDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/EnableDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).EnableDevice(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DisableDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DisableDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DisableDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DisableDevice(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_RebootDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).RebootDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/RebootDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).RebootDevice(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DeleteDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DeleteDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DeleteDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DeleteDevice(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ForceDeleteDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ForceDeleteDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ForceDeleteDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ForceDeleteDevice(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DownloadImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(ImageDownload)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DownloadImage(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DownloadImage",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DownloadImage(ctx, req.(*ImageDownload))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetImageDownloadStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(ImageDownload)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetImageDownloadStatus(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetImageDownloadStatus",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetImageDownloadStatus(ctx, req.(*ImageDownload))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetImageDownload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(ImageDownload)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetImageDownload(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetImageDownload",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetImageDownload(ctx, req.(*ImageDownload))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListImageDownloads_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListImageDownloads(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListImageDownloads",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListImageDownloads(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_CancelImageDownload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(ImageDownload)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).CancelImageDownload(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/CancelImageDownload",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).CancelImageDownload(ctx, req.(*ImageDownload))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ActivateImageUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(ImageDownload)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ActivateImageUpdate(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ActivateImageUpdate",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ActivateImageUpdate(ctx, req.(*ImageDownload))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_RevertImageUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(ImageDownload)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).RevertImageUpdate(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/RevertImageUpdate",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).RevertImageUpdate(ctx, req.(*ImageDownload))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DownloadImageToDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(DeviceImageDownloadRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DownloadImageToDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DownloadImageToDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DownloadImageToDevice(ctx, req.(*DeviceImageDownloadRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetImageStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(DeviceImageRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetImageStatus(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetImageStatus",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetImageStatus(ctx, req.(*DeviceImageRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_AbortImageUpgradeToDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(DeviceImageRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).AbortImageUpgradeToDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/AbortImageUpgradeToDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).AbortImageUpgradeToDevice(ctx, req.(*DeviceImageRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetOnuImages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetOnuImages(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetOnuImages",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetOnuImages(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ActivateImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(DeviceImageRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ActivateImage(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ActivateImage",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ActivateImage(ctx, req.(*DeviceImageRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_CommitImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(DeviceImageRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).CommitImage(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/CommitImage",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).CommitImage(ctx, req.(*DeviceImageRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListDevicePorts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListDevicePorts(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListDevicePorts",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListDevicePorts(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListDevicePmConfigs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListDevicePmConfigs(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListDevicePmConfigs",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListDevicePmConfigs(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_UpdateDevicePmConfigs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(PmConfigs)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).UpdateDevicePmConfigs(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/UpdateDevicePmConfigs",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).UpdateDevicePmConfigs(ctx, req.(*PmConfigs))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListDeviceFlows_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListDeviceFlows(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListDeviceFlows",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListDeviceFlows(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListDeviceFlowGroups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListDeviceFlowGroups(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListDeviceFlowGroups",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListDeviceFlowGroups(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListDeviceTypes_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.(VolthaServiceServer).ListDeviceTypes(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListDeviceTypes",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListDeviceTypes(ctx, req.(*empty.Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetDeviceType_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetDeviceType(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetDeviceType",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetDeviceType(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_StreamPacketsOut_Handler(srv interface{}, stream grpc.ServerStream) error {
-	return srv.(VolthaServiceServer).StreamPacketsOut(&volthaServiceStreamPacketsOutServer{stream})
-}
-
-type VolthaService_StreamPacketsOutServer interface {
-	SendAndClose(*empty.Empty) error
-	Recv() (*openflow_13.PacketOut, error)
-	grpc.ServerStream
-}
-
-type volthaServiceStreamPacketsOutServer struct {
-	grpc.ServerStream
-}
-
-func (x *volthaServiceStreamPacketsOutServer) SendAndClose(m *empty.Empty) error {
-	return x.ServerStream.SendMsg(m)
-}
-
-func (x *volthaServiceStreamPacketsOutServer) Recv() (*openflow_13.PacketOut, error) {
-	m := new(openflow_13.PacketOut)
-	if err := x.ServerStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-func _VolthaService_ReceivePacketsIn_Handler(srv interface{}, stream grpc.ServerStream) error {
-	m := new(empty.Empty)
-	if err := stream.RecvMsg(m); err != nil {
-		return err
-	}
-	return srv.(VolthaServiceServer).ReceivePacketsIn(m, &volthaServiceReceivePacketsInServer{stream})
-}
-
-type VolthaService_ReceivePacketsInServer interface {
-	Send(*openflow_13.PacketIn) error
-	grpc.ServerStream
-}
-
-type volthaServiceReceivePacketsInServer struct {
-	grpc.ServerStream
-}
-
-func (x *volthaServiceReceivePacketsInServer) Send(m *openflow_13.PacketIn) error {
-	return x.ServerStream.SendMsg(m)
-}
-
-func _VolthaService_ReceiveChangeEvents_Handler(srv interface{}, stream grpc.ServerStream) error {
-	m := new(empty.Empty)
-	if err := stream.RecvMsg(m); err != nil {
-		return err
-	}
-	return srv.(VolthaServiceServer).ReceiveChangeEvents(m, &volthaServiceReceiveChangeEventsServer{stream})
-}
-
-type VolthaService_ReceiveChangeEventsServer interface {
-	Send(*openflow_13.ChangeEvent) error
-	grpc.ServerStream
-}
-
-type volthaServiceReceiveChangeEventsServer struct {
-	grpc.ServerStream
-}
-
-func (x *volthaServiceReceiveChangeEventsServer) Send(m *openflow_13.ChangeEvent) error {
-	return x.ServerStream.SendMsg(m)
-}
-
-func _VolthaService_CreateEventFilter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(EventFilter)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).CreateEventFilter(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/CreateEventFilter",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).CreateEventFilter(ctx, req.(*EventFilter))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetEventFilter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetEventFilter(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetEventFilter",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetEventFilter(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_UpdateEventFilter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(EventFilter)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).UpdateEventFilter(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/UpdateEventFilter",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).UpdateEventFilter(ctx, req.(*EventFilter))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DeleteEventFilter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(EventFilter)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DeleteEventFilter(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DeleteEventFilter",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DeleteEventFilter(ctx, req.(*EventFilter))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListEventFilters_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.(VolthaServiceServer).ListEventFilters(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListEventFilters",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListEventFilters(ctx, req.(*empty.Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetImages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetImages(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetImages",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetImages(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_SelfTest_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).SelfTest(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/SelfTest",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).SelfTest(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetMibDeviceData_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetMibDeviceData(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetMibDeviceData",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetMibDeviceData(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetAlarmDeviceData_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetAlarmDeviceData(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetAlarmDeviceData",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetAlarmDeviceData(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_SimulateAlarm_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(SimulateAlarmRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).SimulateAlarm(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/SimulateAlarm",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).SimulateAlarm(ctx, req.(*SimulateAlarmRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_EnablePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(Port)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).EnablePort(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/EnablePort",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).EnablePort(ctx, req.(*Port))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DisablePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(Port)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DisablePort(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DisablePort",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DisablePort(ctx, req.(*Port))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetExtValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(extension.ValueSpecifier)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetExtValue(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetExtValue",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetExtValue(ctx, req.(*extension.ValueSpecifier))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_SetExtValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(extension.ValueSet)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).SetExtValue(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/SetExtValue",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).SetExtValue(ctx, req.(*extension.ValueSet))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_StartOmciTestAction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(omci.OmciTestRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).StartOmciTestAction(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/StartOmciTestAction",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).StartOmciTestAction(ctx, req.(*omci.OmciTestRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_PutVoipSystemProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voip_system_profile.VoipSystemProfileRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).PutVoipSystemProfile(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/PutVoipSystemProfile",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).PutVoipSystemProfile(ctx, req.(*voip_system_profile.VoipSystemProfileRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DeleteVoipSystemProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.Key)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DeleteVoipSystemProfile(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DeleteVoipSystemProfile",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DeleteVoipSystemProfile(ctx, req.(*common.Key))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_PutVoipUserProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voip_user_profile.VoipUserProfileRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).PutVoipUserProfile(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/PutVoipUserProfile",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).PutVoipUserProfile(ctx, req.(*voip_user_profile.VoipUserProfileRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DeleteVoipUserProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.Key)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DeleteVoipUserProfile(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DeleteVoipUserProfile",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DeleteVoipUserProfile(ctx, req.(*common.Key))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DisableOnuDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DisableOnuDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DisableOnuDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DisableOnuDevice(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_EnableOnuDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).EnableOnuDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/EnableOnuDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).EnableOnuDevice(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DisableOnuSerialNumber_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(OnuSerialNumberOnOLTPon)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DisableOnuSerialNumber(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DisableOnuSerialNumber",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DisableOnuSerialNumber(ctx, req.(*OnuSerialNumberOnOLTPon))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_EnableOnuSerialNumber_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(OnuSerialNumberOnOLTPon)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).EnableOnuSerialNumber(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/EnableOnuSerialNumber",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).EnableOnuSerialNumber(ctx, req.(*OnuSerialNumberOnOLTPon))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_UpdateDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(UpdateDevice)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).UpdateDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/UpdateDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).UpdateDevice(ctx, req.(*UpdateDevice))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-var _VolthaService_serviceDesc = grpc.ServiceDesc{
-	ServiceName: "voltha.VolthaService",
-	HandlerType: (*VolthaServiceServer)(nil),
-	Methods: []grpc.MethodDesc{
-		{
-			MethodName: "GetVoltha",
-			Handler:    _VolthaService_GetVoltha_Handler,
-		},
-		{
-			MethodName: "ListCoreInstances",
-			Handler:    _VolthaService_ListCoreInstances_Handler,
-		},
-		{
-			MethodName: "GetCoreInstance",
-			Handler:    _VolthaService_GetCoreInstance_Handler,
-		},
-		{
-			MethodName: "ListAdapters",
-			Handler:    _VolthaService_ListAdapters_Handler,
-		},
-		{
-			MethodName: "ListLogicalDevices",
-			Handler:    _VolthaService_ListLogicalDevices_Handler,
-		},
-		{
-			MethodName: "GetLogicalDevice",
-			Handler:    _VolthaService_GetLogicalDevice_Handler,
-		},
-		{
-			MethodName: "ListLogicalDevicePorts",
-			Handler:    _VolthaService_ListLogicalDevicePorts_Handler,
-		},
-		{
-			MethodName: "GetLogicalDevicePort",
-			Handler:    _VolthaService_GetLogicalDevicePort_Handler,
-		},
-		{
-			MethodName: "EnableLogicalDevicePort",
-			Handler:    _VolthaService_EnableLogicalDevicePort_Handler,
-		},
-		{
-			MethodName: "DisableLogicalDevicePort",
-			Handler:    _VolthaService_DisableLogicalDevicePort_Handler,
-		},
-		{
-			MethodName: "ListLogicalDeviceFlows",
-			Handler:    _VolthaService_ListLogicalDeviceFlows_Handler,
-		},
-		{
-			MethodName: "UpdateLogicalDeviceFlowTable",
-			Handler:    _VolthaService_UpdateLogicalDeviceFlowTable_Handler,
-		},
-		{
-			MethodName: "UpdateLogicalDeviceMeterTable",
-			Handler:    _VolthaService_UpdateLogicalDeviceMeterTable_Handler,
-		},
-		{
-			MethodName: "ListLogicalDeviceMeters",
-			Handler:    _VolthaService_ListLogicalDeviceMeters_Handler,
-		},
-		{
-			MethodName: "ListLogicalDeviceFlowGroups",
-			Handler:    _VolthaService_ListLogicalDeviceFlowGroups_Handler,
-		},
-		{
-			MethodName: "UpdateLogicalDeviceFlowGroupTable",
-			Handler:    _VolthaService_UpdateLogicalDeviceFlowGroupTable_Handler,
-		},
-		{
-			MethodName: "ListDevices",
-			Handler:    _VolthaService_ListDevices_Handler,
-		},
-		{
-			MethodName: "ListDeviceIds",
-			Handler:    _VolthaService_ListDeviceIds_Handler,
-		},
-		{
-			MethodName: "ReconcileDevices",
-			Handler:    _VolthaService_ReconcileDevices_Handler,
-		},
-		{
-			MethodName: "GetDevice",
-			Handler:    _VolthaService_GetDevice_Handler,
-		},
-		{
-			MethodName: "CreateDevice",
-			Handler:    _VolthaService_CreateDevice_Handler,
-		},
-		{
-			MethodName: "EnableDevice",
-			Handler:    _VolthaService_EnableDevice_Handler,
-		},
-		{
-			MethodName: "DisableDevice",
-			Handler:    _VolthaService_DisableDevice_Handler,
-		},
-		{
-			MethodName: "RebootDevice",
-			Handler:    _VolthaService_RebootDevice_Handler,
-		},
-		{
-			MethodName: "DeleteDevice",
-			Handler:    _VolthaService_DeleteDevice_Handler,
-		},
-		{
-			MethodName: "ForceDeleteDevice",
-			Handler:    _VolthaService_ForceDeleteDevice_Handler,
-		},
-		{
-			MethodName: "DownloadImage",
-			Handler:    _VolthaService_DownloadImage_Handler,
-		},
-		{
-			MethodName: "GetImageDownloadStatus",
-			Handler:    _VolthaService_GetImageDownloadStatus_Handler,
-		},
-		{
-			MethodName: "GetImageDownload",
-			Handler:    _VolthaService_GetImageDownload_Handler,
-		},
-		{
-			MethodName: "ListImageDownloads",
-			Handler:    _VolthaService_ListImageDownloads_Handler,
-		},
-		{
-			MethodName: "CancelImageDownload",
-			Handler:    _VolthaService_CancelImageDownload_Handler,
-		},
-		{
-			MethodName: "ActivateImageUpdate",
-			Handler:    _VolthaService_ActivateImageUpdate_Handler,
-		},
-		{
-			MethodName: "RevertImageUpdate",
-			Handler:    _VolthaService_RevertImageUpdate_Handler,
-		},
-		{
-			MethodName: "DownloadImageToDevice",
-			Handler:    _VolthaService_DownloadImageToDevice_Handler,
-		},
-		{
-			MethodName: "GetImageStatus",
-			Handler:    _VolthaService_GetImageStatus_Handler,
-		},
-		{
-			MethodName: "AbortImageUpgradeToDevice",
-			Handler:    _VolthaService_AbortImageUpgradeToDevice_Handler,
-		},
-		{
-			MethodName: "GetOnuImages",
-			Handler:    _VolthaService_GetOnuImages_Handler,
-		},
-		{
-			MethodName: "ActivateImage",
-			Handler:    _VolthaService_ActivateImage_Handler,
-		},
-		{
-			MethodName: "CommitImage",
-			Handler:    _VolthaService_CommitImage_Handler,
-		},
-		{
-			MethodName: "ListDevicePorts",
-			Handler:    _VolthaService_ListDevicePorts_Handler,
-		},
-		{
-			MethodName: "ListDevicePmConfigs",
-			Handler:    _VolthaService_ListDevicePmConfigs_Handler,
-		},
-		{
-			MethodName: "UpdateDevicePmConfigs",
-			Handler:    _VolthaService_UpdateDevicePmConfigs_Handler,
-		},
-		{
-			MethodName: "ListDeviceFlows",
-			Handler:    _VolthaService_ListDeviceFlows_Handler,
-		},
-		{
-			MethodName: "ListDeviceFlowGroups",
-			Handler:    _VolthaService_ListDeviceFlowGroups_Handler,
-		},
-		{
-			MethodName: "ListDeviceTypes",
-			Handler:    _VolthaService_ListDeviceTypes_Handler,
-		},
-		{
-			MethodName: "GetDeviceType",
-			Handler:    _VolthaService_GetDeviceType_Handler,
-		},
-		{
-			MethodName: "CreateEventFilter",
-			Handler:    _VolthaService_CreateEventFilter_Handler,
-		},
-		{
-			MethodName: "GetEventFilter",
-			Handler:    _VolthaService_GetEventFilter_Handler,
-		},
-		{
-			MethodName: "UpdateEventFilter",
-			Handler:    _VolthaService_UpdateEventFilter_Handler,
-		},
-		{
-			MethodName: "DeleteEventFilter",
-			Handler:    _VolthaService_DeleteEventFilter_Handler,
-		},
-		{
-			MethodName: "ListEventFilters",
-			Handler:    _VolthaService_ListEventFilters_Handler,
-		},
-		{
-			MethodName: "GetImages",
-			Handler:    _VolthaService_GetImages_Handler,
-		},
-		{
-			MethodName: "SelfTest",
-			Handler:    _VolthaService_SelfTest_Handler,
-		},
-		{
-			MethodName: "GetMibDeviceData",
-			Handler:    _VolthaService_GetMibDeviceData_Handler,
-		},
-		{
-			MethodName: "GetAlarmDeviceData",
-			Handler:    _VolthaService_GetAlarmDeviceData_Handler,
-		},
-		{
-			MethodName: "SimulateAlarm",
-			Handler:    _VolthaService_SimulateAlarm_Handler,
-		},
-		{
-			MethodName: "EnablePort",
-			Handler:    _VolthaService_EnablePort_Handler,
-		},
-		{
-			MethodName: "DisablePort",
-			Handler:    _VolthaService_DisablePort_Handler,
-		},
-		{
-			MethodName: "GetExtValue",
-			Handler:    _VolthaService_GetExtValue_Handler,
-		},
-		{
-			MethodName: "SetExtValue",
-			Handler:    _VolthaService_SetExtValue_Handler,
-		},
-		{
-			MethodName: "StartOmciTestAction",
-			Handler:    _VolthaService_StartOmciTestAction_Handler,
-		},
-		{
-			MethodName: "PutVoipSystemProfile",
-			Handler:    _VolthaService_PutVoipSystemProfile_Handler,
-		},
-		{
-			MethodName: "DeleteVoipSystemProfile",
-			Handler:    _VolthaService_DeleteVoipSystemProfile_Handler,
-		},
-		{
-			MethodName: "PutVoipUserProfile",
-			Handler:    _VolthaService_PutVoipUserProfile_Handler,
-		},
-		{
-			MethodName: "DeleteVoipUserProfile",
-			Handler:    _VolthaService_DeleteVoipUserProfile_Handler,
-		},
-		{
-			MethodName: "DisableOnuDevice",
-			Handler:    _VolthaService_DisableOnuDevice_Handler,
-		},
-		{
-			MethodName: "EnableOnuDevice",
-			Handler:    _VolthaService_EnableOnuDevice_Handler,
-		},
-		{
-			MethodName: "DisableOnuSerialNumber",
-			Handler:    _VolthaService_DisableOnuSerialNumber_Handler,
-		},
-		{
-			MethodName: "EnableOnuSerialNumber",
-			Handler:    _VolthaService_EnableOnuSerialNumber_Handler,
-		},
-		{
-			MethodName: "UpdateDevice",
-			Handler:    _VolthaService_UpdateDevice_Handler,
-		},
-	},
-	Streams: []grpc.StreamDesc{
-		{
-			StreamName:    "StreamPacketsOut",
-			Handler:       _VolthaService_StreamPacketsOut_Handler,
-			ClientStreams: true,
-		},
-		{
-			StreamName:    "ReceivePacketsIn",
-			Handler:       _VolthaService_ReceivePacketsIn_Handler,
-			ServerStreams: true,
-		},
-		{
-			StreamName:    "ReceiveChangeEvents",
-			Handler:       _VolthaService_ReceiveChangeEvents_Handler,
-			ServerStreams: true,
+	file_voltha_protos_logical_device_proto_init()
+	file_voltha_protos_device_proto_init()
+	file_voltha_protos_adapter_proto_init()
+	file_voltha_protos_events_proto_init()
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_voltha_proto_rawDesc), len(file_voltha_protos_voltha_proto_rawDesc)),
+			NumEnums:      0,
+			NumMessages:   3,
+			NumExtensions: 0,
+			NumServices:   1,
 		},
-	},
-	Metadata: "voltha_protos/voltha.proto",
+		GoTypes:           file_voltha_protos_voltha_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_voltha_proto_depIdxs,
+		MessageInfos:      file_voltha_protos_voltha_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_voltha_proto = out.File
+	file_voltha_protos_voltha_proto_goTypes = nil
+	file_voltha_protos_voltha_proto_depIdxs = nil
 }
diff --git a/go/voltha/voltha_grpc.pb.go b/go/voltha/voltha_grpc.pb.go
new file mode 100644
index 0000000..3f944a6
--- /dev/null
+++ b/go/voltha/voltha_grpc.pb.go
@@ -0,0 +1,3098 @@
+//
+// Top-level Voltha API definition
+//
+// For details, see individual definition files.
+
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.6.0
+// - protoc             v4.25.8
+// source: voltha_protos/voltha.proto
+
+package voltha
+
+import (
+	context "context"
+	common "github.com/opencord/voltha-protos/v5/go/common"
+	extension "github.com/opencord/voltha-protos/v5/go/extension"
+	omci "github.com/opencord/voltha-protos/v5/go/omci"
+	openflow_13 "github.com/opencord/voltha-protos/v5/go/openflow_13"
+	voip_system_profile "github.com/opencord/voltha-protos/v5/go/voip_system_profile"
+	voip_user_profile "github.com/opencord/voltha-protos/v5/go/voip_user_profile"
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+	emptypb "google.golang.org/protobuf/types/known/emptypb"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.64.0 or later.
+const _ = grpc.SupportPackageIsVersion9
+
+const (
+	VolthaService_GetVoltha_FullMethodName                         = "/voltha.VolthaService/GetVoltha"
+	VolthaService_ListCoreInstances_FullMethodName                 = "/voltha.VolthaService/ListCoreInstances"
+	VolthaService_GetCoreInstance_FullMethodName                   = "/voltha.VolthaService/GetCoreInstance"
+	VolthaService_ListAdapters_FullMethodName                      = "/voltha.VolthaService/ListAdapters"
+	VolthaService_ListLogicalDevices_FullMethodName                = "/voltha.VolthaService/ListLogicalDevices"
+	VolthaService_GetLogicalDevice_FullMethodName                  = "/voltha.VolthaService/GetLogicalDevice"
+	VolthaService_ListLogicalDevicePorts_FullMethodName            = "/voltha.VolthaService/ListLogicalDevicePorts"
+	VolthaService_GetLogicalDevicePort_FullMethodName              = "/voltha.VolthaService/GetLogicalDevicePort"
+	VolthaService_EnableLogicalDevicePort_FullMethodName           = "/voltha.VolthaService/EnableLogicalDevicePort"
+	VolthaService_DisableLogicalDevicePort_FullMethodName          = "/voltha.VolthaService/DisableLogicalDevicePort"
+	VolthaService_ListLogicalDeviceFlows_FullMethodName            = "/voltha.VolthaService/ListLogicalDeviceFlows"
+	VolthaService_UpdateLogicalDeviceFlowTable_FullMethodName      = "/voltha.VolthaService/UpdateLogicalDeviceFlowTable"
+	VolthaService_UpdateLogicalDeviceMeterTable_FullMethodName     = "/voltha.VolthaService/UpdateLogicalDeviceMeterTable"
+	VolthaService_ListLogicalDeviceMeters_FullMethodName           = "/voltha.VolthaService/ListLogicalDeviceMeters"
+	VolthaService_ListLogicalDeviceFlowGroups_FullMethodName       = "/voltha.VolthaService/ListLogicalDeviceFlowGroups"
+	VolthaService_UpdateLogicalDeviceFlowGroupTable_FullMethodName = "/voltha.VolthaService/UpdateLogicalDeviceFlowGroupTable"
+	VolthaService_ListDevices_FullMethodName                       = "/voltha.VolthaService/ListDevices"
+	VolthaService_ListDeviceIds_FullMethodName                     = "/voltha.VolthaService/ListDeviceIds"
+	VolthaService_ReconcileDevices_FullMethodName                  = "/voltha.VolthaService/ReconcileDevices"
+	VolthaService_GetDevice_FullMethodName                         = "/voltha.VolthaService/GetDevice"
+	VolthaService_CreateDevice_FullMethodName                      = "/voltha.VolthaService/CreateDevice"
+	VolthaService_EnableDevice_FullMethodName                      = "/voltha.VolthaService/EnableDevice"
+	VolthaService_DisableDevice_FullMethodName                     = "/voltha.VolthaService/DisableDevice"
+	VolthaService_RebootDevice_FullMethodName                      = "/voltha.VolthaService/RebootDevice"
+	VolthaService_DeleteDevice_FullMethodName                      = "/voltha.VolthaService/DeleteDevice"
+	VolthaService_ForceDeleteDevice_FullMethodName                 = "/voltha.VolthaService/ForceDeleteDevice"
+	VolthaService_DownloadImage_FullMethodName                     = "/voltha.VolthaService/DownloadImage"
+	VolthaService_GetImageDownloadStatus_FullMethodName            = "/voltha.VolthaService/GetImageDownloadStatus"
+	VolthaService_GetImageDownload_FullMethodName                  = "/voltha.VolthaService/GetImageDownload"
+	VolthaService_ListImageDownloads_FullMethodName                = "/voltha.VolthaService/ListImageDownloads"
+	VolthaService_CancelImageDownload_FullMethodName               = "/voltha.VolthaService/CancelImageDownload"
+	VolthaService_ActivateImageUpdate_FullMethodName               = "/voltha.VolthaService/ActivateImageUpdate"
+	VolthaService_RevertImageUpdate_FullMethodName                 = "/voltha.VolthaService/RevertImageUpdate"
+	VolthaService_DownloadImageToDevice_FullMethodName             = "/voltha.VolthaService/DownloadImageToDevice"
+	VolthaService_GetImageStatus_FullMethodName                    = "/voltha.VolthaService/GetImageStatus"
+	VolthaService_AbortImageUpgradeToDevice_FullMethodName         = "/voltha.VolthaService/AbortImageUpgradeToDevice"
+	VolthaService_GetOnuImages_FullMethodName                      = "/voltha.VolthaService/GetOnuImages"
+	VolthaService_ActivateImage_FullMethodName                     = "/voltha.VolthaService/ActivateImage"
+	VolthaService_CommitImage_FullMethodName                       = "/voltha.VolthaService/CommitImage"
+	VolthaService_ListDevicePorts_FullMethodName                   = "/voltha.VolthaService/ListDevicePorts"
+	VolthaService_ListDevicePmConfigs_FullMethodName               = "/voltha.VolthaService/ListDevicePmConfigs"
+	VolthaService_UpdateDevicePmConfigs_FullMethodName             = "/voltha.VolthaService/UpdateDevicePmConfigs"
+	VolthaService_ListDeviceFlows_FullMethodName                   = "/voltha.VolthaService/ListDeviceFlows"
+	VolthaService_ListDeviceFlowGroups_FullMethodName              = "/voltha.VolthaService/ListDeviceFlowGroups"
+	VolthaService_ListDeviceTypes_FullMethodName                   = "/voltha.VolthaService/ListDeviceTypes"
+	VolthaService_GetDeviceType_FullMethodName                     = "/voltha.VolthaService/GetDeviceType"
+	VolthaService_StreamPacketsOut_FullMethodName                  = "/voltha.VolthaService/StreamPacketsOut"
+	VolthaService_ReceivePacketsIn_FullMethodName                  = "/voltha.VolthaService/ReceivePacketsIn"
+	VolthaService_ReceiveChangeEvents_FullMethodName               = "/voltha.VolthaService/ReceiveChangeEvents"
+	VolthaService_CreateEventFilter_FullMethodName                 = "/voltha.VolthaService/CreateEventFilter"
+	VolthaService_GetEventFilter_FullMethodName                    = "/voltha.VolthaService/GetEventFilter"
+	VolthaService_UpdateEventFilter_FullMethodName                 = "/voltha.VolthaService/UpdateEventFilter"
+	VolthaService_DeleteEventFilter_FullMethodName                 = "/voltha.VolthaService/DeleteEventFilter"
+	VolthaService_ListEventFilters_FullMethodName                  = "/voltha.VolthaService/ListEventFilters"
+	VolthaService_GetImages_FullMethodName                         = "/voltha.VolthaService/GetImages"
+	VolthaService_SelfTest_FullMethodName                          = "/voltha.VolthaService/SelfTest"
+	VolthaService_GetMibDeviceData_FullMethodName                  = "/voltha.VolthaService/GetMibDeviceData"
+	VolthaService_GetAlarmDeviceData_FullMethodName                = "/voltha.VolthaService/GetAlarmDeviceData"
+	VolthaService_SimulateAlarm_FullMethodName                     = "/voltha.VolthaService/SimulateAlarm"
+	VolthaService_EnablePort_FullMethodName                        = "/voltha.VolthaService/EnablePort"
+	VolthaService_DisablePort_FullMethodName                       = "/voltha.VolthaService/DisablePort"
+	VolthaService_GetExtValue_FullMethodName                       = "/voltha.VolthaService/GetExtValue"
+	VolthaService_SetExtValue_FullMethodName                       = "/voltha.VolthaService/SetExtValue"
+	VolthaService_StartOmciTestAction_FullMethodName               = "/voltha.VolthaService/StartOmciTestAction"
+	VolthaService_PutVoipSystemProfile_FullMethodName              = "/voltha.VolthaService/PutVoipSystemProfile"
+	VolthaService_DeleteVoipSystemProfile_FullMethodName           = "/voltha.VolthaService/DeleteVoipSystemProfile"
+	VolthaService_PutVoipUserProfile_FullMethodName                = "/voltha.VolthaService/PutVoipUserProfile"
+	VolthaService_DeleteVoipUserProfile_FullMethodName             = "/voltha.VolthaService/DeleteVoipUserProfile"
+	VolthaService_DisableOnuDevice_FullMethodName                  = "/voltha.VolthaService/DisableOnuDevice"
+	VolthaService_EnableOnuDevice_FullMethodName                   = "/voltha.VolthaService/EnableOnuDevice"
+	VolthaService_DisableOnuSerialNumber_FullMethodName            = "/voltha.VolthaService/DisableOnuSerialNumber"
+	VolthaService_EnableOnuSerialNumber_FullMethodName             = "/voltha.VolthaService/EnableOnuSerialNumber"
+	VolthaService_UpdateDevice_FullMethodName                      = "/voltha.VolthaService/UpdateDevice"
+)
+
+// VolthaServiceClient is the client API for VolthaService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+//
+// Voltha APIs
+type VolthaServiceClient interface {
+	// Get high level information on the Voltha cluster
+	GetVoltha(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*Voltha, error)
+	// List all Voltha cluster core instances
+	ListCoreInstances(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*CoreInstances, error)
+	// Get details on a Voltha cluster instance
+	GetCoreInstance(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*CoreInstance, error)
+	// List all active adapters (plugins) in the Voltha cluster
+	ListAdapters(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*Adapters, error)
+	// List all logical devices managed by the Voltha cluster
+	ListLogicalDevices(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*LogicalDevices, error)
+	// Get additional information on a given logical device
+	GetLogicalDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*LogicalDevice, error)
+	// List ports of a logical device
+	ListLogicalDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*LogicalPorts, error)
+	// Gets a logical device port
+	GetLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*LogicalPort, error)
+	// Enables a logical device port
+	EnableLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Disables a logical device port
+	DisableLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// List all flows of a logical device
+	ListLogicalDeviceFlows(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Flows, error)
+	// Update flow table for logical device
+	UpdateLogicalDeviceFlowTable(ctx context.Context, in *openflow_13.FlowTableUpdate, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Update meter table for logical device
+	UpdateLogicalDeviceMeterTable(ctx context.Context, in *openflow_13.MeterModUpdate, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// List all meters of a logical device
+	ListLogicalDeviceMeters(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Meters, error)
+	// List all flow groups of a logical device
+	ListLogicalDeviceFlowGroups(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.FlowGroups, error)
+	// Update group table for device
+	UpdateLogicalDeviceFlowGroupTable(ctx context.Context, in *openflow_13.FlowGroupTableUpdate, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// List all physical devices controlled by the Voltha cluster
+	ListDevices(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*Devices, error)
+	// List all physical devices IDs controlled by the Voltha cluster
+	ListDeviceIds(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*common.IDs, error)
+	// Request to a voltha Core to reconcile a set of devices based on their IDs
+	ReconcileDevices(ctx context.Context, in *common.IDs, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Get more information on a given physical device
+	GetDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Device, error)
+	// Pre-provision a new physical device
+	CreateDevice(ctx context.Context, in *Device, opts ...grpc.CallOption) (*Device, error)
+	// Enable a device.  If the device was in pre-provisioned state then it
+	// will transition to ENABLED state.  If it was is DISABLED state then it
+	// will transition to ENABLED state as well.
+	EnableDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Disable a device
+	DisableDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Reboot a device
+	RebootDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Delete a device
+	DeleteDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Forcefully delete a device
+	ForceDeleteDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Deprecated: Do not use.
+	// Request an image download to the standby partition
+	// of a device.
+	// Note that the call is expected to be non-blocking.
+	DownloadImage(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error)
+	// Deprecated: Do not use.
+	// Get image download status on a device
+	// The request retrieves progress on device and updates db record
+	// Deprecated in voltha 2.8, will be removed
+	GetImageDownloadStatus(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*ImageDownload, error)
+	// Deprecated: Do not use.
+	// Get image download db record
+	// Deprecated in voltha 2.8, will be removed
+	GetImageDownload(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*ImageDownload, error)
+	// Deprecated: Do not use.
+	// List image download db records for a given device
+	// Deprecated in voltha 2.8, will be removed
+	ListImageDownloads(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*ImageDownloads, error)
+	// Deprecated: Do not use.
+	// Cancel an existing image download process on a device
+	// Deprecated in voltha 2.8, will be removed
+	CancelImageDownload(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error)
+	// Deprecated: Do not use.
+	// Activate the specified image at a standby partition
+	// to active partition.
+	// Depending on the device implementation, this call
+	// may or may not cause device reboot.
+	// If no reboot, then a reboot is required to make the
+	// activated image running on device
+	// Note that the call is expected to be non-blocking.
+	// Deprecated in voltha 2.8, will be removed
+	ActivateImageUpdate(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error)
+	// Deprecated: Do not use.
+	// Revert the specified image at standby partition
+	// to active partition, and revert to previous image
+	// Depending on the device implementation, this call
+	// may or may not cause device reboot.
+	// If no reboot, then a reboot is required to make the
+	// previous image running on device
+	// Note that the call is expected to be non-blocking.
+	// Deprecated in voltha 2.8, will be removed
+	RevertImageUpdate(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error)
+	// Downloads a certain image to the standby partition of the devices
+	// Note that the call is expected to be non-blocking.
+	DownloadImageToDevice(ctx context.Context, in *DeviceImageDownloadRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
+	// Get image status on a number of devices devices
+	// Polled from northbound systems to get state of download/activate/commit
+	GetImageStatus(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
+	// Aborts the upgrade of an image on a device
+	// To be used carefully, stops any further operations for the Image on the given devices
+	// Might also stop if possible existing work, but no guarantees are given,
+	// depends on implementation and procedure status.
+	AbortImageUpgradeToDevice(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
+	// Get Both Active and Standby image for a given device
+	GetOnuImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*OnuImages, error)
+	// Activate the specified image from a standby partition
+	// to active partition.
+	// Depending on the device implementation, this call
+	// may or may not cause device reboot.
+	// If no reboot, then a reboot is required to make the
+	// activated image running on device
+	// Note that the call is expected to be non-blocking.
+	ActivateImage(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
+	// Commit the specified image to be default.
+	// Depending on the device implementation, this call
+	// may or may not cause device reboot.
+	// If no reboot, then a reboot is required to make the
+	// activated image running on device upon next reboot
+	// Note that the call is expected to be non-blocking.
+	CommitImage(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
+	// List ports of a device
+	ListDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Ports, error)
+	// List pm config of a device
+	ListDevicePmConfigs(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*PmConfigs, error)
+	// Update the pm config of a device
+	UpdateDevicePmConfigs(ctx context.Context, in *PmConfigs, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// List all flows of a device
+	ListDeviceFlows(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Flows, error)
+	// List all flow groups of a device
+	ListDeviceFlowGroups(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.FlowGroups, error)
+	// List device types known to Voltha
+	ListDeviceTypes(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*DeviceTypes, error)
+	// Get additional information on a device type
+	GetDeviceType(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*DeviceType, error)
+	// Stream control packets to the dataplane
+	StreamPacketsOut(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[openflow_13.PacketOut, emptypb.Empty], error)
+	// Receive control packet stream
+	ReceivePacketsIn(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (grpc.ServerStreamingClient[openflow_13.PacketIn], error)
+	ReceiveChangeEvents(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (grpc.ServerStreamingClient[openflow_13.ChangeEvent], error)
+	CreateEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*EventFilter, error)
+	// Get all filters present for a device
+	GetEventFilter(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*EventFilters, error)
+	UpdateEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*EventFilter, error)
+	DeleteEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Get all the filters present
+	ListEventFilters(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*EventFilters, error)
+	GetImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Images, error)
+	SelfTest(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*SelfTestResponse, error)
+	// OpenOMCI MIB information
+	GetMibDeviceData(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*omci.MibDeviceData, error)
+	// OpenOMCI ALARM information
+	GetAlarmDeviceData(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*omci.AlarmDeviceData, error)
+	// Simulate an Alarm
+	SimulateAlarm(ctx context.Context, in *SimulateAlarmRequest, opts ...grpc.CallOption) (*common.OperationResp, error)
+	EnablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	DisablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	GetExtValue(ctx context.Context, in *extension.ValueSpecifier, opts ...grpc.CallOption) (*extension.ReturnValues, error)
+	SetExtValue(ctx context.Context, in *extension.ValueSet, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// omci start and stop cli implementation
+	StartOmciTestAction(ctx context.Context, in *omci.OmciTestRequest, opts ...grpc.CallOption) (*omci.TestResponse, error)
+	// Saves or updates system wide configuration into voltha KV
+	PutVoipSystemProfile(ctx context.Context, in *voip_system_profile.VoipSystemProfileRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Deletes the given profile from voltha KV
+	DeleteVoipSystemProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Saves or updates a profile (VOIP) into voltha KV
+	PutVoipUserProfile(ctx context.Context, in *voip_user_profile.VoipUserProfileRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Deletes the given profile from voltha KV
+	DeleteVoipUserProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Disables the ONU, stops it from participating in the ranging process. different from DisableDevice
+	DisableOnuDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Enables the ONU at the PLOAM , enables the ONU to participate in the ranging process. different from EnableDevice
+	EnableOnuDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Disables the ONU at the PLOAM , different from DisableDevice. This would be used if the Device is not present in the VOLTHA
+	DisableOnuSerialNumber(ctx context.Context, in *OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Disables the ONU at the PLOAM , different from EnableDevice. This would be used if the Device is not present in the VOLTHA
+	EnableOnuSerialNumber(ctx context.Context, in *OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Update the Device configuration, for now only ip address updation is supported
+	UpdateDevice(ctx context.Context, in *UpdateDevice, opts ...grpc.CallOption) (*emptypb.Empty, error)
+}
+
+type volthaServiceClient struct {
+	cc grpc.ClientConnInterface
+}
+
+func NewVolthaServiceClient(cc grpc.ClientConnInterface) VolthaServiceClient {
+	return &volthaServiceClient{cc}
+}
+
+func (c *volthaServiceClient) GetVoltha(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*Voltha, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Voltha)
+	err := c.cc.Invoke(ctx, VolthaService_GetVoltha_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListCoreInstances(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*CoreInstances, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(CoreInstances)
+	err := c.cc.Invoke(ctx, VolthaService_ListCoreInstances_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetCoreInstance(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*CoreInstance, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(CoreInstance)
+	err := c.cc.Invoke(ctx, VolthaService_GetCoreInstance_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListAdapters(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*Adapters, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Adapters)
+	err := c.cc.Invoke(ctx, VolthaService_ListAdapters_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListLogicalDevices(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*LogicalDevices, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(LogicalDevices)
+	err := c.cc.Invoke(ctx, VolthaService_ListLogicalDevices_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetLogicalDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*LogicalDevice, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(LogicalDevice)
+	err := c.cc.Invoke(ctx, VolthaService_GetLogicalDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListLogicalDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*LogicalPorts, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(LogicalPorts)
+	err := c.cc.Invoke(ctx, VolthaService_ListLogicalDevicePorts_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*LogicalPort, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(LogicalPort)
+	err := c.cc.Invoke(ctx, VolthaService_GetLogicalDevicePort_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) EnableLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_EnableLogicalDevicePort_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DisableLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_DisableLogicalDevicePort_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListLogicalDeviceFlows(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Flows, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(openflow_13.Flows)
+	err := c.cc.Invoke(ctx, VolthaService_ListLogicalDeviceFlows_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) UpdateLogicalDeviceFlowTable(ctx context.Context, in *openflow_13.FlowTableUpdate, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_UpdateLogicalDeviceFlowTable_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) UpdateLogicalDeviceMeterTable(ctx context.Context, in *openflow_13.MeterModUpdate, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_UpdateLogicalDeviceMeterTable_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListLogicalDeviceMeters(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Meters, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(openflow_13.Meters)
+	err := c.cc.Invoke(ctx, VolthaService_ListLogicalDeviceMeters_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListLogicalDeviceFlowGroups(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.FlowGroups, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(openflow_13.FlowGroups)
+	err := c.cc.Invoke(ctx, VolthaService_ListLogicalDeviceFlowGroups_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) UpdateLogicalDeviceFlowGroupTable(ctx context.Context, in *openflow_13.FlowGroupTableUpdate, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_UpdateLogicalDeviceFlowGroupTable_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListDevices(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*Devices, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Devices)
+	err := c.cc.Invoke(ctx, VolthaService_ListDevices_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListDeviceIds(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*common.IDs, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(common.IDs)
+	err := c.cc.Invoke(ctx, VolthaService_ListDeviceIds_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ReconcileDevices(ctx context.Context, in *common.IDs, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_ReconcileDevices_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Device, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Device)
+	err := c.cc.Invoke(ctx, VolthaService_GetDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) CreateDevice(ctx context.Context, in *Device, opts ...grpc.CallOption) (*Device, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Device)
+	err := c.cc.Invoke(ctx, VolthaService_CreateDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) EnableDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_EnableDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DisableDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_DisableDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) RebootDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_RebootDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DeleteDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_DeleteDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ForceDeleteDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_ForceDeleteDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Deprecated: Do not use.
+func (c *volthaServiceClient) DownloadImage(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(common.OperationResp)
+	err := c.cc.Invoke(ctx, VolthaService_DownloadImage_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Deprecated: Do not use.
+func (c *volthaServiceClient) GetImageDownloadStatus(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*ImageDownload, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(ImageDownload)
+	err := c.cc.Invoke(ctx, VolthaService_GetImageDownloadStatus_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Deprecated: Do not use.
+func (c *volthaServiceClient) GetImageDownload(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*ImageDownload, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(ImageDownload)
+	err := c.cc.Invoke(ctx, VolthaService_GetImageDownload_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Deprecated: Do not use.
+func (c *volthaServiceClient) ListImageDownloads(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*ImageDownloads, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(ImageDownloads)
+	err := c.cc.Invoke(ctx, VolthaService_ListImageDownloads_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Deprecated: Do not use.
+func (c *volthaServiceClient) CancelImageDownload(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(common.OperationResp)
+	err := c.cc.Invoke(ctx, VolthaService_CancelImageDownload_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Deprecated: Do not use.
+func (c *volthaServiceClient) ActivateImageUpdate(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(common.OperationResp)
+	err := c.cc.Invoke(ctx, VolthaService_ActivateImageUpdate_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Deprecated: Do not use.
+func (c *volthaServiceClient) RevertImageUpdate(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(common.OperationResp)
+	err := c.cc.Invoke(ctx, VolthaService_RevertImageUpdate_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DownloadImageToDevice(ctx context.Context, in *DeviceImageDownloadRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(DeviceImageResponse)
+	err := c.cc.Invoke(ctx, VolthaService_DownloadImageToDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetImageStatus(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(DeviceImageResponse)
+	err := c.cc.Invoke(ctx, VolthaService_GetImageStatus_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) AbortImageUpgradeToDevice(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(DeviceImageResponse)
+	err := c.cc.Invoke(ctx, VolthaService_AbortImageUpgradeToDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetOnuImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*OnuImages, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(OnuImages)
+	err := c.cc.Invoke(ctx, VolthaService_GetOnuImages_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ActivateImage(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(DeviceImageResponse)
+	err := c.cc.Invoke(ctx, VolthaService_ActivateImage_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) CommitImage(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(DeviceImageResponse)
+	err := c.cc.Invoke(ctx, VolthaService_CommitImage_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Ports, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Ports)
+	err := c.cc.Invoke(ctx, VolthaService_ListDevicePorts_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListDevicePmConfigs(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*PmConfigs, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(PmConfigs)
+	err := c.cc.Invoke(ctx, VolthaService_ListDevicePmConfigs_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) UpdateDevicePmConfigs(ctx context.Context, in *PmConfigs, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_UpdateDevicePmConfigs_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListDeviceFlows(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Flows, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(openflow_13.Flows)
+	err := c.cc.Invoke(ctx, VolthaService_ListDeviceFlows_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListDeviceFlowGroups(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.FlowGroups, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(openflow_13.FlowGroups)
+	err := c.cc.Invoke(ctx, VolthaService_ListDeviceFlowGroups_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListDeviceTypes(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*DeviceTypes, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(DeviceTypes)
+	err := c.cc.Invoke(ctx, VolthaService_ListDeviceTypes_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetDeviceType(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*DeviceType, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(DeviceType)
+	err := c.cc.Invoke(ctx, VolthaService_GetDeviceType_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) StreamPacketsOut(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[openflow_13.PacketOut, emptypb.Empty], error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	stream, err := c.cc.NewStream(ctx, &VolthaService_ServiceDesc.Streams[0], VolthaService_StreamPacketsOut_FullMethodName, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	x := &grpc.GenericClientStream[openflow_13.PacketOut, emptypb.Empty]{ClientStream: stream}
+	return x, nil
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type VolthaService_StreamPacketsOutClient = grpc.ClientStreamingClient[openflow_13.PacketOut, emptypb.Empty]
+
+func (c *volthaServiceClient) ReceivePacketsIn(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (grpc.ServerStreamingClient[openflow_13.PacketIn], error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	stream, err := c.cc.NewStream(ctx, &VolthaService_ServiceDesc.Streams[1], VolthaService_ReceivePacketsIn_FullMethodName, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	x := &grpc.GenericClientStream[emptypb.Empty, openflow_13.PacketIn]{ClientStream: stream}
+	if err := x.ClientStream.SendMsg(in); err != nil {
+		return nil, err
+	}
+	if err := x.ClientStream.CloseSend(); err != nil {
+		return nil, err
+	}
+	return x, nil
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type VolthaService_ReceivePacketsInClient = grpc.ServerStreamingClient[openflow_13.PacketIn]
+
+func (c *volthaServiceClient) ReceiveChangeEvents(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (grpc.ServerStreamingClient[openflow_13.ChangeEvent], error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	stream, err := c.cc.NewStream(ctx, &VolthaService_ServiceDesc.Streams[2], VolthaService_ReceiveChangeEvents_FullMethodName, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	x := &grpc.GenericClientStream[emptypb.Empty, openflow_13.ChangeEvent]{ClientStream: stream}
+	if err := x.ClientStream.SendMsg(in); err != nil {
+		return nil, err
+	}
+	if err := x.ClientStream.CloseSend(); err != nil {
+		return nil, err
+	}
+	return x, nil
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type VolthaService_ReceiveChangeEventsClient = grpc.ServerStreamingClient[openflow_13.ChangeEvent]
+
+func (c *volthaServiceClient) CreateEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*EventFilter, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(EventFilter)
+	err := c.cc.Invoke(ctx, VolthaService_CreateEventFilter_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetEventFilter(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*EventFilters, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(EventFilters)
+	err := c.cc.Invoke(ctx, VolthaService_GetEventFilter_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) UpdateEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*EventFilter, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(EventFilter)
+	err := c.cc.Invoke(ctx, VolthaService_UpdateEventFilter_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DeleteEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_DeleteEventFilter_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListEventFilters(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*EventFilters, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(EventFilters)
+	err := c.cc.Invoke(ctx, VolthaService_ListEventFilters_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Images, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Images)
+	err := c.cc.Invoke(ctx, VolthaService_GetImages_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) SelfTest(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*SelfTestResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(SelfTestResponse)
+	err := c.cc.Invoke(ctx, VolthaService_SelfTest_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetMibDeviceData(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*omci.MibDeviceData, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(omci.MibDeviceData)
+	err := c.cc.Invoke(ctx, VolthaService_GetMibDeviceData_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetAlarmDeviceData(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*omci.AlarmDeviceData, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(omci.AlarmDeviceData)
+	err := c.cc.Invoke(ctx, VolthaService_GetAlarmDeviceData_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) SimulateAlarm(ctx context.Context, in *SimulateAlarmRequest, opts ...grpc.CallOption) (*common.OperationResp, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(common.OperationResp)
+	err := c.cc.Invoke(ctx, VolthaService_SimulateAlarm_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) EnablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_EnablePort_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DisablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_DisablePort_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetExtValue(ctx context.Context, in *extension.ValueSpecifier, opts ...grpc.CallOption) (*extension.ReturnValues, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(extension.ReturnValues)
+	err := c.cc.Invoke(ctx, VolthaService_GetExtValue_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) SetExtValue(ctx context.Context, in *extension.ValueSet, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_SetExtValue_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) StartOmciTestAction(ctx context.Context, in *omci.OmciTestRequest, opts ...grpc.CallOption) (*omci.TestResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(omci.TestResponse)
+	err := c.cc.Invoke(ctx, VolthaService_StartOmciTestAction_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) PutVoipSystemProfile(ctx context.Context, in *voip_system_profile.VoipSystemProfileRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_PutVoipSystemProfile_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DeleteVoipSystemProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_DeleteVoipSystemProfile_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) PutVoipUserProfile(ctx context.Context, in *voip_user_profile.VoipUserProfileRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_PutVoipUserProfile_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DeleteVoipUserProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_DeleteVoipUserProfile_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DisableOnuDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_DisableOnuDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) EnableOnuDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_EnableOnuDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DisableOnuSerialNumber(ctx context.Context, in *OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_DisableOnuSerialNumber_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) EnableOnuSerialNumber(ctx context.Context, in *OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_EnableOnuSerialNumber_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) UpdateDevice(ctx context.Context, in *UpdateDevice, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_UpdateDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// VolthaServiceServer is the server API for VolthaService service.
+// All implementations must embed UnimplementedVolthaServiceServer
+// for forward compatibility.
+//
+// Voltha APIs
+type VolthaServiceServer interface {
+	// Get high level information on the Voltha cluster
+	GetVoltha(context.Context, *emptypb.Empty) (*Voltha, error)
+	// List all Voltha cluster core instances
+	ListCoreInstances(context.Context, *emptypb.Empty) (*CoreInstances, error)
+	// Get details on a Voltha cluster instance
+	GetCoreInstance(context.Context, *common.ID) (*CoreInstance, error)
+	// List all active adapters (plugins) in the Voltha cluster
+	ListAdapters(context.Context, *emptypb.Empty) (*Adapters, error)
+	// List all logical devices managed by the Voltha cluster
+	ListLogicalDevices(context.Context, *emptypb.Empty) (*LogicalDevices, error)
+	// Get additional information on a given logical device
+	GetLogicalDevice(context.Context, *common.ID) (*LogicalDevice, error)
+	// List ports of a logical device
+	ListLogicalDevicePorts(context.Context, *common.ID) (*LogicalPorts, error)
+	// Gets a logical device port
+	GetLogicalDevicePort(context.Context, *LogicalPortId) (*LogicalPort, error)
+	// Enables a logical device port
+	EnableLogicalDevicePort(context.Context, *LogicalPortId) (*emptypb.Empty, error)
+	// Disables a logical device port
+	DisableLogicalDevicePort(context.Context, *LogicalPortId) (*emptypb.Empty, error)
+	// List all flows of a logical device
+	ListLogicalDeviceFlows(context.Context, *common.ID) (*openflow_13.Flows, error)
+	// Update flow table for logical device
+	UpdateLogicalDeviceFlowTable(context.Context, *openflow_13.FlowTableUpdate) (*emptypb.Empty, error)
+	// Update meter table for logical device
+	UpdateLogicalDeviceMeterTable(context.Context, *openflow_13.MeterModUpdate) (*emptypb.Empty, error)
+	// List all meters of a logical device
+	ListLogicalDeviceMeters(context.Context, *common.ID) (*openflow_13.Meters, error)
+	// List all flow groups of a logical device
+	ListLogicalDeviceFlowGroups(context.Context, *common.ID) (*openflow_13.FlowGroups, error)
+	// Update group table for device
+	UpdateLogicalDeviceFlowGroupTable(context.Context, *openflow_13.FlowGroupTableUpdate) (*emptypb.Empty, error)
+	// List all physical devices controlled by the Voltha cluster
+	ListDevices(context.Context, *emptypb.Empty) (*Devices, error)
+	// List all physical devices IDs controlled by the Voltha cluster
+	ListDeviceIds(context.Context, *emptypb.Empty) (*common.IDs, error)
+	// Request to a voltha Core to reconcile a set of devices based on their IDs
+	ReconcileDevices(context.Context, *common.IDs) (*emptypb.Empty, error)
+	// Get more information on a given physical device
+	GetDevice(context.Context, *common.ID) (*Device, error)
+	// Pre-provision a new physical device
+	CreateDevice(context.Context, *Device) (*Device, error)
+	// Enable a device.  If the device was in pre-provisioned state then it
+	// will transition to ENABLED state.  If it was is DISABLED state then it
+	// will transition to ENABLED state as well.
+	EnableDevice(context.Context, *common.ID) (*emptypb.Empty, error)
+	// Disable a device
+	DisableDevice(context.Context, *common.ID) (*emptypb.Empty, error)
+	// Reboot a device
+	RebootDevice(context.Context, *common.ID) (*emptypb.Empty, error)
+	// Delete a device
+	DeleteDevice(context.Context, *common.ID) (*emptypb.Empty, error)
+	// Forcefully delete a device
+	ForceDeleteDevice(context.Context, *common.ID) (*emptypb.Empty, error)
+	// Deprecated: Do not use.
+	// Request an image download to the standby partition
+	// of a device.
+	// Note that the call is expected to be non-blocking.
+	DownloadImage(context.Context, *ImageDownload) (*common.OperationResp, error)
+	// Deprecated: Do not use.
+	// Get image download status on a device
+	// The request retrieves progress on device and updates db record
+	// Deprecated in voltha 2.8, will be removed
+	GetImageDownloadStatus(context.Context, *ImageDownload) (*ImageDownload, error)
+	// Deprecated: Do not use.
+	// Get image download db record
+	// Deprecated in voltha 2.8, will be removed
+	GetImageDownload(context.Context, *ImageDownload) (*ImageDownload, error)
+	// Deprecated: Do not use.
+	// List image download db records for a given device
+	// Deprecated in voltha 2.8, will be removed
+	ListImageDownloads(context.Context, *common.ID) (*ImageDownloads, error)
+	// Deprecated: Do not use.
+	// Cancel an existing image download process on a device
+	// Deprecated in voltha 2.8, will be removed
+	CancelImageDownload(context.Context, *ImageDownload) (*common.OperationResp, error)
+	// Deprecated: Do not use.
+	// Activate the specified image at a standby partition
+	// to active partition.
+	// Depending on the device implementation, this call
+	// may or may not cause device reboot.
+	// If no reboot, then a reboot is required to make the
+	// activated image running on device
+	// Note that the call is expected to be non-blocking.
+	// Deprecated in voltha 2.8, will be removed
+	ActivateImageUpdate(context.Context, *ImageDownload) (*common.OperationResp, error)
+	// Deprecated: Do not use.
+	// Revert the specified image at standby partition
+	// to active partition, and revert to previous image
+	// Depending on the device implementation, this call
+	// may or may not cause device reboot.
+	// If no reboot, then a reboot is required to make the
+	// previous image running on device
+	// Note that the call is expected to be non-blocking.
+	// Deprecated in voltha 2.8, will be removed
+	RevertImageUpdate(context.Context, *ImageDownload) (*common.OperationResp, error)
+	// Downloads a certain image to the standby partition of the devices
+	// Note that the call is expected to be non-blocking.
+	DownloadImageToDevice(context.Context, *DeviceImageDownloadRequest) (*DeviceImageResponse, error)
+	// Get image status on a number of devices devices
+	// Polled from northbound systems to get state of download/activate/commit
+	GetImageStatus(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error)
+	// Aborts the upgrade of an image on a device
+	// To be used carefully, stops any further operations for the Image on the given devices
+	// Might also stop if possible existing work, but no guarantees are given,
+	// depends on implementation and procedure status.
+	AbortImageUpgradeToDevice(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error)
+	// Get Both Active and Standby image for a given device
+	GetOnuImages(context.Context, *common.ID) (*OnuImages, error)
+	// Activate the specified image from a standby partition
+	// to active partition.
+	// Depending on the device implementation, this call
+	// may or may not cause device reboot.
+	// If no reboot, then a reboot is required to make the
+	// activated image running on device
+	// Note that the call is expected to be non-blocking.
+	ActivateImage(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error)
+	// Commit the specified image to be default.
+	// Depending on the device implementation, this call
+	// may or may not cause device reboot.
+	// If no reboot, then a reboot is required to make the
+	// activated image running on device upon next reboot
+	// Note that the call is expected to be non-blocking.
+	CommitImage(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error)
+	// List ports of a device
+	ListDevicePorts(context.Context, *common.ID) (*Ports, error)
+	// List pm config of a device
+	ListDevicePmConfigs(context.Context, *common.ID) (*PmConfigs, error)
+	// Update the pm config of a device
+	UpdateDevicePmConfigs(context.Context, *PmConfigs) (*emptypb.Empty, error)
+	// List all flows of a device
+	ListDeviceFlows(context.Context, *common.ID) (*openflow_13.Flows, error)
+	// List all flow groups of a device
+	ListDeviceFlowGroups(context.Context, *common.ID) (*openflow_13.FlowGroups, error)
+	// List device types known to Voltha
+	ListDeviceTypes(context.Context, *emptypb.Empty) (*DeviceTypes, error)
+	// Get additional information on a device type
+	GetDeviceType(context.Context, *common.ID) (*DeviceType, error)
+	// Stream control packets to the dataplane
+	StreamPacketsOut(grpc.ClientStreamingServer[openflow_13.PacketOut, emptypb.Empty]) error
+	// Receive control packet stream
+	ReceivePacketsIn(*emptypb.Empty, grpc.ServerStreamingServer[openflow_13.PacketIn]) error
+	ReceiveChangeEvents(*emptypb.Empty, grpc.ServerStreamingServer[openflow_13.ChangeEvent]) error
+	CreateEventFilter(context.Context, *EventFilter) (*EventFilter, error)
+	// Get all filters present for a device
+	GetEventFilter(context.Context, *common.ID) (*EventFilters, error)
+	UpdateEventFilter(context.Context, *EventFilter) (*EventFilter, error)
+	DeleteEventFilter(context.Context, *EventFilter) (*emptypb.Empty, error)
+	// Get all the filters present
+	ListEventFilters(context.Context, *emptypb.Empty) (*EventFilters, error)
+	GetImages(context.Context, *common.ID) (*Images, error)
+	SelfTest(context.Context, *common.ID) (*SelfTestResponse, error)
+	// OpenOMCI MIB information
+	GetMibDeviceData(context.Context, *common.ID) (*omci.MibDeviceData, error)
+	// OpenOMCI ALARM information
+	GetAlarmDeviceData(context.Context, *common.ID) (*omci.AlarmDeviceData, error)
+	// Simulate an Alarm
+	SimulateAlarm(context.Context, *SimulateAlarmRequest) (*common.OperationResp, error)
+	EnablePort(context.Context, *Port) (*emptypb.Empty, error)
+	DisablePort(context.Context, *Port) (*emptypb.Empty, error)
+	GetExtValue(context.Context, *extension.ValueSpecifier) (*extension.ReturnValues, error)
+	SetExtValue(context.Context, *extension.ValueSet) (*emptypb.Empty, error)
+	// omci start and stop cli implementation
+	StartOmciTestAction(context.Context, *omci.OmciTestRequest) (*omci.TestResponse, error)
+	// Saves or updates system wide configuration into voltha KV
+	PutVoipSystemProfile(context.Context, *voip_system_profile.VoipSystemProfileRequest) (*emptypb.Empty, error)
+	// Deletes the given profile from voltha KV
+	DeleteVoipSystemProfile(context.Context, *common.Key) (*emptypb.Empty, error)
+	// Saves or updates a profile (VOIP) into voltha KV
+	PutVoipUserProfile(context.Context, *voip_user_profile.VoipUserProfileRequest) (*emptypb.Empty, error)
+	// Deletes the given profile from voltha KV
+	DeleteVoipUserProfile(context.Context, *common.Key) (*emptypb.Empty, error)
+	// Disables the ONU, stops it from participating in the ranging process. different from DisableDevice
+	DisableOnuDevice(context.Context, *common.ID) (*emptypb.Empty, error)
+	// Enables the ONU at the PLOAM , enables the ONU to participate in the ranging process. different from EnableDevice
+	EnableOnuDevice(context.Context, *common.ID) (*emptypb.Empty, error)
+	// Disables the ONU at the PLOAM , different from DisableDevice. This would be used if the Device is not present in the VOLTHA
+	DisableOnuSerialNumber(context.Context, *OnuSerialNumberOnOLTPon) (*emptypb.Empty, error)
+	// Disables the ONU at the PLOAM , different from EnableDevice. This would be used if the Device is not present in the VOLTHA
+	EnableOnuSerialNumber(context.Context, *OnuSerialNumberOnOLTPon) (*emptypb.Empty, error)
+	// Update the Device configuration, for now only ip address updation is supported
+	UpdateDevice(context.Context, *UpdateDevice) (*emptypb.Empty, error)
+	mustEmbedUnimplementedVolthaServiceServer()
+}
+
+// UnimplementedVolthaServiceServer must be embedded to have
+// forward compatible implementations.
+//
+// NOTE: this should be embedded by value instead of pointer to avoid a nil
+// pointer dereference when methods are called.
+type UnimplementedVolthaServiceServer struct{}
+
+func (UnimplementedVolthaServiceServer) GetVoltha(context.Context, *emptypb.Empty) (*Voltha, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetVoltha not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListCoreInstances(context.Context, *emptypb.Empty) (*CoreInstances, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListCoreInstances not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetCoreInstance(context.Context, *common.ID) (*CoreInstance, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetCoreInstance not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListAdapters(context.Context, *emptypb.Empty) (*Adapters, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListAdapters not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListLogicalDevices(context.Context, *emptypb.Empty) (*LogicalDevices, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListLogicalDevices not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetLogicalDevice(context.Context, *common.ID) (*LogicalDevice, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetLogicalDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListLogicalDevicePorts(context.Context, *common.ID) (*LogicalPorts, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListLogicalDevicePorts not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetLogicalDevicePort(context.Context, *LogicalPortId) (*LogicalPort, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetLogicalDevicePort not implemented")
+}
+func (UnimplementedVolthaServiceServer) EnableLogicalDevicePort(context.Context, *LogicalPortId) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method EnableLogicalDevicePort not implemented")
+}
+func (UnimplementedVolthaServiceServer) DisableLogicalDevicePort(context.Context, *LogicalPortId) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DisableLogicalDevicePort not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListLogicalDeviceFlows(context.Context, *common.ID) (*openflow_13.Flows, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListLogicalDeviceFlows not implemented")
+}
+func (UnimplementedVolthaServiceServer) UpdateLogicalDeviceFlowTable(context.Context, *openflow_13.FlowTableUpdate) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method UpdateLogicalDeviceFlowTable not implemented")
+}
+func (UnimplementedVolthaServiceServer) UpdateLogicalDeviceMeterTable(context.Context, *openflow_13.MeterModUpdate) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method UpdateLogicalDeviceMeterTable not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListLogicalDeviceMeters(context.Context, *common.ID) (*openflow_13.Meters, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListLogicalDeviceMeters not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListLogicalDeviceFlowGroups(context.Context, *common.ID) (*openflow_13.FlowGroups, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListLogicalDeviceFlowGroups not implemented")
+}
+func (UnimplementedVolthaServiceServer) UpdateLogicalDeviceFlowGroupTable(context.Context, *openflow_13.FlowGroupTableUpdate) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method UpdateLogicalDeviceFlowGroupTable not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListDevices(context.Context, *emptypb.Empty) (*Devices, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListDevices not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListDeviceIds(context.Context, *emptypb.Empty) (*common.IDs, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListDeviceIds not implemented")
+}
+func (UnimplementedVolthaServiceServer) ReconcileDevices(context.Context, *common.IDs) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method ReconcileDevices not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetDevice(context.Context, *common.ID) (*Device, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) CreateDevice(context.Context, *Device) (*Device, error) {
+	return nil, status.Error(codes.Unimplemented, "method CreateDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) EnableDevice(context.Context, *common.ID) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method EnableDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) DisableDevice(context.Context, *common.ID) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DisableDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) RebootDevice(context.Context, *common.ID) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method RebootDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) DeleteDevice(context.Context, *common.ID) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DeleteDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) ForceDeleteDevice(context.Context, *common.ID) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method ForceDeleteDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) DownloadImage(context.Context, *ImageDownload) (*common.OperationResp, error) {
+	return nil, status.Error(codes.Unimplemented, "method DownloadImage not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetImageDownloadStatus(context.Context, *ImageDownload) (*ImageDownload, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetImageDownloadStatus not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetImageDownload(context.Context, *ImageDownload) (*ImageDownload, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetImageDownload not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListImageDownloads(context.Context, *common.ID) (*ImageDownloads, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListImageDownloads not implemented")
+}
+func (UnimplementedVolthaServiceServer) CancelImageDownload(context.Context, *ImageDownload) (*common.OperationResp, error) {
+	return nil, status.Error(codes.Unimplemented, "method CancelImageDownload not implemented")
+}
+func (UnimplementedVolthaServiceServer) ActivateImageUpdate(context.Context, *ImageDownload) (*common.OperationResp, error) {
+	return nil, status.Error(codes.Unimplemented, "method ActivateImageUpdate not implemented")
+}
+func (UnimplementedVolthaServiceServer) RevertImageUpdate(context.Context, *ImageDownload) (*common.OperationResp, error) {
+	return nil, status.Error(codes.Unimplemented, "method RevertImageUpdate not implemented")
+}
+func (UnimplementedVolthaServiceServer) DownloadImageToDevice(context.Context, *DeviceImageDownloadRequest) (*DeviceImageResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method DownloadImageToDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetImageStatus(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetImageStatus not implemented")
+}
+func (UnimplementedVolthaServiceServer) AbortImageUpgradeToDevice(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method AbortImageUpgradeToDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetOnuImages(context.Context, *common.ID) (*OnuImages, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetOnuImages not implemented")
+}
+func (UnimplementedVolthaServiceServer) ActivateImage(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method ActivateImage not implemented")
+}
+func (UnimplementedVolthaServiceServer) CommitImage(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method CommitImage not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListDevicePorts(context.Context, *common.ID) (*Ports, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListDevicePorts not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListDevicePmConfigs(context.Context, *common.ID) (*PmConfigs, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListDevicePmConfigs not implemented")
+}
+func (UnimplementedVolthaServiceServer) UpdateDevicePmConfigs(context.Context, *PmConfigs) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method UpdateDevicePmConfigs not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListDeviceFlows(context.Context, *common.ID) (*openflow_13.Flows, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListDeviceFlows not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListDeviceFlowGroups(context.Context, *common.ID) (*openflow_13.FlowGroups, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListDeviceFlowGroups not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListDeviceTypes(context.Context, *emptypb.Empty) (*DeviceTypes, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListDeviceTypes not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetDeviceType(context.Context, *common.ID) (*DeviceType, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetDeviceType not implemented")
+}
+func (UnimplementedVolthaServiceServer) StreamPacketsOut(grpc.ClientStreamingServer[openflow_13.PacketOut, emptypb.Empty]) error {
+	return status.Error(codes.Unimplemented, "method StreamPacketsOut not implemented")
+}
+func (UnimplementedVolthaServiceServer) ReceivePacketsIn(*emptypb.Empty, grpc.ServerStreamingServer[openflow_13.PacketIn]) error {
+	return status.Error(codes.Unimplemented, "method ReceivePacketsIn not implemented")
+}
+func (UnimplementedVolthaServiceServer) ReceiveChangeEvents(*emptypb.Empty, grpc.ServerStreamingServer[openflow_13.ChangeEvent]) error {
+	return status.Error(codes.Unimplemented, "method ReceiveChangeEvents not implemented")
+}
+func (UnimplementedVolthaServiceServer) CreateEventFilter(context.Context, *EventFilter) (*EventFilter, error) {
+	return nil, status.Error(codes.Unimplemented, "method CreateEventFilter not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetEventFilter(context.Context, *common.ID) (*EventFilters, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetEventFilter not implemented")
+}
+func (UnimplementedVolthaServiceServer) UpdateEventFilter(context.Context, *EventFilter) (*EventFilter, error) {
+	return nil, status.Error(codes.Unimplemented, "method UpdateEventFilter not implemented")
+}
+func (UnimplementedVolthaServiceServer) DeleteEventFilter(context.Context, *EventFilter) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DeleteEventFilter not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListEventFilters(context.Context, *emptypb.Empty) (*EventFilters, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListEventFilters not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetImages(context.Context, *common.ID) (*Images, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetImages not implemented")
+}
+func (UnimplementedVolthaServiceServer) SelfTest(context.Context, *common.ID) (*SelfTestResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method SelfTest not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetMibDeviceData(context.Context, *common.ID) (*omci.MibDeviceData, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetMibDeviceData not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetAlarmDeviceData(context.Context, *common.ID) (*omci.AlarmDeviceData, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetAlarmDeviceData not implemented")
+}
+func (UnimplementedVolthaServiceServer) SimulateAlarm(context.Context, *SimulateAlarmRequest) (*common.OperationResp, error) {
+	return nil, status.Error(codes.Unimplemented, "method SimulateAlarm not implemented")
+}
+func (UnimplementedVolthaServiceServer) EnablePort(context.Context, *Port) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method EnablePort not implemented")
+}
+func (UnimplementedVolthaServiceServer) DisablePort(context.Context, *Port) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DisablePort not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetExtValue(context.Context, *extension.ValueSpecifier) (*extension.ReturnValues, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetExtValue not implemented")
+}
+func (UnimplementedVolthaServiceServer) SetExtValue(context.Context, *extension.ValueSet) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method SetExtValue not implemented")
+}
+func (UnimplementedVolthaServiceServer) StartOmciTestAction(context.Context, *omci.OmciTestRequest) (*omci.TestResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method StartOmciTestAction not implemented")
+}
+func (UnimplementedVolthaServiceServer) PutVoipSystemProfile(context.Context, *voip_system_profile.VoipSystemProfileRequest) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method PutVoipSystemProfile not implemented")
+}
+func (UnimplementedVolthaServiceServer) DeleteVoipSystemProfile(context.Context, *common.Key) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DeleteVoipSystemProfile not implemented")
+}
+func (UnimplementedVolthaServiceServer) PutVoipUserProfile(context.Context, *voip_user_profile.VoipUserProfileRequest) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method PutVoipUserProfile not implemented")
+}
+func (UnimplementedVolthaServiceServer) DeleteVoipUserProfile(context.Context, *common.Key) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DeleteVoipUserProfile not implemented")
+}
+func (UnimplementedVolthaServiceServer) DisableOnuDevice(context.Context, *common.ID) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DisableOnuDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) EnableOnuDevice(context.Context, *common.ID) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method EnableOnuDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) DisableOnuSerialNumber(context.Context, *OnuSerialNumberOnOLTPon) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DisableOnuSerialNumber not implemented")
+}
+func (UnimplementedVolthaServiceServer) EnableOnuSerialNumber(context.Context, *OnuSerialNumberOnOLTPon) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method EnableOnuSerialNumber not implemented")
+}
+func (UnimplementedVolthaServiceServer) UpdateDevice(context.Context, *UpdateDevice) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method UpdateDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) mustEmbedUnimplementedVolthaServiceServer() {}
+func (UnimplementedVolthaServiceServer) testEmbeddedByValue()                       {}
+
+// UnsafeVolthaServiceServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to VolthaServiceServer will
+// result in compilation errors.
+type UnsafeVolthaServiceServer interface {
+	mustEmbedUnimplementedVolthaServiceServer()
+}
+
+func RegisterVolthaServiceServer(s grpc.ServiceRegistrar, srv VolthaServiceServer) {
+	// If the following call panics, it indicates UnimplementedVolthaServiceServer was
+	// embedded by pointer and is nil.  This will cause panics if an
+	// unimplemented method is ever invoked, so we test this at initialization
+	// time to prevent it from happening at runtime later due to I/O.
+	if t, ok := srv.(interface{ testEmbeddedByValue() }); ok {
+		t.testEmbeddedByValue()
+	}
+	s.RegisterService(&VolthaService_ServiceDesc, srv)
+}
+
+func _VolthaService_GetVoltha_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(emptypb.Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetVoltha(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetVoltha_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetVoltha(ctx, req.(*emptypb.Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListCoreInstances_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(emptypb.Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListCoreInstances(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListCoreInstances_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListCoreInstances(ctx, req.(*emptypb.Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetCoreInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetCoreInstance(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetCoreInstance_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetCoreInstance(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListAdapters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(emptypb.Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListAdapters(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListAdapters_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListAdapters(ctx, req.(*emptypb.Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListLogicalDevices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(emptypb.Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListLogicalDevices(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListLogicalDevices_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListLogicalDevices(ctx, req.(*emptypb.Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetLogicalDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetLogicalDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetLogicalDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetLogicalDevice(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListLogicalDevicePorts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListLogicalDevicePorts(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListLogicalDevicePorts_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListLogicalDevicePorts(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetLogicalDevicePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(LogicalPortId)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetLogicalDevicePort(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetLogicalDevicePort_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetLogicalDevicePort(ctx, req.(*LogicalPortId))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_EnableLogicalDevicePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(LogicalPortId)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).EnableLogicalDevicePort(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_EnableLogicalDevicePort_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).EnableLogicalDevicePort(ctx, req.(*LogicalPortId))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DisableLogicalDevicePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(LogicalPortId)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DisableLogicalDevicePort(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DisableLogicalDevicePort_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DisableLogicalDevicePort(ctx, req.(*LogicalPortId))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListLogicalDeviceFlows_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListLogicalDeviceFlows(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListLogicalDeviceFlows_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListLogicalDeviceFlows(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_UpdateLogicalDeviceFlowTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(openflow_13.FlowTableUpdate)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).UpdateLogicalDeviceFlowTable(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_UpdateLogicalDeviceFlowTable_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).UpdateLogicalDeviceFlowTable(ctx, req.(*openflow_13.FlowTableUpdate))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_UpdateLogicalDeviceMeterTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(openflow_13.MeterModUpdate)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).UpdateLogicalDeviceMeterTable(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_UpdateLogicalDeviceMeterTable_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).UpdateLogicalDeviceMeterTable(ctx, req.(*openflow_13.MeterModUpdate))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListLogicalDeviceMeters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListLogicalDeviceMeters(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListLogicalDeviceMeters_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListLogicalDeviceMeters(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListLogicalDeviceFlowGroups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListLogicalDeviceFlowGroups(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListLogicalDeviceFlowGroups_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListLogicalDeviceFlowGroups(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_UpdateLogicalDeviceFlowGroupTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(openflow_13.FlowGroupTableUpdate)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).UpdateLogicalDeviceFlowGroupTable(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_UpdateLogicalDeviceFlowGroupTable_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).UpdateLogicalDeviceFlowGroupTable(ctx, req.(*openflow_13.FlowGroupTableUpdate))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListDevices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(emptypb.Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListDevices(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListDevices_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListDevices(ctx, req.(*emptypb.Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListDeviceIds_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(emptypb.Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListDeviceIds(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListDeviceIds_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListDeviceIds(ctx, req.(*emptypb.Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ReconcileDevices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.IDs)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ReconcileDevices(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ReconcileDevices_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ReconcileDevices(ctx, req.(*common.IDs))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetDevice(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_CreateDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Device)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).CreateDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_CreateDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).CreateDevice(ctx, req.(*Device))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_EnableDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).EnableDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_EnableDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).EnableDevice(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DisableDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DisableDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DisableDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DisableDevice(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_RebootDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).RebootDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_RebootDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).RebootDevice(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DeleteDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DeleteDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DeleteDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DeleteDevice(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ForceDeleteDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ForceDeleteDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ForceDeleteDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ForceDeleteDevice(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DownloadImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ImageDownload)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DownloadImage(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DownloadImage_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DownloadImage(ctx, req.(*ImageDownload))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetImageDownloadStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ImageDownload)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetImageDownloadStatus(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetImageDownloadStatus_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetImageDownloadStatus(ctx, req.(*ImageDownload))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetImageDownload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ImageDownload)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetImageDownload(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetImageDownload_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetImageDownload(ctx, req.(*ImageDownload))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListImageDownloads_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListImageDownloads(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListImageDownloads_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListImageDownloads(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_CancelImageDownload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ImageDownload)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).CancelImageDownload(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_CancelImageDownload_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).CancelImageDownload(ctx, req.(*ImageDownload))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ActivateImageUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ImageDownload)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ActivateImageUpdate(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ActivateImageUpdate_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ActivateImageUpdate(ctx, req.(*ImageDownload))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_RevertImageUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ImageDownload)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).RevertImageUpdate(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_RevertImageUpdate_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).RevertImageUpdate(ctx, req.(*ImageDownload))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DownloadImageToDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeviceImageDownloadRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DownloadImageToDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DownloadImageToDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DownloadImageToDevice(ctx, req.(*DeviceImageDownloadRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetImageStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeviceImageRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetImageStatus(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetImageStatus_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetImageStatus(ctx, req.(*DeviceImageRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_AbortImageUpgradeToDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeviceImageRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).AbortImageUpgradeToDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_AbortImageUpgradeToDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).AbortImageUpgradeToDevice(ctx, req.(*DeviceImageRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetOnuImages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetOnuImages(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetOnuImages_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetOnuImages(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ActivateImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeviceImageRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ActivateImage(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ActivateImage_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ActivateImage(ctx, req.(*DeviceImageRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_CommitImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeviceImageRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).CommitImage(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_CommitImage_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).CommitImage(ctx, req.(*DeviceImageRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListDevicePorts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListDevicePorts(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListDevicePorts_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListDevicePorts(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListDevicePmConfigs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListDevicePmConfigs(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListDevicePmConfigs_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListDevicePmConfigs(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_UpdateDevicePmConfigs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(PmConfigs)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).UpdateDevicePmConfigs(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_UpdateDevicePmConfigs_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).UpdateDevicePmConfigs(ctx, req.(*PmConfigs))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListDeviceFlows_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListDeviceFlows(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListDeviceFlows_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListDeviceFlows(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListDeviceFlowGroups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListDeviceFlowGroups(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListDeviceFlowGroups_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListDeviceFlowGroups(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListDeviceTypes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(emptypb.Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListDeviceTypes(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListDeviceTypes_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListDeviceTypes(ctx, req.(*emptypb.Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetDeviceType_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetDeviceType(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetDeviceType_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetDeviceType(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_StreamPacketsOut_Handler(srv interface{}, stream grpc.ServerStream) error {
+	return srv.(VolthaServiceServer).StreamPacketsOut(&grpc.GenericServerStream[openflow_13.PacketOut, emptypb.Empty]{ServerStream: stream})
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type VolthaService_StreamPacketsOutServer = grpc.ClientStreamingServer[openflow_13.PacketOut, emptypb.Empty]
+
+func _VolthaService_ReceivePacketsIn_Handler(srv interface{}, stream grpc.ServerStream) error {
+	m := new(emptypb.Empty)
+	if err := stream.RecvMsg(m); err != nil {
+		return err
+	}
+	return srv.(VolthaServiceServer).ReceivePacketsIn(m, &grpc.GenericServerStream[emptypb.Empty, openflow_13.PacketIn]{ServerStream: stream})
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type VolthaService_ReceivePacketsInServer = grpc.ServerStreamingServer[openflow_13.PacketIn]
+
+func _VolthaService_ReceiveChangeEvents_Handler(srv interface{}, stream grpc.ServerStream) error {
+	m := new(emptypb.Empty)
+	if err := stream.RecvMsg(m); err != nil {
+		return err
+	}
+	return srv.(VolthaServiceServer).ReceiveChangeEvents(m, &grpc.GenericServerStream[emptypb.Empty, openflow_13.ChangeEvent]{ServerStream: stream})
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type VolthaService_ReceiveChangeEventsServer = grpc.ServerStreamingServer[openflow_13.ChangeEvent]
+
+func _VolthaService_CreateEventFilter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(EventFilter)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).CreateEventFilter(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_CreateEventFilter_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).CreateEventFilter(ctx, req.(*EventFilter))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetEventFilter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetEventFilter(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetEventFilter_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetEventFilter(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_UpdateEventFilter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(EventFilter)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).UpdateEventFilter(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_UpdateEventFilter_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).UpdateEventFilter(ctx, req.(*EventFilter))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DeleteEventFilter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(EventFilter)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DeleteEventFilter(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DeleteEventFilter_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DeleteEventFilter(ctx, req.(*EventFilter))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListEventFilters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(emptypb.Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListEventFilters(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListEventFilters_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListEventFilters(ctx, req.(*emptypb.Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetImages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetImages(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetImages_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetImages(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_SelfTest_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).SelfTest(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_SelfTest_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).SelfTest(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetMibDeviceData_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetMibDeviceData(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetMibDeviceData_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetMibDeviceData(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetAlarmDeviceData_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetAlarmDeviceData(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetAlarmDeviceData_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetAlarmDeviceData(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_SimulateAlarm_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(SimulateAlarmRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).SimulateAlarm(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_SimulateAlarm_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).SimulateAlarm(ctx, req.(*SimulateAlarmRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_EnablePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Port)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).EnablePort(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_EnablePort_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).EnablePort(ctx, req.(*Port))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DisablePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Port)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DisablePort(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DisablePort_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DisablePort(ctx, req.(*Port))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetExtValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(extension.ValueSpecifier)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetExtValue(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetExtValue_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetExtValue(ctx, req.(*extension.ValueSpecifier))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_SetExtValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(extension.ValueSet)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).SetExtValue(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_SetExtValue_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).SetExtValue(ctx, req.(*extension.ValueSet))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_StartOmciTestAction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(omci.OmciTestRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).StartOmciTestAction(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_StartOmciTestAction_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).StartOmciTestAction(ctx, req.(*omci.OmciTestRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_PutVoipSystemProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voip_system_profile.VoipSystemProfileRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).PutVoipSystemProfile(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_PutVoipSystemProfile_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).PutVoipSystemProfile(ctx, req.(*voip_system_profile.VoipSystemProfileRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DeleteVoipSystemProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.Key)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DeleteVoipSystemProfile(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DeleteVoipSystemProfile_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DeleteVoipSystemProfile(ctx, req.(*common.Key))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_PutVoipUserProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voip_user_profile.VoipUserProfileRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).PutVoipUserProfile(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_PutVoipUserProfile_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).PutVoipUserProfile(ctx, req.(*voip_user_profile.VoipUserProfileRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DeleteVoipUserProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.Key)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DeleteVoipUserProfile(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DeleteVoipUserProfile_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DeleteVoipUserProfile(ctx, req.(*common.Key))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DisableOnuDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DisableOnuDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DisableOnuDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DisableOnuDevice(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_EnableOnuDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).EnableOnuDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_EnableOnuDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).EnableOnuDevice(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DisableOnuSerialNumber_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(OnuSerialNumberOnOLTPon)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DisableOnuSerialNumber(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DisableOnuSerialNumber_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DisableOnuSerialNumber(ctx, req.(*OnuSerialNumberOnOLTPon))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_EnableOnuSerialNumber_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(OnuSerialNumberOnOLTPon)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).EnableOnuSerialNumber(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_EnableOnuSerialNumber_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).EnableOnuSerialNumber(ctx, req.(*OnuSerialNumberOnOLTPon))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_UpdateDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(UpdateDevice)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).UpdateDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_UpdateDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).UpdateDevice(ctx, req.(*UpdateDevice))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+// VolthaService_ServiceDesc is the grpc.ServiceDesc for VolthaService service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var VolthaService_ServiceDesc = grpc.ServiceDesc{
+	ServiceName: "voltha.VolthaService",
+	HandlerType: (*VolthaServiceServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "GetVoltha",
+			Handler:    _VolthaService_GetVoltha_Handler,
+		},
+		{
+			MethodName: "ListCoreInstances",
+			Handler:    _VolthaService_ListCoreInstances_Handler,
+		},
+		{
+			MethodName: "GetCoreInstance",
+			Handler:    _VolthaService_GetCoreInstance_Handler,
+		},
+		{
+			MethodName: "ListAdapters",
+			Handler:    _VolthaService_ListAdapters_Handler,
+		},
+		{
+			MethodName: "ListLogicalDevices",
+			Handler:    _VolthaService_ListLogicalDevices_Handler,
+		},
+		{
+			MethodName: "GetLogicalDevice",
+			Handler:    _VolthaService_GetLogicalDevice_Handler,
+		},
+		{
+			MethodName: "ListLogicalDevicePorts",
+			Handler:    _VolthaService_ListLogicalDevicePorts_Handler,
+		},
+		{
+			MethodName: "GetLogicalDevicePort",
+			Handler:    _VolthaService_GetLogicalDevicePort_Handler,
+		},
+		{
+			MethodName: "EnableLogicalDevicePort",
+			Handler:    _VolthaService_EnableLogicalDevicePort_Handler,
+		},
+		{
+			MethodName: "DisableLogicalDevicePort",
+			Handler:    _VolthaService_DisableLogicalDevicePort_Handler,
+		},
+		{
+			MethodName: "ListLogicalDeviceFlows",
+			Handler:    _VolthaService_ListLogicalDeviceFlows_Handler,
+		},
+		{
+			MethodName: "UpdateLogicalDeviceFlowTable",
+			Handler:    _VolthaService_UpdateLogicalDeviceFlowTable_Handler,
+		},
+		{
+			MethodName: "UpdateLogicalDeviceMeterTable",
+			Handler:    _VolthaService_UpdateLogicalDeviceMeterTable_Handler,
+		},
+		{
+			MethodName: "ListLogicalDeviceMeters",
+			Handler:    _VolthaService_ListLogicalDeviceMeters_Handler,
+		},
+		{
+			MethodName: "ListLogicalDeviceFlowGroups",
+			Handler:    _VolthaService_ListLogicalDeviceFlowGroups_Handler,
+		},
+		{
+			MethodName: "UpdateLogicalDeviceFlowGroupTable",
+			Handler:    _VolthaService_UpdateLogicalDeviceFlowGroupTable_Handler,
+		},
+		{
+			MethodName: "ListDevices",
+			Handler:    _VolthaService_ListDevices_Handler,
+		},
+		{
+			MethodName: "ListDeviceIds",
+			Handler:    _VolthaService_ListDeviceIds_Handler,
+		},
+		{
+			MethodName: "ReconcileDevices",
+			Handler:    _VolthaService_ReconcileDevices_Handler,
+		},
+		{
+			MethodName: "GetDevice",
+			Handler:    _VolthaService_GetDevice_Handler,
+		},
+		{
+			MethodName: "CreateDevice",
+			Handler:    _VolthaService_CreateDevice_Handler,
+		},
+		{
+			MethodName: "EnableDevice",
+			Handler:    _VolthaService_EnableDevice_Handler,
+		},
+		{
+			MethodName: "DisableDevice",
+			Handler:    _VolthaService_DisableDevice_Handler,
+		},
+		{
+			MethodName: "RebootDevice",
+			Handler:    _VolthaService_RebootDevice_Handler,
+		},
+		{
+			MethodName: "DeleteDevice",
+			Handler:    _VolthaService_DeleteDevice_Handler,
+		},
+		{
+			MethodName: "ForceDeleteDevice",
+			Handler:    _VolthaService_ForceDeleteDevice_Handler,
+		},
+		{
+			MethodName: "DownloadImage",
+			Handler:    _VolthaService_DownloadImage_Handler,
+		},
+		{
+			MethodName: "GetImageDownloadStatus",
+			Handler:    _VolthaService_GetImageDownloadStatus_Handler,
+		},
+		{
+			MethodName: "GetImageDownload",
+			Handler:    _VolthaService_GetImageDownload_Handler,
+		},
+		{
+			MethodName: "ListImageDownloads",
+			Handler:    _VolthaService_ListImageDownloads_Handler,
+		},
+		{
+			MethodName: "CancelImageDownload",
+			Handler:    _VolthaService_CancelImageDownload_Handler,
+		},
+		{
+			MethodName: "ActivateImageUpdate",
+			Handler:    _VolthaService_ActivateImageUpdate_Handler,
+		},
+		{
+			MethodName: "RevertImageUpdate",
+			Handler:    _VolthaService_RevertImageUpdate_Handler,
+		},
+		{
+			MethodName: "DownloadImageToDevice",
+			Handler:    _VolthaService_DownloadImageToDevice_Handler,
+		},
+		{
+			MethodName: "GetImageStatus",
+			Handler:    _VolthaService_GetImageStatus_Handler,
+		},
+		{
+			MethodName: "AbortImageUpgradeToDevice",
+			Handler:    _VolthaService_AbortImageUpgradeToDevice_Handler,
+		},
+		{
+			MethodName: "GetOnuImages",
+			Handler:    _VolthaService_GetOnuImages_Handler,
+		},
+		{
+			MethodName: "ActivateImage",
+			Handler:    _VolthaService_ActivateImage_Handler,
+		},
+		{
+			MethodName: "CommitImage",
+			Handler:    _VolthaService_CommitImage_Handler,
+		},
+		{
+			MethodName: "ListDevicePorts",
+			Handler:    _VolthaService_ListDevicePorts_Handler,
+		},
+		{
+			MethodName: "ListDevicePmConfigs",
+			Handler:    _VolthaService_ListDevicePmConfigs_Handler,
+		},
+		{
+			MethodName: "UpdateDevicePmConfigs",
+			Handler:    _VolthaService_UpdateDevicePmConfigs_Handler,
+		},
+		{
+			MethodName: "ListDeviceFlows",
+			Handler:    _VolthaService_ListDeviceFlows_Handler,
+		},
+		{
+			MethodName: "ListDeviceFlowGroups",
+			Handler:    _VolthaService_ListDeviceFlowGroups_Handler,
+		},
+		{
+			MethodName: "ListDeviceTypes",
+			Handler:    _VolthaService_ListDeviceTypes_Handler,
+		},
+		{
+			MethodName: "GetDeviceType",
+			Handler:    _VolthaService_GetDeviceType_Handler,
+		},
+		{
+			MethodName: "CreateEventFilter",
+			Handler:    _VolthaService_CreateEventFilter_Handler,
+		},
+		{
+			MethodName: "GetEventFilter",
+			Handler:    _VolthaService_GetEventFilter_Handler,
+		},
+		{
+			MethodName: "UpdateEventFilter",
+			Handler:    _VolthaService_UpdateEventFilter_Handler,
+		},
+		{
+			MethodName: "DeleteEventFilter",
+			Handler:    _VolthaService_DeleteEventFilter_Handler,
+		},
+		{
+			MethodName: "ListEventFilters",
+			Handler:    _VolthaService_ListEventFilters_Handler,
+		},
+		{
+			MethodName: "GetImages",
+			Handler:    _VolthaService_GetImages_Handler,
+		},
+		{
+			MethodName: "SelfTest",
+			Handler:    _VolthaService_SelfTest_Handler,
+		},
+		{
+			MethodName: "GetMibDeviceData",
+			Handler:    _VolthaService_GetMibDeviceData_Handler,
+		},
+		{
+			MethodName: "GetAlarmDeviceData",
+			Handler:    _VolthaService_GetAlarmDeviceData_Handler,
+		},
+		{
+			MethodName: "SimulateAlarm",
+			Handler:    _VolthaService_SimulateAlarm_Handler,
+		},
+		{
+			MethodName: "EnablePort",
+			Handler:    _VolthaService_EnablePort_Handler,
+		},
+		{
+			MethodName: "DisablePort",
+			Handler:    _VolthaService_DisablePort_Handler,
+		},
+		{
+			MethodName: "GetExtValue",
+			Handler:    _VolthaService_GetExtValue_Handler,
+		},
+		{
+			MethodName: "SetExtValue",
+			Handler:    _VolthaService_SetExtValue_Handler,
+		},
+		{
+			MethodName: "StartOmciTestAction",
+			Handler:    _VolthaService_StartOmciTestAction_Handler,
+		},
+		{
+			MethodName: "PutVoipSystemProfile",
+			Handler:    _VolthaService_PutVoipSystemProfile_Handler,
+		},
+		{
+			MethodName: "DeleteVoipSystemProfile",
+			Handler:    _VolthaService_DeleteVoipSystemProfile_Handler,
+		},
+		{
+			MethodName: "PutVoipUserProfile",
+			Handler:    _VolthaService_PutVoipUserProfile_Handler,
+		},
+		{
+			MethodName: "DeleteVoipUserProfile",
+			Handler:    _VolthaService_DeleteVoipUserProfile_Handler,
+		},
+		{
+			MethodName: "DisableOnuDevice",
+			Handler:    _VolthaService_DisableOnuDevice_Handler,
+		},
+		{
+			MethodName: "EnableOnuDevice",
+			Handler:    _VolthaService_EnableOnuDevice_Handler,
+		},
+		{
+			MethodName: "DisableOnuSerialNumber",
+			Handler:    _VolthaService_DisableOnuSerialNumber_Handler,
+		},
+		{
+			MethodName: "EnableOnuSerialNumber",
+			Handler:    _VolthaService_EnableOnuSerialNumber_Handler,
+		},
+		{
+			MethodName: "UpdateDevice",
+			Handler:    _VolthaService_UpdateDevice_Handler,
+		},
+	},
+	Streams: []grpc.StreamDesc{
+		{
+			StreamName:    "StreamPacketsOut",
+			Handler:       _VolthaService_StreamPacketsOut_Handler,
+			ClientStreams: true,
+		},
+		{
+			StreamName:    "ReceivePacketsIn",
+			Handler:       _VolthaService_ReceivePacketsIn_Handler,
+			ServerStreams: true,
+		},
+		{
+			StreamName:    "ReceiveChangeEvents",
+			Handler:       _VolthaService_ReceiveChangeEvents_Handler,
+			ServerStreams: true,
+		},
+	},
+	Metadata: "voltha_protos/voltha.proto",
+}