[VOL-4289]  Proto changes for gRPC migration

Change-Id: I317a0a865ccf78d0c37aa229c50d293a3f66c8bb
diff --git a/protos/google/api/annotations.proto b/protos/google/api/annotations.proto
old mode 100644
new mode 100755
diff --git a/protos/google/api/http.proto b/protos/google/api/http.proto
old mode 100644
new mode 100755
diff --git a/protos/voltha_protos/adapter.proto b/protos/voltha_protos/adapter.proto
old mode 100644
new mode 100755
index f7c9ef3..3b13266
--- a/protos/voltha_protos/adapter.proto
+++ b/protos/voltha_protos/adapter.proto
@@ -1,15 +1,14 @@
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v4/go/voltha";
+option go_package = "github.com/opencord/voltha-protos/v5/go/voltha";
 option java_package = "org.opencord.voltha";
 option java_outer_classname = "VolthaAdapter";
 
 package voltha;
 
-import "google/protobuf/any.proto";
-import "voltha_protos/meta.proto";
-import "google/protobuf/timestamp.proto";
 
+import "voltha_protos/meta.proto";
+import "google/protobuf/any.proto";
 
 message AdapterConfig {
 
@@ -36,7 +35,7 @@
     repeated string logical_device_ids = 4;  // Logical devices "owned"
 
     // timestamp when the adapter last sent a message to the core
-    google.protobuf.Timestamp last_communication = 5;
+    int64 last_communication = 5;
 
     int32 currentReplica = 6;
     int32 totalReplicas = 7;
diff --git a/protos/voltha_protos/adapter_services.proto b/protos/voltha_protos/adapter_services.proto
new file mode 100755
index 0000000..967511e
--- /dev/null
+++ b/protos/voltha_protos/adapter_services.proto
@@ -0,0 +1,99 @@
+syntax = "proto3";
+
+option go_package = "github.com/opencord/voltha-protos/v5/go/adapter_services";
+option java_package = "org.opencord.adapter_services";
+option java_outer_classname = "VolthaAdapterServices";
+
+package voltha;
+
+import "google/protobuf/empty.proto";
+import  "voltha_protos/common.proto";
+import  "voltha_protos/inter_container.proto";
+import "voltha_protos/device.proto";
+import "voltha_protos/extensions.proto";
+import "voltha_protos/openolt.proto";
+import "voltha_protos/health.proto";
+import "voltha_protos/voltha.proto";
+
+// Service waiting for Core requests
+service AdapterService {
+    // GetHealthStatus is used by an AdapterService client to verify connectivity
+    // to the gRPC server hosting the AdapterService service
+    rpc GetHealthStatus(google.protobuf.Empty) returns (HealthStatus);
+
+    // Device
+    rpc AdoptDevice(Device) returns(google.protobuf.Empty);
+    rpc ReconcileDevice(Device) returns(google.protobuf.Empty);
+    rpc DeleteDevice(Device) returns(google.protobuf.Empty);
+    rpc DisableDevice(Device) returns(google.protobuf.Empty);
+    rpc ReEnableDevice(Device) returns(google.protobuf.Empty);
+    rpc RebootDevice(Device) returns(google.protobuf.Empty);
+    rpc SelfTestDevice(Device) returns(google.protobuf.Empty);
+    rpc GetOfpDeviceInfo(Device) returns(SwitchCapability);
+    rpc ChildDeviceLost(Device) returns(google.protobuf.Empty);
+
+    // Ports
+    rpc EnablePort(Port) returns(google.protobuf.Empty);
+    rpc DisablePort(Port) returns(google.protobuf.Empty);
+
+    // Flows
+    rpc UpdateFlowsBulk(BulkFlows) returns(google.protobuf.Empty);
+    rpc UpdateFlowsIncrementally(IncrementalFlows) returns(google.protobuf.Empty);
+
+    //Packets
+    rpc SendPacketOut(PacketOut) returns(google.protobuf.Empty);
+
+    // PM
+    rpc UpdatePmConfig(PmConfigsInfo) returns(google.protobuf.Empty);
+
+    // Image
+    rpc DownloadOnuImage(DeviceImageDownloadRequest) returns (DeviceImageResponse);
+    rpc GetOnuImageStatus(DeviceImageRequest) returns (DeviceImageResponse);
+    rpc AbortOnuImageUpgrade(DeviceImageRequest) returns (DeviceImageResponse);
+    rpc GetOnuImages(common.ID) returns (OnuImages);
+    rpc ActivateOnuImage(DeviceImageRequest) returns (DeviceImageResponse);
+    rpc CommitOnuImage(DeviceImageRequest) returns (DeviceImageResponse);
+
+    // Deprecated Image APIs
+    rpc DownloadImage(ImageDownloadMessage) returns (ImageDownload);
+    rpc GetImageDownloadStatus(ImageDownloadMessage) returns (ImageDownload);
+    rpc CancelImageDownload(ImageDownloadMessage) returns (ImageDownload);
+    rpc ActivateImageUpdate(ImageDownloadMessage) returns (ImageDownload);
+    rpc RevertImageUpdate(ImageDownloadMessage) returns (ImageDownload);
+
+    // Tests
+    rpc StartOmciTest(OMCITest) returns(TestResponse);
+    rpc SimulateAlarm(SimulateAlarmMessage) returns (common.OperationResp);
+
+    // Events
+    rpc SuppressEvent(EventFilter) returns(google.protobuf.Empty);
+    rpc UnSuppressEvent(EventFilter) returns(google.protobuf.Empty);
+
+    // Get/Set
+    rpc GetExtValue(GetExtValueMessage) returns (common.ReturnValues);
+    rpc SetExtValue(SetExtValueMessage) returns (google.protobuf.Empty);
+    rpc GetSingleValue(extension.SingleGetValueRequest) returns (extension.SingleGetValueResponse);
+    rpc SetSingleValue(extension.SingleSetValueRequest) returns (extension.SingleSetValueResponse);
+}
+
+
+service OnuInterAdapterService {
+    // GetHealthStatus is used by an OnuInterAdapterService client to verify connectivity
+    // to the gRPC server hosting the OnuInterAdapterService service
+    rpc GetHealthStatus(google.protobuf.Empty) returns (HealthStatus);
+
+    rpc OnuIndication(OnuIndicationMessage) returns (google.protobuf.Empty);
+    rpc OmciIndication(OmciMessage) returns (google.protobuf.Empty);
+    rpc DownloadTechProfile(TechProfileDownloadMessage) returns (google.protobuf.Empty);
+    rpc DeleteGemPort(DeleteGemPortMessage) returns (google.protobuf.Empty);
+    rpc DeleteTCont(DeleteTcontMessage) returns (google.protobuf.Empty);
+}
+
+service OltInterAdapterService {
+    // GetHealthStatus is used by an OltInterAdapterService client to verify connectivity
+    // to the gRPC server hosting the OltInterAdapterService service
+    rpc GetHealthStatus(google.protobuf.Empty) returns (HealthStatus);
+
+    rpc ProxyOmciRequest(OmciMessage) returns (google.protobuf.Empty);
+    rpc GetTechProfileInstance(TechProfileInstanceRequestMessage) returns (TechProfileDownloadMessage);
+}
\ No newline at end of file
diff --git a/protos/voltha_protos/common.proto b/protos/voltha_protos/common.proto
old mode 100644
new mode 100755
index b1af191..19d81d7
--- a/protos/voltha_protos/common.proto
+++ b/protos/voltha_protos/common.proto
@@ -1,6 +1,6 @@
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v4/go/common";
+option go_package = "github.com/opencord/voltha-protos/v5/go/common";
 
 package common;
 
diff --git a/protos/voltha_protos/core.proto b/protos/voltha_protos/core.proto
old mode 100644
new mode 100755
index fabad3d..ad8f83a
--- a/protos/voltha_protos/core.proto
+++ b/protos/voltha_protos/core.proto
@@ -1,7 +1,13 @@
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v4/go/voltha";
-option java_package = "org.opencord.voltha";
+option go_package = "github.com/opencord/voltha-protos/v5/go/core";
+option java_package = "org.opencord.voltha.core";
+
+import "google/protobuf/empty.proto";
+import "voltha_protos/inter_container.proto";
+import "voltha_protos/common.proto";
+import "voltha_protos/device.proto";
+import "voltha_protos/health.proto";
 
 package voltha;
 
@@ -26,3 +32,33 @@
     }
     Types transient_state = 1;
 }
+
+service CoreService {
+	//	 in coreProxy interface
+	rpc GetHealthStatus(google.protobuf.Empty) returns (HealthStatus);
+	rpc RegisterAdapter (AdapterRegistration) returns (google.protobuf.Empty);
+	rpc DeviceUpdate (Device) returns (google.protobuf.Empty);
+	rpc PortCreated (Port) returns (google.protobuf.Empty);
+	rpc PortsStateUpdate (PortStateFilter) returns (google.protobuf.Empty);
+	rpc DeleteAllPorts (common.ID) returns (google.protobuf.Empty);
+	rpc GetDevicePort (PortFilter) returns (Port);
+	rpc ListDevicePorts (common.ID) returns (Ports);
+	rpc DeviceStateUpdate (DeviceStateFilter) returns (google.protobuf.Empty);
+	rpc DevicePMConfigUpdate (PmConfigs) returns (google.protobuf.Empty);
+	rpc ChildDeviceDetected (DeviceDiscovery) returns (Device);
+	rpc ChildDevicesLost (common.ID) returns (google.protobuf.Empty);
+	rpc ChildDevicesDetected (common.ID) returns (google.protobuf.Empty);
+	rpc GetDevice (common.ID) returns (Device);
+	rpc GetChildDevice (ChildDeviceFilter) returns (Device);
+	rpc GetChildDevices (common.ID) returns (Devices);
+	rpc SendPacketIn (PacketIn) returns (google.protobuf.Empty);
+	rpc DeviceReasonUpdate (DeviceReason) returns (google.protobuf.Empty);
+	rpc PortStateUpdate (PortState) returns (google.protobuf.Empty);
+
+	// Additional API found in the Core - unused?
+	rpc ReconcileChildDevices (common.ID) returns (google.protobuf.Empty);
+	rpc GetChildDeviceWithProxyAddress (Device.ProxyAddress) returns (Device);
+	rpc GetPorts (PortFilter) returns (Ports);
+	rpc ChildrenStateUpdate (DeviceStateFilter) returns (google.protobuf.Empty);
+	rpc UpdateImageDownload (ImageDownload) returns (google.protobuf.Empty);
+}
\ No newline at end of file
diff --git a/protos/voltha_protos/device.proto b/protos/voltha_protos/device.proto
old mode 100644
new mode 100755
index 9e65bee..f1ac063
--- a/protos/voltha_protos/device.proto
+++ b/protos/voltha_protos/device.proto
@@ -1,12 +1,13 @@
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v4/go/voltha";
+option go_package = "github.com/opencord/voltha-protos/v5/go/voltha";
 option java_package = "org.opencord.voltha";
 option java_outer_classname = "VolthaDevice";
 
 package voltha;
 
 import "google/protobuf/any.proto";
+
 import "voltha_protos/common.proto";
 import "voltha_protos/meta.proto";
 import "voltha_protos/openflow_13.proto";
@@ -24,6 +25,7 @@
     repeated string vendor_ids = 6;
 
     // Name of the adapter that handles device type
+    // Deprecated and replaced by adapterType
     string adapter = 2;
 
     // Capabilities
@@ -31,6 +33,9 @@
     bool accepts_add_remove_flow_updates = 4;
     bool accepts_direct_logical_flows_update = 7;
 
+    // Type of adapter that can handle this device type
+    string adapter_type = 8;
+
 }
 
 // A plurality of device types
@@ -358,8 +363,12 @@
     string vendor_id = 24 [(access) = READ_ONLY];
 
     // Adapter that takes care of device
+    // Deprecated and replaced by adapter_endpoint
     string adapter = 11 [(access) = READ_ONLY];
 
+    // Indicates how to reach the adapter instance that manages this device
+    string adapter_endpoint = 25;
+
     // Device contact on vlan (if 0, no vlan)
     uint32 vlan = 12;
 
@@ -371,6 +380,7 @@
         string channel_termination = 5; // Channel Termination name
         uint32 onu_id = 6; // onu identifier; optional
         uint32 onu_session_id = 7; // session identifier for the ONU; optional
+        string adapter_endpoint = 8; // endpoint of the adapter that handles the proxy device
     };
 
     // Device contact MAC address (format: "xx:xx:xx:xx:xx:xx")
diff --git a/protos/voltha_protos/events.proto b/protos/voltha_protos/events.proto
old mode 100644
new mode 100755
index 5092bab..e9d36ba
--- a/protos/voltha_protos/events.proto
+++ b/protos/voltha_protos/events.proto
@@ -1,6 +1,6 @@
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v4/go/voltha";
+option go_package = "github.com/opencord/voltha-protos/v5/go/voltha";
 option java_package = "org.opencord.voltha";
 
 package voltha;
diff --git a/protos/voltha_protos/ext_config.proto b/protos/voltha_protos/ext_config.proto
old mode 100644
new mode 100755
index bfefd98..dc33120
--- a/protos/voltha_protos/ext_config.proto
+++ b/protos/voltha_protos/ext_config.proto
@@ -13,7 +13,7 @@
 // limitations under the License.
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v4/go/ext/config";
+option go_package = "github.com/opencord/voltha-protos/v5/go/ext/config";
 
 package config;
 
diff --git a/protos/voltha_protos/extensions.proto b/protos/voltha_protos/extensions.proto
old mode 100644
new mode 100755
index d8441fb..5331b26
--- a/protos/voltha_protos/extensions.proto
+++ b/protos/voltha_protos/extensions.proto
@@ -14,7 +14,7 @@
 
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v4/go/extension";
+option go_package = "github.com/opencord/voltha-protos/v5/go/extension";
 option java_package = "org.opencord.voltha.extension";
 
 package extension;
diff --git a/protos/voltha_protos/health.proto b/protos/voltha_protos/health.proto
old mode 100644
new mode 100755
index 22346ac..8ed3cbc
--- a/protos/voltha_protos/health.proto
+++ b/protos/voltha_protos/health.proto
@@ -1,6 +1,6 @@
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v4/go/voltha";
+option go_package = "github.com/opencord/voltha-protos/v5/go/voltha";
 option java_package = "org.opencord.voltha";
 
 package voltha;
diff --git a/protos/voltha_protos/ietf_interfaces.proto b/protos/voltha_protos/ietf_interfaces.proto
old mode 100644
new mode 100755
index efe3f94..89f59b9
--- a/protos/voltha_protos/ietf_interfaces.proto
+++ b/protos/voltha_protos/ietf_interfaces.proto
@@ -1,6 +1,6 @@
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v4/go/ietf";
+option go_package = "github.com/opencord/voltha-protos/v5/go/ietf";
 option java_package = "org.opencord.voltha";
 
 package ietf;
diff --git a/protos/voltha_protos/inter_container.proto b/protos/voltha_protos/inter_container.proto
old mode 100644
new mode 100755
index 755b92a..6c946af
--- a/protos/voltha_protos/inter_container.proto
+++ b/protos/voltha_protos/inter_container.proto
@@ -1,83 +1,105 @@
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v4/go/inter_container";
+option go_package = "github.com/opencord/voltha-protos/v5/go/inter_container";
 option java_package = "org.opencord.voltha";
 
-import public "voltha_protos/common.proto";
-import public "voltha_protos/voltha.proto";
-import "google/protobuf/any.proto";
+import "voltha_protos/common.proto";
+import "voltha_protos/voltha.proto";
 import "voltha_protos/openflow_13.proto";
-import public "voltha_protos/logical_device.proto";
-import "google/protobuf/timestamp.proto";
 import "voltha_protos/tech_profile.proto";
-
+import "voltha_protos/openolt.proto";
+import "voltha_protos/adapter.proto";
+import "voltha_protos/device.proto";
 
 package voltha;
 
-message StrType {
-    string val = 1;
+//
+// Core-Adapter messages
+// ****
+// ****
+// ****
+message AdapterRegistration {
+    Adapter adapter  = 1;
+    DeviceTypes dTypes = 2;
 }
 
-message IntType {
-    int64 val = 1;
+message ChildDeviceFilter {
+    string parent_id = 1;
+    string serial_number = 2;
+    uint32 onu_id = 3;
+    uint32 parent_port_no = 4;
 }
 
-message BoolType {
-    bool val = 1;
+message PortFilter {
+    string device_id = 1;
+    uint32 port = 2;
+    Port.PortType port_type = 3;
 }
 
-message Packet {
-    bytes payload = 1;
+message DeviceDiscovery {
+    string parent_id = 1;
+    uint32 parent_port_no = 2;
+    string child_device_type = 3;
+    uint32 channel_id = 4;
+    string vendor_id = 5;
+    string serial_number = 6;
+    uint32 onu_id = 7;
 }
 
-message ErrorCode {
-    enum codes {
-        UNSUPPORTED_REQUEST = 0;
-        INVALID_PARAMETERS = 1;
-        DEADLINE_EXCEEDED = 2;
-    }
+message DeviceStateFilter {
+    string device_id = 1;
+    string parent_device_id = 2;
+    common.OperStatus.Types oper_status = 3;
+    common.ConnectStatus.Types conn_status = 4;
 }
 
-message Error {
-    ErrorCode.codes code = 1;
+message PortState {
+    string device_id = 1;
+    Port.PortType port_type = 2;
+    uint32 port_no = 3;
+    common.OperStatus.Types oper_status = 4;
+}
+
+message PortStateFilter {
+    string device_id = 1;
+    uint32 port_type_filter = 2;
+    common.OperStatus.Types oper_status = 4;
+}
+
+message PacketIn {
+    string device_id = 1;
+    uint32 port = 2;
+    bytes packet = 3;
+}
+
+message PacketOut {
+    string device_id = 1;
+    uint32 egress_port_no = 2;
+    openflow_13.ofp_packet_out packet = 3;
+}
+
+message DeviceReason {
+    string device_id = 1;
     string reason = 2;
 }
 
-enum MessageType {
-    REQUEST = 0;
-    RESPONSE = 1;
-    DEVICE_DISCOVERED=2;
+message BulkFlows {
+    Device device = 1;
+    openflow_13.Flows flows = 2;
+    openflow_13.FlowGroups groups = 3;
+    voltha.FlowMetadata flow_metadata = 4;
 }
 
-message Header {
-    string id = 1;
-    MessageType type = 2;
-    string from_topic = 3;
-    string to_topic = 4;
-    string key_topic = 5;
-    google.protobuf.Timestamp timestamp = 6;
+message IncrementalFlows {
+    Device device = 1;
+    openflow_13.FlowChanges flows = 2;
+    openflow_13.FlowGroupChanges groups = 3;
+    voltha.FlowMetadata flow_metadata = 4;
 }
 
-message Argument {
-    string key = 1;
-    google.protobuf.Any value = 2;
-}
-
-message InterContainerMessage {
-    Header header = 1;
-    google.protobuf.Any body = 2;
-}
-
-message InterContainerRequestBody {
-    string rpc = 2;
-    repeated Argument args = 3;
-    bool response_required = 4;
-    string reply_to_topic = 5;
-}
-
-message InterContainerResponseBody {
-    bool success = 1;
-    google.protobuf.Any result = 3;
+message PmConfigsInfo {
+    string device_id = 1;
+    PmConfigs pm_configs = 2;
 }
 
 message SwitchCapability {
@@ -85,83 +107,80 @@
     openflow_13.ofp_switch_features switch_features = 2;
 }
 
-message DeviceDiscovered {
-    string id = 1;
-    string parent_id = 2;
-    string device_type = 3;
-    string publisher = 4;
+message ImageDownloadMessage {
+    Device device = 1;
+    ImageDownload image = 2;
 }
 
-message InterAdapterMessageType {
-    enum Types {
-        FLOW_REQUEST = 0;
-        FLOW_RESPONSE = 1;
-        OMCI_REQUEST = 2;
-        OMCI_RESPONSE = 3;
-        METRICS_REQUEST = 4;
-        METRICS_RESPONSE = 5;
-        ONU_IND_REQUEST = 6;
-        ONU_IND_RESPONSE = 7;
-        TECH_PROFILE_DOWNLOAD_REQUEST = 8;
-        DELETE_GEM_PORT_REQUEST = 9;
-        DELETE_TCONT_REQUEST = 10;
-    }
+message OMCITest {
+    Device device = 1;
+    OmciTestRequest request = 2;
 }
 
-message InterAdapterHeader {
-    string id = 1;
-    InterAdapterMessageType.Types type = 2;
-    string from_topic = 3;
-    string to_topic = 4;
-    string to_device_id = 5;
-    string proxy_device_id = 6;
-    google.protobuf.Timestamp timestamp = 7;
+message SimulateAlarmMessage {
+    Device device = 1;
+    SimulateAlarmRequest request = 2;
 }
 
-message InterAdapterOmciMessage {
-    bytes message = 1; // OMCI_REQUEST or OMCI_RESPONSE
+message GetExtValueMessage {
+    Device parent_device = 1;
+    Device child_device = 2;
+    common.ValueType.Type value_type=3;
+}
+
+message SetExtValueMessage {
+    Device device = 1;
+    ValueSet value=3;
+}
+
+//
+// Inter-Adapter messages
+// ****
+// ****
+// ****
+
+message OmciMessage {
+    bytes message = 1;
     common.ConnectStatus.Types connect_status = 2;
     voltha.Device.ProxyAddress proxy_address = 3;
+    string parent_device_id = 4;
+    string child_device_id = 5;
 }
 
-message InterAdapterTechProfileInstanceRequestMessage {
-    string tp_instance_path = 1; // technology profile instance path
-    string parent_device_id = 2;
-    uint32 parent_pon_port = 3;
-    uint32 onu_id = 4;
-    uint32 uni_id = 5;
-}
-
-message InterAdapterTechProfileDownloadMessage {
-    uint32 uni_id = 1;
-    string tp_instance_path = 2;
+message TechProfileDownloadMessage {
+    string device_id = 1;
+    uint32 uni_id = 2;
+    string tp_instance_path = 3;
     oneof tech_tp_instance {
-        tech_profile.TechProfileInstance tp_instance = 3; // relevant for GPON, XGPON and XGS-PON technologies
-        tech_profile.EponTechProfileInstance epon_tp_instance = 4; // relevant for EPON technology
+        tech_profile.TechProfileInstance tp_instance = 4; // relevant for GPON, XGPON and XGS-PON technologies
+        tech_profile.EponTechProfileInstance epon_tp_instance = 5; // relevant for EPON technology
     }
 }
 
-message InterAdapterDeleteGemPortMessage {
-    uint32 uni_id = 1;
-    string tp_instance_path = 2;
-    uint32 gem_port_id = 3;
+message DeleteGemPortMessage {
+    string device_id = 1;
+    uint32 uni_id = 2;
+    string tp_instance_path = 3;
+    uint32 gem_port_id = 4;
 }
 
-message InterAdapterDeleteTcontMessage {
-    uint32 uni_id = 1;
-    string tp_instance_path = 2;
-    uint32 alloc_id = 3;
+message DeleteTcontMessage {
+    string device_id = 1;
+    uint32 uni_id = 2;
+    string tp_instance_path = 3;
+    uint32 alloc_id = 4;
 }
 
-message InterAdapterResponseBody {
-    bool status = 1;
-    oneof payload {
-        google.protobuf.Any body = 2;
-        InterAdapterOmciMessage omci = 3; // OMCI_REQUEST or OMCI_RESPONSE
-    }
+message OnuIndicationMessage {
+    string device_id = 1;
+    openolt.OnuIndication onu_indication = 2;
 }
 
-message InterAdapterMessage {
-    InterAdapterHeader header = 1;
-    google.protobuf.Any body = 2;
-}
+message TechProfileInstanceRequestMessage {
+    string device_id = 1;
+    string tp_instance_path = 2; // technology profile instance path
+    string parent_device_id = 3;
+    uint32 parent_pon_port = 4;
+    uint32 onu_id = 5;
+    uint32 uni_id = 6;
+}
\ No newline at end of file
diff --git a/protos/voltha_protos/logical_device.proto b/protos/voltha_protos/logical_device.proto
old mode 100644
new mode 100755
index c0a6105..9931251
--- a/protos/voltha_protos/logical_device.proto
+++ b/protos/voltha_protos/logical_device.proto
@@ -1,6 +1,6 @@
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v4/go/voltha";
+option go_package = "github.com/opencord/voltha-protos/v5/go/voltha";
 option java_package = "org.opencord.voltha";
 option java_outer_classname = "OFLogicalDevice";
 
diff --git a/protos/voltha_protos/meta.proto b/protos/voltha_protos/meta.proto
old mode 100644
new mode 100755
index 2255e38..4dd6d5d
--- a/protos/voltha_protos/meta.proto
+++ b/protos/voltha_protos/meta.proto
@@ -17,7 +17,7 @@
 
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v4/go/common";
+option go_package = "github.com/opencord/voltha-protos/v5/go/common";
 option java_package = "org.opencord.voltha.common";
 
 package voltha;
diff --git a/protos/voltha_protos/omci_alarm_db.proto b/protos/voltha_protos/omci_alarm_db.proto
old mode 100644
new mode 100755
index a1306b3..2fd6d57
--- a/protos/voltha_protos/omci_alarm_db.proto
+++ b/protos/voltha_protos/omci_alarm_db.proto
@@ -15,7 +15,7 @@
 //
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v4/go/omci";
+option go_package = "github.com/opencord/voltha-protos/v5/go/omci";
 option java_package = "org.opencord.voltha.omci";
 
 package omci;
diff --git a/protos/voltha_protos/omci_mib_db.proto b/protos/voltha_protos/omci_mib_db.proto
old mode 100644
new mode 100755
index b742db3..1813845
--- a/protos/voltha_protos/omci_mib_db.proto
+++ b/protos/voltha_protos/omci_mib_db.proto
@@ -15,7 +15,7 @@
 //
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v4/go/omci";
+option go_package = "github.com/opencord/voltha-protos/v5/go/omci";
 option java_package = "org.opencord.voltha.omci";
 
 package omci;
diff --git a/protos/voltha_protos/openflow_13.proto b/protos/voltha_protos/openflow_13.proto
old mode 100644
new mode 100755
index 2995241..3a6a315
--- a/protos/voltha_protos/openflow_13.proto
+++ b/protos/voltha_protos/openflow_13.proto
@@ -57,14 +57,13 @@
  */
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v4/go/openflow_13";
+option go_package = "github.com/opencord/voltha-protos/v5/go/openflow_13";
 option java_package = "org.opencord.voltha.openflow13";
 
 package openflow_13;
 
 import "google/api/annotations.proto";
 
-
 /* Version number:
  * OpenFlow versions released: 0x01 = 1.0 ; 0x02 = 1.1 ; 0x03 = 1.2
  *     0x04 = 1.3
@@ -2309,4 +2308,4 @@
         ofp_port_status port_status = 2;
         ofp_error_msg error = 3;
     }
-}
+}
\ No newline at end of file
diff --git a/protos/voltha_protos/openolt.proto b/protos/voltha_protos/openolt.proto
old mode 100644
new mode 100755
index df94fcc..b68727a
--- a/protos/voltha_protos/openolt.proto
+++ b/protos/voltha_protos/openolt.proto
@@ -14,7 +14,7 @@
 
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v4/go/openolt";
+option go_package = "github.com/opencord/voltha-protos/v5/go/openolt";
 option java_package = "org.opencord.voltha.openolt";
 option java_outer_classname = "VolthaOpenOLT";
 
diff --git a/protos/voltha_protos/ponsim.proto b/protos/voltha_protos/ponsim.proto
deleted file mode 100644
index ebfefc3..0000000
--- a/protos/voltha_protos/ponsim.proto
+++ /dev/null
@@ -1,68 +0,0 @@
-syntax = "proto3";
-
-option go_package = "github.com/opencord/voltha-protos/v4/go/voltha";
-option java_package = "org.opencord.voltha";
-
-package voltha;
-
-import "google/protobuf/empty.proto";
-import "voltha_protos/openflow_13.proto";
-
-
-message PonSimOnuDeviceInfo {
-    int32 uni_port = 1;
-    string serial_number = 2;
-}
-
-message PonSimDeviceInfo {
-    int32 nni_port = 1;
-    repeated PonSimOnuDeviceInfo onus = 2;
-}
-
-message FlowTable {
-    int32 port = 1;  // Used to address right device
-    repeated openflow_13.ofp_flow_stats flows = 2;
-}
-
-message PonSimFrame {
-    string id = 1;
-    bytes payload = 2;
-    int32 out_port = 3;
-}
-
-message PonSimPacketCounter {
-    string name = 1;
-    int64 value = 2;
-}
-
-message PonSimPortMetrics {
-    string port_name = 1;
-    repeated PonSimPacketCounter packets = 2;
-}
-
-message PonSimMetrics {
-    string device = 1;
-    repeated PonSimPortMetrics metrics = 2;
-}
-
-message PonSimMetricsRequest {
-    int32 port = 1;
-}
-
-service PonSim {
-    rpc SendFrame(PonSimFrame)
-        returns (google.protobuf.Empty) {}
-
-    rpc ReceiveFrames(google.protobuf.Empty)
-        returns (stream PonSimFrame) {}
-
-    rpc GetDeviceInfo(google.protobuf.Empty)
-        returns(PonSimDeviceInfo) {}
-
-    rpc UpdateFlowTable(FlowTable)
-        returns(google.protobuf.Empty) {}
-
-    rpc GetStats(google.protobuf.Empty)
-        returns(PonSimMetrics) {}
-
-}
diff --git a/protos/voltha_protos/tech_profile.proto b/protos/voltha_protos/tech_profile.proto
old mode 100644
new mode 100755
index dbb9fdb..252dbd3
--- a/protos/voltha_protos/tech_profile.proto
+++ b/protos/voltha_protos/tech_profile.proto
@@ -14,7 +14,7 @@
 
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v4/go/tech_profile";
+option go_package = "github.com/opencord/voltha-protos/v5/go/tech_profile";
 option java_package = "org.opencord.voltha.tech_profile";
 
 package tech_profile;
diff --git a/protos/voltha_protos/voltha.proto b/protos/voltha_protos/voltha.proto
old mode 100644
new mode 100755
index 56bcf18..1d4dc78
--- a/protos/voltha_protos/voltha.proto
+++ b/protos/voltha_protos/voltha.proto
@@ -6,7 +6,7 @@
 
 syntax = "proto3";
 
-option go_package = "github.com/opencord/voltha-protos/v4/go/voltha";
+option go_package = "github.com/opencord/voltha-protos/v5/go/voltha";
 
 package voltha;