[VOL-4514]  Addressing device reconciliation failure

This commit consists of augmention the current GetHeathStatus()
API on the grpc server with the grpc client information.  This
provides the grpc server with more insights of the grpc client
connection status.  This is useful for a server to know whether it
is more likely to receive a response following a request from a
remote server, represented by the grpc client(s).  For now this is
used by the openonu adapter to figure out when it can send an
OMCI request to the openolt adapter following a restart of the
onu adapter.

Change-Id: I0c117c0002b83606b95d7269e6f53d21941e4ba5
diff --git a/protos/voltha_protos/adapter_service.proto b/protos/voltha_protos/adapter_service.proto
index 5ff553e..cfd5f29 100755
--- a/protos/voltha_protos/adapter_service.proto
+++ b/protos/voltha_protos/adapter_service.proto
@@ -20,7 +20,7 @@
 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 (health.HealthStatus);
+    rpc GetHealthStatus(common.Connection) returns (health.HealthStatus);
 
     // Device
     rpc AdoptDevice(device.Device) returns(google.protobuf.Empty);
diff --git a/protos/voltha_protos/common.proto b/protos/voltha_protos/common.proto
index 9efbdd9..f7efff6 100755
--- a/protos/voltha_protos/common.proto
+++ b/protos/voltha_protos/common.proto
@@ -20,6 +20,18 @@
     api_test=0;
 }
 
+message Connection {
+    // endpoint is the endpoint sending the request
+    string endpoint = 1;
+
+    // contextInfo represents additional contextual information
+    string contextInfo = 2;
+
+    // keep_alive_interval is used to indicate to the remote endpoint how often it 
+    // will get a keep alive notification
+    int64 keep_alive_interval = 3;
+}
+
 message AdminState {
     // Administrative State
     enum Types {
diff --git a/protos/voltha_protos/core_services.proto b/protos/voltha_protos/core_services.proto
index b6c16da..f0929f4 100755
--- a/protos/voltha_protos/core_services.proto
+++ b/protos/voltha_protos/core_services.proto
@@ -16,7 +16,7 @@
 // sole purpose of serving requests/updates from the Voltha adapters. 
 service CoreService {
 	//	 in coreProxy interface
-	rpc GetHealthStatus(google.protobuf.Empty) returns (health.HealthStatus);
+	rpc GetHealthStatus(common.Connection) returns (health.HealthStatus);
 	rpc RegisterAdapter (core_adapter.AdapterRegistration) returns (google.protobuf.Empty);
 	rpc DeviceUpdate (device.Device) returns (google.protobuf.Empty);
 	rpc PortCreated (device.Port) returns (google.protobuf.Empty);
diff --git a/protos/voltha_protos/olt_inter_adapter_service.proto b/protos/voltha_protos/olt_inter_adapter_service.proto
index 5d4773f..f33def4 100755
--- a/protos/voltha_protos/olt_inter_adapter_service.proto
+++ b/protos/voltha_protos/olt_inter_adapter_service.proto
@@ -6,6 +6,7 @@
 
 package olt_inter_adapter_service;
 
+import "voltha_protos/common.proto";
 import "google/protobuf/empty.proto";
 import "voltha_protos/inter_adapter.proto";
 import "voltha_protos/health.proto";
@@ -13,7 +14,7 @@
 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 (health.HealthStatus);
+    rpc GetHealthStatus(common.Connection) returns (health.HealthStatus);
 
     rpc ProxyOmciRequest(inter_adapter.OmciMessage) returns (google.protobuf.Empty);
     rpc GetTechProfileInstance(inter_adapter.TechProfileInstanceRequestMessage) returns (inter_adapter.TechProfileDownloadMessage);
diff --git a/protos/voltha_protos/onu_inter_adapter_service.proto b/protos/voltha_protos/onu_inter_adapter_service.proto
index ee4dff7..1b9243a 100755
--- a/protos/voltha_protos/onu_inter_adapter_service.proto
+++ b/protos/voltha_protos/onu_inter_adapter_service.proto
@@ -6,6 +6,7 @@
 
 package onu_inter_adapter_service;
 
+import "voltha_protos/common.proto";
 import "google/protobuf/empty.proto";
 import "voltha_protos/inter_adapter.proto";
 import "voltha_protos/health.proto";
@@ -13,7 +14,7 @@
 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 (health.HealthStatus);
+    rpc GetHealthStatus(common.Connection) returns (health.HealthStatus);
 
     rpc OnuIndication(inter_adapter.OnuIndicationMessage) returns (google.protobuf.Empty);
     rpc OmciIndication(inter_adapter.OmciMessage) returns (google.protobuf.Empty);