[SDFAB-1048] Fix wiring issue caused by readPortId

Leverage the dep already in place between gnmi driver and gnmi protocol
and expose readPortId as cfg property of GnmiControllerImpl

Change-Id: I34defd8928589129dc84cae45033f7f7c3c673bb
diff --git a/drivers/gnmi/BUILD b/drivers/gnmi/BUILD
index 772ae88..e3535cc 100644
--- a/drivers/gnmi/BUILD
+++ b/drivers/gnmi/BUILD
@@ -6,6 +6,7 @@
     "//core/store/serializers:onos-core-serializers",
     "//protocols/gnmi/stub:onos-protocols-gnmi-stub",
     "//protocols/gnmi/api:onos-protocols-gnmi-api",
+    "//protocols/gnmi/ctl:onos-protocols-gnmi-ctl",
     "//protocols/grpc/api:onos-protocols-grpc-api",
     "//protocols/grpc/utils:onos-protocols-grpc-utils",
 ]
diff --git a/drivers/gnmi/src/main/java/org/onosproject/drivers/gnmi/OpenConfigGnmiDeviceDescriptionDiscovery.java b/drivers/gnmi/src/main/java/org/onosproject/drivers/gnmi/OpenConfigGnmiDeviceDescriptionDiscovery.java
index 6ae4c33..81c59b4 100644
--- a/drivers/gnmi/src/main/java/org/onosproject/drivers/gnmi/OpenConfigGnmiDeviceDescriptionDiscovery.java
+++ b/drivers/gnmi/src/main/java/org/onosproject/drivers/gnmi/OpenConfigGnmiDeviceDescriptionDiscovery.java
@@ -25,6 +25,7 @@
 import org.onlab.packet.ChassisId;
 import org.onosproject.gnmi.api.GnmiClient;
 import org.onosproject.gnmi.api.GnmiController;
+import org.onosproject.gnmi.ctl.GnmiControllerImpl;
 import org.onosproject.grpc.utils.AbstractGrpcHandlerBehaviour;
 import org.onosproject.net.AnnotationKeys;
 import org.onosproject.net.DefaultAnnotations;
@@ -62,15 +63,23 @@
 
     private static final String UNKNOWN = "unknown";
 
-    // FIXME temporary solution will be removed when the
-    //  transition to p4rt translation is completed
-    public static boolean readPortId = false;
+    private GnmiController gnmiController;
 
     public OpenConfigGnmiDeviceDescriptionDiscovery() {
         super(GnmiController.class);
     }
 
     @Override
+    protected boolean setupBehaviour(String opName) {
+        if (!super.setupBehaviour(opName)) {
+            return false;
+        }
+
+        gnmiController = handler().get(GnmiController.class);
+        return true;
+    }
+
+    @Override
     public DeviceDescription discoverDeviceDetails() {
         return new DefaultDeviceDescription(
                 data().deviceId().uri(),
@@ -125,7 +134,7 @@
             }
             /* Override port number if read port-id is enabled
                and /interfaces/interface/state/id is available */
-            if (readPortId && portIds.containsKey(key)) {
+            if (readPortId() && portIds.containsKey(key)) {
                 value.withPortNumber(portIds.get(key));
             }
             DefaultAnnotations annotation = annotations.get(key).build();
@@ -135,6 +144,13 @@
         return portDescriptionList;
     }
 
+    private boolean readPortId() {
+        // FIXME temporary solution will be substituted by
+        //  an XML driver property when the transition to
+        //  p4rt translation is completed
+        return ((GnmiControllerImpl) gnmiController).readPortId();
+    }
+
     private GetRequest buildPortStateRequest() {
         Path path = Path.newBuilder()
                 .addElem(PathElem.newBuilder().setName("interfaces").build())