[AETHER-780] Decouple Stratum from ODTN

- Introduces a new driver for stratum-odtn devices
- The new driver depends on stratum and not viceversa
- Removes the odtn dep from stratum
- Updates stratum and tost bazel profiles

Change-Id: I7118c54c865305a7ace28b7316e3731833ddf7b4
diff --git a/drivers/stratum-odtn/BUILD b/drivers/stratum-odtn/BUILD
new file mode 100644
index 0000000..83300ab
--- /dev/null
+++ b/drivers/stratum-odtn/BUILD
@@ -0,0 +1,17 @@
+osgi_jar(
+    resources = glob(["src/main/resources/**"]),
+    resources_root = "src/main/resources",
+    deps = CORE_DEPS,
+)
+
+onos_app(
+    app_name = "org.onosproject.drivers.stratum-odtn",
+    category = "Drivers",
+    description = "Adds support for Stratum Odtn-based devices",
+    required_apps = [
+        "org.onosproject.drivers.stratum",
+        "org.onosproject.drivers.odtn-driver",
+    ],
+    title = "Stratum Odtn Drivers",
+    url = "http://onosproject.org",
+)
diff --git a/drivers/stratum-odtn/src/main/java/org/onosproject/drivers/stratumodtn/StratumOdtnDriversLoader.java b/drivers/stratum-odtn/src/main/java/org/onosproject/drivers/stratumodtn/StratumOdtnDriversLoader.java
new file mode 100644
index 0000000..449e040
--- /dev/null
+++ b/drivers/stratum-odtn/src/main/java/org/onosproject/drivers/stratumodtn/StratumOdtnDriversLoader.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2020-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.onosproject.drivers.stratumodtn;
+
+import org.onosproject.net.driver.AbstractDriverLoader;
+import org.osgi.service.component.annotations.Component;
+
+/**
+ * Loader for Stratum Odtn device drivers.
+ */
+@Component(immediate = true)
+public class StratumOdtnDriversLoader extends AbstractDriverLoader {
+
+    public StratumOdtnDriversLoader() {
+        super("/stratumodtn-drivers.xml");
+    }
+}
diff --git a/drivers/stratum-odtn/src/main/java/org/onosproject/drivers/stratumodtn/package-info.java b/drivers/stratum-odtn/src/main/java/org/onosproject/drivers/stratumodtn/package-info.java
new file mode 100644
index 0000000..5db546e
--- /dev/null
+++ b/drivers/stratum-odtn/src/main/java/org/onosproject/drivers/stratumodtn/package-info.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2020-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.
+ */
+
+/**
+ * Driver for Stratum Odtn devices.
+ */
+package org.onosproject.drivers.stratumodtn;
diff --git a/drivers/stratum-odtn/src/main/resources/stratumodtn-drivers.xml b/drivers/stratum-odtn/src/main/resources/stratumodtn-drivers.xml
new file mode 100644
index 0000000..611adef
--- /dev/null
+++ b/drivers/stratum-odtn/src/main/resources/stratumodtn-drivers.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright 2020-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.
+  -->
+
+<drivers>
+    <driver name="stratum-fpm-odtn" manufacturer="Open Networking Foundation"
+            hwVersion="FPM" swVersion="Stratum" extends="stratum-fpm,gnmi-openconfig-terminal-device">
+        <!-- Here we add the original Stratum handshaker since the gnmi-openconfig-terminal-device
+             driver override the handshaker behaviour with GnmiHandshakerStandalone. -->
+        <behaviour api="org.onosproject.net.device.DeviceHandshaker"
+                   impl="org.onosproject.drivers.stratum.StratumHandshaker"/>
+    </driver>
+</drivers>
diff --git a/drivers/stratum/BUILD b/drivers/stratum/BUILD
index 3094437..df5263f 100644
--- a/drivers/stratum/BUILD
+++ b/drivers/stratum/BUILD
@@ -22,7 +22,6 @@
         "org.onosproject.generaldeviceprovider",
         "org.onosproject.drivers.gnmi",
         "org.onosproject.drivers.gnoi",
-        "org.onosproject.drivers.odtn-driver",
         "org.onosproject.drivers.p4runtime",
         "org.onosproject.pipelines.basic",
     ],
diff --git a/drivers/stratum/src/main/resources/stratum-drivers.xml b/drivers/stratum/src/main/resources/stratum-drivers.xml
index f0848bc..86e18b5 100644
--- a/drivers/stratum/src/main/resources/stratum-drivers.xml
+++ b/drivers/stratum/src/main/resources/stratum-drivers.xml
@@ -36,12 +36,4 @@
         <behaviour api="org.onosproject.net.behaviour.PiPipelineProgrammable"
                    impl="org.onosproject.drivers.stratum.FpmPipelineProgrammable"/>
     </driver>
-
-    <driver name="stratum-fpm-odtn" manufacturer="Open Networking Foundation"
-            hwVersion="FPM" swVersion="Stratum" extends="stratum-fpm,gnmi-openconfig-terminal-device">
-        <!-- Here we add the original Stratum handshaker since the gnmi-openconfig-terminal-device
-             driver override the handshaker behaviour with GnmiHandshakerStandalone. -->
-        <behaviour api="org.onosproject.net.device.DeviceHandshaker"
-                   impl="org.onosproject.drivers.stratum.StratumHandshaker"/>
-    </driver>
 </drivers>
diff --git a/tools/build/bazel/modules.bzl b/tools/build/bazel/modules.bzl
index b155042..d774d50 100644
--- a/tools/build/bazel/modules.bzl
+++ b/tools/build/bazel/modules.bzl
@@ -64,8 +64,8 @@
     "//protocols/ovsdb/ctl:onos-protocols-ovsdb-ctl": ["sona"],
     "//protocols/p4runtime/api:onos-protocols-p4runtime-api": ["stratum"],
     "//protocols/p4runtime/model:onos-protocols-p4runtime-model": ["stratum"],
-    "//protocols/rest/api:onos-protocols-rest-api": ["stratum", "tost"],
-    "//protocols/rest/ctl:onos-protocols-rest-ctl": ["stratum", "tost"],
+    "//protocols/rest/api:onos-protocols-rest-api": [],
+    "//protocols/rest/ctl:onos-protocols-rest-ctl": [],
     "//protocols/restconf/client/api:onos-protocols-restconf-client-api": [],
     "//protocols/restconf/client/ctl:onos-protocols-restconf-client-ctl": [],
     "//protocols/snmp/api:onos-protocols-snmp-api": [],
@@ -96,7 +96,7 @@
     "//providers/ovsdb/device:onos-providers-ovsdb-device": ["sona"],
     "//providers/ovsdb/tunnel:onos-providers-ovsdb-tunnel": ["sona"],
     "//providers/p4runtime/packet:onos-providers-p4runtime-packet": ["stratum"],
-    "//providers/rest/device:onos-providers-rest-device": ["stratum"],
+    "//providers/rest/device:onos-providers-rest-device": [],
     "//providers/snmp/device:onos-providers-snmp-device": [],
     "//providers/lisp/device:onos-providers-lisp-device": [],
     "//providers/tl1/device:onos-providers-tl1-device": [],
@@ -110,7 +110,7 @@
     "//providers/lldp:onos-providers-lldp-oar": ["seba", "stratum", "tost", "sona"],
     "//providers/netcfghost:onos-providers-netcfghost-oar": ["seba", "stratum", "tost", "sona"],
     "//providers/netcfglinks:onos-providers-netcfglinks-oar": ["stratum"],
-    "//providers/netconf:onos-providers-netconf-oar": ["stratum", "tost"],
+    "//providers/netconf:onos-providers-netconf-oar": [],
     "//providers/null:onos-providers-null-oar": [],
     "//providers/openflow/app:onos-providers-openflow-app-oar": ["seba", "sona"],
     "//providers/openflow/base:onos-providers-openflow-base-oar": ["seba", "sona"],
@@ -119,7 +119,7 @@
     "//providers/ovsdb/host:onos-providers-ovsdb-host-oar": ["sona"],
     "//providers/ovsdb/base:onos-providers-ovsdb-base-oar": ["sona"],
     "//providers/p4runtime:onos-providers-p4runtime-oar": ["stratum", "tost"],
-    "//providers/rest:onos-providers-rest-oar": ["stratum", "tost"],
+    "//providers/rest:onos-providers-rest-oar": [],
     "//providers/snmp:onos-providers-snmp-oar": [],
     "//providers/lisp:onos-providers-lisp-oar": [],
     "//providers/tl1:onos-providers-tl1-oar": [],
@@ -152,16 +152,17 @@
     "//drivers/lisp:onos-drivers-lisp-oar": [],
     "//drivers/lumentum:onos-drivers-lumentum-oar": [],
     "//drivers/mellanox:onos-drivers-mellanox-oar": ["stratum"],
-    "//drivers/netconf:onos-drivers-netconf-oar": ["stratum", "tost"],
-    "//drivers/odtn-driver:onos-drivers-odtn-driver-oar": ["stratum", "tost"],
+    "//drivers/netconf:onos-drivers-netconf-oar": [],
+    "//drivers/odtn-driver:onos-drivers-odtn-driver-oar": [],
     "//drivers/oplink:onos-drivers-oplink-oar": [],
-    "//drivers/optical:onos-drivers-optical-oar": ["stratum", "tost"],
+    "//drivers/optical:onos-drivers-optical-oar": [],
     "//drivers/ovsdb:onos-drivers-ovsdb-oar": ["sona"],
     "//drivers/p4runtime:onos-drivers-p4runtime-oar": ["stratum", "tost"],
     "//drivers/polatis/netconf:onos-drivers-polatis-netconf-oar": [],
     "//drivers/polatis/openflow:onos-drivers-polatis-openflow-oar": [],
     "//drivers/server:onos-drivers-server-oar": [],
     "//drivers/stratum:onos-drivers-stratum-oar": ["stratum", "tost"],
+    "//drivers/stratum-odtn:onos-drivers-stratum-odtn-oar": [],
     "//drivers/zte:onos-drivers-zte-oar": [],
 }
 
@@ -190,14 +191,14 @@
     "//apps/bgprouter:onos-apps-bgprouter-oar": [],
     "//apps/castor:onos-apps-castor-oar": [],
     "//apps/cfm:onos-apps-cfm-oar": [],
-    "//apps/config:onos-apps-config-oar": ["stratum", "tost"],
+    "//apps/config:onos-apps-config-oar": [],
     "//apps/cord-support:onos-apps-cord-support-oar": [],
     "//apps/cpman/app:onos-apps-cpman-app-oar": [],
     "//apps/dhcp:onos-apps-dhcp-oar": [],
     "//apps/dhcprelay:onos-apps-dhcprelay-oar": ["tost"],
     "//apps/drivermatrix:onos-apps-drivermatrix-oar": [],
     "//apps/events:onos-apps-events-oar": [],
-    "//apps/faultmanagement:onos-apps-faultmanagement-oar": ["stratum", "tost"],
+    "//apps/faultmanagement:onos-apps-faultmanagement-oar": [],
     "//apps/flowanalyzer:onos-apps-flowanalyzer-oar": [],
     "//apps/flowspec-api:onos-apps-flowspec-api-oar": [],
     "//apps/fwd:onos-apps-fwd-oar": [],
@@ -222,7 +223,7 @@
     "//apps/newoptical:onos-apps-newoptical-oar": [],
     "//apps/nodemetrics:onos-apps-nodemetrics-oar": [],
     "//apps/node-diagnosis:onos-apps-node-diagnosis-oar": [],
-    "//apps/odtn/api:onos-apps-odtn-api-oar": ["stratum", "tost"],
+    "//apps/odtn/api:onos-apps-odtn-api-oar": [],
     "//apps/odtn/service:onos-apps-odtn-service-oar": [],
     "//apps/ofagent:onos-apps-ofagent-oar": [],
     "//apps/onlp-demo:onos-apps-onlp-demo-oar": [],
@@ -234,7 +235,7 @@
     "//apps/openstacktelemetry:onos-apps-openstacktelemetry-oar": ["sona"],
     "//apps/openstacktroubleshoot:onos-apps-openstacktroubleshoot-oar": ["sona"],
     "//apps/openstackvtap:onos-apps-openstackvtap-oar": ["sona"],
-    "//apps/optical-model:onos-apps-optical-model-oar": ["seba", "stratum", "tost", "sona"],
+    "//apps/optical-model:onos-apps-optical-model-oar": ["seba", "sona"],
     "//apps/optical-rest:onos-apps-optical-rest-oar": [],
     "//apps/p4-tutorial/mytunnel:onos-apps-p4-tutorial-mytunnel-oar": [],
     "//apps/p4-tutorial/pipeconf:onos-apps-p4-tutorial-pipeconf-oar": [],
@@ -277,7 +278,7 @@
     "//apps/workflow/ofoverlay:onos-apps-workflow-ofoverlay-oar": [],
     "//apps/workflow:onos-apps-workflow-oar": [],
     "//apps/yang-gui:onos-apps-yang-gui-oar": [],
-    "//apps/yang:onos-apps-yang-oar": ["stratum", "tost"],
+    "//apps/yang:onos-apps-yang-oar": [],
     "//web/gui:onos-web-gui-oar": ["sona", "tost"],
     "//web/gui2:onos-web-gui2-oar": ["stratum", "tost"],
 }
@@ -292,13 +293,13 @@
 }
 
 MODELS_MAP = {
-    "//models/ietf:onos-models-ietf-oar": ["stratum", "tost"],
+    "//models/ietf:onos-models-ietf-oar": [],
     "//models/common:onos-models-common-oar": [],
-    "//models/openconfig:onos-models-openconfig-oar": ["stratum", "tost"],
-    "//models/openconfig-infinera:onos-models-openconfig-infinera-oar": ["stratum", "tost"],
-    "//models/openconfig-odtn:onos-models-openconfig-odtn-oar": ["stratum", "tost"],
+    "//models/openconfig:onos-models-openconfig-oar": [],
+    "//models/openconfig-infinera:onos-models-openconfig-infinera-oar": [],
+    "//models/openconfig-odtn:onos-models-openconfig-odtn-oar": [],
     "//models/openroadm:onos-models-openroadm-oar": [],
-    "//models/tapi:onos-models-tapi-oar": ["stratum", "tost"],
+    "//models/tapi:onos-models-tapi-oar": [],
     "//models/polatis:onos-models-polatis-oar": [],
     "//models/ciena/waveserverai:onos-models-ciena-waveserverai-oar": [],
 }