diff --git a/README.md b/README.md
index e774489..d7d73d3 100644
--- a/README.md
+++ b/README.md
@@ -1,29 +1,27 @@
-# Kubernetes Kind VOLTHA Test Environment
-This repository describes how to deploy a 4 node (one control plane and
+#  VOLTHA DEPLOYMENT TOOL
+Thie repository describes how to the the `voltha` script to install a 
+VOLTHA deployment. `voltha` can be used to deploy an instance into an existing
+Kubernetes cluster (physical or virtual) or can be start up a local
+docker-in-docker KinD Kuberentes cluster in which to deploy VOLTHA.
 
-## Prerequisites
-You must have both Docker, the Go programming language, and various tools
-installed (including `curl`, `sed`, and `jq`) for this test environment to
-function. How to get these working is beyond the scope of this document.
+When deploying VOLTHA there are several configuration options tha can be
+set as described in the *CONFIGURATION* section below. All configuration
+options are specified as envirment variables.
 
-## Fetch Tools
-```bash
-export GOPATH=$(pwd)
-mkdir -p $GOPATH/bin
-curl -o $GOPATH/bin/kubectl -sSL https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/$(go env GOHOSTOS)/$(go env GOARCH)/kubectl
-curl -o $GOPATH/bin/kind \
-	-sSL https://github.com/kubernetes-sigs/kind/releases/download/v0.4.0/kind-$(go env GOHOSTOS)-$(go env GOARCH)
-export VOLTCTL_VERSION=$(curl -sSL https://api.github.com/repos/opencord/voltctl/releases/latest | jq -r .tag_name | sed -e 's/^v//g')
-curl -o $GOPATH/bin/voltctl \
-	-sSL https://github.com/opencord/voltctl/releases/download/v$VOLTCTL_VERSION/voltctl-$VOLTCTL_VERSION-$(go env GOHOSTOS)-$(go env GOARCH)
-curl -sSL https://git.io/get_helm.sh | USE_SUDO=false HELM_INSTALL_DIR=$(go env GOPATH)/bin bash
-chmod 755 $GOPATH/bin/kind $GOPATH/bin/voltctl $GOPATH/bin/kubectl
-export PATH=$(go env GOPATH)/bin:$PATH
-```
+[CONFIGURATION](#markdown-header-configuration)
 
-## Minimal v. Full
-This files contained in this repository can be used to deploy either a minimal
-or full voltha deployment. The difference is characterized in the following
+## PREREQUISITES
+The `voltha` script uses several standard Linux tools to deploy VOLTHA
+including `go`, `curl`, `sed`, and `jq`. This tools must be installed before
+using the script. The script checks for the presence of these tools before
+it deployes VOLTHA and will exit with an error if the tools are not present.
+
+_NOTE: If you are deploying a KinD Kubernetes cluster using the `voltha` 
+script, you must also also have Docker installed_
+
+## INSTALL TYPE
+The `voltha` script can install two variations or types of a VOLTHA deployment:
+**minimal** or **full**. The difference is characterized in the following
 table:
 
 | RESOURCE                | MINIMAL       | FULL                      |
@@ -36,440 +34,134 @@
 Throughout this `README.md` file deployment and configuration files are
 referenced in the form **$TYPE-cluster.cfg** and **$TYPE-values.yaml**.
 Depending on which type of deloyment you wish to install replace **$TYPE**
-with either **minimal** or **full**. If you set the environment variable to the
-desired deployment type, example below, then the commands can be executed via
-a simply copy and paste to your command line.
+with either **minimal** or **full**. If you set the environment variable `TYPE`
+to the desired deployment type, example below, then the commands can be
+executed via a simply copy and paste to your command line.
 ```bash
 export TYPE=minimal
 ```
 
 ## TL;DR
-OK, if you really don't care how it starts and you just wanted started. After
-cloning the repository and making sure you have Go and Docker available, just
-execute `./voltha up` and the minimal cluster should start.
+OK, if you really don't care how it starts and you just want it started. After
+cloning the repository and making sure you have the prerequisites installed,
+just execute 
+```bash
+DEPLOY_K8S=y WITH_BBSIM=y WITH_RADIUS=y CONFIG_SADIS=y  ./voltha up
+```
+and the minimal cluster should start.
 
-To remove voltha use `./voltha down`
+To remove voltha use `DEPLOY_K8S=y ./voltha down`
 
 ![Demo @ Speed](./resources/kind-voltha.gif "Demo @ Speed")
 _NOTE: Shown significantly sped up (20x), actual install was about 8 minutes._
 
-### `voltha up` Configuration Options
-This options should be set using environment variables, thus to start VOLTHA
-with the BBSIM POD you could use the following command:
-```
-WITH_BBSIM=yes voltha up
+## CONFIGURATION
+The option should be set using environment variables, thus to start VOLTHA
+with the BBSIM POD, RADIUS, and ONOS SADIS configured  you could use the
+following command:
+```bash
+WITH_BBSIM=yes WITH_RADIUS=y CONFIG_SADIS=y  voltha up
 ```
 
 To start a specific version of VOLTHA, e.g. 2.2, you could use the following command:
-```
+```bash
 source releases/voltha-2.2 && voltha up
 ```
 Please check the `releases` folder to see the available ones.
 
-| OPTION                          | DEFAULT                      | DESCRIPTION                                                                         |
-| ------------------------------- | ---------------------------- | ----------------------------------------------------------------------------------- |
-| `TYPE`                          | minimal                      | `minimal` or `full` and determines number of cluster nodes and etcd cluster members |
-| `NAME`                          | TYPE                         | Name of the KinD Cluster to be created                                              |
-| `DEPLOY_K8S`                    | yes                          | Should the KinD Kubernetes cluster be deployed?                                     |
-| `JUST_K8S`                      | no                           | Should just the KinD Kubernetes cluster be depoyed? (i.e. no VOLTHA)                |
-| `WITH_BBSIM`                    | no                           | Should the BBSIM POD be deployed?                                                   |
-| `NUM_OF_BBSIM`                  | 1                            | number of BBSIM POD to start (minimum = 1, maximum = 10)                            |
-| `WITH_ONOS`                     | yes                          | Should `ONOS` service be deployed?                                                  |
-| `WITH_RADIUS`                   | no                           | Should `freeradius` service be deployed?                                            |
-| `WITH_EAPOL`                    | no                           | Configure the OLT app to push EAPOL flows                                           |
-| `WITH_DHCP`                     | no                           | Configure the OLT app to push DCHP flows                                            |
-| `WITH_IGMP`                     | no                           | Configure the OLT app to push IGMP flows                                            |
-| `WITH_TIMINGS`                  | no                           | Outputs duration of various steps of the install                                    |
-| `WITH_CHAOS`                    | no                           | Starts kube-monkey to introduce chaos                                               |
-| `CONFIG_SADIS`                  | no                           | Configure SADIS entries into ONOS, if WITH_ONOS set (see SADIS Configuration        |    
-| `INSTALL_ONOS_APPS`             | no                           | Replaces/installs ONOS OAR files in onos-files/onos-apps                            |
-| `INSTALL_KUBECTL`               | yes                          | Should a copy of `kubectl` be installed locally?                                    |
-| `INSTALL_HELM`                  | yes                          | Should a copy of `helm` be installed locallly?                                      |
-| `VOLTHA_LOG_LEVEL`              | WARN                         | Log level to set for VOLTHA core processes                                          |
-| `ONOS_CHART_VERSION`            | latest                       | Version of helm chart for ONOS                                                      |
-| `VOLTHA_CHART`                  | onf/voltha                   | Helm chart to used to install voltha                                                |
-| `VOLTHA_ADAPTER_SIM_CHART`      | onf/voltha-adapter-simulated | Helm chart to use to install simulated device adapter                               |
-| `VOLTHA_ADAPTER_OPEN_OLT_CHART` | onf/voltha-adapter-openolt   | Helm chart to use to install OpenOlt adapter                                        |
-| `VOLTHA_ADAPTER_OPEN_ONU_CHART` | onf/voltha-adapter-openonu   | Helm chart to use to install OpenOnu adapter                                        |
-| `ONLY_ONE`                      | yes                          | Run a single `rw-core`, no `api-server`, and no `ssh` CLI                           |
+| OPTION                                  | DEFAULT                      | DESCRIPTION                                                                         |
+| --------------------------------------- | ---------------------------- | ----------------------------------------------------------------------------------- |
+| `TYPE`                                  | minimal                      | `minimal` or `full` and determines number of cluster nodes and etcd cluster members |
+| `NAME`                                  | TYPE                         | Name of the KinD Cluster to be created                                              |
+| `DEPLOY_K8S`                            | yes                          | Should the KinD Kubernetes cluster be deployed?                                     |
+| `JUST_K8S`                              | no                           | Should just the KinD Kubernetes cluster be depoyed? (i.e. no VOLTHA)                |
+| `WITH_BBSIM`                            | no                           | Should the BBSIM POD be deployed?                                                   |
+| `NUM_OF_BBSIM`                          | 1                            | number of BBSIM POD to start (minimum = 1, maximum = 10)                            |
+| `WITH_ONOS`                             | yes                          | Should `ONOS` service be deployed?                                                  |
+| `WITH_RADIUS`                           | no                           | Should `freeradius` service be deployed?                                            |
+| `WITH_EAPOL`                            | no                           | Configure the OLT app to push EAPOL flows                                           |
+| `WITH_DHCP`                             | no                           | Configure the OLT app to push DCHP flows                                            |
+| `WITH_IGMP`                             | no                           | Configure the OLT app to push IGMP flows                                            |
+| `WITH_TIMINGS`                          | no                           | Outputs duration of various steps of the install                                    |
+| `WITH_CHAOS`                            | no                           | Starts kube-monkey to introduce chaos                                               |
+| `WITH_ADAPTERS`                         | yes                          | Should device adpters be installed, if no overrides options for specific adapters   |
+| `WITH_SIM_ADAPTERS`                     | no                           | Should simulated device adapters be deployed (simulated adpaters deprecated)        |
+| `WITH_OPEN_ADAPTERS`                    | yes                          | Should open OLT and ONU adapters be deployed                                        |
+| `WITH_PORT_FORWARDS`                    | yes                          | Forwards ports for some services from localhost into the K8s cluster                |
+| `CONFIG_SADIS`                          | no                           | Configure SADIS entries into ONOS, if WITH_ONOS set to yes                          |    
+| `INSTALL_ONOS_APPS`                     | no                           | Replaces/installs ONOS OAR files in onos-files/onos-apps                            |
+| `INSTALL_KUBECTL`                       | yes                          | Should a copy of `kubectl` be installed locally?                                    |
+| `INSTALL_HELM`                          | yes                          | Should a copy of `helm` be installed locallly?                                      |
+| `VOLTHA_LOG_LEVEL`                      | WARN                         | Log level to set for VOLTHA core processes                                          |
+| `ONOS_CHART`                            | onf/voltha                   | Helm chart to used to install ONOS                                                  |
+| `ONOS_CHART_VERSION`                    | latest                       | Version of helm chart for ONOS                                                      |
+| `VOLTHA_CHART`                          | onf/voltha                   | Helm chart to used to install voltha                                                |
+| `VOLTHA_CHART_VERSION`                  | latest                       | Version of Helm chart to install voltha                                             |
+| `VOLTHA_ADAPTER_SIM_CHART`              | onf/voltha-adapter-simulated | Helm chart to use to install simulated device adapter                               |
+| `VOLTHA_ADAPTER_SIM_CHART_VERSION`      | latest                       | Version of Helm chart to install simulated device adapter                           |
+| `VOLTHA_BBSIM_CHART`                    | onf/bbsim                    | Helm chart to use to install bbsim                                                  |
+| `VOLTHA_BBSIM_CHART_VERSION`            | latest                       | Version of Helm chart to install bbim                                               |
+| `VOLTHA_ADAPTER_OPEN_OLT_CHART`         | onf/voltha-adapter-openolt   | Helm chart to use to install OpenOlt adapter                                        |
+| `VOLTHA_ADAPTER_OPEN_OLT_CHART_VERSION` | latest                       | Version of Helm chart to install OpenOlt adapter                                    |
+| `VOLTHA_ADAPTER_OPEN_ONU_CHART`         | onf/voltha-adapter-openonu   | Helm chart to use to install OpenOnu adapter                                        |
+| `VOLTHA_ADAPTER_OPEN_ONU_CHART_VERSION` | latest                       | Version of Helm chart to install OpenOnu adapter                                    |
+| `ONLY_ONE`                              | yes                          | Run a single `rw-core`, no `api-server`, and no `ssh` CLI                           |
+| `ENABLE_ONOS_EXTRANEOUS_RULES`          | no                           | Set ONOS to allows flow rules not set via ONOS                                      |
+| `UPDATE_HELM_REPOS`                     | yes                          | Update the Helm repository with the latest charts before installing                 |
+| `WAIT_ON_DOWN`                          | yes                          | When tearing down the VOLTHA, don't exit script until all containers are stoped     |
+| `KIND_VERSION`                          | v0.5.1                       | Version of KinD to install if using a KinD cluster                                  |
+| `VOLTCTL_VERSION`                       | latest                       | Version of `voltctl` to install or up/downgrade to and use                          |
+| `ONOS_API_PORT`                         | dynamic                      | (advanced) Override dynamic port selection for port forward for ONOS API            |
+| `ONOS_SSH_PORT`                         | dynamic                      | (advanced) Override dynamic port selection for port forward for ONOS SSH            |
+| `VOLTHA_API_PORT`                       | dynamic                      | (advanced) Override dynamic port selection for port forward for VOLTHA API          |
+| `VOLTHA_SSH_PORT`                       | dynamic                      | (advanced) Override dynamic port selection for port forward for VOLTHA SSH          |
+| `VOLTHA_ETCD_PORT`                      | dynamic                      | (advanced) Override dynamic port selection for port forward for VOLTHA etcd         |
+| `VOLTHA_KAFKA_PORT`                     | dynamic                      | (advanced) Override dynamic port selection for port forward for VOLTHA Kafka API    |
 
+## GENERATED CONFIGURATION
+When the voltha script is run it generates a file that contains the
+configuration settings. This file will be named `$TYPE-env.sh`. The user can
+`source` this file to set the configuration as well as establish key environment
+variables in order to access VOLTHA, including:
 
-## Create Kubernetes Cluster
-Kind provides a command line control tool to easily create Kubernetes clusters
-using just a basic Docker envionrment. The following commands will create
-the desired deployment of Kubernetes and then configure your local copy of
-`kubectl` to connect to this cluster.
-```bash
-kind create cluster --name=voltha-$TYPE --config $TYPE-cluster.cfg
-export KUBECONFIG="$(kind get kubeconfig-path --name="voltha-$TYPE")"
-kubectl cluster-info
-```
+| VARIABLE   | DESCRIPTION |
+| ---------- |
+| KUBECONFIG | Sets the configuration file for the Kubernetes control application `kubectl` |
+| VOLTCONFIG | Sets the configuration file for the VOLTHA control application `voltctl`     |
+| PATH       | Augments the `PATH` to include `kubectl` and `voltctl`                       |
 
-## Initialize Helm
-Helm provide a capabilty to install and manage Kubernetes applications. VOLTHA's
-default deployment mechanism utilized Helm. Before Helm can be used to deploy
-VOLTHA it must be initialized and the repositories that container the artifacts
-required to deploy VOLTHA must be added to Helm.
-```bash
-# Initialize Helm and add the required chart repositories
-helm init
-helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com
-helm repo add stable https://kubernetes-charts.storage.googleapis.com
-helm repo add onf https://charts.opencord.org
-helm repo update
+After `voltha up` is run, it is useful to source this file.
 
-# Create and k8s service account so that Helm can create pods
-kubectl create serviceaccount --namespace kube-system tiller
-kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
-kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
-```
-
-## Install EtcdOperator
-ETCD Operator is a utility that allows applications to create and manage ETCD
-key/value clusters as Kubernetes resources. VOLTHA utilizes this utility to
-create its key/value store. _NOTE: it is not required that VOLTHA create its
-own datastore as VOLTHA can utilize and existing datastore, but for this
-example VOLTHA will creates its own datastore_
-```bash
-helm install -f $TYPE-values.yaml --namespace voltha --name etcd-operator stable/etcd-operator
-```
-
-### Wait for operator pods
-Before continuing the Kubernetes pods associated with ETCD Operator must be in
-the `Running` state.
-```bash
-kubectl get -n voltha pod
-```
-
-Once all the pods are in the `Running` state the output, for a **full**
-deployment should be similar to the output below. For a **minimal** deployment
-there will only be a single pod, the `etcd-operator-etcd-operator-etcd-operator`
-pod.
-```bash
-NAME                                                              READY     STATUS    RESTARTS   AGE
-etcd-operator-etcd-operator-etcd-backup-operator-7897665cfq75w2   1/1       Running   0          2m
-etcd-operator-etcd-operator-etcd-operator-7d579799f7-bjdnj        1/1       Running   0          2m
-etcd-operator-etcd-operator-etcd-restore-operator-7d77d878wwcn7   1/1       Running   0          2m
-```
-
-## It is not just VOLTHA
-To demonstrate the capability of VOLTHA other _partner_ applications are
-required, such as ONOS. The followins sections describe how to install and
-configure these _partner_ applications.
-
-_NOTE: It is important to start ONOS before VOLTHA as if they are started in
-the reverse order ofagent sometimes does not connect to the SDN controller
-[VOL-1764](https://jira.opencord.org/browse/VOL-1764)_.
-
-### ONOS (OpenFlow Controller)
-VOLTHA exposes an OLT and its connected ONUs as an OpenFlow switch. To control
-that virtual OpenFlow switch an OpenFlow controller is required. For most VOLTHA
-deployments that controller is ONOS with a set of ONOS applications installed.
-To install ONOS use the following Helm command:
-```bash
-helm install -f $TYPE-values.yaml --name onos onf/onos
-```
-
-#### Exposing ONOS Services
-```bash
-screen -dmS onos-ui kubectl port-forward service/onos-ui 8181:8181
-screen -dmS onos-ssh kubectl port-forward service/onos-ssh 8101:8101
-```
-
-#### Configuring ONOS Applications
-Configuration files have been provided to configure aspects of the ONOS deployment. The following
-curl commands push those configurations to the ONOS instance. It is possible (likely) that ONOS
-won't be immediately ready to accept REST requests, so the first `curl` command may need retried
-until ONOS is ready to accept REST connections.
-```bash
-curl --fail -sSL --user karaf:karaf \
-	-X POST -H Content-Type:application/json \
-	http://127.0.0.1:8181/onos/v1/network/configuration/apps/org.opencord.kafka \
-	--data @onos-files/onos-kafka.json
-curl --fail -sSL --user karaf:karaf \
-	-X POST -H Content-Type:application/json \
-	http://127.0.0.1:8181/onos/v1/network/configuration/apps/org.opencord.dhcpl2relay \
-	--data @onos-files/onos-dhcpl2relay.json
-curl --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
-curl --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
-```
-
-#### SADIS Configuration
-The ONOS applications leverage the _Subscriber and Device Information Store (SADIS)_ when processing
-EAPOL and DHCP packets from VOLTHA controlled devices. In order for VOLTHA to function propperly
-SADIS entries must be configured into ONOS.
-
-The repository contains two example SADIS configuration that can be used with ONOS depending if
-you using VOLTHA with _tech profile_ support (`onos-files/onos-sadis-no-tp.json`) or without
-_tech profile_ support (`onos-files/onos-sadis-tp.json`). Either of these configurations can be
-pushed to ONOS using the following command:
-```bash
-curl --fail -sSL --user karaf:karaf \
-	-X POST -H Content-Type:application/json \
-	http://127.0.0.1:8181/onos/v1/network/configuration/apps/org.opencord.sadis \
-	--data @<selected SADIS configuration file>
-```
-
-## Install VOLTHA Core
-VOLTHA has two main _parts_: core and adapters. The **core** provides the main
-logic for the VOLTHA application and the **adapters** contain logic to adapter
-vendor neutral operations to vendor specific devices.
-
-Before any adapters can be deployed the VOLTHA core must be installed and in
-the `Running` state. The following Helm command installs the core components
-of VOLTHA based on the desired deployment type.
-```bash
-helm install -f $TYPE-values.yaml --set use_go=true --set defaults.log_level=WARN \
-	--namespace voltha --name voltha onf/voltha
-```
-
-During the install of the core VOLTHA components some containers may "crash" or
-restart. This is normal as there are dependencies, such as the read/write cores
-cannot start until the ETCD cluster is established and so they crash until the
-ETCD cluster is operational. Eventually all the containers should be in a
-`Running` state as queried by the command:
-```bash
-kubectl get -n voltha pod
-```
-
-The output should be similar to the following with a different number of
-`etcd-operator` and `voltha-etcd-cluster` pods depending on the deployment
-type.
-```bash
-NAME                                                         READY     STATUS    RESTARTS   AGE
-etcd-operator-etcd-operator-etcd-operator-7d579799f7-xq6f2   1/1       Running   0          19m
-ofagent-8ccb7f5fb-hwgfn                                      1/1       Running   0          4m
-ro-core-564f5cdcc7-2pch8                                     1/1       Running   0          4m
-rw-core1-7fbb878cdd-6npvr                                    1/1       Running   2          4m
-rw-core2-7fbb878cdd-k7w9j                                    1/1       Running   3          4m
-voltha-api-server-5f7c8b5b77-k6mrg                           2/2       Running   0          4m
-voltha-cli-server-5df4c95b7f-kcpdl                           1/1       Running   0          4m
-voltha-etcd-cluster-4rsqcvpwr4                               1/1       Running   0          4m
-voltha-kafka-0                                               1/1       Running   0          4m
-voltha-zookeeper-0                                           1/1       Running   0          4m
-```
-
-## Install Adapters
-The following commands install both the simulated OLT and ONU adapters as well
-as the adapters for an OpenOLT and OpenONU device.
-```bash
-helm install -f $TYPE-values.yaml -set use_go=true --set defaults.log_level=WARN \
-	--namespace voltha --name sim onf/voltha-adapter-simulated
-helm install -f $TYPE-values.yaml -set use_go=true --set defaults.log_level=WARN \
-	--namespace voltha --name open-olt onf/voltha-adapter-openolt
-helm install -f $TYPE-values.yaml -set use_go=true --set defaults.log_level=WARN \
-	--namespace voltha --name open-onu onf/voltha-adapter-openonu
-```
-
-## Exposing VOLTHA Services
-At this point VOLTHA is deployed and from within the Kubernetes cluster the
-VOLTHA services can be reached. However, from outside the Kubernetes cluster the
-services cannot be reached.
-```bash
-screen -dmS voltha-api kubectl port-forward -n voltha service/voltha-api 55555:55555
-screen -dmS voltha-ssh kubectl port-forward -n voltha service/voltha-cli 5022:5022
-```
-
-## Install BBSIM (Broad Band OLT/ONU Simulator)
-BBSIM provides a simulation of a BB device. It can be useful for testing.
-```bash
-helm install -f minimal-values.yaml --namespace voltha --name bbsim onf/bbsim
-```
-
-## Install FreeRADIUS Service
-```bash
-helm install -f minimal-values.yaml --namespace voltha --name radius onf/freeradius
-```
-
-## Configure `voltctl` to Connect to VOLTHA
-In order for `voltctl` to connect to the VOLTHA instance deplpoyed in the
-Kubernetes cluster it must know which IP address and port to use. This
-configuration can be persisted to a local config file using the following
-commands.
-```bash
-mkdir -p $HOME/.volt
-voltctl -a v2 -s localhost:55555 config > $HOME/.volt/config
-```
-
-To test the connectivity you can query the version of the VOLTHA client and
-server.
+## QUICK CHECK
+After source the `$TYPE-env.sh` file, you should be able to access VOLTHA via
+the control application `voltctl`. To validate this you can use the following
+command
 ```bash
 voltctl version
 ```
-
-The output should be similar to the following
-```bash
+and should see output similar to
+```
 Client:
- Version        unknown-version
- Go version:    unknown-goversion
- Vcs reference: unknown-vcsref
- Vcs dirty:     unknown-vcsdirty
- Built:         unknown-buildtime
- OS/Arch:       unknown-os/unknown-arch
+ Version        1.0.14
+ Go version:    go1.12.8
+ Vcs reference: 086629f0403fe67213fa0df5dc4d7b7ee317cbac
+ Vcs dirty:     false
+ Built:         2020-03-03T13:48:00Z
+ OS/Arch:       linux/amd64
 
 Cluster:
- Version        2.1.0-dev
- Go version:    1.12.6
- Vcs feference: 28f120f1f4751284cadccf73f2f559ce838dd0a5
+ Version        2.3.3-dev
+ Go version:    1.13.8
+ Vcs feference: aa8bd4dcc3510caf2c5362106d9bff2852663d31
  Vcs dirty:     false
- Built:         2019-06-26T16:58:22Z
+ Built:         2020-03-06T16:16:47Z
  OS/Arch:       linux/amd64
 ```
 
-## Create and Enable a Simulated device
-Once all the containers are up and running, a simulated device to "test" the
-system can be created using the following command.
-```bash
-voltctl device create
-```
+## TROUBLESHOOTING
+When VOLTHA is installed the install log is written to the file
+`install-$TYPE.log`. If the install appears stalled or is not completing
+consulting this file may indicate the reason.
 
-_NOTE: If the device fails to create and an error message is displayed you may
-have hit an existing bug in onos
-[VOL-1661](https://jira.opencord.org/browse/VOL-1661) . To work around this, use the
-`restart-api.sh` included in the repository. After running this script you will
-have to quit and restart the screen sesssion associated with the voltha-api._
-
-The output of the command will be the device ID. All the known devices can be
-listed with the following command.
-```bash
-voltctl device list
-```
-
-The output should be similar to the following
-```bash
-ID                          TYPE             ROOT    PARENTID    SERIALNUMBER    VLAN    ADMINSTATE        OPERSTATUS    CONNECTSTATUS
-1d5382581e2198ded3b9bcd8    simulated_olt    true                                0       PREPROVISIONED    UNKNOWN       UNKNOWN
-```
-
-To enable a device, specify the the device ID
-```bash
-voltctl device enable 1d5382581e2198ded3b9bcd8
-```
-
-When a device is enabled VOLTHA communicates with the device to discover the
-ONUs associated with the devices. Using the device and logicaldevice
-sub-commands, `list` and `ports` the information VOLTHA discovered can be
-displayed.
-
-```bash
-$ voltctl device list
-ID                          TYPE             ROOT     PARENTID                    SERIALNUMBER           VLAN    ADMINSTATE    OPERSTATUS    CONNECTSTATUS
-1d5382581e2198ded3b9bcd8    simulated_olt    true     4F35373B6528                44.141.111.238:7941    0       ENABLED       ACTIVE        REACHABLE
-5660880ea2b602081b8203fd    simulated_onu    false    1d5382581e2198ded3b9bcd8    82.24.38.124:9913      101     ENABLED       ACTIVE        REACHABLE
-7ff85b36a13fdf98450b9d13    simulated_onu    false    1d5382581e2198ded3b9bcd8    204.200.47.166:9758    103     ENABLED       ACTIVE        REACHABLE
-bda9d3442e4cf93f9a58b1f2    simulated_onu    false    1d5382581e2198ded3b9bcd8    66.130.155.136:1448    100     ENABLED       ACTIVE        REACHABLE
-f546b18b101c287601d5a9dd    simulated_onu    false    1d5382581e2198ded3b9bcd8    72.157.213.155:5174    102     ENABLED       ACTIVE        REACHABLE
-
-$ voltctl device ports 1d5382581e2198ded3b9bcd8
-PORTNO    LABEL    TYPE            ADMINSTATE    OPERSTATUS    DEVICEID    PEERS
-2         nni-2    ETHERNET_NNI    ENABLED       ACTIVE                    []
-1         pon-1    PON_OLT         ENABLED       ACTIVE                    [{7ff85b36a13fdf98450b9d13 1} {bda9d3442e4cf93f9a58b1f2 1} {5660880ea2b602081b8203fd 1} {f546b18b101c287601d5a9dd 1}]
-
-$ voltctl logicaldevice list
-ID              DATAPATHID          ROOTDEVICEID                SERIALNUMBER           FEATURES.NBUFFERS    FEATURES.NTABLES    FEATURES.CAPABILITIES
-4F35373B6528    00004f35373b6528    1d5382581e2198ded3b9bcd8    44.141.111.238:7941    256                  2                   0x0000000f
-
-$ voltctl logicaldevice ports 4F35373B6528
-ID         DEVICEID                    DEVICEPORTNO    ROOTPORT    OPENFLOW.PORTNO    OPENFLOW.HWADDR      OPENFLOW.NAME    OPENFLOW.STATE    OPENFLOW.FEATURES.CURRENT    OPENFLOW.BITRATE.CURRENT
-nni-2      1d5382581e2198ded3b9bcd8    2               true        2                  4f:35:37:3b:65:28    nni-2            0x00000004        0x00001020                   32
-uni-103    7ff85b36a13fdf98450b9d13    103             false       103                0b:23:05:64:46:2b                     0x00000004        0x00001020                   32
-uni-100    bda9d3442e4cf93f9a58b1f2    100             false       100                68:05:4a:56:28:5b                     0x00000004        0x00001020                   32
-uni-101    5660880ea2b602081b8203fd    101             false       101                21:57:68:39:44:55                     0x00000004        0x00001020                   32
-uni-102    f546b18b101c287601d5a9dd    102             false       102                01:02:03:04:05:06                     0x00000004        0x00001020                   32
-```
-
-When a device is enabled VOLTHA also presents that devices as a virtual
-OpenFlow switch to ONOS. This can be seen in ONOS via the CLI and UI. ONOS, in
-turn, pushes flows down to the virual OpenFlow device, which can then be
-displayed via the `voltctl` command. Seeing flows in `voltctl` demonstrates that
-VOLTHA has successfully presented the OLT/ONUs as an virtual OpenFlow switch to
-ONOS and ONOS has been able to enfluence the OLT/ONU configuraton by assigning
-flows.
-
-```bash
-$ ssh -p 8101 karaf@localhost
-Password:
-Welcome to Open Network Operating System (ONOS)!
-     ____  _  ______  ____
-    / __ \/ |/ / __ \/ __/
-   / /_/ /    / /_/ /\ \
-   \____/_/|_/\____/___/
-
-Documentation: wiki.onosproject.org
-Tutorials:     tutorials.onosproject.org
-Mailing lists: lists.onosproject.org
-
-Come help out! Find out how at: contribute.onosproject.org
-
-Hit '<tab>' for a list of available commands
-and '[cmd] --help' for help on a specific command.
-Hit '<ctrl-d>' or type 'system:shutdown' or 'logout' to shutdown ONOS.
-
-onos> devices
-id=of:00004f35373b6528, available=true, local-status=connected 6m51s ago, role=MASTER, type=SWITCH, mfr=, hw=simulated_pon, sw=simulated_pon, serial=44.141.111.238:7941, chassis=4f35373b6528, driver=default, channelId=10.244.1.16:56302, managementAddress=10.244.1.16, protocol=OF_13
-onos> ^D
-onos>
-Connection to localhost closed.
-```
-
-```bash
-$ voltctl device flows 1d5382581e2198ded3b9bcd8
-ID                  TABLEID    PRIORITY    COOKIE       INPORT    VLANID    VLANPCP    ETHTYPE    METADATA              TUNNELID    SETVLANID    POPVLAN    PUSHVLANID    OUTPUT
-7504ed89e9db100f    0          40000       ~deb05c25    1         103                  0x888e                           103         4000                    0x8100        CONTROLLER
-2d0d9951533d886c    0          40000       0            2         4000      0                     0x0000000000000067    103                      yes                      1
-fa6b175a31b29ab2    0          40000       ~deb05c25    1         100                  0x888e                           100         4000                    0x8100        CONTROLLER
-211e554ad8933810    0          40000       0            2         4000      0                     0x0000000000000064    100                      yes                      1
-3c61b06b7140f699    0          40000       ~deb05c25    1         101                  0x888e                           101         4000                    0x8100        CONTROLLER
-faf13be01f7220fe    0          40000       0            2         4000      0                     0x0000000000000065    101                      yes                      1
-f0002ab45e5d9c0a    0          40000       ~deb05c25    1         102                  0x888e                           102         4000                    0x8100        CONTROLLER
-cb6506ce6cd5f815    0          40000       0            2         4000      0                     0x0000000000000066    102                      yes                      1
-1ba03e16bcc071eb    0          40000       ~2ab3e948    1         103                  0x0806                           103         4000                    0x8100        2
-18d6c34108732730    0          40000       ~2ab3e948    1         100                  0x0806                           100         4000                    0x8100        2
-c6a21ac1bc742efd    0          40000       ~2ab3e948    1         101                  0x0806                           101         4000                    0x8100        2
-a8346901fe5c6547    0          40000       ~2ab3e948    1         102                  0x0806                           102         4000                    0x8100        2
-
-$ voltctl logicaldevice flows 4F35373B6528
-ID                  TABLEID    PRIORITY    COOKIE       ETHTYPE    OUTPUT        CLEARACTIONS
-85df95ba0c6fbff3    0          40000       ~2ab3e948    0x0806     CONTROLLER    []
-dd6707b7a6ff74cf    0          40000       ~deb05c25    0x888e     CONTROLLER    []
-```
-
-## Teardown
-To remove the cluster simply use the `kind` command:
-```bash
-kind delete cluster --name=voltha-$TYPE
-```
-
-## Troubleshooting
-There exists a bug in VOLTHA (as of 8/14/2019) where the API server doesn't always
-correctly connect to the back end services. To work around this bug, the `voltha-api-server`
-and `ofagent` can be restarted as described below.
-```bash
-kubectl scale --replicas=0 deployment -n voltha voltha-api-server ofagent
-```
-
-Wait for the POD to be removed, then scale it back up.
-```bash
-kubectl scale --replicas=1 deployment -n voltha voltha-api-server ofagent
-```
-
-## WIP
-
-### Create BBSIM Device
-
-
-#### Create BBSIM Device
-```bash
-voltctl device create -t openolt -H $(kubectl get -n voltha service/bbsim -o go-template='{{.spec.clusterIP}}'):50060
-```
-
-#### Enable BBSIM Device
-```bash
-voltctl device enable $(voltctl device list --filter Type~openolt -q)
-```
+Similarly, when VOLTHA is uninstalled `down-$TYPE.log` is written and should
+be consulted in the event of an error or unexpected result.
diff --git a/scripts/who_owns_device.sh b/scripts/who_owns_device.sh
deleted file mode 100755
index 9f6f5a7..0000000
--- a/scripts/who_owns_device.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-DEVICE_ID=$1
-
-BEST_DATE=
-BEST_POD=
-for POD in $(kubectl -n voltha get pods -l app=rw-core -o 'jsonpath={.items[*].metadata.name}'); do
-    FOUND=$(kubectl -n voltha logs $POD | grep $DEVICE_ID | grep -i ownedbyme | tail -1)
-    if [ ! -z "$FOUND" ]; then
-        OWNED=$(echo $FOUND | grep '"owned":true')
-        if [ ! -z "$OWNED" ]; then
-            CUR_DATE=$(echo $OWNED | jq -r .ts)
-            CUR_POD=$(echo $OWNED | jq -r .instanceId)
-            if [ -z "$BEST_POD" ]; then
-                BEST_DATE=$CUR_DATE
-                BEST_POD=$CUR_POD
-            elif [ $CUR_DATE > $BEST_DATE ]; then
-                BEST_DATE=$CUR_DATE
-                BEST_POD=$CUR_POD
-            fi
-        fi
-    fi
-done
-echo $BEST_POD
diff --git a/voltha b/voltha
index 7aa1054..79862f0 100755
--- a/voltha
+++ b/voltha
@@ -78,7 +78,7 @@
 WITH_ONOS=${WITH_ONOS:-yes}
 WITH_CHAOS=${WITH_CHAOS:-no}
 WITH_ADAPTERS=${WITH_ADAPTERS:-yes}
-WITH_SIM_ADAPTERS=${WITH_SIM_ADAPTERS:-yes}
+WITH_SIM_ADAPTERS=${WITH_SIM_ADAPTERS:-no}
 WITH_OPEN_ADAPTERS=${WITH_OPEN_ADAPTERS:-yes}
 WITH_PORT_FORWARDS=${WITH_PORT_FORWARDS:-yes}
 ONLY_ONE=${ONLY_ONE:-yes}
@@ -101,6 +101,7 @@
 VOLTHA_ADAPTER_OPEN_OLT_CHART_VERSION=${VOLTHA_ADAPTER_OPEN_OLT_CHART_VERSION:-latest}
 VOLTHA_ADAPTER_OPEN_ONU_CHART=${VOLTHA_ADAPTER_OPEN_ONU_CHART:-onf/voltha-adapter-openonu}
 VOLTHA_ADAPTER_OPEN_ONU_CHART_VERSION=${VOLTHA_ADAPTER_OPEN_ONU_CHART_VERSION:-latest}
+ONOS_CHART=${ONOS_CHART:-onf/onos}
 ONOS_CHART_VERSION=${ONOS_CHART_VERSION:-latest}
 EXTRA_HELM_INSTALL_ARGS=
 NUM_OF_BBSIM=${NUM_OF_BBSIM:-1}
@@ -196,6 +197,7 @@
     VOLTHA_ADAPTER_OPEN_OLT_CHART_VERSION \
     VOLTHA_ADAPTER_OPEN_ONU_CHART \
     VOLTHA_ADAPTER_OPEN_ONU_CHART_VERSION \
+    ONOS_CHART \
     ONOS_CHART_VERSION \
     ONOS_API_PORT \
     ONOS_SSH_PORT \
@@ -216,6 +218,23 @@
     fi
 done
 
+# Check for prerequiste tools
+TOOLS="go curl sed jq"
+if [ $DEPLOY_K8S == "yes" ]; then
+    TOOLS+=" docker"
+fi
+NOT_FOUND=""
+for T in $TOOLS; do
+    if [ -z "$(which $T)" ]; then
+        NOT_FOUND+=" $T"
+    fi
+done
+
+if [ ! -z "$NOT_FOUND" ]; then
+    >&2 echo -e "${RED}${BOLD}${ERROR}ERROR:${NORMAL}${RED} The following required tools where not found, please install them:$NOT_FOUND"
+    exit 1
+fi
+
 mkdir -p .voltha
 touch .voltha/ports
 HAVE=$(grep $NAME .voltha/ports)
@@ -1119,7 +1138,7 @@
     bspin "Verify ONOS installed $BIRD"
     if [ $(helm list --deployed --short --namespace default "^onos\$" | wc -l) -ne 1 ]; then
         espin $NOT_VERIFIED
-        EXTRA_HELM_FLAGS="$SET_TAG $EXTRA_HELM_FLAGS" helm_install - default onos onf/onos $ONOS_CHART_VERSION "Install ONOS"
+        EXTRA_HELM_FLAGS="$SET_TAG $EXTRA_HELM_FLAGS" helm_install - default onos $ONOS_CHART $ONOS_CHART_VERSION "Install ONOS"
     else
         espin $VERIFIED
     fi
