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/tools/build/bazel/gnmi_workspace.bzl b/tools/build/bazel/gnmi_workspace.bzl
new file mode 100644
index 0000000..6b0d4db
--- /dev/null
+++ b/tools/build/bazel/gnmi_workspace.bzl
@@ -0,0 +1,16 @@
+load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+
+# FIXME: Currently gNMI proto file uses incorrect path to import "gnmi_ext.proto"
+#        Temporary use patch from ONF before gNMI team fix it.
+
+GNMI_COMMIT = "onos"
+GNMI_SHA = "0c4d5f168cb142f8135171204dac3ff8840a147f51fa361079f42fa585bec2ce"
+
+def generate_gnmi():
+    http_archive(
+        name = "com_github_openconfig_gnmi",
+        urls = ["https://github.com/opennetworkinglab/gnmi/archive/%s.zip" % GNMI_COMMIT],
+        sha256 = GNMI_SHA,
+        strip_prefix = "gnmi-%s/proto" % GNMI_COMMIT,
+        build_file = "//tools/build/bazel:gnmi_BUILD",
+    )