[WIP] Attempt at building grpc and p4runtime protocols with Bazel

STILL NOT WORKING AT RUNTIME

Change-Id: I1f9e60b12a12e09edad2a714ec2921a4f71c6d35
diff --git a/protocols/p4runtime/BUILD b/protocols/p4runtime/BUILD
new file mode 100644
index 0000000..66e2f59
--- /dev/null
+++ b/protocols/p4runtime/BUILD
@@ -0,0 +1,18 @@
+BUNDLES = [
+    '//protocols/p4runtime/api:onos-protocols-p4runtime-api',
+    '//protocols/p4runtime/ctl:onos-protocols-p4runtime-ctl',
+    '//protocols/p4runtime/model:onos-protocols-p4runtime-model',
+    "//protocols/p4runtime/proto:p4runtime_java_grpc",
+]
+
+onos_app(
+    app_name = 'org.onosproject.protocols.p4runtime',
+    title = 'P4Runtime Protocol Subsystem',
+    category = 'Protocol',
+    url = 'http://onosproject.org',
+    description = 'ONOS P4Runtime protocol subsystem',
+    included_bundles = BUNDLES,
+    required_apps = [
+        'org.onosproject.protocols.grpc'
+    ],
+)
diff --git a/protocols/p4runtime/api/BUILD b/protocols/p4runtime/api/BUILD
index de7b487..531d734 100644
--- a/protocols/p4runtime/api/BUILD
+++ b/protocols/p4runtime/api/BUILD
@@ -1,7 +1,5 @@
-GRPC_VER = "1_3_1"
-
 COMPILE_DEPS = CORE_DEPS + [
-    "@grpc_core_" + GRPC_VER + "//jar",
+    "@io_grpc_grpc_java//core",
 ]
 
 TEST_DEPS = TEST + [
diff --git a/protocols/p4runtime/ctl/BUILD b/protocols/p4runtime/ctl/BUILD
new file mode 100644
index 0000000..13554c7
--- /dev/null
+++ b/protocols/p4runtime/ctl/BUILD
@@ -0,0 +1,28 @@
+COMPILE_DEPS = CORE_DEPS + KRYO + [
+    "//core/store/serializers:onos-core-serializers",
+    "//protocols/grpc/api:onos-protocols-grpc-api",
+    "//protocols/p4runtime/api:onos-protocols-p4runtime-api",
+    "//protocols/p4runtime/proto:p4config_java_proto",
+    "//protocols/p4runtime/proto:p4data_java_proto",
+    "//protocols/p4runtime/proto:p4info_java_proto",
+    "//protocols/p4runtime/proto:p4runtime_java_grpc",
+    "//protocols/p4runtime/proto:p4runtime_java_proto",
+    "//protocols/p4runtime/proto:status_java_proto",
+    "@com_google_protobuf//:protobuf_java",
+    "@io_grpc_grpc_java//context",
+    "@io_grpc_grpc_java//core",
+    "@io_grpc_grpc_java//netty",
+    "@io_grpc_grpc_java//stub",
+    "@io_grpc_grpc_java_core_repkg//:internal",
+]
+
+TEST_DEPS = TEST + [
+    "@minimal_json//jar",
+    "@io_grpc_grpc_java//core:inprocess",
+    "@io_grpc_grpc_java//protobuf-lite",
+]
+
+osgi_jar_with_tests(
+    deps = COMPILE_DEPS,
+    test_deps = TEST_DEPS,
+)
diff --git a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4RuntimeControllerImpl.java b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4RuntimeControllerImpl.java
index d8b0cae..1e7326d 100644
--- a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4RuntimeControllerImpl.java
+++ b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4RuntimeControllerImpl.java
@@ -20,8 +20,6 @@
 import com.google.common.util.concurrent.Striped;
 import io.grpc.ManagedChannel;
 import io.grpc.ManagedChannelBuilder;
-import io.grpc.NameResolverProvider;
-import io.grpc.internal.DnsNameResolverProvider;
 import io.grpc.netty.NettyChannelBuilder;
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
@@ -65,7 +63,6 @@
         implements P4RuntimeController {
 
     private final Logger log = getLogger(getClass());
-    private final NameResolverProvider nameResolverProvider = new DnsNameResolverProvider();
 
     private final Map<DeviceId, ClientKey> clientKeys = Maps.newHashMap();
     private final Map<ClientKey, P4RuntimeClient> clients = Maps.newHashMap();
@@ -141,8 +138,7 @@
 
         ManagedChannelBuilder channelBuilder = NettyChannelBuilder
                 .forAddress(serverAddr, serverPort)
-                .usePlaintext(true)
-                .nameResolverFactory(nameResolverProvider);
+                .usePlaintext(true);
 
         ManagedChannel channel;
         try {
diff --git a/protocols/p4runtime/model/BUILD b/protocols/p4runtime/model/BUILD
index f29c84c..1e7b506 100644
--- a/protocols/p4runtime/model/BUILD
+++ b/protocols/p4runtime/model/BUILD
@@ -1,7 +1,5 @@
-PROTOBUF_VER = "3_2_0"
-
 COMPILE_DEPS = CORE_DEPS + [
-    "//protocols/p4runtime/proto:p4_runtime_java_proto",
+    "//protocols/p4runtime/proto:p4info_java_proto",
     "@com_google_protobuf//:protobuf_java",
 ]
 
diff --git a/protocols/p4runtime/proto/BUILD b/protocols/p4runtime/proto/BUILD
index 8c533af..2da5615 100644
--- a/protocols/p4runtime/proto/BUILD
+++ b/protocols/p4runtime/proto/BUILD
@@ -1,32 +1,58 @@
 load("//tools/build/bazel:osgi_java_library.bzl", "wrapped_osgi_jar")
-
-java_proto_library(
-    name = "p4_runtime_java_proto_proto",
-    visibility = ["//visibility:public"],
-    deps = ["@p4lang_pi//:p4_runtime_proto"],
-)
+load("@io_grpc_grpc_java//:java_grpc_library.bzl", "java_grpc_library")
 
 wrapped_osgi_jar(
-    name = "rpc_java_proto-osgi",
-    jar = "@google_rpc//:rpc_java_proto",
-    visibility = ["//visibility:public"],
-    deps = CORE_DEPS + ["@protobuf_java_3_2_0//jar"],
-)
-
-wrapped_osgi_jar(
-    name = "grpc-core-repkg-1.3.1",
-    jar = "@grpc_src_zip_131//:grpc-core-repkg-1.3.1-native",
-    visibility = ["//visibility:public"],
-    deps = COMPILE,
-)
-
-wrapped_osgi_jar(
-    name = "p4_runtime_java_proto",
-    jar = ":p4_runtime_java_proto_proto",
-    visibility = ["//visibility:public"],
-    deps = CORE_DEPS + [
-        "@protobuf_java_3_2_0//jar",
-        "@google_rpc//:rpc_java_proto",
-        ":grpc-core-repkg-1.3.1",
+    name = "p4config_java_proto",
+    jar = "@com_github_p4lang_pi//:p4config_java_proto_native",
+    deps = [
+        "@com_google_protobuf//:protobuf_java",
     ],
+    visibility = ["//visibility:public"],
+)
+
+wrapped_osgi_jar(
+    name = "p4data_java_proto",
+    jar = "@com_github_p4lang_p4runtime//:p4data_java_proto_native",
+    deps = [
+        "@com_google_protobuf//:protobuf_java",
+    ],
+    visibility = ["//visibility:public"],
+)
+
+wrapped_osgi_jar(
+    name = "p4info_java_proto",
+    jar = "@com_github_p4lang_p4runtime//:p4info_java_proto_native",
+    deps = [
+        "@com_google_protobuf//:protobuf_java",
+    ],
+    visibility = ["//visibility:public"],
+)
+
+wrapped_osgi_jar(
+    name = "p4runtime_java_proto",
+    jar = "@com_github_p4lang_p4runtime//:p4runtime_java_proto_native",
+    deps = [
+        "@com_google_protobuf//:protobuf_java",
+    ],
+    visibility = ["//visibility:public"],
+)
+
+wrapped_osgi_jar(
+    name = "p4runtime_java_grpc",
+    jar = "@com_github_p4lang_p4runtime//:p4runtime_java_grpc_native",
+    deps = [
+        "@io_grpc_grpc_java//stub",
+        "@io_grpc_grpc_java//core",
+        "@io_grpc_grpc_java//protobuf",
+    ],
+    visibility = ["//visibility:public"],
+)
+
+wrapped_osgi_jar(
+    name = "status_java_proto",
+    jar = "@com_github_googleapis//:status_java_proto_native",
+    deps = [
+        "@com_google_protobuf//:protobuf_java",
+    ],
+    visibility = ["//visibility:public"],
 )