Build providers using bazel

Change-Id: I7d4ebcfb1d593e10aa93f0a4f7111680ed66a7e7
diff --git a/apps/cpman/api/BUILD b/apps/cpman/api/BUILD
new file mode 100644
index 0000000..a70609c
--- /dev/null
+++ b/apps/cpman/api/BUILD
@@ -0,0 +1,8 @@
+COMPILE_DEPS = CORE_DEPS + [
+    "//core/store/serializers:onos-core-serializers",
+]
+
+osgi_jar_with_tests(
+    test_deps = TEST_ADAPTERS,
+    deps = COMPILE_DEPS,
+)
diff --git a/apps/evpn-route-service/api/BUILD b/apps/evpn-route-service/api/BUILD
new file mode 100644
index 0000000..f72e3bc
--- /dev/null
+++ b/apps/evpn-route-service/api/BUILD
@@ -0,0 +1,3 @@
+osgi_jar_with_tests(
+    deps = CORE_DEPS,
+)
diff --git a/apps/optical-model/BUILD b/apps/optical-model/BUILD
new file mode 100644
index 0000000..ac2a540
--- /dev/null
+++ b/apps/optical-model/BUILD
@@ -0,0 +1,24 @@
+load("//tools/build/bazel:generate_workspace.bzl", "ONOS_VERSION")
+
+COMPILE_DEPS = CORE_DEPS + JACKSON + [
+    "@org_apache_karaf_shell_console//jar",
+    "//incubator/api:onos-incubator-api",
+    "//cli:onos-cli",
+]
+
+osgi_jar_with_tests(
+    test_deps = TEST_ADAPTERS,
+    deps = COMPILE_DEPS,
+)
+
+onos_app(
+    app_name = "org.onosproject.optical-model",
+    category = "Optical",
+    description = "ONOS optical information model.",
+    # Is there a way to change BUCK target name properly?
+    #name = 'onos-optical-model',
+    feature_coords = "org.onosproject:onos-optical-model:%s" % (ONOS_VERSION),
+    required_apps = [],
+    title = "Optical Network Model",
+    url = "https://wiki.onosproject.org/x/C4m",
+)
diff --git a/apps/pce/app/BUILD b/apps/pce/app/BUILD
new file mode 100644
index 0000000..1c3e14b
--- /dev/null
+++ b/apps/pce/app/BUILD
@@ -0,0 +1,23 @@
+COMPILE_DEPS = CORE_DEPS + JACKSON + KRYO + [
+    "@org_apache_karaf_shell_console//jar",
+    "@javax_ws_rs_api//jar",
+    "//cli:onos-cli",
+    "//core/store/serializers:onos-core-serializers",
+    "//utils/rest:onlab-rest",
+    "//incubator/api:onos-incubator-api",
+    "//apps/pcep-api:onos-apps-pcep-api",
+    "//apps/pce/bandwidthmgmt:onos-apps-pce-bandwidthmgmt",
+]
+
+osgi_jar_with_tests(
+    test_deps = TEST_REST,
+    deps = COMPILE_DEPS,
+)
+
+onos_app(
+    app_name = "org.onosproject.pce.app",
+    category = "default",
+    description = "PCE as centeral controller App.",
+    title = "PCE",
+    url = "http://onosproject.org",
+)
diff --git a/apps/pce/bandwidthmgmt/BUILD b/apps/pce/bandwidthmgmt/BUILD
new file mode 100644
index 0000000..755f9b2
--- /dev/null
+++ b/apps/pce/bandwidthmgmt/BUILD
@@ -0,0 +1,16 @@
+COMPILE_DEPS = CORE_DEPS + KRYO + [
+    "//core/store/serializers:onos-core-serializers",
+    "//apps/pcep-api:onos-apps-pcep-api",
+]
+
+osgi_jar_with_tests(
+    deps = COMPILE_DEPS,
+)
+
+onos_app(
+    app_name = "org.onosproject.bandwidthmgmt",
+    category = "default",
+    description = "PCE Bandwidth Management.",
+    title = "PCE Bandwidth Management",
+    url = "http://onosproject.org",
+)
diff --git a/apps/pce/pceweb/BUILD b/apps/pce/pceweb/BUILD
new file mode 100644
index 0000000..853f9b3
--- /dev/null
+++ b/apps/pce/pceweb/BUILD
@@ -0,0 +1,17 @@
+COMPILE_DEPS = CORE_DEPS + JACKSON + [
+    "@org_apache_karaf_shell_console//jar",
+    "//apps/pce/app:onos-apps-pce-app",
+    "//cli:onos-cli",
+    "//incubator/api:onos-incubator-api",
+]
+
+osgi_jar_with_tests(
+    deps = COMPILE_DEPS,
+)
+
+onos_app(
+    category = "Utility",
+    description = "Allows the user to visualize different types of paths between network entities",
+    title = "PCE REST API",
+    url = "http://onosproject.org",
+)
diff --git a/modules.bzl b/modules.bzl
index d0e2387..cb0e291 100644
--- a/modules.bzl
+++ b/modules.bzl
@@ -58,22 +58,22 @@
     "//protocols/xmpp/core/api:onos-protocols-xmpp-core-api",
     "//protocols/xmpp/core/ctl:onos-protocols-xmpp-core-ctl",
     "//drivers/utilities:onos-drivers-utilities",
-    #"//providers/netconf/device:onos-providers-netconf-device",
-    #"//providers/openflow/device:onos-providers-openflow-device",
-    #"//providers/openflow/packet:onos-providers-openflow-packet",
-    #"//providers/openflow/flow:onos-providers-openflow-flow",
-    #"//providers/openflow/group:onos-providers-openflow-group",
-    #"//providers/openflow/meter:onos-providers-openflow-meter",
-    #"//providers/ovsdb/device:onos-providers-ovsdb-device",
-    #"//providers/ovsdb/tunnel:onos-providers-ovsdb-tunnel",
+    "//providers/netconf/device:onos-providers-netconf-device",
+    "//providers/openflow/device:onos-providers-openflow-device",
+    "//providers/openflow/packet:onos-providers-openflow-packet",
+    "//providers/openflow/flow:onos-providers-openflow-flow",
+    "//providers/openflow/group:onos-providers-openflow-group",
+    "//providers/openflow/meter:onos-providers-openflow-meter",
+    "//providers/ovsdb/device:onos-providers-ovsdb-device",
+    "//providers/ovsdb/tunnel:onos-providers-ovsdb-tunnel",
     "//providers/rest/device:onos-providers-rest-device",
-    #"//providers/snmp/device:onos-providers-snmp-device",
-    #"//providers/isis/cfg:onos-providers-isis-cfg",
-    #"//providers/isis/topology:onos-providers-isis-topology",
-    #"//providers/lisp/device:onos-providers-lisp-device",
-    #"//providers/tl1/device:onos-providers-tl1-device",
-    #"//providers/general/device:onos-providers-general-device",
-    #"//providers/p4runtime/packet:onos-providers-p4runtime-packet",
+    "//providers/snmp/device:onos-providers-snmp-device",
+    "//providers/isis/cfg:onos-providers-isis-cfg",
+    "//providers/isis/topology:onos-providers-isis-topology",
+    "//providers/lisp/device:onos-providers-lisp-device",
+    "//providers/tl1/device:onos-providers-tl1-device",
+    "//providers/general/device:onos-providers-general-device",
+    "//providers/p4runtime/packet:onos-providers-p4runtime-packet",
     "//web/api:onos-rest",
     #"//web/gui2:onos-gui2",
     #"//web/gui:onos-gui",
@@ -117,31 +117,31 @@
 
 ONOS_PROVIDERS = [
     # Providers
-    #"//providers/bgp:onos-providers-bgp-oar",
-    #"//providers/bgpcep:onos-providers-bgpcep-oar",
-    #"//providers/host:onos-providers-host-oar",
-    #"//providers/lldp:onos-providers-lldp-oar",
-    #"//providers/netcfghost:onos-providers-netcfghost-oar",
-    #"//providers/netcfglinks:onos-providers-netcfglinks-oar",
-    #"//providers/netconf:onos-providers-netconf-oar",
-    #"//providers/openflow/message:onos-providers-openflow-message-oar",
-    #"//providers/ovsdb:onos-providers-ovsdb-oar",
-    #"//providers/ovsdb/host:onos-providers-ovsdb-host-oar",
-    #"//providers/ovsdb/base:onos-providers-ovsdb-base-oar",
-    #"//providers/pcep:onos-providers-pcep-oar",
-    #"//providers/null:onos-providers-null-oar",
-    #"//providers/openflow/base:onos-providers-openflow-base-oar",
-    #"//providers/openflow/app:onos-providers-openflow-app-oar",
+    "//providers/bgp:onos-providers-bgp-oar",
+    "//providers/bgpcep:onos-providers-bgpcep-oar",
+    "//providers/host:onos-providers-host-oar",
+    "//providers/lldp:onos-providers-lldp-oar",
+    "//providers/netcfghost:onos-providers-netcfghost-oar",
+    "//providers/netcfglinks:onos-providers-netcfglinks-oar",
+    "//providers/netconf:onos-providers-netconf-oar",
+    "//providers/openflow/message:onos-providers-openflow-message-oar",
+    "//providers/ovsdb:onos-providers-ovsdb-oar",
+    "//providers/ovsdb/host:onos-providers-ovsdb-host-oar",
+    "//providers/ovsdb/base:onos-providers-ovsdb-base-oar",
+    "//providers/pcep:onos-providers-pcep-oar",
+    "//providers/null:onos-providers-null-oar",
+    "//providers/openflow/base:onos-providers-openflow-base-oar",
+    "//providers/openflow/app:onos-providers-openflow-app-oar",
     "//providers/rest:onos-providers-rest-oar",
-    #"//providers/isis:onos-providers-isis-oar",
-    #"//providers/snmp:onos-providers-snmp-oar",
-    #"//providers/link:onos-providers-link-oar",
-    #"//providers/lisp:onos-providers-lisp-oar",
-    #"//providers/tl1:onos-providers-tl1-oar",
-    #"//providers/general:onos-providers-general-oar",
-    #"//providers/p4runtime:onos-providers-p4runtime-oar",
+    "//providers/isis:onos-providers-isis-oar",
+    "//providers/snmp:onos-providers-snmp-oar",
+    "//providers/link:onos-providers-link-oar",
+    "//providers/lisp:onos-providers-lisp-oar",
+    "//providers/tl1:onos-providers-tl1-oar",
+    "//providers/general:onos-providers-general-oar",
+    "//providers/p4runtime:onos-providers-p4runtime-oar",
     #    '//providers/ietfte:onos-providers-ietfte-oar',
-    #"//providers/xmpp/device:onos-providers-xmpp-device-oar",
+    "//providers/xmpp/device:onos-providers-xmpp-device-oar",
 ]
 
 ONOS_APPS = [
diff --git a/providers/bgp/BUILD b/providers/bgp/BUILD
new file mode 100644
index 0000000..b996b79
--- /dev/null
+++ b/providers/bgp/BUILD
@@ -0,0 +1,18 @@
+BUNDLES = [
+    "//providers/bgp/cfg:onos-providers-bgp-cfg",
+    "//providers/bgp/topology:onos-providers-bgp-topology",
+    "//providers/bgp/route:onos-providers-bgp-route",
+    "//providers/bgp/cli:onos-providers-bgp-cli",
+    "//protocols/bgp/api:onos-protocols-bgp-api",
+    "//protocols/bgp/ctl:onos-protocols-bgp-ctl",
+    "//protocols/bgp/bgpio:onos-protocols-bgp-bgpio",
+]
+
+onos_app(
+    category = "Provider",
+    description = "BGP protocol southbound providers.",
+    included_bundles = BUNDLES,
+    required_apps = ["org.onosproject.evpn-route-service"],
+    title = "BGP Provider",
+    url = "http://onosproject.org",
+)
diff --git a/providers/bgp/cfg/BUILD b/providers/bgp/cfg/BUILD
new file mode 100644
index 0000000..da88670
--- /dev/null
+++ b/providers/bgp/cfg/BUILD
@@ -0,0 +1,7 @@
+COMPILE_DEPS = CORE_DEPS + JACKSON + [
+    "//protocols/bgp/api:onos-protocols-bgp-api",
+]
+
+osgi_jar_with_tests(
+    deps = COMPILE_DEPS,
+)
diff --git a/providers/bgp/cli/BUILD b/providers/bgp/cli/BUILD
new file mode 100644
index 0000000..4ac3704
--- /dev/null
+++ b/providers/bgp/cli/BUILD
@@ -0,0 +1,14 @@
+COMPILE_DEPS = CORE_DEPS + [
+    "@org_apache_karaf_shell_console//jar",
+    "//incubator/api:onos-incubator-api",
+    "//providers/bgp/cfg:onos-providers-bgp-cfg",
+    "//providers/bgp/topology:onos-providers-bgp-topology",
+    "//protocols/bgp/api:onos-protocols-bgp-api",
+    "//protocols/bgp/ctl:onos-protocols-bgp-ctl",
+    "//protocols/bgp/bgpio:onos-protocols-bgp-bgpio",
+    "//cli:onos-cli",
+]
+
+osgi_jar_with_tests(
+    deps = COMPILE_DEPS,
+)
diff --git a/providers/bgp/route/BUILD b/providers/bgp/route/BUILD
new file mode 100644
index 0000000..2966dd3
--- /dev/null
+++ b/providers/bgp/route/BUILD
@@ -0,0 +1,12 @@
+COMPILE_DEPS = CORE_DEPS + [
+    "//protocols/bgp/api:onos-protocols-bgp-api",
+    "//protocols/bgp/bgpio:onos-protocols-bgp-bgpio",
+    "//incubator/store:onos-incubator-store",
+    "//incubator/api:onos-incubator-api",
+    "//apps/evpn-route-service/api:onos-apps-evpn-route-service-api",
+]
+
+osgi_jar_with_tests(
+    test_deps = TEST_ADAPTERS,
+    deps = COMPILE_DEPS,
+)
diff --git a/providers/bgp/topology/BUILD b/providers/bgp/topology/BUILD
new file mode 100644
index 0000000..65a90cd
--- /dev/null
+++ b/providers/bgp/topology/BUILD
@@ -0,0 +1,12 @@
+COMPILE_DEPS = CORE_DEPS + JACKSON + [
+    "//protocols/bgp/api:onos-protocols-bgp-api",
+    "//protocols/bgp/bgpio:onos-protocols-bgp-bgpio",
+    "//incubator/store:onos-incubator-store",
+    "//incubator/api:onos-incubator-api",
+    "//apps/pcep-api:onos-apps-pcep-api",
+]
+
+osgi_jar_with_tests(
+    test_deps = TEST_ADAPTERS,
+    deps = COMPILE_DEPS,
+)
diff --git a/providers/bgpcep/BUILD b/providers/bgpcep/BUILD
new file mode 100644
index 0000000..1ca61bc
--- /dev/null
+++ b/providers/bgpcep/BUILD
@@ -0,0 +1,25 @@
+BUNDLES = [
+    "//protocols/bgp/bgpio:onos-protocols-bgp-bgpio",
+    "//protocols/bgp/api:onos-protocols-bgp-api",
+    "//protocols/bgp/ctl:onos-protocols-bgp-ctl",
+    "//protocols/pcep/pcepio:onos-protocols-pcep-pcepio",
+    "//apps/pcep-api:onos-apps-pcep-api",
+    "//protocols/pcep/server/api:onos-protocols-pcep-server-api",
+    "//providers/bgp/topology:onos-providers-bgp-topology",
+    "//providers/bgp/cfg:onos-providers-bgp-cfg",
+    "//protocols/pcep/server/ctl:onos-protocols-pcep-server-ctl",
+    "//providers/pcep/topology:onos-providers-pcep-topology",
+    "//providers/pcep/tunnel:onos-providers-pcep-tunnel",
+    "//providers/bgpcep/flow:onos-providers-bgpcep-flow",
+    "//apps/pce/app:onos-apps-pce-app",
+    "//apps/pce/pceweb:onos-apps-pce-pceweb",
+    "//apps/pce/bandwidthmgmt:onos-apps-pce-bandwidthmgmt",
+]
+
+onos_app(
+    category = "Provider",
+    description = "BGPCEP providers.",
+    included_bundles = BUNDLES,
+    title = "BGPCEP Provider",
+    url = "http://onosproject.org",
+)
diff --git a/providers/bgpcep/flow/BUILD b/providers/bgpcep/flow/BUILD
new file mode 100644
index 0000000..865db88
--- /dev/null
+++ b/providers/bgpcep/flow/BUILD
@@ -0,0 +1,10 @@
+COMPILE_DEPS = CORE_DEPS + [
+    "//protocols/bgp/api:onos-protocols-bgp-api",
+    "//incubator/api:onos-incubator-api",
+    "//protocols/pcep/server/api:onos-protocols-pcep-server-api",
+    "//protocols/pcep/pcepio:onos-protocols-pcep-pcepio",
+]
+
+osgi_jar_with_tests(
+    deps = COMPILE_DEPS,
+)
diff --git a/providers/general/BUILD b/providers/general/BUILD
new file mode 100644
index 0000000..0f4654f
--- /dev/null
+++ b/providers/general/BUILD
@@ -0,0 +1,13 @@
+BUNDLES = [
+    "//providers/general/device:onos-providers-general-device",
+]
+
+onos_app(
+    app_name = "org.onosproject.generaldeviceprovider",
+    category = "Provider",
+    description = "General device southbound providers.",
+    included_bundles = BUNDLES,
+    required_apps = [],
+    title = "General Device Provider",
+    url = "http://onosproject.org",
+)
diff --git a/providers/general/device/BUILD b/providers/general/device/BUILD
new file mode 100644
index 0000000..2807457
--- /dev/null
+++ b/providers/general/device/BUILD
@@ -0,0 +1,6 @@
+COMPILE_DEPS = CORE_DEPS + JACKSON
+
+osgi_jar_with_tests(
+    test_deps = TEST_ADAPTERS,
+    deps = COMPILE_DEPS,
+)
diff --git a/providers/host/BUILD b/providers/host/BUILD
new file mode 100644
index 0000000..9d60d15
--- /dev/null
+++ b/providers/host/BUILD
@@ -0,0 +1,20 @@
+COMPILE_DEPS = CORE_DEPS + [
+    "//incubator/api:onos-incubator-api",
+]
+
+TEST_DEPS = TEST_ADAPTERS + [
+    "//utils/osgi:onlab-osgi-tests",
+]
+
+osgi_jar_with_tests(
+    test_deps = TEST_DEPS,
+    deps = COMPILE_DEPS,
+)
+
+onos_app(
+    app_name = "org.onosproject.hostprovider",
+    category = "Provider",
+    description = "Provides host discovery and location to the ONOS core by eavesdropping on the ARP and NDP packets.",
+    title = "Host Location Provider",
+    url = "http://onosproject.org",
+)
diff --git a/providers/isis/BUILD b/providers/isis/BUILD
new file mode 100644
index 0000000..e91c3bf
--- /dev/null
+++ b/providers/isis/BUILD
@@ -0,0 +1,15 @@
+BUNDLES = [
+    "//protocols/isis/api:onos-protocols-isis-api",
+    "//protocols/isis/ctl:onos-protocols-isis-ctl",
+    "//protocols/isis/isisio:onos-protocols-isis-isisio",
+    "//providers/isis/cfg:onos-providers-isis-cfg",
+    "//providers/isis/topology:onos-providers-isis-topology",
+]
+
+onos_app(
+    category = "Provider",
+    description = "ONOS ISIS protocol adapters.",
+    included_bundles = BUNDLES,
+    title = "ISIS Provider",
+    url = "http://onosproject.org",
+)
diff --git a/providers/isis/cfg/BUILD b/providers/isis/cfg/BUILD
new file mode 100644
index 0000000..82b592b
--- /dev/null
+++ b/providers/isis/cfg/BUILD
@@ -0,0 +1,7 @@
+COMPILE_DEPS = CORE_DEPS + JACKSON + [
+    "//protocols/isis/api:onos-protocols-isis-api",
+]
+
+osgi_jar_with_tests(
+    deps = COMPILE_DEPS,
+)
diff --git a/providers/isis/topology/BUILD b/providers/isis/topology/BUILD
new file mode 100644
index 0000000..1e3324d
--- /dev/null
+++ b/providers/isis/topology/BUILD
@@ -0,0 +1,9 @@
+COMPILE_DEPS = CORE_DEPS + JACKSON + [
+    "//protocols/isis/api:onos-protocols-isis-api",
+    "//protocols/isis/ctl:onos-protocols-isis-ctl",
+]
+
+osgi_jar_with_tests(
+    test_deps = TEST_ADAPTERS,
+    deps = COMPILE_DEPS,
+)
diff --git a/providers/link/BUILD b/providers/link/BUILD
new file mode 100644
index 0000000..5188bfa
--- /dev/null
+++ b/providers/link/BUILD
@@ -0,0 +1,16 @@
+TEST_DEPS = TEST_ADAPTERS + [
+    "//utils/osgi:onlab-osgi-tests",
+]
+
+osgi_jar_with_tests(
+    test_deps = TEST_DEPS,
+    deps = CORE_DEPS,
+)
+
+onos_app(
+    app_name = "org.onosproject.linkdiscovery",
+    category = "Provider",
+    description = "ONOS link discovery provider.",
+    title = "Link Discovery Provider",
+    url = "http://onosproject.org",
+)
diff --git a/providers/lisp/BUILD b/providers/lisp/BUILD
new file mode 100644
index 0000000..ee6651b
--- /dev/null
+++ b/providers/lisp/BUILD
@@ -0,0 +1,18 @@
+BUNDLES = [
+    "//providers/lisp/device:onos-providers-lisp-device",
+    "//providers/lisp/mapping:onos-providers-lisp-mapping",
+    "//providers/lisp/message:onos-providers-lisp-message",
+    "//protocols/lisp/api:onos-protocols-lisp-api",
+    "//protocols/lisp/ctl:onos-protocols-lisp-ctl",
+    "//protocols/lisp/msg:onos-protocols-lisp-msg",
+    "//apps/mappingmanagement/api:onos-apps-mappingmanagement-api",
+]
+
+onos_app(
+    app_name = "org.onosproject.lisp",
+    category = "Provider",
+    description = "LISP protocol southbound providers.",
+    included_bundles = BUNDLES,
+    title = "LISP Provider",
+    url = "http://onosproject.org",
+)
diff --git a/providers/lisp/device/BUILD b/providers/lisp/device/BUILD
new file mode 100644
index 0000000..b1b3161
--- /dev/null
+++ b/providers/lisp/device/BUILD
@@ -0,0 +1,12 @@
+COMPILE_DEPS = CORE_DEPS + [
+    "//protocols/lisp/api:onos-protocols-lisp-api",
+]
+
+TEST_DEPS = TEST_ADAPTERS + [
+    "//protocols/lisp/api:onos-protocols-lisp-api-tests",
+]
+
+osgi_jar_with_tests(
+    test_deps = TEST_DEPS,
+    deps = COMPILE_DEPS,
+)
diff --git a/providers/lisp/mapping/BUILD b/providers/lisp/mapping/BUILD
new file mode 100644
index 0000000..2dc439e
--- /dev/null
+++ b/providers/lisp/mapping/BUILD
@@ -0,0 +1,15 @@
+COMPILE_DEPS = CORE_DEPS + [
+    "//protocols/lisp/api:onos-protocols-lisp-api",
+    "//protocols/lisp/msg:onos-protocols-lisp-msg",
+    "//apps/mappingmanagement/api:onos-apps-mappingmanagement-api",
+]
+
+TEST_DEPS = TEST_ADAPTERS + [
+    "//protocols/lisp/api:onos-protocols-lisp-api-tests",
+    "//apps/mappingmanagement/api:onos-apps-mappingmanagement-api-tests",
+]
+
+osgi_jar_with_tests(
+    test_deps = TEST_DEPS,
+    deps = COMPILE_DEPS,
+)
diff --git a/providers/lisp/message/BUILD b/providers/lisp/message/BUILD
new file mode 100644
index 0000000..fe19d1b
--- /dev/null
+++ b/providers/lisp/message/BUILD
@@ -0,0 +1,8 @@
+COMPILE_DEPS = CORE_DEPS + [
+    "//protocols/lisp/api:onos-protocols-lisp-api",
+    "//protocols/lisp/msg:onos-protocols-lisp-msg",
+]
+
+osgi_jar_with_tests(
+    deps = COMPILE_DEPS,
+)
diff --git a/providers/lldp/BUILD b/providers/lldp/BUILD
new file mode 100644
index 0000000..e21966e
--- /dev/null
+++ b/providers/lldp/BUILD
@@ -0,0 +1,24 @@
+COMPILE_DEPS = CORE_DEPS + NETTY + JACKSON + [
+    "@org_apache_karaf_shell_console//jar",
+    "//providers/lldpcommon:onos-providers-lldpcommon",
+    "//cli:onos-cli",
+]
+
+BUNDLES = [
+    "//providers/lldpcommon:onos-providers-lldpcommon",
+    "//providers/lldp:onos-providers-lldp",
+]
+
+osgi_jar_with_tests(
+    test_deps = TEST_ADAPTERS,
+    deps = COMPILE_DEPS,
+)
+
+onos_app(
+    app_name = "org.onosproject.lldpprovider",
+    category = "Provider",
+    description = "Provides link discovery to the ONOS core by eavesdropping on the LLDP control packets.",
+    included_bundles = BUNDLES,
+    title = "LLDP Link Provider",
+    url = "http://onosproject.org",
+)
diff --git a/providers/lldpcommon/BUILD b/providers/lldpcommon/BUILD
new file mode 100644
index 0000000..df2080e
--- /dev/null
+++ b/providers/lldpcommon/BUILD
@@ -0,0 +1,5 @@
+COMPILE_DEPS = CORE_DEPS + NETTY
+
+osgi_jar_with_tests(
+    deps = COMPILE_DEPS,
+)
diff --git a/providers/netcfghost/BUILD b/providers/netcfghost/BUILD
new file mode 100644
index 0000000..7d70890
--- /dev/null
+++ b/providers/netcfghost/BUILD
@@ -0,0 +1,13 @@
+osgi_jar_with_tests(
+    deps = CORE_DEPS,
+)
+
+onos_app(
+    app_name = "org.onosproject.netcfghostprovider",
+    category = "Provider",
+    description = "Allows operator to prescribe information about known hosts and their locations " +
+                  "using the network configuration subsystem. Such information takes precedence over " +
+                  "information discovered through other host location providers.",
+    title = "Network Config Host Provider",
+    url = "http://onosproject.org",
+)
diff --git a/providers/netcfglinks/BUILD b/providers/netcfglinks/BUILD
new file mode 100644
index 0000000..d1b3a51
--- /dev/null
+++ b/providers/netcfglinks/BUILD
@@ -0,0 +1,24 @@
+COMPILE_DEPS = CORE_DEPS + NETTY + [
+    "//providers/lldpcommon:onos-providers-lldpcommon",
+]
+
+BUNDLES = [
+    "//providers/lldpcommon:onos-providers-lldpcommon",
+    "//providers/netcfglinks:onos-providers-netcfglinks",
+]
+
+osgi_jar_with_tests(
+    test_deps = TEST_ADAPTERS,
+    deps = COMPILE_DEPS,
+)
+
+onos_app(
+    app_name = "org.onosproject.netcfglinksprovider",
+    category = "Provider",
+    description = "Allows operator to prescribe information about known infrastructure links and " +
+                  "their state using the network configuration subsystem. Such information takes precedence " +
+                  "over information discovered through other link discovery providers.",
+    included_bundles = BUNDLES,
+    title = "Network Config Link Provider",
+    url = "http://onosproject.org",
+)
diff --git a/providers/netconf/BUILD b/providers/netconf/BUILD
new file mode 100644
index 0000000..e65f0e9
--- /dev/null
+++ b/providers/netconf/BUILD
@@ -0,0 +1,23 @@
+BUNDLES = [
+    "@sshd_core//jar",
+    "//providers/netconf/device:onos-providers-netconf-device",
+    "//providers/netconf/alarm:onos-providers-netconf-alarm",
+    "//protocols/netconf/api:onos-protocols-netconf-api",
+    "//protocols/netconf/ctl:onos-protocols-netconf-ctl",
+]
+
+EXCLUDED_BUNDLES = [
+    "@ganymed_ssh2//jar",
+]
+
+onos_app(
+    category = "Provider",
+    description = "Provides means for ONOS to discover and trigger the initial handshake procedure " +
+                  "with NETCONF from information given by network configuration." +
+                  "Also provides capabilities for receiving asynchronous alarm notifications from devices.",
+    excluded_bundles = EXCLUDED_BUNDLES,
+    included_bundles = BUNDLES,
+    required_apps = ["org.onosproject.faultmanagement"],
+    title = "NETCONF Provider",
+    url = "https://wiki.onosproject.org/display/ONOS/NETCONF",
+)
diff --git a/providers/netconf/alarm/BUILD b/providers/netconf/alarm/BUILD
new file mode 100644
index 0000000..e63c6f0
--- /dev/null
+++ b/providers/netconf/alarm/BUILD
@@ -0,0 +1,9 @@
+COMPILE_DEPS = CORE_DEPS + [
+    "//incubator/api:onos-incubator-api",
+    "//protocols/netconf/api:onos-protocols-netconf-api",
+    "//protocols/netconf/ctl:onos-protocols-netconf-ctl",
+]
+
+osgi_jar_with_tests(
+    deps = COMPILE_DEPS,
+)
diff --git a/providers/netconf/device/BUILD b/providers/netconf/device/BUILD
new file mode 100644
index 0000000..173b548
--- /dev/null
+++ b/providers/netconf/device/BUILD
@@ -0,0 +1,9 @@
+COMPILE_DEPS = CORE_DEPS + JACKSON + [
+    "//incubator/api:onos-incubator-api",
+    "//protocols/netconf/api:onos-protocols-netconf-api",
+]
+
+osgi_jar_with_tests(
+    test_deps = TEST_ADAPTERS,
+    deps = COMPILE_DEPS,
+)
diff --git a/providers/null/BUILD b/providers/null/BUILD
new file mode 100644
index 0000000..9120487
--- /dev/null
+++ b/providers/null/BUILD
@@ -0,0 +1,21 @@
+COMPILE_DEPS = CORE_DEPS + NETTY + [
+    "@org_apache_karaf_shell_console//jar",
+    "//cli:onos-cli",
+]
+
+osgi_jar_with_tests(
+    import_packages = "*,org.onosproject.cli.net",
+    resources = glob(["src/main/resources/**"]),
+    resources_root = "src/main/resources",
+    deps = COMPILE_DEPS,
+)
+
+onos_app(
+    category = "Test Utility",
+    description = "Suite of device, link, host, flow and packet providers that allow the operator " +
+                  "to test ONOS against completely fictional network topology. This is useful for conducting " +
+                  "ONOS core performance tests and for developing features that require only control plane " +
+                  "- and not data plane - functionality. ",
+    title = "Null Provider Suite",
+    url = "http://onosproject.org",
+)
diff --git a/providers/openflow/app/BUILD b/providers/openflow/app/BUILD
new file mode 100644
index 0000000..1440c8a
--- /dev/null
+++ b/providers/openflow/app/BUILD
@@ -0,0 +1,16 @@
+APPS = [
+    "org.onosproject.hostprovider",
+    "org.onosproject.lldpprovider",
+    "org.onosproject.openflow-base",
+]
+
+onos_app(
+    app_name = "org.onosproject.openflow",
+    category = "Provider",
+    description = "Suite of the OpenFlow base providers bundled together with ARP/NDP host " +
+                  "location provider and LLDP link provider.",
+    included_bundles = ["//utils/osgi:onlab-osgi"],  # FIXME to allow hollow oar files
+    required_apps = APPS,
+    title = "OpenFlow Provider Suite",
+    url = "http://onosproject.org",
+)
diff --git a/providers/openflow/base/BUILD b/providers/openflow/base/BUILD
new file mode 100644
index 0000000..2192afd
--- /dev/null
+++ b/providers/openflow/base/BUILD
@@ -0,0 +1,25 @@
+BUNDLES = [
+    "@openflowj//jar",
+    "//protocols/openflow/api:onos-protocols-openflow-api",
+    "//protocols/openflow/ctl:onos-protocols-openflow-ctl",
+    "//providers/openflow/device:onos-providers-openflow-device",
+    "//providers/openflow/packet:onos-providers-openflow-packet",
+    "//providers/openflow/flow:onos-providers-openflow-flow",
+    "//providers/openflow/group:onos-providers-openflow-group",
+    "//providers/openflow/meter:onos-providers-openflow-meter",
+]
+
+APPS = [
+    "org.onosproject.optical-model",
+]
+
+onos_app(
+    app_name = "org.onosproject.openflow-base",
+    category = "Provider",
+    description = "Provides the base suite of device, flow and packet providers that rely on the " +
+                  "OpenFlow protocol to interact with network devices.",
+    included_bundles = BUNDLES,
+    required_apps = APPS,
+    title = "OpenFlow Base Provider",
+    url = "https://wiki.onosproject.org/display/ONOS/OpenFlow",
+)
diff --git a/providers/openflow/device/BUILD b/providers/openflow/device/BUILD
new file mode 100644
index 0000000..4a51514
--- /dev/null
+++ b/providers/openflow/device/BUILD
@@ -0,0 +1,10 @@
+COMPILE_DEPS = CORE_DEPS + [
+    "@openflowj//jar",
+    "//protocols/openflow/api:onos-protocols-openflow-api",
+    "//apps/optical-model:onos-apps-optical-model",
+]
+
+osgi_jar_with_tests(
+    test_deps = TEST_ADAPTERS,
+    deps = COMPILE_DEPS,
+)
diff --git a/providers/openflow/flow/BUILD b/providers/openflow/flow/BUILD
new file mode 100644
index 0000000..dadc9c0
--- /dev/null
+++ b/providers/openflow/flow/BUILD
@@ -0,0 +1,8 @@
+COMPILE_DEPS = CORE_DEPS + NETTY + [
+    "@openflowj//jar",
+    "//protocols/openflow/api:onos-protocols-openflow-api",
+]
+
+osgi_jar_with_tests(
+    deps = COMPILE_DEPS,
+)
diff --git a/providers/openflow/group/BUILD b/providers/openflow/group/BUILD
new file mode 100644
index 0000000..b1edbda
--- /dev/null
+++ b/providers/openflow/group/BUILD
@@ -0,0 +1,10 @@
+COMPILE_DEPS = CORE_DEPS + NETTY + [
+    "@openflowj//jar",
+    "//protocols/openflow/api:onos-protocols-openflow-api",
+    "//providers/openflow/flow:onos-providers-openflow-flow",
+]
+
+osgi_jar_with_tests(
+    test_deps = TEST_ADAPTERS,
+    deps = COMPILE_DEPS,
+)
diff --git a/providers/openflow/message/BUILD b/providers/openflow/message/BUILD
new file mode 100644
index 0000000..1f2dd66
--- /dev/null
+++ b/providers/openflow/message/BUILD
@@ -0,0 +1,26 @@
+COMPILE_DEPS = CORE_DEPS + METRICS + [
+    "@openflowj//jar",
+    "//protocols/openflow/api:onos-protocols-openflow-api",
+    "//apps/cpman/api:onos-apps-cpman-api",
+]
+
+BUNDLES = [
+    "//apps/cpman/api:onos-apps-cpman-api",
+    ":onos-providers-openflow-message",
+]
+
+osgi_jar_with_tests(
+    exclude_tests = [
+        "org.onosproject.provider.of.message.impl.OpenFlowControlMessageProviderTest",
+    ],
+    deps = COMPILE_DEPS,
+)
+
+onos_app(
+    app_name = "org.onosproject.openflow-message",
+    category = "Provider",
+    description = "ONOS OpenFlow control message provider.",
+    included_bundles = BUNDLES,
+    title = "Control Message Stats Provider",
+    url = "http://onosproject.org",
+)
diff --git a/providers/openflow/meter/BUILD b/providers/openflow/meter/BUILD
new file mode 100644
index 0000000..40d4cef
--- /dev/null
+++ b/providers/openflow/meter/BUILD
@@ -0,0 +1,11 @@
+COMPILE_DEPS = CORE_DEPS + NETTY + [
+    "@openflowj//jar",
+    "//protocols/openflow/api:onos-protocols-openflow-api",
+]
+
+osgi_jar_with_tests(
+    exclude_tests = [
+        "org.onosproject.provider.of.meter.impl.OpenFlowMeterProviderTest",
+    ],
+    deps = COMPILE_DEPS,
+)
diff --git a/providers/openflow/packet/BUILD b/providers/openflow/packet/BUILD
new file mode 100644
index 0000000..8ec8442
--- /dev/null
+++ b/providers/openflow/packet/BUILD
@@ -0,0 +1,8 @@
+COMPILE_DEPS = CORE_DEPS + [
+    "@openflowj//jar",
+    "//protocols/openflow/api:onos-protocols-openflow-api",
+]
+
+osgi_jar_with_tests(
+    deps = COMPILE_DEPS,
+)
diff --git a/providers/ovsdb/BUILD b/providers/ovsdb/BUILD
new file mode 100644
index 0000000..7b9de61
--- /dev/null
+++ b/providers/ovsdb/BUILD
@@ -0,0 +1,14 @@
+APPS = [
+    "org.onosproject.ovsdb-base",
+    "org.onosproject.ovsdbhostprovider",
+]
+
+onos_app(
+    app_name = "org.onosproject.ovsdb",
+    category = "Provider",
+    description = "ONOS OVSDB southbound meta application",
+    included_bundles = ["//utils/osgi:onlab-osgi"],  # FIXME to allow hollow oar files
+    required_apps = APPS,
+    title = "OVSDB Southbound Meta",
+    url = "http://onosproject.org",
+)
diff --git a/providers/ovsdb/base/BUILD b/providers/ovsdb/base/BUILD
new file mode 100644
index 0000000..c1f23a3
--- /dev/null
+++ b/providers/ovsdb/base/BUILD
@@ -0,0 +1,16 @@
+BUNDLES = [
+    "//protocols/ovsdb/rfc:onos-protocols-ovsdb-rfc",
+    "//protocols/ovsdb/api:onos-protocols-ovsdb-api",
+    "//protocols/ovsdb/ctl:onos-protocols-ovsdb-ctl",
+    "//providers/ovsdb/tunnel:onos-providers-ovsdb-tunnel",
+    "//providers/ovsdb/device:onos-providers-ovsdb-device",
+]
+
+onos_app(
+    app_name = "org.onosproject.ovsdb-base",
+    category = "Provider",
+    description = "ONOS OVSDB provider.",
+    included_bundles = BUNDLES,
+    title = "OVSDB Provider",
+    url = "http://onosproject.org",
+)
diff --git a/providers/ovsdb/device/BUILD b/providers/ovsdb/device/BUILD
new file mode 100644
index 0000000..5ee62ae
--- /dev/null
+++ b/providers/ovsdb/device/BUILD
@@ -0,0 +1,9 @@
+COMPILE_DEPS = CORE_DEPS + [
+    "//protocols/ovsdb/api:onos-protocols-ovsdb-api",
+    "//protocols/ovsdb/rfc:onos-protocols-ovsdb-rfc",
+]
+
+osgi_jar_with_tests(
+    test_deps = TEST_ADAPTERS,
+    deps = COMPILE_DEPS,
+)
diff --git a/providers/ovsdb/host/BUILD b/providers/ovsdb/host/BUILD
new file mode 100644
index 0000000..63e86f7
--- /dev/null
+++ b/providers/ovsdb/host/BUILD
@@ -0,0 +1,16 @@
+COMPILE_DEPS = CORE_DEPS + [
+    "//protocols/ovsdb/api:onos-protocols-ovsdb-api",
+    "//protocols/ovsdb/rfc:onos-protocols-ovsdb-rfc",
+]
+
+osgi_jar_with_tests(
+    deps = COMPILE_DEPS,
+)
+
+onos_app(
+    app_name = "org.onosproject.ovsdbhostprovider",
+    category = "Provider",
+    description = "OVSDB Host provider.",
+    title = "OVSDB host Provider",
+    url = "http://onosproject.org",
+)
diff --git a/providers/ovsdb/tunnel/BUILD b/providers/ovsdb/tunnel/BUILD
new file mode 100644
index 0000000..362e9fe
--- /dev/null
+++ b/providers/ovsdb/tunnel/BUILD
@@ -0,0 +1,9 @@
+COMPILE_DEPS = CORE_DEPS + [
+    "//protocols/ovsdb/api:onos-protocols-ovsdb-api",
+    "//protocols/ovsdb/rfc:onos-protocols-ovsdb-rfc",
+    "//incubator/api:onos-incubator-api",
+]
+
+osgi_jar_with_tests(
+    deps = COMPILE_DEPS,
+)
diff --git a/providers/p4runtime/BUILD b/providers/p4runtime/BUILD
new file mode 100644
index 0000000..a8f25ba
--- /dev/null
+++ b/providers/p4runtime/BUILD
@@ -0,0 +1,15 @@
+BUNDLES = [
+    "//providers/p4runtime/packet:onos-providers-p4runtime-packet",
+]
+
+onos_app(
+    app_name = "org.onosproject.p4runtime",
+    category = "Provider",
+    description = "P4Runtime southbound providers.",
+    included_bundles = BUNDLES,
+    required_apps = [
+        "org.onosproject.protocols.p4runtime",
+    ],
+    title = "P4Runtime Provider",
+    url = "http://onosproject.org",
+)
diff --git a/providers/p4runtime/packet/BUILD b/providers/p4runtime/packet/BUILD
new file mode 100644
index 0000000..8a83273
--- /dev/null
+++ b/providers/p4runtime/packet/BUILD
@@ -0,0 +1,7 @@
+COMPILE_DEPS = CORE_DEPS + [
+    "//protocols/p4runtime/api:onos-protocols-p4runtime-api",
+]
+
+osgi_jar(
+    deps = COMPILE_DEPS,
+)
diff --git a/providers/pcep/BUILD b/providers/pcep/BUILD
new file mode 100644
index 0000000..c00e3a9
--- /dev/null
+++ b/providers/pcep/BUILD
@@ -0,0 +1,22 @@
+BUNDLES = [
+    "@netty//jar",
+    "//providers/pcep/topology:onos-providers-pcep-topology",
+    "//providers/pcep/tunnel:onos-providers-pcep-tunnel",
+    "//providers/pcep/cli:onos-providers-pcep-cli",
+    "//protocols/pcep/server/api:onos-protocols-pcep-server-api",
+    "//protocols/pcep/pcepio:onos-protocols-pcep-pcepio",
+    "//protocols/pcep/server/ctl:onos-protocols-pcep-server-ctl",
+    "//apps/pcep-api:onos-apps-pcep-api",
+]
+
+onos_app(
+    category = "Provider",
+    description = "PCEP protocol providers root.",
+    included_bundles = BUNDLES,
+    required_apps = [
+        "org.onosproject.pcep-api",
+        "org.onosproject.optical-model",
+    ],
+    title = "PCEP Provider",
+    url = "http://onosproject.org",
+)
diff --git a/providers/pcep/cli/BUILD b/providers/pcep/cli/BUILD
new file mode 100644
index 0000000..b623bd9
--- /dev/null
+++ b/providers/pcep/cli/BUILD
@@ -0,0 +1,11 @@
+COMPILE_DEPS = CORE_DEPS + [
+    "@org_apache_karaf_shell_console//jar",
+    "//incubator/api:onos-incubator-api",
+    "//protocols/pcep/server/ctl:onos-protocols-pcep-server-ctl",
+    "//protocols/pcep/server/api:onos-protocols-pcep-server-api",
+    "//cli:onos-cli",
+]
+
+osgi_jar_with_tests(
+    deps = COMPILE_DEPS,
+)
diff --git a/providers/pcep/topology/BUILD b/providers/pcep/topology/BUILD
new file mode 100644
index 0000000..e278d5c
--- /dev/null
+++ b/providers/pcep/topology/BUILD
@@ -0,0 +1,15 @@
+COMPILE_DEPS = CORE_DEPS + NETTY + JACKSON + [
+    "@netty//jar",
+    "//incubator/api:onos-incubator-api",
+    "//protocols/ovsdb/api:onos-protocols-ovsdb-api",
+    "//protocols/ovsdb/rfc:onos-protocols-ovsdb-rfc",
+    "//apps/pcep-api:onos-apps-pcep-api",
+    "//protocols/pcep/server/api:onos-protocols-pcep-server-api",
+    "//protocols/pcep/pcepio:onos-protocols-pcep-pcepio",
+    "//core/api:onos-api-tests",
+    "//apps/optical-model:onos-apps-optical-model",
+]
+
+osgi_jar_with_tests(
+    deps = COMPILE_DEPS,
+)
diff --git a/providers/pcep/tunnel/BUILD b/providers/pcep/tunnel/BUILD
new file mode 100644
index 0000000..b33bd8f
--- /dev/null
+++ b/providers/pcep/tunnel/BUILD
@@ -0,0 +1,19 @@
+COMPILE_DEPS = CORE_DEPS + NETTY + [
+    "//protocols/ovsdb/api:onos-protocols-ovsdb-api",
+    "//protocols/ovsdb/rfc:onos-protocols-ovsdb-rfc",
+    "//apps/pcep-api:onos-apps-pcep-api",
+    "//incubator/api:onos-incubator-api",
+    "//protocols/pcep/pcepio:onos-protocols-pcep-pcepio",
+    "//protocols/pcep/server/api:onos-protocols-pcep-server-api",
+    "//protocols/pcep/server/ctl:onos-protocols-pcep-server-ctl",
+]
+
+TEST_DEPS = TEST_ADAPTERS + [
+    "@netty//jar",
+    "@netty_transport//jar",
+]
+
+osgi_jar_with_tests(
+    test_deps = TEST_DEPS,
+    deps = COMPILE_DEPS,
+)
diff --git a/providers/snmp/BUILD b/providers/snmp/BUILD
new file mode 100644
index 0000000..3324b5f
--- /dev/null
+++ b/providers/snmp/BUILD
@@ -0,0 +1,21 @@
+BUNDLES = [
+    "@org_apache_servicemix_bundles_snmp4j//jar",
+    "@mibs_rfc//jar",
+    "@snmp_core//jar",
+    "@mibs_net_snmp//jar",
+    "//providers/snmp/device:onos-providers-snmp-device",
+    "//providers/snmp/alarm:onos-providers-snmp-alarm",
+    "//protocols/snmp/api:onos-protocols-snmp-api",
+    "//protocols/snmp/ctl:onos-protocols-snmp-ctl",
+]
+
+onos_app(
+    app_name = "org.onosproject.snmp",
+    category = "Provider",
+    description = "Provides means for ONOS to discover and trigger the initial handshake procedure " +
+                  "with SNMP enabled devices from information given by network configuration.",
+    included_bundles = BUNDLES,
+    required_apps = ["org.onosproject.faultmanagement"],
+    title = "SNMP Provider",
+    url = "https://wiki.onosproject.org/display/ONOS/SNMP",
+)
diff --git a/providers/snmp/alarm/BUILD b/providers/snmp/alarm/BUILD
new file mode 100644
index 0000000..bb9de5c
--- /dev/null
+++ b/providers/snmp/alarm/BUILD
@@ -0,0 +1,12 @@
+COMPILE_DEPS = CORE_DEPS + JACKSON + [
+    "@org_apache_servicemix_bundles_snmp4j//jar",
+    "//incubator/api:onos-incubator-api",
+    "//protocols/snmp/api:onos-protocols-snmp-api",
+    "//protocols/snmp/ctl:onos-protocols-snmp-ctl",
+    "//providers/snmp/device:onos-providers-snmp-device",
+]
+
+osgi_jar_with_tests(
+    exclude_tests = ["org.onosproject.provider.snmp.alarm.impl.SnmpAlarmProviderTest"],
+    deps = COMPILE_DEPS,
+)
diff --git a/providers/snmp/device/BUILD b/providers/snmp/device/BUILD
new file mode 100644
index 0000000..95dc777
--- /dev/null
+++ b/providers/snmp/device/BUILD
@@ -0,0 +1,18 @@
+COMPILE_DEPS = CORE_DEPS + JACKSON + [
+    "@org_apache_servicemix_bundles_snmp4j//jar",
+    "@snmp_core//jar",
+    "@mibs_net_snmp//jar",
+    "@mibs_rfc//jar",
+    "//incubator/api:onos-incubator-api",
+    "//protocols/snmp/api:onos-protocols-snmp-api",
+    "//protocols/snmp/ctl:onos-protocols-snmp-ctl",
+]
+
+TEST_DEPS = TEST + [
+    "//core/api:onos-api-tests",
+]
+
+osgi_jar_with_tests(
+    test_deps = TEST_DEPS,
+    deps = COMPILE_DEPS,
+)
diff --git a/providers/tl1/BUILD b/providers/tl1/BUILD
new file mode 100644
index 0000000..a7d524e
--- /dev/null
+++ b/providers/tl1/BUILD
@@ -0,0 +1,15 @@
+BUNDLES = [
+    "//providers/tl1/device:onos-providers-tl1-device",
+    "//protocols/tl1/api:onos-protocols-tl1-api",
+    "//protocols/tl1/ctl:onos-protocols-tl1-ctl",
+]
+
+onos_app(
+    app_name = "org.onosproject.tl1",
+    category = "Provider",
+    description = "Provides means for ONOS to discover and trigger the initial handshake procedure " +
+                  "with TL1 enable devices from information given by network configuration.",
+    included_bundles = BUNDLES,
+    title = "TL1 Provider",
+    url = "https://wiki.onosproject.org/display/ONOS/TL1",
+)
diff --git a/providers/tl1/device/BUILD b/providers/tl1/device/BUILD
new file mode 100644
index 0000000..f04769b
--- /dev/null
+++ b/providers/tl1/device/BUILD
@@ -0,0 +1,9 @@
+COMPILE_DEPS = CORE_DEPS + JACKSON + [
+    "//incubator/api:onos-incubator-api",
+    "//protocols/tl1/api:onos-protocols-tl1-api",
+]
+
+osgi_jar_with_tests(
+    test_deps = TEST_ADAPTERS,
+    deps = COMPILE_DEPS,
+)
diff --git a/providers/xmpp/device/BUILD b/providers/xmpp/device/BUILD
new file mode 100644
index 0000000..691113d
--- /dev/null
+++ b/providers/xmpp/device/BUILD
@@ -0,0 +1,21 @@
+COMPILE_DEPS = CORE_DEPS + [
+    "@tinder_xmpp//jar",
+    "//protocols/xmpp/core/api:onos-protocols-xmpp-core-api",
+    "//protocols/xmpp/core/ctl:onos-protocols-xmpp-core-ctl",
+]
+
+osgi_jar_with_tests(
+    test_deps = TEST_ADAPTERS,
+    deps = COMPILE_DEPS,
+)
+
+onos_app(
+    app_name = "org.onosproject.xmpp.device",
+    category = "Provider",
+    description = "XMPP protocol southbound provider.",
+    required_apps = [
+        "org.onosproject.protocols.xmpp",
+    ],
+    title = "XMPP Device Provider",
+    url = "https://wiki.onosproject.org/display/ONOS/XMPP+as+SBI",
+)