diff --git a/.bazelrc b/.bazelrc
new file mode 100644
index 0000000..dfbabc4
--- /dev/null
+++ b/.bazelrc
@@ -0,0 +1 @@
+build --nouse_ijars
diff --git a/BUILD b/BUILD
new file mode 100644
index 0000000..9416716
--- /dev/null
+++ b/BUILD
@@ -0,0 +1,21 @@
+filegroup(
+    name = "onos",
+    srcs = [
+             "//utils/junit:onlab-junit-osgi",
+             "//utils/misc:onlab-misc-osgi",
+             "//utils/osgi:onlab-osgi-osgi",
+             "//utils/rest:onlab-rest-osgi",
+             "//utils/osgiwrap:osgi-jar",
+             "//core/api:onos-api-osgi",
+             "//core/common:onos-core-common-osgi",
+             "//incubator/api:onos-incubator-api-osgi",
+             "//core/store/serializers:onos-core-serializers-osgi",
+             "//core/store/dist:onos-core-dist-osgi",
+             "//incubator/store:onos-incubator-store",
+             "//incubator/net:onos-incubator-net",
+             "//protocols/openflow/api:onos-protocols-openflow-api-osgi",
+             "//drivers/default:onos-drivers-default-osgi",
+             #"//core/net:onos-core-net-osgi",
+           ],
+)
+
diff --git a/WORKSPACE b/WORKSPACE
new file mode 100644
index 0000000..e86cb0d
--- /dev/null
+++ b/WORKSPACE
@@ -0,0 +1,4 @@
+load("//tools/build/bazel:generate_workspace.bzl", "generated_maven_jars")
+generated_maven_jars()
+
+ONOS_VERSION = '1.14.0-SNAPSHOT'
diff --git a/core/api/BUILD b/core/api/BUILD
new file mode 100644
index 0000000..be731ad
--- /dev/null
+++ b/core/api/BUILD
@@ -0,0 +1,27 @@
+COMPILE_DEPS = COMPILE + NETTY + JACKSON + METRICS + KRYO + [
+    '//utils/misc:onlab-misc',
+    '//utils/osgi:onlab-osgi',
+    '//utils/rest:onlab-rest',
+    '@joda_time//jar',
+    '@netty//jar',
+]
+
+osgi_jar_with_tests (
+    name = 'onos-api',
+    deps = COMPILE_DEPS,
+    exclude_tests = [
+       'org.onosproject.net.config.basics.AbstractConfigTest',
+       'org.onosproject.net.driver.AbstractDriverLoaderTest',
+       'org.onosproject.net.intent.AbstractIntentTest',
+       'org.onosproject.net.intent.ConnectivityIntentTest',
+       'org.onosproject.net.intent.IntentTest',
+       'org.onosproject.net.pi.runtime.PiConstantsTest',
+       'org.onosproject.security.SecurityUtilTest',
+       'org.onosproject.ui.AbstractUiTest',
+       'org.onosproject.ui.model.AbstractUiModelTest',
+       'org.onosproject.net.behaviour.QosIdTest',
+    ],
+    visibility = ["//visibility:public"],
+    #javadoc_files = glob(['src/main/javadoc/**/*']),
+    #javadoc_files_root = 'src/main/javadoc',
+)
diff --git a/core/api/src/main/java/org/onosproject/net/intent/IntentData.java b/core/api/src/main/java/org/onosproject/net/intent/IntentData.java
index bb7a710..cad48ab 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/IntentData.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/IntentData.java
@@ -457,6 +457,7 @@
             } else if (currentState == INSTALLED) {
                 return true;
             }
+            // FALLTHROUGH
         case INSTALLED:
             if (currentState == INSTALLED) {
                 return false;
diff --git a/core/api/src/main/java/org/onosproject/net/intent/IntentEvent.java b/core/api/src/main/java/org/onosproject/net/intent/IntentEvent.java
index 47aa94d..fd3d457 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/IntentEvent.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/IntentEvent.java
@@ -142,11 +142,10 @@
                 type = Type.PURGED;
                 break;
 
-            // fallthrough to default from here
-            case COMPILING:
-            case INSTALLING:
-            case RECOMPILING:
-            case WITHDRAWING:
+            case COMPILING:     // FALLTHROUGH
+            case INSTALLING:    // FALLTHROUGH
+            case RECOMPILING:   // FALLTHROUGH
+            case WITHDRAWING:   // FALLTHROUGH
             default:
                 return Optional.empty();
         }
diff --git a/core/common/BUILD b/core/common/BUILD
new file mode 100644
index 0000000..7e4e557
--- /dev/null
+++ b/core/common/BUILD
@@ -0,0 +1,11 @@
+COMPILE_DEPS = CORE_DEPS + JACKSON + METRICS + [
+    '//incubator/api:onos-incubator-api',
+]
+
+TEST_DEPS = TEST + ['//core/api:onos-api-tests']
+
+osgi_jar_with_tests (
+    deps = COMPILE_DEPS,
+    test_deps = TEST_DEPS,
+    visibility = ["//visibility:public"],
+)
diff --git a/core/store/dist/BUILD b/core/store/dist/BUILD
new file mode 100644
index 0000000..0608650
--- /dev/null
+++ b/core/store/dist/BUILD
@@ -0,0 +1,28 @@
+COMPILE_DEPS = CORE_DEPS + NETTY + JACKSON + KRYO + [
+        '//core/common:onos-core-common',
+        '//utils/rest:onlab-rest',
+        '//core/store/serializers:onos-core-serializers',
+        '@netty_transport//jar',
+        '@netty_codec//jar',
+        '@netty_handler//jar',
+        '@netty_transport_native_epoll//jar',
+        '@netty_resolver//jar',
+        '@commons_math3//jar',
+        '//incubator/api:onos-incubator-api',
+]
+
+TEST_DEPS = TEST + [
+    '//core/api:onos-api-tests',
+    '//core/common:onos-core-common-tests',
+]
+
+osgi_jar_with_tests (
+    name = 'onos-core-dist',
+    deps = COMPILE_DEPS,
+    test_deps = TEST_DEPS,
+    exclude_tests = [
+        'org.onosproject.store.link.impl.ECLinkStoreTest',
+        'org.onosproject.store.flow.impl.DistributedFlowRuleStoreTest',
+    ],
+    visibility = ["//visibility:public"],
+)
diff --git a/core/store/dist/src/main/java/org/onosproject/store/cluster/messaging/impl/MessageDecoder.java b/core/store/dist/src/main/java/org/onosproject/store/cluster/messaging/impl/MessageDecoder.java
index bdf5cdf..4b9ef6c 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/cluster/messaging/impl/MessageDecoder.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/cluster/messaging/impl/MessageDecoder.java
@@ -69,32 +69,41 @@
             case READ_SENDER_IP_VERSION:
                 ipVersion = buffer.readByte() == 0x0 ? Version.INET : Version.INET6;
                 checkpoint(DecoderState.READ_SENDER_IP);
+                // FALLTHROUGH
             case READ_SENDER_IP:
                 byte[] octets = new byte[IpAddress.byteLength(ipVersion)];
                 buffer.readBytes(octets);
                 senderIp = IpAddress.valueOf(ipVersion, octets);
                 checkpoint(DecoderState.READ_SENDER_PORT);
+                // FALLTHROUGH
             case READ_SENDER_PORT:
                 senderPort = buffer.readInt();
                 checkpoint(DecoderState.READ_TYPE);
+                // FALLTHROUGH
             case READ_TYPE:
                 type = InternalMessage.Type.forId(buffer.readByte());
                 checkpoint(DecoderState.READ_PREAMBLE);
+                // FALLTHROUGH
             case READ_PREAMBLE:
                 preamble = buffer.readInt();
                 checkpoint(DecoderState.READ_LOGICAL_TIME);
+                // FALLTHROUGH
             case READ_LOGICAL_TIME:
                 logicalTime = buffer.readLong();
                 checkpoint(DecoderState.READ_LOGICAL_COUNTER);
+                // FALLTHROUGH
             case READ_LOGICAL_COUNTER:
                 logicalCounter = buffer.readLong();
                 checkpoint(DecoderState.READ_MESSAGE_ID);
+                // FALLTHROUGH
             case READ_MESSAGE_ID:
                 messageId = buffer.readLong();
                 checkpoint(DecoderState.READ_CONTENT_LENGTH);
+                // FALLTHROUGH
             case READ_CONTENT_LENGTH:
                 contentLength = buffer.readInt();
                 checkpoint(DecoderState.READ_CONTENT);
+                // FALLTHROUGH
             case READ_CONTENT:
                 if (contentLength > 0) {
                     //TODO Perform a sanity check on the size before allocating
@@ -125,6 +134,7 @@
                     case READ_SUBJECT_LENGTH:
                         subjectLength = buffer.readShort();
                         checkpoint(DecoderState.READ_SUBJECT);
+                        // FALLTHROUGH
                     case READ_SUBJECT:
                         byte[] messageTypeBytes = new byte[subjectLength];
                         buffer.readBytes(messageTypeBytes);
diff --git a/core/store/serializers/BUILD b/core/store/serializers/BUILD
new file mode 100644
index 0000000..83c05e3
--- /dev/null
+++ b/core/store/serializers/BUILD
@@ -0,0 +1,12 @@
+COMPILE_DEPS = CORE_DEPS + KRYO + [
+    '//incubator/api:onos-incubator-api',
+]
+
+TEST_DEPS = TEST
+
+osgi_jar_with_tests (
+    name = 'onos-core-serializers',
+    deps = COMPILE_DEPS,
+    test_deps = TEST_DEPS,
+    visibility = ["//visibility:public"],
+)
diff --git a/drivers/default/BUILD b/drivers/default/BUILD
new file mode 100644
index 0000000..faf4933
--- /dev/null
+++ b/drivers/default/BUILD
@@ -0,0 +1,17 @@
+COMPILE_DEPS = CORE_DEPS + JACKSON + KRYO + [
+    '@openflowj//jar',
+    '//protocols/openflow/api:onos-protocols-openflow-api',
+    '//core/store/serializers:onos-core-serializers',
+]
+
+TEST_DEPS = TEST_ADAPTERS + [
+    '//core/api:onos-api-tests',
+]
+
+osgi_jar_with_tests (
+    deps = COMPILE_DEPS,
+    test_deps = TEST_DEPS,
+    #resources_root = 'src/main/resources',
+    resources = glob(['src/main/resources/**']),
+    visibility = ["//visibility:public"],
+)
diff --git a/incubator/api/BUILD b/incubator/api/BUILD
new file mode 100644
index 0000000..c0beb98
--- /dev/null
+++ b/incubator/api/BUILD
@@ -0,0 +1,9 @@
+COMPILE_DEPS = CORE_DEPS + JACKSON
+
+TEST_DEPS = TEST_ADAPTERS
+
+osgi_jar_with_tests (
+    deps = COMPILE_DEPS,
+    test_deps = TEST_DEPS,
+    visibility = ["//visibility:public"],
+)
diff --git a/incubator/net/BUILD b/incubator/net/BUILD
new file mode 100644
index 0000000..d6ed989
--- /dev/null
+++ b/incubator/net/BUILD
@@ -0,0 +1,18 @@
+COMPILE_DEPS = CORE_DEPS + JACKSON + METRICS + KRYO + [
+    '//incubator/store:onos-incubator-store',
+    '//incubator/api:onos-incubator-api',
+    '//core/common:onos-core-common',
+]
+
+TEST_DEPS = TEST_REST + [
+    '//incubator/api:onos-incubator-api-tests',
+]
+
+osgi_jar_with_tests (
+    deps = COMPILE_DEPS,
+    test_deps = TEST_DEPS,
+    exclude_tests = [
+        'org.onosproject.incubator.net.virtual.impl.VirtualNetworkIntentManagerTest',
+    ],
+    visibility = ["//visibility:public"],
+)
diff --git a/incubator/store/BUILD b/incubator/store/BUILD
new file mode 100644
index 0000000..37ce25a
--- /dev/null
+++ b/incubator/store/BUILD
@@ -0,0 +1,15 @@
+COMPILE_DEPS = CORE_DEPS + KRYO + [
+    '//core/common:onos-core-common',
+    '//utils/rest:onlab-rest',
+    '//core/store/serializers:onos-core-serializers',
+    '@concurrent_trees//jar',
+    '//incubator/api:onos-incubator-api',
+]
+
+TEST_DEPS = TEST_ADAPTERS
+
+osgi_jar_with_tests (
+    deps = COMPILE_DEPS,
+    test_deps = TEST_DEPS,
+    visibility = ["//visibility:public"],
+)
diff --git a/lib/BUCK b/lib/BUCK
index 07fa1de..409182c 100644
--- a/lib/BUCK
+++ b/lib/BUCK
@@ -1,4 +1,4 @@
-# ***** This file was auto-generated at Fri, 18 May 2018 23:14:52 GMT. Do not edit this file manually. *****
+# ***** This file was auto-generated at Tue, 22 May 2018 17:57:55 GMT. Do not edit this file manually. *****
 # ***** Use onos-lib-gen *****
 
 pass_thru_pom(
diff --git a/protocols/openflow/api/BUILD b/protocols/openflow/api/BUILD
new file mode 100644
index 0000000..35abad3
--- /dev/null
+++ b/protocols/openflow/api/BUILD
@@ -0,0 +1,17 @@
+COMPILE_DEPS = CORE_DEPS + NETTY + [
+    '//incubator/store:onos-incubator-store',
+    '//incubator/api:onos-incubator-api',
+    '//core/common:onos-core-common',
+    '@openflowj//jar',
+    '@netty_transport//jar',
+]
+
+TEST_DEPS = TEST + [
+    '//core/api:onos-api-tests',
+]
+
+osgi_jar_with_tests (
+    deps = COMPILE_DEPS,
+    test_deps = TEST_DEPS,
+    visibility = ["//visibility:public"],
+)
diff --git a/protocols/p4runtime/api/BUILD b/protocols/p4runtime/api/BUILD
new file mode 100644
index 0000000..2936d86
--- /dev/null
+++ b/protocols/p4runtime/api/BUILD
@@ -0,0 +1,14 @@
+GRPC_VER = '1.3.1'
+
+COMPILE_DEPS = CORE_DEPS + [
+#    '@grpc//jar',
+]
+
+TEST_DEPS = TEST + [
+    '//core/api:onos-api-tests',
+]
+
+#osgi_jar_with_tests (
+#    deps = COMPILE_DEPS,
+#    test_deps = TEST_DEPS,
+#)
diff --git a/protocols/p4runtime/model/BUILD b/protocols/p4runtime/model/BUILD
new file mode 100644
index 0000000..490ea94
--- /dev/null
+++ b/protocols/p4runtime/model/BUILD
@@ -0,0 +1,10 @@
+PROTOBUF_VER = '3_2_0'
+
+COMPILE_DEPS = CORE_DEPS + [
+    #'//protocols/p4runtime/proto:onos-protocols-p4runtime-proto',
+    #'@grpc_protobuf_' + PROTOBUF_VER + "//jar",
+]
+
+#osgi_jar_with_tests (
+#    deps = COMPILE_DEPS,
+#)
diff --git a/tools/build/bazel/BUILD b/tools/build/bazel/BUILD
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/tools/build/bazel/BUILD
@@ -0,0 +1 @@
+
diff --git a/tools/build/bazel/generate_test_rules.bzl b/tools/build/bazel/generate_test_rules.bzl
new file mode 100644
index 0000000..c8c3976
--- /dev/null
+++ b/tools/build/bazel/generate_test_rules.bzl
@@ -0,0 +1,113 @@
+# -*- mode:python; -*-
+#
+# Copyright 2016 The Bazel Authors. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Generate java test rules from given test_files.
+Instead of having to create one test rule per test in the BUILD file, this rule
+provides a handy way to create a bunch of test rules for the specified test
+files.
+"""
+
+def testIsExcluded(exclude_tests, test):
+  for excluded_test in exclude_tests:
+    normalized_excluded_test = excluded_test.replace('.', '/')
+    if test.endswith(normalized_excluded_test):
+      return True;
+  return False
+
+def generate_test_rules(name,
+                 test_files,
+                 deps,
+                 exclude_tests=[],
+                 default_test_size="small",
+                 small_tests=[],
+                 medium_tests=[],
+                 large_tests=[],
+                 enormous_tests=[],
+                 resources=[],
+                 flaky_tests=[],
+                 tags=[],
+                 prefix="",
+                 jvm_flags=["-XX:MaxPermSize=128m"],
+                 args=[],
+                 visibility=None,
+                 shard_count=1):
+  for test in _get_test_names(test_files):
+    if testIsExcluded(exclude_tests, test):
+      continue
+    test_size = default_test_size
+    if test in small_tests:
+      test_size = "small"
+    if test in medium_tests:
+      test_size = "medium"
+    if test in large_tests:
+      test_size = "large"
+    if test in enormous_tests:
+      test_size = "enormous"
+    flaky = 0
+    if (test in flaky_tests) or ("flaky" in tags):
+      flaky = 1
+    java_class = _package_from_path(
+        PACKAGE_NAME + "/" + _strip_right(test, ".java"))
+    package = java_class[:java_class.rfind(".")]
+    native.java_test(name = prefix + test,
+                     runtime_deps = deps,
+                     resources = resources,
+                     size = test_size,
+                     jvm_flags = jvm_flags,
+                     args = args,
+                     flaky = flaky,
+                     tags = tags,
+                     test_class = java_class,
+                     visibility = visibility,
+                     shard_count = shard_count)
+
+
+def _get_test_names(test_files):
+  test_names = []
+  for test_file in test_files:
+    if not test_file.endswith("Test.java"):
+      continue
+    test_names += [test_file[:-5]]
+  return test_names
+
+
+def _package_from_path(package_path, src_impls=None):
+  src_impls = src_impls or ['javatests/', 'java/']
+  for src_impl in src_impls:
+    if not src_impl.endswith('/'):
+      src_impl += '/'
+    index = _index_of_end(package_path, src_impl)
+    if index >= 0:
+      package_path = package_path[index:]
+      break
+  return package_path.replace('/', '.')
+
+
+def _strip_right(str, suffix):
+  """Returns str without the suffix if it ends with suffix."""
+  if str.endswith(suffix):
+    return str[0: len(str) - len(suffix)]
+  else:
+    return str
+
+
+def _index_of_end(str, part):
+  """If part is in str, return the index of the first character after part.
+  Return -1 if part is not in str."""
+  index = str.find(part)
+  if index >= 0:
+    return index + len(part)
+  return -1
diff --git a/tools/build/bazel/generate_workspace.bzl b/tools/build/bazel/generate_workspace.bzl
new file mode 100644
index 0000000..8dfa931
--- /dev/null
+++ b/tools/build/bazel/generate_workspace.bzl
@@ -0,0 +1,2104 @@
+# ***** This file was auto-generated at Tue, 22 May 2018 18:04:59 GMT. Do not edit this file manually. *****
+# ***** Use onos-lib-gen *****
+COMPILE = [
+    '@commons_configuration//jar',
+    '@commons_logging//jar',
+    '@commons_collections//jar',
+    '@commons_lang//jar',
+    '@commons_lang3//jar',
+    '@commons_io//jar',
+    '@commons_pool//jar',
+    '@guava//jar',
+    '@slf4j_api//jar',
+    '@osgi_core//jar',
+    '@org_osgi_compendium//jar',
+    '@org_apache_felix_scr_annotations//jar',
+    '@org_apache_felix_scr//jar',
+    '@org_apache_karaf_features_core//jar',
+    '@org_apache_karaf_system_core//jar',
+    '@jsr305//jar',
+    '@org_apache_servicemix_bundles_dom4j//jar',
+]
+CORE_DEPS = [] + COMPILE + [
+    '//core/api:onos-api',
+    '//utils/misc:onlab-misc',
+    '//utils/osgi:onlab-osgi',
+]
+TEST = [
+    '@junit//jar',
+    '@easymock//jar',
+    '@hamcrest_all//jar',
+    '@hamcrest_optional//jar',
+    '@guava_testlib//jar',
+    '//utils/junit:onlab-junit',
+]
+TEST_ADAPTERS = [] + TEST + [
+    '//core/common:onos-core-common',
+    '//core/api:onos-api-tests',
+    '//core/common:onos-core-common-tests',
+]
+TEST_REST = [] + TEST_ADAPTERS + [
+    '@jersey_client//jar',
+    '@jersey_server//jar',
+    '@jersey_common//jar',
+    '@jersey_hk2//jar',
+    '@jersey_test_framework_core//jar',
+    '@jersey_test_framework_jetty//jar',
+    '@jersey_container_jetty_http//jar',
+    '@jetty_continuation//jar',
+    '@jetty_http//jar',
+    '@jetty_server//jar',
+    '@jetty_io//jar',
+    '@jetty_util//jar',
+    '@javax_servlet_api//jar',
+    '@hk2_api//jar',
+    '@hk2_locator//jar',
+    '@hk2_utils//jar',
+    '@javax_inject//jar',
+    '@hk2_osgi_resource_locator//jar',
+    '@javax_annotation_api//jar',
+    '@validation_api//jar',
+    '//core/common:onos-core-common',
+    '//core/api:onos-api-tests',
+    '//core/common:onos-core-common-tests',
+    '//utils/osgi:onlab-osgi-tests',
+]
+NETTY = [
+    '@netty_buffer//jar',
+    '@netty_common//jar',
+]
+GRPC_1_3 = [
+    '@grpc_protobuf_1_3_1//jar',
+    '@grpc_stub_1_3_1//jar',
+    '@grpc_netty_1_3_1//jar',
+    '@grpc_auth_1_3_1//jar',
+    '@grpc_context_1_3_1//jar',
+    '@google_truth_0_28//jar',
+]
+GRPC_TEST_1_3 = [
+    '@grpc_testing_1_3_1//jar',
+    '@grpc_testing_proto_1_3_1//jar',
+    '@google_code_findbugs_3_0_0//jar',
+    '@google_errorprone_2_0_19//jar',
+    '@google_instrumentation_0_3_0//jar',
+    '@junit_dep//jar',
+    '@objenesis//jar',
+]
+ONOS_YANG = [
+    '@onos_yang_model//jar',
+    '@onos_yang_compiler_api//jar',
+    '@onos_yang_serializers_json//jar',
+    '@onos_yang_serializers_xml//jar',
+    '@onos_yang_serializers_utils//jar',
+]
+JACKSON = [
+    '@jackson_annotations//jar',
+    '@jackson_core//jar',
+    '@jackson_databind//jar',
+]
+METRICS = [
+    '@metrics_core//jar',
+    '@metrics_json//jar',
+]
+KRYO = [
+    '@kryo//jar',
+    '@reflectasm//jar',
+    '@asm//jar',
+    '@minlog//jar',
+    '@objenesis//jar',
+]
+def generated_maven_jars():
+  native.maven_jar (
+    name = 'aopalliance_repackaged',
+    artifact = 'org.glassfish.hk2.external:aopalliance-repackaged:2.5.0-b42',
+    sha1 = 'e74beab6ca12e9e745eb47ca61729d9452b96f0c',
+  )
+
+  native.maven_jar (
+    name = 'amqp_client',
+    artifact = 'com.rabbitmq:amqp-client:3.6.1',
+    sha1 = '089be4acfa8a0fa48a775a82d20632f90aecf10b',
+  )
+
+  native.maven_jar (
+    name = 'asm',
+    artifact = 'org.ow2.asm:asm:5.0.4',
+    sha1 = '0da08b8cce7bbf903602a25a3a163ae252435795',
+  )
+
+  native.maven_jar (
+    name = 'atomix',
+    artifact = 'io.atomix:atomix:2.0.20',
+    sha1 = '7039de42423b8cd80d6a99208d61f7ee7ec52e50',
+  )
+
+  native.maven_jar (
+    name = 'commons_codec',
+    artifact = 'commons-codec:commons-codec:1.10',
+    sha1 = '4b95f4897fa13f2cd904aee711aeafc0c5295cd8',
+  )
+
+  native.maven_jar (
+    name = 'commons_collections',
+    artifact = 'commons-collections:commons-collections:3.2.2',
+    sha1 = '8ad72fe39fa8c91eaaf12aadb21e0c3661fe26d5',
+  )
+
+  native.maven_jar (
+    name = 'commons_configuration',
+    artifact = 'commons-configuration:commons-configuration:1.10',
+    sha1 = '2b36e4adfb66d966c5aef2d73deb6be716389dc9',
+  )
+
+  native.maven_jar (
+    name = 'commons_io',
+    artifact = 'commons-io:commons-io:2.6',
+    sha1 = '815893df5f31da2ece4040fe0a12fd44b577afaf',
+  )
+
+  native.maven_jar (
+    name = 'commons_jxpath',
+    artifact = 'commons-jxpath:commons-jxpath:1.3',
+    sha1 = 'c22d7d0f0f40eb7059a23cfa61773a416768b137',
+  )
+
+  native.maven_jar (
+    name = 'commons_beanutils',
+    artifact = 'commons-beanutils:commons-beanutils:1.9.2',
+    sha1 = '7a87d845ad3a155297e8f67d9008f4c1e5656b71',
+  )
+
+  native.maven_jar (
+    name = 'jdom',
+    artifact = 'jdom:jdom:1.0',
+    sha1 = 'a2ac1cd690ab4c80defe7f9bce14d35934c35cec',
+  )
+
+  native.maven_jar (
+    name = 'commons_lang',
+    artifact = 'commons-lang:commons-lang:2.6',
+    sha1 = '0ce1edb914c94ebc388f086c6827e8bdeec71ac2',
+  )
+
+  native.maven_jar (
+    name = 'commons_lang3',
+    artifact = 'org.apache.commons:commons-lang3:3.6',
+    sha1 = '9d28a6b23650e8a7e9063c04588ace6cf7012c17',
+  )
+
+  native.maven_jar (
+    name = 'commons_logging',
+    artifact = 'commons-logging:commons-logging:1.2',
+    sha1 = '4bfc12adfe4842bf07b657f0369c4cb522955686',
+  )
+
+  native.maven_jar (
+    name = 'commons_math3',
+    artifact = 'org.apache.commons:commons-math3:3.6.1',
+    sha1 = 'e4ba98f1d4b3c80ec46392f25e094a6a2e58fcbf',
+  )
+
+  native.maven_jar (
+    name = 'commons_pool',
+    artifact = 'commons-pool:commons-pool:1.6',
+    sha1 = '4572d589699f09d866a226a14b7f4323c6d8f040',
+  )
+
+  native.maven_jar (
+    name = 'commons_text',
+    artifact = 'org.apache.commons:commons-text:1.2',
+    sha1 = '74acdec7237f576c4803fff0c1008ab8a3808b2b',
+  )
+
+  native.maven_jar (
+    name = 'concurrent_trees',
+    artifact = 'com.googlecode.concurrent-trees:concurrent-trees:2.6.1',
+    sha1 = '9b647240522ab67c003de9b6702ca81ac0c15efc',
+  )
+
+  native.maven_jar (
+    name = 'easymock',
+    artifact = 'org.easymock:easymock:3.4',
+    sha1 = '9fdeea183a399f25c2469497612cad131e920fa3',
+  )
+
+  native.maven_jar (
+    name = 'antlr',
+    artifact = 'antlr:antlr:2.7.7',
+    sha1 = '83cd2cd674a217ade95a4bb83a8a14f351f48bd0',
+  )
+
+  native.maven_jar (
+    name = 'error_prone_annotations',
+    artifact = 'com.google.errorprone:error_prone_annotations:2.0.11',
+    sha1 = '3624d81fca4e93c67f43bafc222b06e1b1e3b260',
+  )
+
+  native.maven_jar (
+    name = 'ganymed_ssh2',
+    artifact = 'ch.ethz.ganymed:ganymed-ssh2:262',
+    sha1 = '7761dc665d0f6993dc846d914214fb93291e2bdf',
+  )
+
+  native.maven_jar (
+    name = 'gmetric4j',
+    artifact = 'info.ganglia.gmetric4j:gmetric4j:1.0.10',
+    sha1 = '3d62003123b586adb86cb028cc0f8a8c3a701d81',
+  )
+
+  native.maven_jar (
+    name = 'gson',
+    artifact = 'com.google.code.gson:gson:2.7',
+    sha1 = '751f548c85fa49f330cecbb1875893f971b33c4e',
+  )
+
+  native.maven_jar (
+    name = 'guava',
+    artifact = 'com.google.guava:guava:22.0',
+    sha1 = '3564ef3803de51fb0530a8377ec6100b33b0d073',
+  )
+
+  native.maven_jar (
+    name = 'guava_testlib',
+    artifact = 'com.google.guava:guava-testlib:22.0',
+    sha1 = '3be1b88f1cfc6592acbcbfe1f3a420f79eb2b146',
+  )
+
+  native.maven_jar (
+    name = 'hamcrest_all',
+    artifact = 'org.hamcrest:hamcrest-all:1.3',
+    sha1 = '63a21ebc981131004ad02e0434e799fd7f3a8d5a',
+  )
+
+  native.maven_jar (
+    name = 'hk2_api',
+    artifact = 'org.glassfish.hk2:hk2-api:2.5.0-b42',
+    sha1 = '7fd4e3d0f2cb37c80ad0dedee3f5ee69503eaf52',
+  )
+
+  native.maven_jar (
+    name = 'hk2_locator',
+    artifact = 'org.glassfish.hk2:hk2-locator:2.5.0-b42',
+    sha1 = '9d6edc0cb226401a8316e67d81bfc37cb626ef91',
+  )
+
+  native.maven_jar (
+    name = 'hk2_osgi_resource_locator',
+    artifact = 'org.glassfish.hk2:osgi-resource-locator:1.0.1',
+    sha1 = '4ed2b2d4738aed5786cfa64cba5a332779c4c708',
+  )
+
+  native.maven_jar (
+    name = 'hk2_utils',
+    artifact = 'org.glassfish.hk2:hk2-utils:2.5.0-b42',
+    sha1 = '102a344e1728825e865a8986d7605602aba3c3b6',
+  )
+
+  native.maven_jar (
+    name = 'httpclient_osgi',
+    artifact = 'org.apache.httpcomponents:httpclient-osgi:4.5.1',
+    sha1 = '0220a68ff36e5b0fa71b5dc0b1dc1d4ad2dcf524',
+  )
+
+  native.maven_jar (
+    name = 'httpcore_osgi',
+    artifact = 'org.apache.httpcomponents:httpcore-osgi:4.4.4',
+    sha1 = 'd5c14055e569afca96f4603d6f9d467bc72ccba8',
+  )
+
+  native.maven_jar (
+    name = 'influxdb_java',
+    artifact = 'org.influxdb:influxdb-java:2.9',
+    sha1 = '3c1c2b9b977d4ee67b2877eb89943add248a50db',
+  )
+
+  native.maven_jar (
+    name = 'retrofit',
+    artifact = 'com.squareup.retrofit2:retrofit:2.3.0',
+    sha1 = 'bcacde6a8ccedcc56c127403d26b76072fe6214d',
+  )
+
+  native.maven_jar (
+    name = 'converter_moshi',
+    artifact = 'com.squareup.retrofit2:converter-moshi:2.3.0',
+    sha1 = '6ad87c2038269d2574fcd90765ce15c74d6bb993',
+  )
+
+  native.maven_jar (
+    name = 'okhttp',
+    artifact = 'com.squareup.okhttp3:okhttp:3.9.1',
+    sha1 = '84b4b7d1c4a238e7899972b7446c250691e65f1f',
+  )
+
+  native.maven_jar (
+    name = 'logging_interceptor',
+    artifact = 'com.squareup.okhttp3:logging-interceptor:3.9.1',
+    sha1 = '36e71ab9e903fc4d1b4a58d80572a91d9fd60caf',
+  )
+
+  native.maven_jar (
+    name = 'moshi',
+    artifact = 'com.squareup.moshi:moshi:1.4.0',
+    sha1 = 'd67ad038adfd55dc276488a54f4944dfae5ff8ec',
+  )
+
+  native.maven_jar (
+    name = 'okio',
+    artifact = 'com.squareup.okio:okio:1.11.0',
+    sha1 = '840897fcd7223a8143f1d9b6f69714e7be34fd50',
+  )
+
+  native.maven_jar (
+    name = 'jackson_annotations',
+    artifact = 'com.fasterxml.jackson.core:jackson-annotations:2.9.5',
+    sha1 = '9056ec9db21c57d43219a84bb18c129ae51c6a5d',
+  )
+
+  native.maven_jar (
+    name = 'jackson_core',
+    artifact = 'com.fasterxml.jackson.core:jackson-core:2.9.5',
+    sha1 = 'a22ac51016944b06fd9ffbc9541c6e7ce5eea117',
+  )
+
+  native.maven_jar (
+    name = 'jackson_databind',
+    artifact = 'com.fasterxml.jackson.core:jackson-databind:2.9.5',
+    sha1 = '3490508379d065fe3fcb80042b62f630f7588606',
+  )
+
+  native.maven_jar (
+    name = 'javax_annotation_api',
+    artifact = 'javax.annotation:javax.annotation-api:1.2',
+    sha1 = '479c1e06db31c432330183f5cae684163f186146',
+  )
+
+  native.maven_jar (
+    name = 'javax_inject',
+    artifact = 'org.glassfish.hk2.external:javax.inject:2.5.0-b42',
+    sha1 = '98e0b7dcef77dc04809f0603868140a1c60bea71',
+  )
+
+  native.maven_jar (
+    name = 'javax_ws_rs_api',
+    artifact = 'javax.ws.rs:javax.ws.rs-api:2.1',
+    sha1 = '426a0862406536e690c7caa8bb6ed32191986fac',
+  )
+
+  native.maven_jar (
+    name = 'jersey_client',
+    artifact = 'org.glassfish.jersey.core:jersey-client:2.26',
+    sha1 = '125b8d1040d121a5dc4ce6858e21a6160bed7afa',
+  )
+
+  native.maven_jar (
+    name = 'jersey_security',
+    artifact = 'org.glassfish.jersey.security:oauth2-client:2.26',
+    sha1 = '968e1d99c9460e29bdb447114fa8440c3dbafb14',
+  )
+
+  native.maven_jar (
+    name = 'jersey_common',
+    artifact = 'org.glassfish.jersey.core:jersey-common:2.26',
+    sha1 = 'd96475745c5e72cafcbc4dc9e2e725f4d9683f21',
+  )
+
+  native.maven_jar (
+    name = 'jersey_container_jetty_http',
+    artifact = 'org.glassfish.jersey.containers:jersey-container-jetty-http:2.26',
+    sha1 = 'c20d58ceb1a5d98aad2b2032ca200403622fe9d6',
+  )
+
+  native.maven_jar (
+    name = 'jersey_container_servlet',
+    artifact = 'org.glassfish.jersey.containers:jersey-container-servlet:2.26',
+    sha1 = '8723d05d1fe2fdda54d0921836ea5daa5abe5f00',
+  )
+
+  native.maven_jar (
+    name = 'jersey_container_servlet_core',
+    artifact = 'org.glassfish.jersey.containers:jersey-container-servlet-core:2.26',
+    sha1 = '66a0d51facf1e49e2353ff0d2a2d4a9e2fa3f836',
+  )
+
+  native.maven_jar (
+    name = 'jersey_media_multipart',
+    artifact = 'org.glassfish.jersey.media:jersey-media-multipart:2.26',
+    sha1 = 'c7ea0a5819e4688317024c9f4b6e3de54f9d0f3d',
+  )
+
+  native.maven_jar (
+    name = 'jersey_server',
+    artifact = 'org.glassfish.jersey.core:jersey-server:2.26',
+    sha1 = 'aa8eff3d591641dadd7c9880bb73b59bf46d4c82',
+  )
+
+  native.maven_jar (
+    name = 'jersey_hk2',
+    artifact = 'org.glassfish.jersey.inject:jersey-hk2:2.26',
+    sha1 = 'df27f7d7577acf4b532684448021632098924dab',
+  )
+
+  native.maven_jar (
+    name = 'jersey_test_framework_core',
+    artifact = 'org.glassfish.jersey.test-framework:jersey-test-framework-core:2.26',
+    sha1 = '92698666ae89db58074001a34f09b8233ef5effa',
+  )
+
+  native.maven_jar (
+    name = 'jersey_test_framework_jetty',
+    artifact = 'org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-jetty:2.26',
+    sha1 = '6be06684283e7c90036d9e24f7793fd8bbb04f6a',
+  )
+
+  native.maven_jar (
+    name = 'jetty_util',
+    artifact = 'org.eclipse.jetty:jetty-util:9.2.21.v20170120',
+    sha1 = '58d9c3a134dc6d6d84b555758015ab3585b88464',
+  )
+
+  native.maven_jar (
+    name = 'jetty_websocket',
+    artifact = 'org.eclipse.jetty:jetty-websocket:8.1.19.v20160209',
+    sha1 = 'a423ddda13e52a65d604320472af598ca7122a60',
+  )
+
+  native.maven_jar (
+    name = 'jetty_server',
+    artifact = 'org.eclipse.jetty:jetty-server:9.2.21.v20170120',
+    sha1 = 'bdf6a2d58f878652e4b8c3af913e9c56b995e87d',
+  )
+
+  native.maven_jar (
+    name = 'jetty_continuation',
+    artifact = 'org.eclipse.jetty:jetty-continuation:9.2.21.v20170120',
+    sha1 = '38c35ef850d508aa0fae450eee72d784a5dd2d06',
+  )
+
+  native.maven_jar (
+    name = 'jetty_http',
+    artifact = 'org.eclipse.jetty:jetty-http:9.2.21.v20170120',
+    sha1 = '24c5a91c48cfd73b863962ec36ba4dc2bb6552ea',
+  )
+
+  native.maven_jar (
+    name = 'jetty_io',
+    artifact = 'org.eclipse.jetty:jetty-io:9.2.21.v20170120',
+    sha1 = 'a25222b557823b59a7b6d121f951926be20cff85',
+  )
+
+  native.maven_jar (
+    name = 'javax_servlet_api',
+    artifact = 'javax.servlet:javax.servlet-api:3.1.0',
+    sha1 = '3cd63d075497751784b2fa84be59432f4905bf7c',
+  )
+
+  native.maven_jar (
+    name = 'joda_time',
+    artifact = 'joda-time:joda-time:2.9.3',
+    sha1 = '9e46be514a4ed60bcfbaaba88a3c668cf30476ab',
+  )
+
+  native.maven_jar (
+    name = 'jsch',
+    artifact = 'com.jcraft:jsch:0.1.53',
+    sha1 = '658b682d5c817b27ae795637dfec047c63d29935',
+  )
+
+  native.maven_jar (
+    name = 'jsr305',
+    artifact = 'com.google.code.findbugs:jsr305:3.0.1',
+    sha1 = 'f7be08ec23c21485b9b5a1cf1654c2ec8c58168d',
+  )
+
+  native.maven_jar (
+    name = 'junit',
+    artifact = 'junit:junit:4.12',
+    sha1 = '2973d150c0dc1fefe998f834810d68f278ea58ec',
+  )
+
+  native.maven_jar (
+    name = 'junit_dep',
+    artifact = 'junit:junit:4.10',
+    sha1 = 'e4f1766ce7404a08f45d859fb9c226fc9e41a861',
+  )
+
+  native.maven_jar (
+    name = 'kryo',
+    artifact = 'com.esotericsoftware:kryo:4.0.1',
+    sha1 = '5053899c213a6ce50a800d4902c5a9de49fe0098',
+  )
+
+  native.maven_jar (
+    name = 'mapdb',
+    artifact = 'org.mapdb:mapdb:1.0.9',
+    sha1 = 'f8df5e15778eb3e88c03b77aca70c318c6b7c9d0',
+  )
+
+  native.maven_jar (
+    name = 'metrics_core',
+    artifact = 'io.dropwizard.metrics:metrics-core:3.2.2',
+    sha1 = 'cd9886f498ee2ab2d994f0c779e5553b2c450416',
+  )
+
+  native.maven_jar (
+    name = 'metrics_ganglia',
+    artifact = 'io.dropwizard.metrics:metrics-ganglia:3.2.2',
+    sha1 = 'd5bb1883e9b0daf0e4187e558746f5058f4585c1',
+  )
+
+  native.maven_jar (
+    name = 'metrics_graphite',
+    artifact = 'io.dropwizard.metrics:metrics-graphite:3.2.2',
+    sha1 = '908e8cbec1bbdb2f4023334e424c7de2832a95af',
+  )
+
+  native.maven_jar (
+    name = 'metrics_influxdb',
+    artifact = 'com.izettle:metrics-influxdb:1.1.1',
+    sha1 = 'a911d778c2f8607dd4e7a4cdb9b0cd97adcd0343',
+  )
+
+  native.maven_jar (
+    name = 'metrics_json',
+    artifact = 'io.dropwizard.metrics:metrics-json:3.2.2',
+    sha1 = '234612b9739a651eb2b71a8f9e9c4d11d7ccf849',
+  )
+
+  native.maven_jar (
+    name = 'minimal_json',
+    artifact = 'com.eclipsesource.minimal-json:minimal-json:0.9.4',
+    sha1 = 'd6e7dd22569de97c2697a4af301a623f35028972',
+  )
+
+  native.maven_jar (
+    name = 'minlog',
+    artifact = 'com.esotericsoftware:minlog:1.3.0',
+    sha1 = 'ff07b5f1b01d2f92bb00a337f9a94873712f0827',
+  )
+
+  native.maven_jar (
+    name = 'netty',
+    artifact = 'io.netty:netty:3.10.5.Final',
+    sha1 = '9ca7d55d246092bddd29b867706e2f6c7db701a0',
+  )
+
+  native.maven_jar (
+    name = 'netty_buffer',
+    artifact = 'io.netty:netty-buffer:4.1.8.Final',
+    sha1 = '43292c2622e340a0d07178c341ca3bdf3d662034',
+  )
+
+  native.maven_jar (
+    name = 'netty_codec',
+    artifact = 'io.netty:netty-codec:4.1.8.Final',
+    sha1 = '1bd0a2d032e5c7fc3f42c1b483d0f4c57eb516a3',
+  )
+
+  native.maven_jar (
+    name = 'netty_common',
+    artifact = 'io.netty:netty-common:4.1.8.Final',
+    sha1 = 'ee62c80318413d2375d145e51e48d7d35c901324',
+  )
+
+  native.maven_jar (
+    name = 'netty_handler',
+    artifact = 'io.netty:netty-handler:4.1.8.Final',
+    sha1 = 'db01139bfb11afd009a695eef55b43bbf22c4ef5',
+  )
+
+  native.maven_jar (
+    name = 'netty_transport',
+    artifact = 'io.netty:netty-transport:4.1.8.Final',
+    sha1 = '905b5dadce881c9824b3039c0df36dabbb7b6a07',
+  )
+
+  native.maven_jar (
+    name = 'netty_transport_native_epoll',
+    artifact = 'io.netty:netty-transport-native-epoll:4.1.8.Final',
+    sha1 = 'de9052874d9ff9b411bfc465869f620cab643d8d',
+  )
+
+  native.maven_jar (
+    name = 'netty_resolver',
+    artifact = 'io.netty:netty-resolver:4.1.8.Final',
+    sha1 = '2e116cdd5edc01b2305072b1dbbd17c0595dbfef',
+  )
+
+  native.maven_jar (
+    name = 'netty_codec_http2',
+    artifact = 'io.netty:netty-codec-http2:4.1.8.Final',
+    sha1 = '105a99ee5767463370ccc3d2e16800bd99f5648e',
+  )
+
+  native.maven_jar (
+    name = 'netty_codec_http',
+    artifact = 'io.netty:netty-codec-http:4.1.8.Final',
+    sha1 = '1e88617c4a6c88da7e86fdbbd9494d22a250c879',
+  )
+
+  native.maven_jar (
+    name = 'objenesis',
+    artifact = 'org.objenesis:objenesis:2.6',
+    sha1 = '639033469776fd37c08358c6b92a4761feb2af4b',
+  )
+
+  native.maven_jar (
+    name = 'openflowj',
+    artifact = 'org.onosproject:openflowj:3.2.1.onos',
+    sha1 = '66544b285cddc8d53485107310f07b7bc90ac63b',
+  )
+
+  native.maven_jar (
+    name = 'org_apache_felix_framework_security',
+    artifact = 'org.onosproject:org.apache.felix.framework.security:2.2.0.onos',
+    sha1 = '5d39a4ff4a5d3daec8c404789d398c780151de8c',
+  )
+
+  native.maven_jar (
+    name = 'org_apache_felix_scr',
+    artifact = 'org.apache.felix:org.apache.felix.scr:1.8.2',
+    sha1 = 'c3047d56ee57de0752821fd9c3894dda664f2e37',
+  )
+
+  native.maven_jar (
+    name = 'org_apache_felix_scr_annotations',
+    artifact = 'org.apache.felix:org.apache.felix.scr.annotations:1.9.12',
+    sha1 = '5fdc34da641dda8b9165c2be93211479a186da9c',
+  )
+
+  native.maven_jar (
+    name = 'org_apache_karaf_features_core',
+    artifact = 'org.apache.karaf.features:org.apache.karaf.features.core:3.0.8',
+    sha1 = '4a8bf5dbe10e120158cb69295388274f834ae37a',
+  )
+
+  native.maven_jar (
+    name = 'org_apache_karaf_shell_console',
+    artifact = 'org.apache.karaf.shell:org.apache.karaf.shell.console:3.0.8',
+    sha1 = '5bf3e409d2e73bef560face9740b8c1234909b83',
+  )
+
+  native.maven_jar (
+    name = 'org_apache_httpcomponents_httpasyncclient_osgi',
+    artifact = 'org.apache.httpcomponents:httpasyncclient-osgi:4.1.2',
+    sha1 = '17eccd8d9f2803ee95e80ee8283155432600e17b',
+  )
+
+  native.maven_jar (
+    name = 'org_apache_httpcomponents_httpcore_nio',
+    artifact = 'org.apache.httpcomponents:httpcore-nio:4.4.4',
+    sha1 = '16badfc2d99db264c486ba8c57ae577301a58bd9',
+  )
+
+  native.maven_jar (
+    name = 'org_apache_karaf_jaas',
+    artifact = 'org.apache.karaf.jaas:org.apache.karaf.jaas.modules:3.0.8',
+    sha1 = 'e4c97dac488898af1dda2b2cbf5b66318339cd29',
+  )
+
+  native.maven_jar (
+    name = 'org_apache_karaf_system_core',
+    artifact = 'org.apache.karaf.system:org.apache.karaf.system.core:3.0.8',
+    sha1 = '80378de4aeae603889d3408489ff5b9918e6064c',
+  )
+
+  native.maven_jar (
+    name = 'org_apache_servicemix_bundles_snmp4j',
+    artifact = 'org.apache.servicemix.bundles:org.apache.servicemix.bundles.snmp4j:2.3.4_1',
+    sha1 = '5134e0b60a6d88b26fe4dec03488efe4f2463e65',
+  )
+
+  native.maven_jar (
+    name = 'org_osgi_compendium',
+    artifact = 'org.osgi:org.osgi.compendium:5.0.0',
+    sha1 = '9d7a9c35591f6fa1c98ac85af32775c12361aee4',
+  )
+
+  native.maven_jar (
+    name = 'osgi_core',
+    artifact = 'org.osgi:org.osgi.core:5.0.0',
+    sha1 = '6e5e8cd3c9059c08e1085540442a490b59a7783c',
+  )
+
+  native.maven_jar (
+    name = 'reflectasm',
+    artifact = 'com.esotericsoftware:reflectasm:1.11.0',
+    sha1 = 'f747d8b017a26bac575f8da14e8c1df6aecd3154',
+  )
+
+  native.maven_jar (
+    name = 'remotetea_oncrpc',
+    artifact = 'org.acplt.remotetea:remotetea-oncrpc:1.1.3',
+    sha1 = '2f7d94c5179b0267a882259a03a83eaa320cbcce',
+  )
+
+  native.maven_jar (
+    name = 'rrd4j',
+    artifact = 'org.rrd4j:rrd4j:3.1',
+    sha1 = 'e533553fbf52f241dcb0c468b2052a3814dd6722',
+  )
+
+  native.maven_jar (
+    name = 'javassist',
+    artifact = 'org.javassist:javassist:3.22.0-GA',
+    sha1 = '3e83394258ae2089be7219b971ec21a8288528ad',
+  )
+
+  native.maven_jar (
+    name = 'mimepull',
+    artifact = 'org.jvnet.mimepull:mimepull:1.9.6',
+    sha1 = '41c913d791e16f93bc712a8c8a30bb64daa2e9bd',
+  )
+
+  native.maven_jar (
+    name = 'servlet_api',
+    artifact = 'javax.servlet:servlet-api:2.5',
+    sha1 = '5959582d97d8b61f4d154ca9e495aafd16726e34',
+  )
+
+  native.maven_jar (
+    name = 'slf4j_api',
+    artifact = 'org.slf4j:slf4j-api:1.7.25',
+    sha1 = 'da76ca59f6a57ee3102f8f9bd9cee742973efa8a',
+  )
+
+  native.maven_jar (
+    name = 'slf4j_jdk14',
+    artifact = 'org.slf4j:slf4j-jdk14:1.7.25',
+    sha1 = 'bccda40ebc8067491b32a88f49615a747d20082d',
+  )
+
+  native.maven_jar (
+    name = 'typesafe_config',
+    artifact = 'com.typesafe:config:1.2.1',
+    sha1 = 'f771f71fdae3df231bcd54d5ca2d57f0bf93f467',
+  )
+
+  native.maven_jar (
+    name = 'validation_api',
+    artifact = 'javax.validation:validation-api:1.1.0.Final',
+    sha1 = '8613ae82954779d518631e05daa73a6a954817d5',
+  )
+
+  native.maven_jar (
+    name = 'checkstyle',
+    artifact = 'com.puppycrawl.tools:checkstyle:8.10',
+    sha1 = 'd7cd09c4d1240b3acc3041fcb47fd74ae351698b',
+  )
+
+  native.http_jar (
+    name = 'apache_karaf',
+    url = 'mvn:org.onosproject:apache-karaf-offline:tar.gz:3.0.8',
+    sha256 = '2503c5853285e3414da15aef8d8f3f629747c927',
+  )
+
+  native.http_jar (
+    name = 'apache_karaf_patches',
+    url = 'mvn:org.onosproject:onos-apache-karaf-patches:tar.gz:3.0.8',
+    sha256 = 'be5d620a2c4f4c5faa520d2c1b949ad0cc29c84f',
+  )
+
+  native.maven_jar (
+    name = 'bndlib',
+    artifact = 'biz.aQute.bnd:biz.aQute.bndlib:3.1.0',
+    sha1 = '8e45564ca80bf089276a35f916e8702e7b798cbb',
+  )
+
+  native.maven_jar (
+    name = 'bndexe',
+    artifact = 'biz.aQute.bnd:biz.aQute.bnd:3.1.0',
+    sha1 = 'ebd6c2af025b66ea94a9fcb217c2699ba23d3ca2',
+  )
+
+  native.maven_jar (
+    name = 'libthrift',
+    artifact = 'org.apache.thrift:libthrift:0.9.3',
+    sha1 = '8625e8f9b6f49b881fa5fd143172c2833df1ce47',
+  )
+
+  native.maven_jar (
+    name = 'qdox',
+    artifact = 'com.thoughtworks.qdox:qdox:2.0-M3',
+    sha1 = 'f1e9ac82735dc3f2afc38cc051ae0e405f367434',
+  )
+
+  native.maven_jar (
+    name = 'org_apache_felix_scr_bnd',
+    artifact = 'org.onosproject:org.apache.felix.scr.bnd:1.4.1-SNAPSHOT',
+    sha1 = '607cac6eaba5b0eb0787a343b83fe535c42c09aa',
+    repository = 'https://oss.sonatype.org/content/repositories/snapshots/',
+  )
+
+  native.maven_jar (
+    name = 'snmp_core',
+    artifact = 'org.onosproject:snmp-core:1.3-20161021.1',
+    sha1 = '65e1b71d9d0e2fc60c45f631decdb41da3253778',
+  )
+
+  native.maven_jar (
+    name = 'bti7000',
+    artifact = 'org.onosproject:mibbler-mibs-bti7000:1.0-20151221.1',
+    sha1 = 'aebb218bd04e29d8a1ea9036de715919bb7a73e5',
+  )
+
+  native.maven_jar (
+    name = 'mibs_net_snmp',
+    artifact = 'org.onosproject:mibbler-mibs-net-snmp:1.0-20151221.1',
+    sha1 = 'd2cb918e46f06d4ee764d4a96b2b6fb0ba9bc60c',
+  )
+
+  native.maven_jar (
+    name = 'mibs_rfc',
+    artifact = 'org.onosproject:mibbler-mibs-rfc:1.0-20151221.1',
+    sha1 = '06ac2a3bf48c79ab444a9deede9d554ccd355a16',
+  )
+
+  native.maven_jar (
+    name = 'openstack4j_core',
+    artifact = 'org.pacesys:openstack4j-core:3.1.0',
+    sha1 = '634c2ad6728bb6e4cd91c950dd654aacb6f107a6',
+  )
+
+  native.maven_jar (
+    name = 'openstack4j_http_connector',
+    artifact = 'org.pacesys.openstack4j.connectors:openstack4j-http-connector:3.1.0',
+    sha1 = '5bbd558313f13daac819bbbe56ae8432e64409d9',
+  )
+
+  native.maven_jar (
+    name = 'openstack4j_httpclient',
+    artifact = 'org.pacesys.openstack4j.connectors:openstack4j-httpclient:3.1.0',
+    sha1 = 'acb413e27cc43f4bbcee99300befffcf667de579',
+  )
+
+  native.maven_jar (
+    name = 'json_patch',
+    artifact = 'com.github.fge:json-patch:1.9',
+    sha1 = '0a4c3c97a0f5965dec15795acf40d3fbc897af4b',
+  )
+
+  native.maven_jar (
+    name = 'jackson_coreutils',
+    artifact = 'com.github.fge:jackson-coreutils:1.6',
+    sha1 = '9e6af56eb7cc2a65700b289abc7ee2bd170fd231',
+  )
+
+  native.maven_jar (
+    name = 'btf',
+    artifact = 'com.github.fge:btf:1.2',
+    sha1 = '9e66651022eb86301b348d57e6f59459effc343b',
+  )
+
+  native.maven_jar (
+    name = 'msg_simple',
+    artifact = 'com.github.fge:msg-simple:1.1',
+    sha1 = 'f261263e13dd4cfa93cc6b83f1f58f619097a2c4',
+  )
+
+  native.maven_jar (
+    name = 'snakeyaml',
+    artifact = 'org.yaml:snakeyaml:1.15',
+    sha1 = '3b132bea69e8ee099f416044970997bde80f4ea6',
+  )
+
+  native.maven_jar (
+    name = 'onos_yang_model',
+    artifact = 'org.onosproject:onos-yang-model:2.4.7',
+    sha1 = 'c459be8b61650d1e8860b4d13b7ec867a6072b55',
+  )
+
+  native.maven_jar (
+    name = 'onos_yang_compiler_api',
+    artifact = 'org.onosproject:onos-yang-compiler-api:2.4.7',
+    sha1 = 'f087fa5c52b0cb3c56624519f5631b819d59dd28',
+  )
+
+  native.maven_jar (
+    name = 'onos_yang_runtime',
+    artifact = 'org.onosproject:onos-yang-runtime:2.4.7',
+    sha1 = '12e139467380f54891a5cf29f12d717d22e4cb42',
+  )
+
+  native.maven_jar (
+    name = 'onos_yang_serializers_json',
+    artifact = 'org.onosproject:onos-yang-serializers-json:2.4.7',
+    sha1 = '2784dca04f444e218667760b39ca5c74b743f168',
+  )
+
+  native.maven_jar (
+    name = 'onos_yang_serializers_xml',
+    artifact = 'org.onosproject:onos-yang-serializers-xml:2.4.7',
+    sha1 = 'fcf7b98b1bfaaab7d34a2f47eadb0a8c51e34a37',
+  )
+
+  native.maven_jar (
+    name = 'onos_yang_serializers_utils',
+    artifact = 'org.onosproject:onos-yang-serializers-utils:2.4.7',
+    sha1 = '6c6ed696ae7a23b6d0a45138ef6bc07768f4a9b5',
+  )
+
+  native.maven_jar (
+    name = 'org_apache_servicemix_bundles_dom4j',
+    artifact = 'org.apache.servicemix.bundles:org.apache.servicemix.bundles.dom4j:1.6.1_5',
+    sha1 = 'f5da21ae9508008f7b28001983adc143cb310ad7',
+  )
+
+  native.maven_jar (
+    name = 'plexus_utils',
+    artifact = 'org.codehaus.plexus:plexus-utils:3.0.24',
+    sha1 = 'b4ac9780b37cb1b736eae9fbcef27609b7c911ef',
+  )
+
+  native.maven_jar (
+    name = 'sshd_core',
+    artifact = 'org.apache.sshd:sshd-core:1.4.0',
+    sha1 = 'c8f3d7457fc9979d1b9ec319f0229b89793c8e56',
+  )
+
+  native.maven_jar (
+    name = 'grpc_core_1_3_1',
+    artifact = 'io.grpc:grpc-core:1.3.1',
+    sha1 = 'a9b38b4a19af3ef208f4f6bf7871876d959c5eb1',
+  )
+
+  native.maven_jar (
+    name = 'grpc_protobuf_1_3_1',
+    artifact = 'io.grpc:grpc-protobuf:1.3.1',
+    sha1 = '9562e977cacd6e128a31686c3e6948d61873c496',
+  )
+
+  native.maven_jar (
+    name = 'grpc_protobuf_lite_1_3_1',
+    artifact = 'io.grpc:grpc-protobuf-lite:1.3.1',
+    sha1 = '98d1d3d100fdcf92c4331999a504a1a72a5f6e52',
+  )
+
+  native.maven_jar (
+    name = 'grpc_stub_1_3_1',
+    artifact = 'io.grpc:grpc-stub:1.3.1',
+    sha1 = '60bdfa9d8c664a9d87ae461106eff6eed8da6c54',
+  )
+
+  native.maven_jar (
+    name = 'grpc_netty_1_3_1',
+    artifact = 'io.grpc:grpc-netty:1.3.1',
+    sha1 = 'cc3831fccb76cfe21445f75cc055b5ffd979dc54',
+  )
+
+  native.maven_jar (
+    name = 'grpc_auth_1_3_1',
+    artifact = 'io.grpc:grpc-auth:1.3.1',
+    sha1 = '57a0e0b9e474842801521fae76f955dd28ad3ae0',
+  )
+
+  native.maven_jar (
+    name = 'protobuf_java_3_3_0',
+    artifact = 'com.google.protobuf:protobuf-java:3.3.0',
+    sha1 = '9f301d1a27501b1afcb2ed16aad428337dabf9e4',
+  )
+
+  native.maven_jar (
+    name = 'protobuf_java_3_2_0',
+    artifact = 'com.google.protobuf:protobuf-java:3.2.0',
+    sha1 = '62ccf171a106ff6791507f2d5364c275f9a3131d',
+  )
+
+  native.maven_jar (
+    name = 'grpc_testing_1_3_1',
+    artifact = 'io.grpc:grpc-testing:1.3.1',
+    sha1 = 'fd6c4081cd3415684a0b655327e210aa10153eec',
+  )
+
+  native.maven_jar (
+    name = 'grpc_testing_proto_1_3_1',
+    artifact = 'io.grpc:grpc-testing-proto:1.3.1',
+    sha1 = '170f0406457b44695562ccd5ec8d0da9cb762643',
+  )
+
+  native.maven_jar (
+    name = 'grpc_context_1_3_1',
+    artifact = 'io.grpc:grpc-context:1.3.1',
+    sha1 = '28accd419b18d59055b8999f78f5cb7767c7bde8',
+  )
+
+  native.maven_jar (
+    name = 'google_truth_0_28',
+    artifact = 'com.google.truth:truth:0.28',
+    sha1 = '0a388c7877c845ff4b8e19689dda5ac9d34622c4',
+  )
+
+  native.maven_jar (
+    name = 'google_code_findbugs_3_0_0',
+    artifact = 'com.google.code.findbugs:jsr305:3.0.0',
+    sha1 = '5871fb60dc68d67da54a663c3fd636a10a532948',
+  )
+
+  native.maven_jar (
+    name = 'google_errorprone_2_0_19',
+    artifact = 'com.google.errorprone:error_prone_annotations:2.0.19',
+    sha1 = 'c3754a0bdd545b00ddc26884f9e7624f8b6a14de',
+  )
+
+  native.maven_jar (
+    name = 'google_instrumentation_0_3_0',
+    artifact = 'com.google.instrumentation:instrumentation-api:0.3.0',
+    sha1 = 'a2e145e7a7567c6372738f5c5a6f3ba6407ac354',
+  )
+
+  native.maven_jar (
+    name = 'bcpkix_jdk15on',
+    artifact = 'org.bouncycastle:bcpkix-jdk15on:1.58',
+    sha1 = '15a760a039b040e767a75c77ffcc4ff62558f903',
+  )
+
+  native.maven_jar (
+    name = 'bcprov_jdk15on',
+    artifact = 'org.bouncycastle:bcprov-jdk15on:1.58',
+    sha1 = '2c9aa1c4e3372b447ba5daabade4adf2a2264b12',
+  )
+
+  native.maven_jar (
+    name = 'hamcrest_optional',
+    artifact = 'com.spotify:hamcrest-optional:1.1.0',
+    sha1 = 'c2dfe3a43794b15fb4c28de0027fe6e249855b3b',
+  )
+
+  native.maven_jar (
+    name = 'swagger_annotations',
+    artifact = 'io.swagger:swagger-annotations:1.5.16',
+    sha1 = '935f1f2fed2cbdd7a0513981d6c53201e21155f4',
+  )
+
+  native.maven_jar (
+    name = 'kafka_clients',
+    artifact = 'org.apache.servicemix.bundles:org.apache.servicemix.bundles.kafka-clients:0.8.2.2_1',
+    sha1 = '19ba66200cc3617fad12843788dff818b9882008',
+  )
+
+  native.maven_jar (
+    name = 'tinder_xmpp',
+    artifact = 'org.igniterealtime:tinder:1.3.0',
+    sha1 = '46353ded2a1d1a87d17600206d61814eb0b8a711',
+  )
+
+  native.maven_jar (
+    name = 'aalto_xml',
+    artifact = 'com.fasterxml:aalto-xml:1.0.0',
+    sha1 = 'aeae9e8a71914e7f5efc8a69d2f5cb1f2224f2c6',
+  )
+
+  native.maven_jar (
+    name = 'stax2_api',
+    artifact = 'org.codehaus.woodstox:stax2-api:4.0.0',
+    sha1 = '6fa8b05f7587a3cb819d223ee0b0de0c126e3dd1',
+  )
+
+  native.maven_jar (
+    name = 'concurrent_hashmap',
+    artifact = 'com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.0',
+    sha1 = 'db7b7a28b835db4717d4aaf31f5d4441887a6d46',
+  )
+
+  native.maven_jar (
+    name = 'gnu_idn',
+    artifact = 'org.gnu.inet:libidn:1.15',
+    sha1 = 'b5bede3c1c031a827b604da31768ddaf833495c6',
+  )
+
+  native.maven_jar (
+    name = 'sigar',
+    artifact = 'org.knowhowlab.osgi:sigar:1.6.5_01',
+    sha1 = '58eb4af0dc4a1d331cd7620767216494e2984dea',
+  )
+
+def generated_java_libraries():
+  native.java_library (
+    name = 'aopalliance_repackaged',
+    visibility = ['//visibility:public'],
+    exports = ['@aopalliance_repackaged//jar'],
+  )
+
+  native.java_library (
+    name = 'amqp_client',
+    visibility = ['//visibility:public'],
+    exports = ['@amqp_client//jar'],
+  )
+
+  native.java_library (
+    name = 'asm',
+    visibility = ['//visibility:public'],
+    exports = ['@asm//jar'],
+  )
+
+  native.java_library (
+    name = 'atomix',
+    visibility = ['//visibility:public'],
+    exports = ['@atomix//jar'],
+  )
+
+  native.java_library (
+    name = 'commons_codec',
+    visibility = ['//visibility:public'],
+    exports = ['@commons_codec//jar'],
+  )
+
+  native.java_library (
+    name = 'commons_collections',
+    visibility = ['//visibility:public'],
+    exports = ['@commons_collections//jar'],
+  )
+
+  native.java_library (
+    name = 'commons_configuration',
+    visibility = ['//visibility:public'],
+    exports = ['@commons_configuration//jar'],
+  )
+
+  native.java_library (
+    name = 'commons_io',
+    visibility = ['//visibility:public'],
+    exports = ['@commons_io//jar'],
+  )
+
+  native.java_library (
+    name = 'commons_jxpath',
+    visibility = ['//visibility:public'],
+    exports = ['@commons_jxpath//jar'],
+  )
+
+  native.java_library (
+    name = 'commons_beanutils',
+    visibility = ['//visibility:public'],
+    exports = ['@commons_beanutils//jar'],
+  )
+
+  native.java_library (
+    name = 'jdom',
+    visibility = ['//visibility:public'],
+    exports = ['@jdom//jar'],
+  )
+
+  native.java_library (
+    name = 'commons_lang',
+    visibility = ['//visibility:public'],
+    exports = ['@commons_lang//jar'],
+  )
+
+  native.java_library (
+    name = 'commons_lang3',
+    visibility = ['//visibility:public'],
+    exports = ['@commons_lang3//jar'],
+  )
+
+  native.java_library (
+    name = 'commons_logging',
+    visibility = ['//visibility:public'],
+    exports = ['@commons_logging//jar'],
+  )
+
+  native.java_library (
+    name = 'commons_math3',
+    visibility = ['//visibility:public'],
+    exports = ['@commons_math3//jar'],
+  )
+
+  native.java_library (
+    name = 'commons_pool',
+    visibility = ['//visibility:public'],
+    exports = ['@commons_pool//jar'],
+  )
+
+  native.java_library (
+    name = 'commons_text',
+    visibility = ['//visibility:public'],
+    exports = ['@commons_text//jar'],
+  )
+
+  native.java_library (
+    name = 'concurrent_trees',
+    visibility = ['//visibility:public'],
+    exports = ['@concurrent_trees//jar'],
+  )
+
+  native.java_library (
+    name = 'easymock',
+    visibility = ['//visibility:public'],
+    exports = ['@easymock//jar'],
+  )
+
+  native.java_library (
+    name = 'antlr',
+    visibility = ['//visibility:public'],
+    exports = ['@antlr//jar'],
+  )
+
+  native.java_library (
+    name = 'error_prone_annotations',
+    visibility = ['//visibility:public'],
+    exports = ['@error_prone_annotations//jar'],
+  )
+
+  native.java_library (
+    name = 'ganymed_ssh2',
+    visibility = ['//visibility:public'],
+    exports = ['@ganymed_ssh2//jar'],
+  )
+
+  native.java_library (
+    name = 'gmetric4j',
+    visibility = ['//visibility:public'],
+    exports = ['@gmetric4j//jar'],
+  )
+
+  native.java_library (
+    name = 'gson',
+    visibility = ['//visibility:public'],
+    exports = ['@gson//jar'],
+  )
+
+  native.java_library (
+    name = 'guava',
+    visibility = ['//visibility:public'],
+    exports = ['@guava//jar'],
+  )
+
+  native.java_library (
+    name = 'guava_testlib',
+    visibility = ['//visibility:public'],
+    exports = ['@guava_testlib//jar'],
+  )
+
+  native.java_library (
+    name = 'hamcrest_all',
+    visibility = ['//visibility:public'],
+    exports = ['@hamcrest_all//jar'],
+  )
+
+  native.java_library (
+    name = 'hk2_api',
+    visibility = ['//visibility:public'],
+    exports = ['@hk2_api//jar'],
+  )
+
+  native.java_library (
+    name = 'hk2_locator',
+    visibility = ['//visibility:public'],
+    exports = ['@hk2_locator//jar'],
+  )
+
+  native.java_library (
+    name = 'hk2_osgi_resource_locator',
+    visibility = ['//visibility:public'],
+    exports = ['@hk2_osgi_resource_locator//jar'],
+  )
+
+  native.java_library (
+    name = 'hk2_utils',
+    visibility = ['//visibility:public'],
+    exports = ['@hk2_utils//jar'],
+  )
+
+  native.java_library (
+    name = 'httpclient_osgi',
+    visibility = ['//visibility:public'],
+    exports = ['@httpclient_osgi//jar'],
+  )
+
+  native.java_library (
+    name = 'httpcore_osgi',
+    visibility = ['//visibility:public'],
+    exports = ['@httpcore_osgi//jar'],
+  )
+
+  native.java_library (
+    name = 'influxdb_java',
+    visibility = ['//visibility:public'],
+    exports = ['@influxdb_java//jar'],
+  )
+
+  native.java_library (
+    name = 'retrofit',
+    visibility = ['//visibility:public'],
+    exports = ['@retrofit//jar'],
+  )
+
+  native.java_library (
+    name = 'converter_moshi',
+    visibility = ['//visibility:public'],
+    exports = ['@converter_moshi//jar'],
+  )
+
+  native.java_library (
+    name = 'okhttp',
+    visibility = ['//visibility:public'],
+    exports = ['@okhttp//jar'],
+  )
+
+  native.java_library (
+    name = 'logging_interceptor',
+    visibility = ['//visibility:public'],
+    exports = ['@logging_interceptor//jar'],
+  )
+
+  native.java_library (
+    name = 'moshi',
+    visibility = ['//visibility:public'],
+    exports = ['@moshi//jar'],
+  )
+
+  native.java_library (
+    name = 'okio',
+    visibility = ['//visibility:public'],
+    exports = ['@okio//jar'],
+  )
+
+  native.java_library (
+    name = 'jackson_annotations',
+    visibility = ['//visibility:public'],
+    exports = ['@jackson_annotations//jar'],
+  )
+
+  native.java_library (
+    name = 'jackson_core',
+    visibility = ['//visibility:public'],
+    exports = ['@jackson_core//jar'],
+  )
+
+  native.java_library (
+    name = 'jackson_databind',
+    visibility = ['//visibility:public'],
+    exports = ['@jackson_databind//jar'],
+  )
+
+  native.java_library (
+    name = 'javax_annotation_api',
+    visibility = ['//visibility:public'],
+    exports = ['@javax_annotation_api//jar'],
+  )
+
+  native.java_library (
+    name = 'javax_inject',
+    visibility = ['//visibility:public'],
+    exports = ['@javax_inject//jar'],
+  )
+
+  native.java_library (
+    name = 'javax_ws_rs_api',
+    visibility = ['//visibility:public'],
+    exports = ['@javax_ws_rs_api//jar'],
+  )
+
+  native.java_library (
+    name = 'jersey_client',
+    visibility = ['//visibility:public'],
+    exports = ['@jersey_client//jar'],
+  )
+
+  native.java_library (
+    name = 'jersey_security',
+    visibility = ['//visibility:public'],
+    exports = ['@jersey_security//jar'],
+  )
+
+  native.java_library (
+    name = 'jersey_common',
+    visibility = ['//visibility:public'],
+    exports = ['@jersey_common//jar'],
+  )
+
+  native.java_library (
+    name = 'jersey_container_jetty_http',
+    visibility = ['//visibility:public'],
+    exports = ['@jersey_container_jetty_http//jar'],
+  )
+
+  native.java_library (
+    name = 'jersey_container_servlet',
+    visibility = ['//visibility:public'],
+    exports = ['@jersey_container_servlet//jar'],
+  )
+
+  native.java_library (
+    name = 'jersey_container_servlet_core',
+    visibility = ['//visibility:public'],
+    exports = ['@jersey_container_servlet_core//jar'],
+  )
+
+  native.java_library (
+    name = 'jersey_media_multipart',
+    visibility = ['//visibility:public'],
+    exports = ['@jersey_media_multipart//jar'],
+  )
+
+  native.java_library (
+    name = 'jersey_server',
+    visibility = ['//visibility:public'],
+    exports = ['@jersey_server//jar'],
+  )
+
+  native.java_library (
+    name = 'jersey_hk2',
+    visibility = ['//visibility:public'],
+    exports = ['@jersey_hk2//jar'],
+  )
+
+  native.java_library (
+    name = 'jersey_test_framework_core',
+    visibility = ['//visibility:public'],
+    exports = ['@jersey_test_framework_core//jar'],
+  )
+
+  native.java_library (
+    name = 'jersey_test_framework_jetty',
+    visibility = ['//visibility:public'],
+    exports = ['@jersey_test_framework_jetty//jar'],
+  )
+
+  native.java_library (
+    name = 'jetty_util',
+    visibility = ['//visibility:public'],
+    exports = ['@jetty_util//jar'],
+  )
+
+  native.java_library (
+    name = 'jetty_websocket',
+    visibility = ['//visibility:public'],
+    exports = ['@jetty_websocket//jar'],
+  )
+
+  native.java_library (
+    name = 'jetty_server',
+    visibility = ['//visibility:public'],
+    exports = ['@jetty_server//jar'],
+  )
+
+  native.java_library (
+    name = 'jetty_continuation',
+    visibility = ['//visibility:public'],
+    exports = ['@jetty_continuation//jar'],
+  )
+
+  native.java_library (
+    name = 'jetty_http',
+    visibility = ['//visibility:public'],
+    exports = ['@jetty_http//jar'],
+  )
+
+  native.java_library (
+    name = 'jetty_io',
+    visibility = ['//visibility:public'],
+    exports = ['@jetty_io//jar'],
+  )
+
+  native.java_library (
+    name = 'javax_servlet_api',
+    visibility = ['//visibility:public'],
+    exports = ['@javax_servlet_api//jar'],
+  )
+
+  native.java_library (
+    name = 'joda_time',
+    visibility = ['//visibility:public'],
+    exports = ['@joda_time//jar'],
+  )
+
+  native.java_library (
+    name = 'jsch',
+    visibility = ['//visibility:public'],
+    exports = ['@jsch//jar'],
+  )
+
+  native.java_library (
+    name = 'jsr305',
+    visibility = ['//visibility:public'],
+    exports = ['@jsr305//jar'],
+  )
+
+  native.java_library (
+    name = 'junit',
+    visibility = ['//visibility:public'],
+    exports = ['@junit//jar'],
+  )
+
+  native.java_library (
+    name = 'junit_dep',
+    visibility = ['//visibility:public'],
+    exports = ['@junit_dep//jar'],
+  )
+
+  native.java_library (
+    name = 'kryo',
+    visibility = ['//visibility:public'],
+    exports = ['@kryo//jar'],
+  )
+
+  native.java_library (
+    name = 'mapdb',
+    visibility = ['//visibility:public'],
+    exports = ['@mapdb//jar'],
+  )
+
+  native.java_library (
+    name = 'metrics_core',
+    visibility = ['//visibility:public'],
+    exports = ['@metrics_core//jar'],
+  )
+
+  native.java_library (
+    name = 'metrics_ganglia',
+    visibility = ['//visibility:public'],
+    exports = ['@metrics_ganglia//jar'],
+  )
+
+  native.java_library (
+    name = 'metrics_graphite',
+    visibility = ['//visibility:public'],
+    exports = ['@metrics_graphite//jar'],
+  )
+
+  native.java_library (
+    name = 'metrics_influxdb',
+    visibility = ['//visibility:public'],
+    exports = ['@metrics_influxdb//jar'],
+  )
+
+  native.java_library (
+    name = 'metrics_json',
+    visibility = ['//visibility:public'],
+    exports = ['@metrics_json//jar'],
+  )
+
+  native.java_library (
+    name = 'minimal_json',
+    visibility = ['//visibility:public'],
+    exports = ['@minimal_json//jar'],
+  )
+
+  native.java_library (
+    name = 'minlog',
+    visibility = ['//visibility:public'],
+    exports = ['@minlog//jar'],
+  )
+
+  native.java_library (
+    name = 'netty',
+    visibility = ['//visibility:public'],
+    exports = ['@netty//jar'],
+  )
+
+  native.java_library (
+    name = 'netty_buffer',
+    visibility = ['//visibility:public'],
+    exports = ['@netty_buffer//jar'],
+  )
+
+  native.java_library (
+    name = 'netty_codec',
+    visibility = ['//visibility:public'],
+    exports = ['@netty_codec//jar'],
+  )
+
+  native.java_library (
+    name = 'netty_common',
+    visibility = ['//visibility:public'],
+    exports = ['@netty_common//jar'],
+  )
+
+  native.java_library (
+    name = 'netty_handler',
+    visibility = ['//visibility:public'],
+    exports = ['@netty_handler//jar'],
+  )
+
+  native.java_library (
+    name = 'netty_transport',
+    visibility = ['//visibility:public'],
+    exports = ['@netty_transport//jar'],
+  )
+
+  native.java_library (
+    name = 'netty_transport_native_epoll',
+    visibility = ['//visibility:public'],
+    exports = ['@netty_transport_native_epoll//jar'],
+  )
+
+  native.java_library (
+    name = 'netty_resolver',
+    visibility = ['//visibility:public'],
+    exports = ['@netty_resolver//jar'],
+  )
+
+  native.java_library (
+    name = 'netty_codec_http2',
+    visibility = ['//visibility:public'],
+    exports = ['@netty_codec_http2//jar'],
+  )
+
+  native.java_library (
+    name = 'netty_codec_http',
+    visibility = ['//visibility:public'],
+    exports = ['@netty_codec_http//jar'],
+  )
+
+  native.java_library (
+    name = 'objenesis',
+    visibility = ['//visibility:public'],
+    exports = ['@objenesis//jar'],
+  )
+
+  native.java_library (
+    name = 'openflowj',
+    visibility = ['//visibility:public'],
+    exports = ['@openflowj//jar'],
+  )
+
+  native.java_library (
+    name = 'org_apache_felix_framework_security',
+    visibility = ['//visibility:public'],
+    exports = ['@org_apache_felix_framework_security//jar'],
+  )
+
+  native.java_library (
+    name = 'org_apache_felix_scr',
+    visibility = ['//visibility:public'],
+    exports = ['@org_apache_felix_scr//jar'],
+  )
+
+  native.java_library (
+    name = 'org_apache_felix_scr_annotations',
+    visibility = ['//visibility:public'],
+    exports = ['@org_apache_felix_scr_annotations//jar'],
+  )
+
+  native.java_library (
+    name = 'org_apache_karaf_features_core',
+    visibility = ['//visibility:public'],
+    exports = ['@org_apache_karaf_features_core//jar'],
+  )
+
+  native.java_library (
+    name = 'org_apache_karaf_shell_console',
+    visibility = ['//visibility:public'],
+    exports = ['@org_apache_karaf_shell_console//jar'],
+  )
+
+  native.java_library (
+    name = 'org_apache_httpcomponents_httpasyncclient_osgi',
+    visibility = ['//visibility:public'],
+    exports = ['@org_apache_httpcomponents_httpasyncclient_osgi//jar'],
+  )
+
+  native.java_library (
+    name = 'org_apache_httpcomponents_httpcore_nio',
+    visibility = ['//visibility:public'],
+    exports = ['@org_apache_httpcomponents_httpcore_nio//jar'],
+  )
+
+  native.java_library (
+    name = 'org_apache_karaf_jaas',
+    visibility = ['//visibility:public'],
+    exports = ['@org_apache_karaf_jaas//jar'],
+  )
+
+  native.java_library (
+    name = 'org_apache_karaf_system_core',
+    visibility = ['//visibility:public'],
+    exports = ['@org_apache_karaf_system_core//jar'],
+  )
+
+  native.java_library (
+    name = 'org_apache_servicemix_bundles_snmp4j',
+    visibility = ['//visibility:public'],
+    exports = ['@org_apache_servicemix_bundles_snmp4j//jar'],
+  )
+
+  native.java_library (
+    name = 'org_osgi_compendium',
+    visibility = ['//visibility:public'],
+    exports = ['@org_osgi_compendium//jar'],
+  )
+
+  native.java_library (
+    name = 'osgi_core',
+    visibility = ['//visibility:public'],
+    exports = ['@osgi_core//jar'],
+  )
+
+  native.java_library (
+    name = 'reflectasm',
+    visibility = ['//visibility:public'],
+    exports = ['@reflectasm//jar'],
+  )
+
+  native.java_library (
+    name = 'remotetea_oncrpc',
+    visibility = ['//visibility:public'],
+    exports = ['@remotetea_oncrpc//jar'],
+  )
+
+  native.java_library (
+    name = 'rrd4j',
+    visibility = ['//visibility:public'],
+    exports = ['@rrd4j//jar'],
+  )
+
+  native.java_library (
+    name = 'javassist',
+    visibility = ['//visibility:public'],
+    exports = ['@javassist//jar'],
+  )
+
+  native.java_library (
+    name = 'mimepull',
+    visibility = ['//visibility:public'],
+    exports = ['@mimepull//jar'],
+  )
+
+  native.java_library (
+    name = 'servlet_api',
+    visibility = ['//visibility:public'],
+    exports = ['@servlet_api//jar'],
+  )
+
+  native.java_library (
+    name = 'slf4j_api',
+    visibility = ['//visibility:public'],
+    exports = ['@slf4j_api//jar'],
+  )
+
+  native.java_library (
+    name = 'slf4j_jdk14',
+    visibility = ['//visibility:public'],
+    exports = ['@slf4j_jdk14//jar'],
+  )
+
+  native.java_library (
+    name = 'typesafe_config',
+    visibility = ['//visibility:public'],
+    exports = ['@typesafe_config//jar'],
+  )
+
+  native.java_library (
+    name = 'validation_api',
+    visibility = ['//visibility:public'],
+    exports = ['@validation_api//jar'],
+  )
+
+  native.java_library (
+    name = 'checkstyle',
+    visibility = ['//visibility:public'],
+    exports = ['@checkstyle//jar'],
+  )
+
+  native.java_library (
+    name = 'bndlib',
+    visibility = ['//visibility:public'],
+    exports = ['@bndlib//jar'],
+  )
+
+  native.java_library (
+    name = 'bndexe',
+    visibility = ['//visibility:public'],
+    exports = ['@bndexe//jar'],
+  )
+
+  native.java_library (
+    name = 'libthrift',
+    visibility = ['//visibility:public'],
+    exports = ['@libthrift//jar'],
+  )
+
+  native.java_library (
+    name = 'qdox',
+    visibility = ['//visibility:public'],
+    exports = ['@qdox//jar'],
+  )
+
+  native.java_library (
+    name = 'org_apache_felix_scr_bnd',
+    visibility = ['//visibility:public'],
+    exports = ['@org_apache_felix_scr_bnd//jar'],
+  )
+
+  native.java_library (
+    name = 'snmp_core',
+    visibility = ['//visibility:public'],
+    exports = ['@snmp_core//jar'],
+  )
+
+  native.java_library (
+    name = 'bti7000',
+    visibility = ['//visibility:public'],
+    exports = ['@bti7000//jar'],
+  )
+
+  native.java_library (
+    name = 'mibs_net_snmp',
+    visibility = ['//visibility:public'],
+    exports = ['@mibs_net_snmp//jar'],
+  )
+
+  native.java_library (
+    name = 'mibs_rfc',
+    visibility = ['//visibility:public'],
+    exports = ['@mibs_rfc//jar'],
+  )
+
+  native.java_library (
+    name = 'openstack4j_core',
+    visibility = ['//visibility:public'],
+    exports = ['@openstack4j_core//jar'],
+  )
+
+  native.java_library (
+    name = 'openstack4j_http_connector',
+    visibility = ['//visibility:public'],
+    exports = ['@openstack4j_http_connector//jar'],
+  )
+
+  native.java_library (
+    name = 'openstack4j_httpclient',
+    visibility = ['//visibility:public'],
+    exports = ['@openstack4j_httpclient//jar'],
+  )
+
+  native.java_library (
+    name = 'json_patch',
+    visibility = ['//visibility:public'],
+    exports = ['@json_patch//jar'],
+  )
+
+  native.java_library (
+    name = 'jackson_coreutils',
+    visibility = ['//visibility:public'],
+    exports = ['@jackson_coreutils//jar'],
+  )
+
+  native.java_library (
+    name = 'btf',
+    visibility = ['//visibility:public'],
+    exports = ['@btf//jar'],
+  )
+
+  native.java_library (
+    name = 'msg_simple',
+    visibility = ['//visibility:public'],
+    exports = ['@msg_simple//jar'],
+  )
+
+  native.java_library (
+    name = 'snakeyaml',
+    visibility = ['//visibility:public'],
+    exports = ['@snakeyaml//jar'],
+  )
+
+  native.java_library (
+    name = 'onos_yang_model',
+    visibility = ['//visibility:public'],
+    exports = ['@onos_yang_model//jar'],
+  )
+
+  native.java_library (
+    name = 'onos_yang_compiler_api',
+    visibility = ['//visibility:public'],
+    exports = ['@onos_yang_compiler_api//jar'],
+  )
+
+  native.java_library (
+    name = 'onos_yang_runtime',
+    visibility = ['//visibility:public'],
+    exports = ['@onos_yang_runtime//jar'],
+  )
+
+  native.java_library (
+    name = 'onos_yang_serializers_json',
+    visibility = ['//visibility:public'],
+    exports = ['@onos_yang_serializers_json//jar'],
+  )
+
+  native.java_library (
+    name = 'onos_yang_serializers_xml',
+    visibility = ['//visibility:public'],
+    exports = ['@onos_yang_serializers_xml//jar'],
+  )
+
+  native.java_library (
+    name = 'onos_yang_serializers_utils',
+    visibility = ['//visibility:public'],
+    exports = ['@onos_yang_serializers_utils//jar'],
+  )
+
+  native.java_library (
+    name = 'org_apache_servicemix_bundles_dom4j',
+    visibility = ['//visibility:public'],
+    exports = ['@org_apache_servicemix_bundles_dom4j//jar'],
+  )
+
+  native.java_library (
+    name = 'plexus_utils',
+    visibility = ['//visibility:public'],
+    exports = ['@plexus_utils//jar'],
+  )
+
+  native.java_library (
+    name = 'sshd_core',
+    visibility = ['//visibility:public'],
+    exports = ['@sshd_core//jar'],
+  )
+
+  native.java_library (
+    name = 'grpc_core_1_3_1',
+    visibility = ['//visibility:public'],
+    exports = ['@grpc_core_1_3_1//jar'],
+  )
+
+  native.java_library (
+    name = 'grpc_protobuf_1_3_1',
+    visibility = ['//visibility:public'],
+    exports = ['@grpc_protobuf_1_3_1//jar'],
+  )
+
+  native.java_library (
+    name = 'grpc_protobuf_lite_1_3_1',
+    visibility = ['//visibility:public'],
+    exports = ['@grpc_protobuf_lite_1_3_1//jar'],
+  )
+
+  native.java_library (
+    name = 'grpc_stub_1_3_1',
+    visibility = ['//visibility:public'],
+    exports = ['@grpc_stub_1_3_1//jar'],
+  )
+
+  native.java_library (
+    name = 'grpc_netty_1_3_1',
+    visibility = ['//visibility:public'],
+    exports = ['@grpc_netty_1_3_1//jar'],
+  )
+
+  native.java_library (
+    name = 'grpc_auth_1_3_1',
+    visibility = ['//visibility:public'],
+    exports = ['@grpc_auth_1_3_1//jar'],
+  )
+
+  native.java_library (
+    name = 'protobuf_java_3_3_0',
+    visibility = ['//visibility:public'],
+    exports = ['@protobuf_java_3_3_0//jar'],
+  )
+
+  native.java_library (
+    name = 'protobuf_java_3_2_0',
+    visibility = ['//visibility:public'],
+    exports = ['@protobuf_java_3_2_0//jar'],
+  )
+
+  native.java_library (
+    name = 'grpc_testing_1_3_1',
+    visibility = ['//visibility:public'],
+    exports = ['@grpc_testing_1_3_1//jar'],
+  )
+
+  native.java_library (
+    name = 'grpc_testing_proto_1_3_1',
+    visibility = ['//visibility:public'],
+    exports = ['@grpc_testing_proto_1_3_1//jar'],
+  )
+
+  native.java_library (
+    name = 'grpc_context_1_3_1',
+    visibility = ['//visibility:public'],
+    exports = ['@grpc_context_1_3_1//jar'],
+  )
+
+  native.java_library (
+    name = 'google_truth_0_28',
+    visibility = ['//visibility:public'],
+    exports = ['@google_truth_0_28//jar'],
+  )
+
+  native.java_library (
+    name = 'google_code_findbugs_3_0_0',
+    visibility = ['//visibility:public'],
+    exports = ['@google_code_findbugs_3_0_0//jar'],
+  )
+
+  native.java_library (
+    name = 'google_errorprone_2_0_19',
+    visibility = ['//visibility:public'],
+    exports = ['@google_errorprone_2_0_19//jar'],
+  )
+
+  native.java_library (
+    name = 'google_instrumentation_0_3_0',
+    visibility = ['//visibility:public'],
+    exports = ['@google_instrumentation_0_3_0//jar'],
+  )
+
+  native.java_library (
+    name = 'bcpkix_jdk15on',
+    visibility = ['//visibility:public'],
+    exports = ['@bcpkix_jdk15on//jar'],
+  )
+
+  native.java_library (
+    name = 'bcprov_jdk15on',
+    visibility = ['//visibility:public'],
+    exports = ['@bcprov_jdk15on//jar'],
+  )
+
+  native.java_library (
+    name = 'hamcrest_optional',
+    visibility = ['//visibility:public'],
+    exports = ['@hamcrest_optional//jar'],
+  )
+
+  native.java_library (
+    name = 'swagger_annotations',
+    visibility = ['//visibility:public'],
+    exports = ['@swagger_annotations//jar'],
+  )
+
+  native.java_library (
+    name = 'kafka_clients',
+    visibility = ['//visibility:public'],
+    exports = ['@kafka_clients//jar'],
+  )
+
+  native.java_library (
+    name = 'tinder_xmpp',
+    visibility = ['//visibility:public'],
+    exports = ['@tinder_xmpp//jar'],
+  )
+
+  native.java_library (
+    name = 'aalto_xml',
+    visibility = ['//visibility:public'],
+    exports = ['@aalto_xml//jar'],
+  )
+
+  native.java_library (
+    name = 'stax2_api',
+    visibility = ['//visibility:public'],
+    exports = ['@stax2_api//jar'],
+  )
+
+  native.java_library (
+    name = 'concurrent_hashmap',
+    visibility = ['//visibility:public'],
+    exports = ['@concurrent_hashmap//jar'],
+  )
+
+  native.java_library (
+    name = 'gnu_idn',
+    visibility = ['//visibility:public'],
+    exports = ['@gnu_idn//jar'],
+  )
+
+  native.java_library (
+    name = 'sigar',
+    visibility = ['//visibility:public'],
+    exports = ['@sigar//jar'],
+  )
+
diff --git a/tools/build/bazel/osgi-java-library.bzl b/tools/build/bazel/osgi-java-library.bzl
new file mode 100644
index 0000000..680ecc9
--- /dev/null
+++ b/tools/build/bazel/osgi-java-library.bzl
@@ -0,0 +1,182 @@
+load("//tools/build/bazel:generate_workspace.bzl", "COMPILE", "TEST")
+load("//tools/build/bazel:variables.bzl", "ONOS_VERSION")
+load("//tools/build/bazel:generate_test_rules.bzl", "generate_test_rules")
+
+def all_java_sources():
+  return native.glob(["src/main/java/**/*.java"])
+
+def all_java_test_sources():
+  return native.glob(["src/test/java/**/*.java"])
+
+def all_test_resources():
+  return native.glob(["src/test/resources/**"])
+
+def all_resources(resources_root):
+  if resources_root == None:
+    return native.glob(["src/main/resources/**"])
+  else:
+    return native.glob([resources_root + '**'])
+
+# Implementation of the rule to call bnd to make an OSGI jar file
+def _bnd_impl(ctx):
+
+  jar = ctx.file.source.path
+  output = ctx.outputs.osgi_jar.path
+  cp = ""
+  name = ctx.attr.source.label.name
+  group = ctx.attr.package_name_root
+  version = ctx.attr.version
+  license = ""
+  importPackages = "*"
+  exportPackages = "*"
+  includeResources = ""
+  webContext = "NONE"
+  dynamicimportPackages = ""
+
+  inputDependencies = [ctx.file.source]
+
+  # determine the dependencies and build the class path
+  for dep in ctx.attr.deps:
+      file = dep.java.outputs.jars[0].class_jar
+
+      if cp:
+         cp += ":"
+      cp += file.path
+      inputDependencies = inputDependencies + [file]
+
+  # extract the class files for use by bnd
+  classes = ctx.actions.declare_file("classes")
+  classesPath = classes.path
+  jarCommand = "mkdir -p %s && cp %s %s && cd %s && jar xf *.jar" % (classesPath, jar, classesPath, classesPath)
+  ctx.actions.run_shell(
+      inputs=inputDependencies,
+            outputs=[classes],
+            command=jarCommand,
+            progress_message="Expanding jar file: %s" % jar,
+        )
+  inputDependencies += [classes]
+
+  # call bnd to make the OSGI jar file
+  arguments=[
+            jar,
+            output,
+            cp,
+            name,
+            group,
+            version,
+            license,
+            importPackages,
+            exportPackages,
+            includeResources,
+            webContext,
+            dynamicimportPackages,
+            classesPath,
+        ]
+  ctx.actions.run(
+      inputs=inputDependencies,
+      outputs=[ctx.outputs.osgi_jar],
+      arguments=arguments,
+      progress_message="Running bnd wrapper on: %s" % ctx.attr.name,
+      executable=ctx.executable._bnd_exe,
+  )
+
+bnd = rule(
+    attrs = {
+        "deps": attr.label_list(),
+        "version": attr.string(),
+        "package_name_root": attr.string(),
+        "source": attr.label(allow_single_file = True),
+        "_bnd_exe": attr.label(
+            executable = True,
+            cfg = "host",
+            allow_files = True,
+            default = Label("//utils/osgiwrap:osgi-jar"),
+        ),
+    },
+    fragments = ["java"],
+    outputs = {
+        "osgi_jar": "lib%{name}.jar",
+    },
+    implementation = _bnd_impl,
+)
+
+def _fwd_bnd(name, source, deps, version, package_name_root, visibility):
+  bnd(name = name, source = source, deps = deps, version = version, package_name_root = package_name_root, visibility = visibility)
+
+def wrapped_osgi_library(name, jar, deps, version = ONOS_VERSION, package_name_root = "org.onosproject", visibility = [ "//visibility:private" ]):
+  _fwd_bnd(name, jar, deps, version, package_name_root, visibility)
+
+def osgi_jar_with_tests(name = None,
+                        deps = None,
+                        test_deps = None,
+                        package_name_root = "org.onosproject",
+                        srcs = None,
+                        resources_root = None,
+                        resources = None,
+                        test_srcs = None,
+                        exclude_tests = None,
+                        test_resources = None,
+                        visibility = [ "//visibility:public" ],
+                        version = ONOS_VERSION):
+  if name == None:
+    name = "onos-" + native.package_name().replace("/", "-")
+  if srcs == None:
+    srcs = all_java_sources()
+  if resources == None:
+    resources = all_resources(resources_root)
+  if test_srcs == None:
+    test_srcs = all_java_test_sources()
+  if test_resources == None:
+    test_resources = all_test_resources()
+  if exclude_tests == None:
+    exclude_tests = []
+  if deps == None:
+    deps = COMPILE
+  if test_deps == None:
+    test_deps = TEST
+  tests_name = name + '-tests'
+  tests_jar_deps = list(depset(deps + test_deps)) + [ name ]
+  all_test_deps = tests_jar_deps + [ tests_name ]
+
+  native.java_library(name = name, srcs = srcs, resources = resources, deps = deps, visibility = visibility)
+  _fwd_bnd(name + '-osgi', name, deps, version, package_name_root, visibility)
+  if test_srcs != []:
+    native.java_library(name = tests_name,
+                        srcs = test_srcs,
+                        resources = test_resources,
+                        deps = tests_jar_deps,
+                        visibility = visibility)
+
+    generate_test_rules(
+      name = name + "-tests-gen",
+      test_files = test_srcs,
+      exclude_tests = exclude_tests,
+      deps = all_test_deps
+    )
+
+def osgi_jar(name = None,
+             deps = None,
+             package_name_root = "org.onosproject",
+             srcs = None,
+             resources_root = None,
+             resources = None,
+             visibility = [ "//visibility:public" ],
+             version = ONOS_VERSION):
+    if srcs == None:
+      srcs = all_java_sources()
+    if deps == None:
+      deps = COMPILE
+
+    osgi_jar_with_tests(name = name,
+                        deps = deps,
+                        test_deps = [],
+                        package_name_root = package_name_root,
+                        srcs = srcs,
+                        resources = resources,
+                        resources_root = resources_root,
+                        test_srcs = [],
+                        exclude_tests = [],
+                        test_resources = [],
+                        visibility = visibility,
+                        version = version)
+
diff --git a/tools/build/bazel/rules.bzl b/tools/build/bazel/rules.bzl
new file mode 100644
index 0000000..3dd5922
--- /dev/null
+++ b/tools/build/bazel/rules.bzl
@@ -0,0 +1,9 @@
+load("//tools/build/bazel:generate_workspace.bzl",
+        "generated_java_libraries", "COMPILE", "CORE_DEPS", "JACKSON",
+        "TEST_ADAPTERS", "TEST", "TEST_REST", "METRICS", "KRYO", "NETTY")
+
+def onos_bazel_rules() :
+    return
+
+def g() :
+    generated_java_libraries()
\ No newline at end of file
diff --git a/tools/build/bazel/variables.bzl b/tools/build/bazel/variables.bzl
new file mode 100644
index 0000000..1ef7121
--- /dev/null
+++ b/tools/build/bazel/variables.bzl
@@ -0,0 +1,2 @@
+ONOS_VERSION = "1.13.0-SNAPSHOT"
+
diff --git a/tools/build/libgen/src/main/java/org/onosproject/libgen/AetherResolver.java b/tools/build/libgen/src/main/java/org/onosproject/libgen/AetherResolver.java
index 1850779..4f5dcfa 100644
--- a/tools/build/libgen/src/main/java/org/onosproject/libgen/AetherResolver.java
+++ b/tools/build/libgen/src/main/java/org/onosproject/libgen/AetherResolver.java
@@ -91,15 +91,15 @@
         AetherResolver.session = session;
     }
 
-    public static BuckArtifact getArtifact(String name, String uri, String repo) {
-        return new AetherResolver(repo).build(name, uri);
+    public static BuckArtifact getArtifact(String name, String uri, String repo, boolean generateForBazel) {
+        return new AetherResolver(repo).build(name, uri, generateForBazel);
     }
 
     private AetherResolver(String repoUrl) {
         this.repoUrl = repoUrl;
     }
 
-    private BuckArtifact build(String name, String uri) {
+    private BuckArtifact build(String name, String uri, boolean generateForBazel) {
         uri = uri.replaceFirst("mvn:", "");
         Artifact artifact = new DefaultArtifact(uri);
         String originalVersion = artifact.getVersion();
@@ -122,9 +122,9 @@
                                                    artifact.getGroupId(),
                                                    artifact.getArtifactId(),
                                                    originalVersion);
-                return BuckArtifact.getArtifact(name, url, sha, mavenCoords, osgiReady);
+                return BuckArtifact.getArtifact(name, url, sha, mavenCoords, osgiReady, generateForBazel);
             }
-            return BuckArtifact.getArtifact(name, artifact, sha, repoUrl, osgiReady);
+            return BuckArtifact.getArtifact(name, artifact, sha, repoUrl, osgiReady, generateForBazel);
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
diff --git a/tools/build/libgen/src/main/java/org/onosproject/libgen/BuckArtifact.java b/tools/build/libgen/src/main/java/org/onosproject/libgen/BuckArtifact.java
index 15e14be..215b5a8 100644
--- a/tools/build/libgen/src/main/java/org/onosproject/libgen/BuckArtifact.java
+++ b/tools/build/libgen/src/main/java/org/onosproject/libgen/BuckArtifact.java
@@ -25,25 +25,33 @@
     private final String name;
     private final String sha;
     private final boolean osgiReady;
+    private final boolean generateForBazel;
 
-    public static BuckArtifact getArtifact(String name, Artifact artifact, String sha, String repo, boolean osgiReady) {
-        return new MavenArtifact(name, artifact, sha, repo, osgiReady);
+    public static BuckArtifact getArtifact(String name, Artifact artifact, String sha, String repo,
+                                           boolean osgiReady, boolean generateForBazel) {
+        return new MavenArtifact(name, artifact, sha, repo, osgiReady, generateForBazel);
     }
-    public static BuckArtifact getArtifact(String name, String url, String sha, String mavenCoords, boolean osgiReady) {
-        return new HTTPArtifact(name, url, sha, mavenCoords, osgiReady);
+    public static BuckArtifact getArtifact(String name, String url, String sha, String mavenCoords,
+                                           boolean osgiReady, boolean generateForBazel) {
+        return new HTTPArtifact(name, url, sha, mavenCoords, osgiReady, generateForBazel);
     }
-    public static BuckArtifact getArtifact(String name, String url, String sha) {
-        return new HTTPArtifact(name, url, sha, null, true);
+    public static BuckArtifact getArtifact(String name, String url, String sha, boolean generateForBazel) {
+        return new HTTPArtifact(name, url, sha, null, true, generateForBazel);
     }
 
-    public BuckArtifact(String name, String sha, boolean osgiReady) {
+    public BuckArtifact(String name, String sha, boolean osgiReady, boolean generateForBazel) {
         this.name = name;
         this.sha = sha;
         this.osgiReady = osgiReady;
+        this.generateForBazel = generateForBazel;
     }
 
     public String name() {
-        return name;
+        if (!generateForBazel) {
+            return name;
+        } else {
+            return name.replaceAll("[.-]", "_");
+        }
     }
 
     abstract String fileName();
@@ -51,7 +59,7 @@
     abstract String url();
 
     private String jarTarget() {
-        return name != null ? name : fileName();
+        return name != null ? name() : fileName();
     }
 
     private boolean isPublic() {
@@ -62,20 +70,82 @@
         return osgiReady;
     }
 
+    boolean isGenerateForBazel() {
+        return generateForBazel;
+    }
+
+
     String mavenCoords() {
         return null;
     }
 
+    private boolean isJar() {
+        return fileName().endsWith(".jar");
+    }
+
+    private boolean isHttp() {
+        return url().startsWith("http");
+    }
+
+    String getBazelJavaLibraryFragment() {
+        if (isJar()) {
+            String format =
+                    "  native.java_library (\n" +
+                            "    name = '%s',\n" +
+                            "    visibility = ['//visibility:public'],\n" +
+                            "    exports = ['@%s//jar'],\n" +
+                            "  )\n\n";
+            return String.format(format, jarTarget(), jarTarget());
+        }
+        return "";
+    }
+
+    private String extractRepo() {
+        // This is a hack because the code above us already got rid of the maven repo
+        // info for artifacts
+        String url = url();
+        if (url.startsWith("http")) {
+            return url.substring(0, url.indexOf(fileName()) - mavenCoords().length() - 1);
+        } else {
+            return "";
+        }
+    }
+
+    String getBazelMavenJarFragment() {
+        if (isJar() && mavenCoords() != null) {
+            String repo = extractRepo();
+            String repoAttribute = "";
+            if (!"".equals(repo)) {
+                repoAttribute = "    repository = '" + repo + "',\n";
+            }
+            String format =
+                    "  native.maven_jar (\n" +
+                            "    name = '%s',\n" +
+                            "    artifact = '%s',\n" +
+                            "    sha1 = '%s',\n" +
+                            "%s" +
+                            "  )\n\n";
+            return String.format(format, jarTarget(), mavenCoords(), sha, repoAttribute);
+        } else {
+            String format =
+                    "  native.http_jar (\n" +
+                            "    name = '%s',\n" +
+                            "    url = '%s',\n" +
+                            "    sha256 = '%s',\n" +
+                            "  )\n\n";
+            return String.format(format, jarTarget(), url(), sha);
+        }
+    }
+
     public String getBuckFragment() {
         String visibility = isPublic() ? "[ 'PUBLIC' ]" : "[]";
 
-        boolean isJar = fileName().endsWith(".jar");
-        String output = (isJar ? "remote_jar" : "remote_file") + " (\n" +
+        String output = (isJar() ? "remote_jar" : "remote_file") + " (\n" +
                 "  name = '%s',\n" + // jar target
                 "  out = '%s',\n" + // jar file name
                 "  url = '%s',\n" + // maven url
                 "  sha1 = '%s',\n" + // artifact sha
-                ( isJar && mavenCoords() != null ?
+                ( isJar() && mavenCoords() != null ?
                 "  maven_coords = '"+ mavenCoords()+"',\n" : "" ) +
                 "  visibility = %s,\n" +
                 ")\n\n";
@@ -87,8 +157,9 @@
         private final String url;
         private final String mavenCoords;
 
-        public HTTPArtifact(String name, String url, String sha, String mavenCoords, boolean osgiReady) {
-            super(name, sha, osgiReady);
+        public HTTPArtifact(String name, String url, String sha,
+                            String mavenCoords, boolean osgiReady, boolean generateForBazel) {
+            super(name, sha, osgiReady, generateForBazel);
             this.url = url;
             this.mavenCoords = mavenCoords;
         }
@@ -114,8 +185,9 @@
         private final Artifact artifact;
         private final String repo;
 
-        private MavenArtifact(String name, Artifact artifact, String sha, String repo, boolean osgiReady) {
-            super(name, sha, osgiReady);
+        private MavenArtifact(String name, Artifact artifact, String sha,
+                              String repo, boolean osgiReady, boolean generateForBazel) {
+            super(name, sha, osgiReady, generateForBazel);
             this.artifact = artifact;
             this.repo = repo;
         }
@@ -142,7 +214,7 @@
         @Override
         String mavenCoords() {
             String classifer = artifact.getClassifier();
-            if (!isOsgiReady()) {
+            if (!isOsgiReady() && !isGenerateForBazel()) {
                 classifer = "NON-OSGI" + classifer;
             }
 
diff --git a/tools/build/libgen/src/main/java/org/onosproject/libgen/BuckLibGenerator.java b/tools/build/libgen/src/main/java/org/onosproject/libgen/BuckLibGenerator.java
index 0fddf1b..b49c7b7 100644
--- a/tools/build/libgen/src/main/java/org/onosproject/libgen/BuckLibGenerator.java
+++ b/tools/build/libgen/src/main/java/org/onosproject/libgen/BuckLibGenerator.java
@@ -55,6 +55,8 @@
     private final List<BuckArtifact> artifacts = new ArrayList<>();
     private final List<BuckLibrary> libraries = new ArrayList<>();
 
+    private static boolean generateForBazel = false;
+
     /**
      * Main entry point.
      *
@@ -66,6 +68,10 @@
             System.exit(5);
         }
 
+        if (args.length == 3 && "--bazel".equals(args[2])) {
+            generateForBazel = true;
+        }
+
         // Parse args
         String jsonFilePath = args[0];
         String outputBuckPath = args[1];
@@ -107,14 +113,14 @@
         System.out.flush();
         BuckArtifact buckArtifact;
         if (uri.startsWith("http")) {
-            String sha = getHttpSha(name, uri);
-            buckArtifact = BuckArtifact.getArtifact(name, uri, sha);
+            String sha = generateForBazel ? getHttpSha256(name, uri) : getHttpSha1(name, uri);
+            buckArtifact = BuckArtifact.getArtifact(name, uri, sha, generateForBazel);
         } else if (uri.startsWith("mvn")) {
             uri = uri.replaceFirst("mvn:", "");
 //            if (repo != null) {
 //                System.out.println(name + " " + repo);
 //            }
-            buckArtifact = AetherResolver.getArtifact(name, uri, repo);
+            buckArtifact = AetherResolver.getArtifact(name, uri, repo, generateForBazel);
         } else {
             throw new RuntimeException("Unsupported artifact uri: " + uri);
         }
@@ -145,7 +151,7 @@
             libraryTargets.add(name);
         });
 
-        return BuckLibrary.getLibrary(libraryName, libraryTargets);
+        return BuckLibrary.getLibrary(libraryName, libraryTargets, generateForBazel);
     }
 
     public BuckLibGenerator resolve() {
@@ -170,6 +176,27 @@
         return this;
     }
 
+    private String generateArtifacts() {
+        StringBuilder sb = new StringBuilder();
+        if (!generateForBazel) {
+            artifacts.forEach(artifact -> sb.append(artifact.getBuckFragment()));
+        } else {
+            StringBuilder mavenJars = new StringBuilder();
+            StringBuilder javaLibraries = new StringBuilder();
+
+            mavenJars.append("def generated_maven_jars():\n");
+            javaLibraries.append("def generated_java_libraries():\n");
+
+            artifacts.forEach(artifact -> {
+                mavenJars.append(artifact.getBazelMavenJarFragment());
+                javaLibraries.append(artifact.getBazelJavaLibraryFragment());
+            });
+
+            sb.append(mavenJars).append(javaLibraries);
+        }
+        return sb.toString();
+    }
+
     void write(String outputFilePath) {
         DateTimeFormatter formatter = DateTimeFormatter.RFC_1123_DATE_TIME.withZone(ZoneId.of("UTC"));
         File outputFile = new File(outputFilePath);
@@ -182,17 +209,19 @@
                     formatter.format(Instant.now())));
             writer.write("# ***** Use onos-lib-gen *****\n");
 
-            // rule to publish the onos dependency pom
-            writer.write("\npass_thru_pom(\n" +
-                         "    name = 'onos-dependencies-pom',\n" +
-                         "    src = 'pom.xml',\n" +
-                         "    out = 'onos-dependencies.pom',\n" +
-                         "    artifactId = 'onos-dependencies',\n" +
-                         ")\n\n");
+            if (!generateForBazel) {
+                // TODO - have to do this somehow for bazel
+                // rule to publish the onos dependency pom
+                writer.write("\npass_thru_pom(\n" +
+                        "    name = 'onos-dependencies-pom',\n" +
+                        "    src = 'pom.xml',\n" +
+                        "    out = 'onos-dependencies.pom',\n" +
+                        "    artifactId = 'onos-dependencies',\n" +
+                        ")\n\n");
+            }
 
-
-            libraries.forEach(library -> writer.print(library.getBuckFragment()));
-            artifacts.forEach(artifact -> writer.print(artifact.getBuckFragment()));
+            libraries.forEach(library -> writer.print(library.getFragment()));
+            writer.print(generateArtifacts());
             writer.flush();
         } catch (FileNotFoundException e) {
             error("File not found: %s", outputFilePath);
@@ -202,10 +231,18 @@
         }
     }
 
-    String getHttpSha(String name, String urlStr) {
+    String getHttpSha1(String name, String urlStr) {
+        return getHttpSha(name, urlStr, "SHA-1");
+    }
+
+    String getHttpSha256(String name, String urlStr) {
+        return getHttpSha(name, urlStr, "SHA-256");
+    }
+
+    String getHttpSha(String name, String urlStr, String algorithm) {
         //FIXME need http download cache
         try {
-            MessageDigest md = MessageDigest.getInstance("SHA-1");
+            MessageDigest md = MessageDigest.getInstance(algorithm);
             byte[] buffer = new byte[8192];
 
             URL url = new URL(urlStr);
@@ -225,7 +262,7 @@
                 .filter(File::canRead)
                 .findAny();
 
-            if (cache.isPresent()) {
+            if (cache.isPresent() && !generateForBazel) {
                 try (FileInputStream stream = new FileInputStream(cache.get())) {
                     int read;
                     while ((read = stream.read(buffer)) >= 0) {
diff --git a/tools/build/libgen/src/main/java/org/onosproject/libgen/BuckLibrary.java b/tools/build/libgen/src/main/java/org/onosproject/libgen/BuckLibrary.java
index df33c0f..b082aa3 100644
--- a/tools/build/libgen/src/main/java/org/onosproject/libgen/BuckLibrary.java
+++ b/tools/build/libgen/src/main/java/org/onosproject/libgen/BuckLibrary.java
@@ -28,24 +28,73 @@
 
     private final String name;
     private final List<String> targets;
+    private final boolean generateForBazel;
 
     private final Set<Artifact> provided = new HashSet<>();
     private final Set<Artifact> runtime = new HashSet<>();
 
-    public static BuckLibrary getLibrary(String libraryName, List<String> libraryTargets) {
-        return new BuckLibrary(libraryName, libraryTargets);
+    public static BuckLibrary getLibrary(String libraryName, List<String> libraryTargets, boolean generateForBazel) {
+        return new BuckLibrary(libraryName, libraryTargets, generateForBazel);
     }
 
-    private BuckLibrary(String name, List<String> targets) {
+    private BuckLibrary(String name, List<String> targets, boolean generateForBazel) {
         this.name = name;
         this.targets = targets;
+        this.generateForBazel = generateForBazel;
+    }
+
+    private String normalizeName(String name) {
+        if (!name.startsWith("//")) {
+            return name.replaceAll("[.-]", "_");
+        } else {
+            return name;
+        }
+    }
+
+    private String convertBuckTargetName(String buckTargetName) {
+        return normalizeName((buckTargetName.startsWith("//") ?
+                buckTargetName : buckTargetName.replaceFirst(":", "@")));
+    }
+
+    private boolean isAllUpper(String s) {
+        return s.toUpperCase().equals(s);
     }
 
     public String name() {
-        return name;
+        if (!generateForBazel) {
+            return name;
+        } else {
+            return normalizeName(name);
+        }
     }
 
-    public String getBuckFragment() {
+    public String getFragment() {
+        if (generateForBazel) {
+            return getBazelFragment();
+        } else {
+            return getBuckFragment();
+        }
+    }
+
+    private String getBazelFragment() {
+        StringBuilder output = new StringBuilder()
+                .append(name())
+                .append(" = [");
+
+        targets.forEach(target -> {
+            if (isAllUpper(target)) {
+                output.append(String.format("] + %s + [", target.replaceFirst(":", "")));
+            } else {
+                String pathEnd = target.startsWith("//") ? "" : "//jar";
+                output.append(String.format("\n    '%s%s',", convertBuckTargetName(target), pathEnd));
+            }
+        });
+        output.append("\n]\n");
+
+        return output.toString();
+    }
+
+    private String getBuckFragment() {
         StringBuilder output = new StringBuilder()
                 .append("osgi_feature_group(\n")
                 .append(String.format("  name = '%s',\n", name))
diff --git a/tools/build_rules/BUILD b/tools/build_rules/BUILD
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/build_rules/BUILD
diff --git a/tools/build_rules/prelude_bazel b/tools/build_rules/prelude_bazel
new file mode 100644
index 0000000..138126c
--- /dev/null
+++ b/tools/build_rules/prelude_bazel
@@ -0,0 +1,7 @@
+load("//tools/build/bazel:generate_workspace.bzl",
+        "generated_java_libraries", "COMPILE", "CORE_DEPS", "JACKSON",
+        "TEST_ADAPTERS", "TEST", "TEST_REST", "METRICS", "KRYO", "NETTY")
+
+load("//tools/build/bazel:osgi-java-library.bzl", "osgi_jar_with_tests", "osgi_jar")
+
+generated_java_libraries()
diff --git a/utils/junit/BUILD b/utils/junit/BUILD
new file mode 100644
index 0000000..13a2068
--- /dev/null
+++ b/utils/junit/BUILD
@@ -0,0 +1,25 @@
+SRC = 'src/main/java/org/onlab/**/'
+TEST_SRC = 'src/test/java/org/onlab/**/'
+
+COMPILE_DEPS = [
+        "@guava//jar",
+        "@slf4j_api//jar",
+        "@hamcrest_all//jar",
+        "@junit//jar",
+]
+
+TEST_DEPS = [
+    "@guava_testlib//jar",
+]
+
+osgi_jar_with_tests(
+    name = 'onlab-junit',
+    srcs = glob([SRC + '*.java']),
+    deps = COMPILE_DEPS,
+    test_srcs = glob([TEST_SRC + '*.java']),
+    test_deps = TEST_DEPS,
+    package_name_root = 'org.onlab',
+    visibility = ["//visibility:public"],
+)
+
+
diff --git a/utils/misc/BUILD b/utils/misc/BUILD
new file mode 100644
index 0000000..3635a41
--- /dev/null
+++ b/utils/misc/BUILD
@@ -0,0 +1,17 @@
+COMPILE_DEPS = COMPILE + JACKSON + [
+        "@kryo//jar",
+        "@metrics_core//jar",
+        "@netty//jar",
+        "@netty_common//jar",
+        "@objenesis//jar",
+]
+
+osgi_jar_with_tests(
+    name = 'onlab-misc',
+    deps = COMPILE_DEPS,
+    package_name_root = 'org.onlab',
+    exclude_tests = ['org.onlab.graph.AbstractGraphPathSearchTest',
+                     'org.onlab.graph.GraphTest',
+                     'org.onlab.util.SlidingWindowCounterTest'],
+    visibility = ["//visibility:public"],
+)
diff --git a/utils/misc/src/test/java/org/onlab/MiscTestSuite.java b/utils/misc/src/test/java/org/onlab/MiscTestSuite.java
new file mode 100644
index 0000000..33eb892
--- /dev/null
+++ b/utils/misc/src/test/java/org/onlab/MiscTestSuite.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2016-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onlab;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.onlab.graph.AbstractEdgeTest;
+import org.onlab.graph.AdjacencyListsGraphTest;
+import org.onlab.graph.BellmanFordGraphSearchTest;
+import org.onlab.graph.BreadthFirstSearchTest;
+import org.onlab.graph.DefaultMutablePathTest;
+import org.onlab.graph.DefaultPathTest;
+import org.onlab.graph.DepthFirstSearchTest;
+import org.onlab.graph.DijkstraGraphSearchTest;
+import org.onlab.graph.DisjointPathPairTest;
+import org.onlab.graph.HeapTest;
+import org.onlab.graph.KShortestPathsSearchTest;
+import org.onlab.graph.LazyKShortestPathsSearchTest;
+import org.onlab.graph.SrlgGraphSearchTest;
+import org.onlab.graph.SuurballeGraphSearchTest;
+import org.onlab.graph.TarjanGraphSearchTest;
+import org.onlab.util.ImmutableByteSequenceTest;
+
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+        AbstractEdgeTest.class,
+        AdjacencyListsGraphTest.class,
+        BellmanFordGraphSearchTest.class,
+        BreadthFirstSearchTest.class,
+        DefaultMutablePathTest.class,
+        DefaultPathTest.class,
+        DepthFirstSearchTest.class,
+        DijkstraGraphSearchTest.class,
+        DisjointPathPairTest.class,
+        HeapTest.class,
+        KShortestPathsSearchTest.class,
+        LazyKShortestPathsSearchTest.class,
+        SrlgGraphSearchTest.class,
+        SuurballeGraphSearchTest.class,
+        TarjanGraphSearchTest.class,
+        ImmutableByteSequenceTest.class,
+})
+
+public class MiscTestSuite {
+
+}
diff --git a/utils/osgi/BUILD b/utils/osgi/BUILD
new file mode 100644
index 0000000..91dd172
--- /dev/null
+++ b/utils/osgi/BUILD
@@ -0,0 +1,8 @@
+COMPILE_DEPS = COMPILE
+
+osgi_jar_with_tests(
+    name = 'onlab-osgi',
+    deps = COMPILE_DEPS,
+    package_name_root = 'org.onlab',
+    visibility = ["//visibility:public"],
+)
diff --git a/utils/osgiwrap/BUILD b/utils/osgiwrap/BUILD
new file mode 100644
index 0000000..8e1e872
--- /dev/null
+++ b/utils/osgiwrap/BUILD
@@ -0,0 +1,15 @@
+OSGIWRAP_EXECUTABLE = 'osgi-jar'
+
+COMPILE_DEPS = [
+    '@guava//jar',
+    '@bndlib//jar',
+    '@org_apache_felix_scr_bnd//jar'
+]
+
+java_binary(
+    name = OSGIWRAP_EXECUTABLE,
+    srcs = glob(['src/main/java/**/*.java']),
+    deps = COMPILE_DEPS,
+    main_class = 'org.onlab.osgiwrap.OSGiWrapper',
+    visibility = ["//visibility:public"]
+)
diff --git a/utils/osgiwrap/src/main/java/org/onlab/osgiwrap/OSGiWrapper.java b/utils/osgiwrap/src/main/java/org/onlab/osgiwrap/OSGiWrapper.java
index 8a10992..fe286cb 100644
--- a/utils/osgiwrap/src/main/java/org/onlab/osgiwrap/OSGiWrapper.java
+++ b/utils/osgiwrap/src/main/java/org/onlab/osgiwrap/OSGiWrapper.java
@@ -74,10 +74,11 @@
     private String bundleLicense;
 
     private String webContext;
+    private String destdir;
 
     // FIXME should consider using Commons CLI, etc.
     public static void main(String[] args) {
-        if (args.length < 12) {
+        if (args.length < 13) {
             System.err.println("Not enough args");
             System.exit(1);
         }
@@ -94,6 +95,7 @@
         String includeResources = args[9];
         String webContext = args[10];
         String dynamicimportPackages = args[11];
+        String destdir = args[12];
         String desc = Joiner.on(' ').join(Arrays.copyOfRange(args, 12, args.length));
 
         OSGiWrapper wrapper = new OSGiWrapper(jar, output, cp,
@@ -103,7 +105,8 @@
                                               includeResources,
                                               webContext,
                                               dynamicimportPackages,
-                                              desc);
+                                              desc,
+                                              destdir);
         wrapper.log(wrapper + "\n");
         if (!wrapper.execute()) {
             System.err.printf("Error generating %s\n", name);
@@ -124,7 +127,8 @@
                        String includeResources,
                        String webContext,
                        String dynamicimportPackages,
-                       String bundleDescription) {
+                       String bundleDescription,
+                       String destdir) {
         this.inputJar = inputJar;
         this.classpath = Lists.newArrayList(classpath.split(":"));
         if (!this.classpath.contains(inputJar)) {
@@ -151,6 +155,7 @@
         }
 
         this.webContext = webContext;
+        this.destdir = destdir;
     }
 
     private void setProperties(Analyzer analyzer) {
@@ -209,6 +214,8 @@
 
             // Scan the JAR for Felix SCR annotations and generate XML files
             Map<String, String> properties = Maps.newHashMap();
+            // destdir hack
+            properties.put("destdir", destdir);
             SCRDescriptorBndPlugin scrDescriptorBndPlugin = new SCRDescriptorBndPlugin();
             scrDescriptorBndPlugin.setProperties(properties);
             scrDescriptorBndPlugin.setReporter(analyzer);
diff --git a/utils/rest/BUILD b/utils/rest/BUILD
new file mode 100644
index 0000000..0538ba6
--- /dev/null
+++ b/utils/rest/BUILD
@@ -0,0 +1,13 @@
+COMPILE_DEPS = COMPILE + JACKSON + [
+  "//utils/osgi:onlab-osgi",
+  "//utils/misc:onlab-misc",
+  "@javax_ws_rs_api//jar",
+  "@jersey_server//jar",
+]
+
+osgi_jar(
+    name = 'onlab-rest',
+    deps = COMPILE_DEPS,
+    package_name_root = 'org.onlab',
+    visibility = ["//visibility:public"],
+)
