Cherry pick gNMI and Stratum related changes to this branch
Cherry picked commits:
20211 Update gNMI version and build script
20247 [ONOS-7829] Implement AbstractGrpcClient and AbstractGrpcClientControl
20233 [ONOS-7141][ONOS-7142] Add GnmiClient and GnmiController
20234 Refactor OpenConfig gNMI device description descovery
20260 [ONOS-7831] Implement GnmiHandshaker
20270 Add Stratum driver
Change-Id: I81ad8bce45251af5909cfcac0edbcfd11c8ebf1d
diff --git a/protocols/gnmi/api/src/main/java/org/onosproject/gnmi/api/GnmiClient.java b/protocols/gnmi/api/src/main/java/org/onosproject/gnmi/api/GnmiClient.java
index 242bc94..5beb238 100644
--- a/protocols/gnmi/api/src/main/java/org/onosproject/gnmi/api/GnmiClient.java
+++ b/protocols/gnmi/api/src/main/java/org/onosproject/gnmi/api/GnmiClient.java
@@ -17,10 +17,9 @@
package org.onosproject.gnmi.api;
import com.google.common.annotations.Beta;
-
import gnmi.Gnmi.CapabilityResponse;
-import gnmi.Gnmi.GetResponse;
import gnmi.Gnmi.GetRequest;
+import gnmi.Gnmi.GetResponse;
import gnmi.Gnmi.SetRequest;
import gnmi.Gnmi.SetResponse;
import org.onosproject.grpc.api.GrpcClient;
@@ -34,15 +33,14 @@
public interface GnmiClient extends GrpcClient {
/**
- * Gets capability from a target. This allows device driver behavior
- * to validate the service version and models which gNMI device supported.
+ * Gets capability from a target.
*
* @return the capability response
*/
CompletableFuture<CapabilityResponse> capability();
/**
- * Retrieve a snapshot of data from the device.
+ * Retrieves a snapshot of data from the device.
*
* @param request the get request
* @return the snapshot of data from the device
diff --git a/protocols/gnmi/api/src/main/java/org/onosproject/gnmi/api/GnmiClientKey.java b/protocols/gnmi/api/src/main/java/org/onosproject/gnmi/api/GnmiClientKey.java
index 26ce113..bc18b9a 100644
--- a/protocols/gnmi/api/src/main/java/org/onosproject/gnmi/api/GnmiClientKey.java
+++ b/protocols/gnmi/api/src/main/java/org/onosproject/gnmi/api/GnmiClientKey.java
@@ -26,15 +26,16 @@
@Beta
public class GnmiClientKey extends GrpcClientKey {
+ private static final String GNMI = "gnmi";
+
/**
* Creates a new gNMI client key.
*
- * @param serviceName gNMI service name of the client
* @param deviceId ONOS device ID
* @param serverAddr gNMI server address
* @param serverPort gNMI server port
*/
- public GnmiClientKey(String serviceName, DeviceId deviceId, String serverAddr, int serverPort) {
- super(serviceName, deviceId, serverAddr, serverPort);
+ public GnmiClientKey(DeviceId deviceId, String serverAddr, int serverPort) {
+ super(GNMI, deviceId, serverAddr, serverPort);
}
}
diff --git a/protocols/gnmi/ctl/src/main/java/org/onosproject/gnmi/ctl/GnmiClientImpl.java b/protocols/gnmi/ctl/src/main/java/org/onosproject/gnmi/ctl/GnmiClientImpl.java
index b8179a9..22b226b 100644
--- a/protocols/gnmi/ctl/src/main/java/org/onosproject/gnmi/ctl/GnmiClientImpl.java
+++ b/protocols/gnmi/ctl/src/main/java/org/onosproject/gnmi/ctl/GnmiClientImpl.java
@@ -27,10 +27,10 @@
import io.grpc.ManagedChannel;
import io.grpc.Status;
import io.grpc.StatusRuntimeException;
+import org.onosproject.gnmi.api.GnmiClient;
import org.onosproject.gnmi.api.GnmiClientKey;
import org.onosproject.grpc.ctl.AbstractGrpcClient;
import org.slf4j.Logger;
-import org.onosproject.gnmi.api.GnmiClient;
import java.util.concurrent.CompletableFuture;
@@ -46,8 +46,8 @@
private final Logger log = getLogger(getClass());
private final gNMIGrpc.gNMIBlockingStub blockingStub;
- public GnmiClientImpl(GnmiClientKey clientKey, ManagedChannel managedChannel) {
- super(clientKey, managedChannel);
+ GnmiClientImpl(GnmiClientKey clientKey, ManagedChannel managedChannel) {
+ super(clientKey);
this.blockingStub = gNMIGrpc.newBlockingStub(managedChannel);
}
@@ -101,8 +101,7 @@
private boolean doServiceAvailable() {
try {
- blockingStub.get(DUMMY_REQUEST);
- return true;
+ return blockingStub.get(DUMMY_REQUEST) != null;
} catch (StatusRuntimeException e) {
// This gRPC call should throw INVALID_ARGUMENT status exception
// since "/onos-gnmi-test" path does not exists in any config model