initial commit
diff --git a/onos-files/dhcp-to-controller-flow.json b/onos-files/dhcp-to-controller-flow.json
new file mode 100644
index 0000000..f2d31a2
--- /dev/null
+++ b/onos-files/dhcp-to-controller-flow.json
@@ -0,0 +1,26 @@
+{
+  "priority": 40000,
+  "timeout": 0,
+  "isPermanent": true,
+  "deviceId": "of:0000000000000001",
+  "treatment": {
+    "instructions": [
+      {
+        "type": "OUTPUT",
+        "port": "CONTROLLER"
+      }
+    ]
+  },
+  "selector": {
+    "criteria": [
+      {
+        "type": "IN_PORT",
+        "port": 1
+      },
+      {
+        "type": "VLAN_VID",
+        "vlanId": 222
+      }
+    ]
+  }
+}
diff --git a/onos-files/install-onos-applications.sh b/onos-files/install-onos-applications.sh
new file mode 100755
index 0000000..fca199c
--- /dev/null
+++ b/onos-files/install-onos-applications.sh
@@ -0,0 +1,39 @@
+#!/usr/bin/env bash
+
+# Copyright 2019 Ciena Corporation
+#
+# 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.
+
+CONFIG_VER=1.4.0
+SADIS_VER=2.2.0
+OLT_VER=2.1.0
+AAA_VER=1.8.0
+DHCP_VER=1.5.0
+
+mkdir -p onos-files/onos-apps
+echo "Downloading ONOS applications"
+curl --fail -sSL https://repo.maven.apache.org/maven2/org/opencord/cord-config/$CONFIG_VER/cord-config-$CONFIG_VER.oar -o ./onos-files/onos-apps/cord-config-$CONFIG_VER.oar
+curl --fail -sSL https://repo.maven.apache.org/maven2/org/opencord/sadis-app/$SADIS_VER/sadis-app-$SADIS_VER.oar -o ./onos-files/onos-apps/sadis-app-$SADIS_VER.oar
+curl --fail -sSL https://repo.maven.apache.org/maven2/org/opencord/aaa/$AAA_VER/aaa-$AAA_VER.oar -o ./onos-files/onos-apps/aaa-$AAA_VER.oar
+curl --fail -sSL https://repo.maven.apache.org/maven2/org/opencord/olt-app/$OLT_VER/olt-app-$OLT_VER.oar -o ./onos-files/onos-apps/olt-app-$OLT_VER.oar
+curl --fail -sSL https://repo.maven.apache.org/maven2/org/opencord/dhcpl2relay/$DHCP_VER/dhcpl2relay-$DHCP_VER.oar -o ./onos-files/onos-apps/dhcpl2relay-$DHCP_VER.oar
+
+until test $(curl -w '\n%{http_code}' --fail -sSL --user karaf:karaf -X POST -H Content-Type:application/octet-stream http://127.0.0.1:8181/onos/v1/applications?activate=true --data-binary @./onos-files/onos-apps/cord-config-$CONFIG_VER.oar 2>/dev/null | tail -1) -eq 409; do echo "Installing 'CONFIG' ONOS application ..."; sleep 1; done
+until test $(curl -w '\n%{http_code}' --fail -sSL --user karaf:karaf -X POST -H Content-Type:application/octet-stream http://127.0.0.1:8181/onos/v1/applications?activate=true --data-binary @./onos-files/onos-apps/sadis-app-$SADIS_VER.oar 2>/dev/null | tail -1) -eq 409; do echo "Installing 'SADIS' ONOS application ..."; sleep 1; done
+until test $(curl -w '\n%{http_code}' --fail -sSL --user karaf:karaf -X POST -H Content-Type:application/octet-stream http://127.0.0.1:8181/onos/v1/applications?activate=true --data-binary @./onos-files/onos-apps/olt-app-$OLT_VER.oar 2>/dev/null | tail -1) -eq 409; do echo "Installing 'OLT' ONOS application ..."; sleep 1; done
+until test $(curl -w '\n%{http_code}' --fail -sSL --user karaf:karaf -X POST -H Content-Type:application/octet-stream http://127.0.0.1:8181/onos/v1/applications?activate=true --data-binary @./onos-files/onos-apps/aaa-$AAA_VER.oar 2>/dev/null | tail -1) -eq 409; do echo "Installing 'AAA' ONOS application ..."; sleep 1; done
+until test $(curl -w '\n%{http_code}' --fail -sSL --user karaf:karaf -X POST -H Content-Type:application/octet-stream http://127.0.0.1:8181/onos/v1/applications?activate=true --data-binary @./onos-files/onos-apps/dhcpl2relay-$DHCP_VER.oar 2>/dev/null | tail -1) -eq 409; do echo "Installing 'DHCP L2 Relay' ONOS application ..."; sleep 1; done
+until test $(curl -w '\n%{http_code}' --fail -sSL --user karaf:karaf -X POST -H Content-Type:application/json http://127.0.0.1:8181/onos/v1/network/configuration --data @onos-files/olt-onos-netcfg.json 2>/dev/null | tail -1) -eq 200; do echo "Configuring VOLTHA ONOS ..."; sleep 1; done
+until test $(curl -w '\n%{http_code}' --fail -sSL --user karaf:karaf -X POST -H Content-Type:application/json http://127.0.0.1:8181/onos/v1/configuration/org.opencord.olt.impl.Olt --data @onos-files/olt-onos-olt-settings.json 2>/dev/null | tail -1) -eq 200; do echo "Enabling VOLTHA ONOS DHCP provisioning..."; sleep 1; done
+until test $(curl -w '\n%{http_code}' --fail -sSL --user karaf:karaf -X POST -H Content-Type:application/json http://127.0.0.1:8181/onos/v1/configuration/org.onosproject.net.flow.impl.FlowRuleManager --data @onos-files/olt-onos-enableExtraneousRules.json 2>/dev/null | tail -1) -eq 200; do echo "Enabling extraneous rules for ONOS..."; sleep 1; done
+until test $(curl -w '\n%{http_code}' --fail -sSL --user karaf:karaf -X POST -H Content-Type:application/json 'http://127.0.0.1:8181/onos/v1/flows/of:0000000000000001?appId=env.voltha' --data @onos-files/dhcp-to-controller-flow.json 2>/dev/null | tail -1) -eq 201; do echo "Establishing DHCP packet-in flow ..."; sleep 1; done
diff --git a/onos-files/olt-onos-enableExtraneousRules.json b/onos-files/olt-onos-enableExtraneousRules.json
new file mode 100644
index 0000000..0ba1863
--- /dev/null
+++ b/onos-files/olt-onos-enableExtraneousRules.json
@@ -0,0 +1,3 @@
+{
+ "allowExtraneousRules": true
+}
diff --git a/onos-files/olt-onos-netcfg.json b/onos-files/olt-onos-netcfg.json
new file mode 100644
index 0000000..6fd4486
--- /dev/null
+++ b/onos-files/olt-onos-netcfg.json
@@ -0,0 +1,53 @@
+{
+  "devices": {
+    "of:0000aabbccddeeff": {
+      "basic": {
+        "driver": "voltha"
+      }
+    }
+  },
+  "apps": {
+    "org.opencord.aaa": {
+      "AAA": {
+        "radiusIp": "10.1.5.3",
+        "nasIp": "10.1.5.3",
+        "radiusServerPort": "1812",
+        "radiusSecret": "SECRET"
+      }
+    },
+    "org.opencord.sadis": {
+      "sadis": {
+        "integration": {
+          "cache": {
+            "enabled": false,
+            "maxsize": 50,
+            "ttl": "PT0m"
+          }
+        },
+        "entries": [
+          {
+            "id": "PSMO12345678",
+            "cTag": 111,
+            "sTag": 222,
+            "nasPortId": "",
+            "circuitId": "",
+            "remoteId": ""
+          },
+          {
+            "id": "10.1.4.4:50060",
+            "hardwareIdentifier": "aa:bb:cc:dd:ee:ff",
+            "ipAddress": "10.233.111.16",
+            "nasId": "10.1.4.4:50060",
+            "uplinkPort": 2
+          }
+        ]
+      }
+    },
+    "org.opencord.dhcpl2relay": {
+      "dhcpl2relay" : {
+        "dhcpServerConnectPoints" : [ "of:0000000000000001/1" ],
+        "useOltUplinkForServerPktInOut" : false
+      }
+    }
+  }
+}
diff --git a/onos-files/olt-onos-olt-settings.json b/onos-files/olt-onos-olt-settings.json
new file mode 100644
index 0000000..f70077d
--- /dev/null
+++ b/onos-files/olt-onos-olt-settings.json
@@ -0,0 +1,4 @@
+{
+ "enableDhcpOnProvisioning" : true,
+ "defaultVlan" : 65535
+}