Initial gNOI implementation added. Introduced system Time and Reboot RPC

Change-Id: I8accdcc6c1ff247408ce54490ceff3972fdf850f
diff --git a/tools/build/bazel/gnoi_BUILD b/tools/build/bazel/gnoi_BUILD
new file mode 100644
index 0000000..c9dd1c3
--- /dev/null
+++ b/tools/build/bazel/gnoi_BUILD
@@ -0,0 +1,47 @@
+# Prefix string to remove from proto import statements
+IMPORT_PREFIX_COMMON = "github.com/openconfig/gnoi/common/"
+IMPORT_PREFIX = "github.com/openconfig/gnoi/"
+
+proto_library(
+    name = "gnoi_system_proto",
+    srcs = [":gnoi_system_sed"],
+    deps = [
+        ":gnoi_types_proto",
+        ":gnoi_common_proto",
+        "@com_google_protobuf//:any_proto",
+    ],
+    visibility = ["//visibility:public"],
+)
+
+proto_library(
+    name = "gnoi_types_proto",
+    srcs = ["types/types.proto"],
+    deps = [
+        "@com_google_protobuf//:descriptor_proto",
+        "@com_google_protobuf//:any_proto",
+    ],
+    visibility = ["//visibility:public"],
+)
+
+proto_library(
+    name = "gnoi_common_proto",
+    srcs = [":gnoi_common_sed"],
+    deps = [":gnoi_types_proto"],
+    visibility = ["//visibility:public"],
+)
+
+genrule(
+    name = "gnoi_common_sed",
+    srcs = ["common/common.proto"],
+    outs = ["common.proto"],
+    cmd = "sed -e 's:import \"%s:import \":g' $(location common/common.proto) > \"$@\""
+        % IMPORT_PREFIX,
+)
+
+genrule(
+    name = "gnoi_system_sed",
+    srcs = ["system/system.proto"],
+    outs = ["system.proto"],
+    cmd = "sed -e 's:import \"%s:import \":g' -e 's:import \"%s:import \":g' $(location system/system.proto) > \"$@\""
+        % (IMPORT_PREFIX_COMMON, IMPORT_PREFIX),
+)
diff --git a/tools/build/bazel/gnoi_workspace.bzl b/tools/build/bazel/gnoi_workspace.bzl
new file mode 100644
index 0000000..f345a8a
--- /dev/null
+++ b/tools/build/bazel/gnoi_workspace.bzl
@@ -0,0 +1,13 @@
+load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+
+GNOI_COMMIT = "d703187b4d437508375f55c4e4f44268ccce412f"
+GNOI_SHA = "7c34f6efb48d4efd145059a06702e391840591cdb4668267f9089232de4f9617"
+
+def generate_gnoi():
+    http_archive(
+        name = "com_github_openconfig_gnoi",
+        urls = ["https://github.com/openconfig/gnoi/archive/%s.zip" % GNOI_COMMIT],
+        sha256 = GNOI_SHA,
+        strip_prefix = "gnoi-%s" % GNOI_COMMIT,
+        build_file = "//tools/build/bazel:gnoi_BUILD",
+    )
diff --git a/tools/build/bazel/modules.bzl b/tools/build/bazel/modules.bzl
index 2820cb9..6a1603f 100644
--- a/tools/build/bazel/modules.bzl
+++ b/tools/build/bazel/modules.bzl
@@ -104,6 +104,7 @@
     "//drivers/hp:onos-drivers-hp-oar",
     "//drivers/p4runtime:onos-drivers-p4runtime-oar",
     "//drivers/gnmi:onos-drivers-gnmi-oar",
+    "//drivers/gnoi:onos-drivers-gnoi-oar",
     "//drivers/polatis/netconf:onos-drivers-polatis-netconf-oar",
     "//drivers/polatis/openflow:onos-drivers-polatis-openflow-oar",
     "//drivers/odtn-driver:onos-drivers-odtn-driver-oar",
@@ -256,6 +257,7 @@
     "//protocols/grpc:onos-protocols-grpc-oar",
     "//protocols/p4runtime:onos-protocols-p4runtime-oar",
     "//protocols/gnmi:onos-protocols-gnmi-oar",
+    "//protocols/gnoi:onos-protocols-gnoi-oar",
     "//protocols/xmpp/core:onos-protocols-xmpp-core-oar",
     "//protocols/xmpp/pubsub:onos-protocols-xmpp-pubsub-oar",
 ]