VOL-2227: Update nni in compose setup and update quickstart doc

- example netcfg json uses new nni number
- stop using nonsense bandwidth profile settings
- quickstart now only sets up needed repositories to build containers
- use ppa to install golang, pinned to a specific version
- use voltctl instead of cli container
- improved output capture examples and bbsim setup example

Change-Id: I94718bf30dfe8e7605bd05f91e1a8dae4517b395
diff --git a/compose/network-cfg-bbsim.json b/compose/network-cfg-bbsim.json
index a839211..5507aa3 100644
--- a/compose/network-cfg-bbsim.json
+++ b/compose/network-cfg-bbsim.json
@@ -2,7 +2,7 @@
   "devices": {
     "of:00000000ac110001": {
       "accessDevice": {
-        "uplink": "65536",
+        "uplink": "1048576",
         "vlan": "1"
       },
       "basic": {
@@ -41,11 +41,11 @@
         },
         "entries": [
           {
-            "id": "BBSIMOLT000",
-            "uplinkPort": 65536,
+            "id": "BBSIM_OLT_0",
+            "uplinkPort": 1048576,
             "hardwareIdentifier": "00:00:ac:11:00:01",
             "ipAddress": "172.17.0.1",
-            "nasId": "BBSIMOLT000"
+            "nasId": "BBSIM_OLT_0"
           },
           {
             "id": "BBSM00000001-1",
@@ -53,7 +53,7 @@
             "sTag": 900,
             "nasPortId": "BBSM00000001-1",
             "circuitId": "BBSM00000001-1",
-            "remoteId": "BBSIMOLT000",
+            "remoteId": "BBSIM_OLT_0",
             "technologyProfileId": 64,
             "upstreamBandwidthProfile": "Default",
             "downstreamBandwidthProfile": "Default"
@@ -64,7 +64,7 @@
             "sTag": 900,
             "nasPortId": "BBSM00000001-2",
             "circuitId": "BBSM00000001-2",
-            "remoteId": "BBSIMOLT000",
+            "remoteId": "BBSIM_OLT_0",
             "technologyProfileId": 64,
             "upstreamBandwidthProfile": "Default",
             "downstreamBandwidthProfile": "Default"
@@ -75,7 +75,7 @@
             "sTag": 900,
             "nasPortId": "BBSM00000001-3",
             "circuitId": "BBSM00000001-3",
-            "remoteId": "BBSIMOLT000",
+            "remoteId": "BBSIM_OLT_0",
             "technologyProfileId": 64,
             "upstreamBandwidthProfile": "Default",
             "downstreamBandwidthProfile": "Default"
@@ -86,7 +86,7 @@
             "sTag": 900,
             "nasPortId": "BBSM00000001-4",
             "circuitId": "BBSM00000001-4",
-            "remoteId": "BBSIMOLT000",
+            "remoteId": "BBSIM_OLT_0",
             "technologyProfileId": 64,
             "upstreamBandwidthProfile": "Default",
             "downstreamBandwidthProfile": "Default"
@@ -104,11 +104,11 @@
         "entries": [
           {
             "id": "Default",
-            "cir": 1000000,
-            "cbs": 1001,
-            "eir": 1002,
-            "ebs": 1003,
-            "air": 1004
+            "air": 10000000,
+            "cbs": 5000,
+            "cir": 750000,
+            "ebs": 5000,
+            "eir": 1000000
           }
         ]
       }
diff --git a/compose/network-cfg.json b/compose/network-cfg.json
index 038c4d7..591abf1 100644
--- a/compose/network-cfg.json
+++ b/compose/network-cfg.json
@@ -2,7 +2,7 @@
   "devices": {
     "of:000000000a4001d0": {
       "accessDevice": {
-        "uplink": "65536",
+        "uplink": "1048576",
         "vlan": "1"
       },
       "basic": {
@@ -42,7 +42,7 @@
         "entries": [
           {
             "id": "EC1829000885",
-            "uplinkPort": 65536,
+            "uplinkPort": 1048576,
             "hardwareIdentifier": "3c:2c:99:f7:c6:82",
             "ipAddress": "10.64.1.207",
             "nasId": "ATLEDGEVOLT1"
@@ -115,11 +115,11 @@
         "entries": [
           {
             "id": "Default",
-            "cir": 1000000,
-            "cbs": 1001,
-            "eir": 1002,
-            "ebs": 1003,
-            "air": 1004
+            "air": 10000000,
+            "cbs": 5000,
+            "cir": 750000,
+            "ebs": 5000,
+            "eir": 1000000
           }
         ]
       }
diff --git a/compose/system-test-bbsim.yml b/compose/system-test-bbsim.yml
index 7739b92..37abd5e 100644
--- a/compose/system-test-bbsim.yml
+++ b/compose/system-test-bbsim.yml
@@ -181,15 +181,15 @@
 
 
   bbsim:
-    image: "voltha/voltha-bbsim:latest"
+    image: "${DOCKER_REGISTRY}${DOCKER_REPOSITORY}bbsim:${DOCKER_TAG}"
     privileged: true
     command: [
       "./bbsim",
-      "-m",
-      "both",
-      "-i",
+      "-auth",
+      "-dhcp",
+      "-pon",
       "1",
-      "-n",
+      "-onu",
       "1"
     ]
     ports:
diff --git a/quickstart.md b/quickstart.md
index 1eda8b4..72be64a 100644
--- a/quickstart.md
+++ b/quickstart.md
@@ -1,6 +1,6 @@
 # Quickstart VOLTHA 2.x Build Setup.
 
-These notes describe the checking out and building from the multiple gerrit repositories needed to run a VOLTHA 2.x environment with docker-compose.  Starting point is a basic Ubuntu 16.04 installation with internet access.
+These notes describe the checking out and building from the multiple gerrit repositories needed to run a VOLTHA 2.x environment with docker-compose.  Starting point is a basic Ubuntu 16.04 or 18.04 installation with internet access.
 
 
 
@@ -14,36 +14,48 @@
 sudo apt dist-upgrade
 ```
 
-Add docker-ce apt repo and install docker and build tools
+Add `docker-ce` apt repo and install docker and build tools
 ```sh
 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
 sudo apt update
-sudo apt install build-essential docker-ce docker-compose virtualenv git python-setuptools python-dev libpcap-dev libffi-dev libssl-dev tox
+sudo apt install build-essential docker-ce git
 ```
 
-Snap install **golang 1.12**.  Inform apparmor (if being used) of the change.  The apparmor_parser step may need to be run again after reboot.  This appears to be a snapd bug.
+Install current `docker-compose`.  Older versions may cause docker build problems: https://github.com/docker/docker-credential-helpers/issues/103
 ```sh
-sudo snap install --classic go
-snap list
-sudo apparmor_parser -r /var/lib/snapd/apparmor/profiles/snap*
+sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
+sudo chmod 755 /usr/local/bin/docker-compose
 ```
 
-Setup a local Golang environment, verifying the golang-1.12 binaries are in your path.  Also add your local GOPATH's bin folder to PATH.
-Add to your ~/.profile to persist.
+Install the Golang ppa apt repository and install **golang 1.12**.
+```sh
+sudo add-apt-repository ppa:longsleep/golang-backports
+sudo apt update
+sudo apt install golang-1.12
+```
+
+
+### Setup environment
+
+Setup a local Golang and docker-compose environment, verifying the golang-1.12 binaries are in your path.  Also add your local GOPATH's bin folder to PATH.
+Add to your `~/.profile` to persist.
 
 ```sh
-go version
+mkdir $HOME/source
 mkdir $HOME/go
+export GO111MODULE=on
 export GOPATH=$HOME/go
-export PATH=$PATH:$GOPATH/bin
+export DOCKER_TAG=latest
+export PATH=$PATH:/usr/lib/go-1.12/bin:$GOPATH/bin
+go version
 ```
 
-Allow non-root user docker system access
+Allow your current non-root user `$USER` docker system access
 ```sh
 sudo usermod -a -G docker $USER
 ```
-Logout/Login to assume new group membership needed for running docker as non-root user.
+Logout/Login to assume new group membership needed for running docker as non-root user and verify any environment variables set in `~/.profile`.
 
 
 
@@ -53,109 +65,42 @@
 
 
 
-### VOLTHA Protos Library
+### VOLTHA 2.x Core Containers
 
-Library containing all VOLTHA gRPC Protobuf definitions and the build system to produce needed stubs in Python and Golang.  Stable versions of this package is available via python's pip or golang's `dep` or `go get`.   If you need to **edit protos and test those changes locally** you will need to refer to the voltha-protos README and export needed environment variables to include the local build.
-
-https://github.com/opencord/voltha-protos/blob/master/README.md
-
-After following notes above verify local artifacts are generated.  After building the python and golang voltha-protos dev environment, set and environment variable to indicate the local voltha-protos for golang and python if editing/testing protos changes is needed:
-```sh
-cd ~/source/voltha-protos/
-ls dist/    #python pip tarball output
-ls go/      #golang stubs
-```
-
-Set an environment variable for below Golang and Python builds to inform the Makefile to copy files into the local vendor folder or to use the local pip tar.gz.  Useful for development testing.
-```sh
-export LOCAL_PROTOS=true
-```
-Skip exporting the `LOCAL_*` variable step if you are not changing the library.
-
-
-
-### PyVoltha PIP Library
-
-Python library of common core functions.  Stable versions of this package is available via python's pip.  If you need to **edit this library and test those changes locally** you will need to export needed environment variables to include the local build..
-
+Checkout needed source from gerrit. Build the `voltha-rw-core` and `voltha-ofagent` docker images.
 ```sh
 cd ~/source/
-git clone https://gerrit.opencord.org/pyvoltha.git
+git clone https://gerrit.opencord.org/voltha-go.git
+cd ~/source/voltha-go
+make build
 ```
-
-Generate the local tar.gz that is the dev version of pyvoltha:
-```sh
-cd ~/source/pyvoltha/
-make dist
-ls dist/    #python pip tarball output
-```
-
-Set an environment variable for below Python builds to inform the Makefile to use the local pip tar.gz.  Useful for development testing.
-```sh
-export LOCAL_PYVOLTHA=true
-```
-Skip exporting the `LOCAL_*` variable step if you are not changing the library.
-
-
-
-### VOLTHA 2.x Golang Core Containers
-
 For more details regarding building and debugging the 2.x core outside of Docker refer to voltha-go BUILD.md.
 
 https://github.com/opencord/voltha-go/blob/master/BUILD.md
 
-The steps below generate the needed docker images and the Docker build system sets up the Golang environment within a container image.  Build Golang docker images, `rw_core` being whats most needed for now.
-This should work without setting up a golang environment.  This also builds needed ofagent and cli docker images:
 
+
+### VOLTHA 2.x OpenOLT Container
+
+Checkout needed source from gerrit.  Build the `voltha-openolt-adapter` docker image.
 ```sh
-export DOCKER_TAG=latest
-cd ~/source/voltha-go
-make build
-```
-
-#### VOLTHA 2.x Golang Adapter Library
-
-Included in the VOLTHA core build for containers is building libraries used by Golang adapters for interfacing into the core.  Stable versions of these libraries are available via golang's `dep` or `go get`.
-
-If you need to **edit voltha-go libraries and test those changes locally** you will need to refer to needed environment variables to include the local build.
-
-Set an environment variable for other Golang builds to inform the Makefile to copy files into the local vendor folder.  Useful for development testing.
-```sh
-export LOCAL_VOLTHAGO=true
-```
-Skip exporting the `LOCAL_*` variable step if you are not changing the library.
-
-
-
-### VOLTHA 2.x OpenOLT Container (Golang and Python)
-
-Checkout and link openolt source into GOPATH for openolt development.  This is similar to voltha-go above.
-
-For more details regarding building and debugging the openolt adapter container refer to voltha-openolt-adapter README.
-
-https://github.com/opencord/voltha-openolt-adapter/blob/master/README.md
-
-Build the openolt container.  Above LOCAL environment variables can be used to include local library builds of PyVoltha, voltha-go, and voltha-protos.  This will copy the pyvoltha tar.gz and voltha-protos from their respective build tree and include in the openolt build tree.
-
-Golang and Python Openolt
-```sh
-export DOCKER_TAG=latest
+cd ~/source/
+git clone https://gerrit.opencord.org/voltha-openolt-adapter.git
 cd ~/source/voltha-openolt-adapter/
 make build
 ```
+For more details regarding building and debugging the openolt adapter container refer to voltha-openolt-adapter README.md.
+
+https://github.com/opencord/voltha-openolt-adapter/blob/master/README.md
 
 
 
-### VOLTHA 2.x OpenONU Container (Python)
+### VOLTHA 2.x OpenONU Container
 
+Checkout needed source from gerrit.  Build the `voltha-openonu-adapter` docker image.
 ```sh
 cd ~/source/
 git clone https://gerrit.opencord.org/voltha-openonu-adapter.git
-```
-
-Build the openonu container.  Above LOCAL environment variables can be used to include local builds of PyVoltha and voltha-protos.  This will copy the pyvoltha tar.gz and voltha-protos from their respective build tree and include in the openonu build tree.
-```sh
-export DOCKER_TAG=latest
 cd ~/source/voltha-openonu-adapter/
 make build
 ```
@@ -164,156 +109,350 @@
 
 ### ONOS Container with VOLTHA Compatible Apps
 
-By default the standard onos docker image does not contain nor start any apps needed by voltha.  If you use the standard image then you need to use the onos restful api to load needed apps.  For development convienence there is an onos docker image build that adds in the current compatible voltha apps.
+By default the standard ONOS docker image does not contain nor start any apps needed by VOLTHA.  If you use the standard image then you need to use the ONOS restful API to load needed apps separately.  
+
+For development convenience there is an ONOS docker image build that adds in the current compatible VOLTHA apps.  Checkout and build the ONOS image with added ONOS apps (olt, aaa, sadis, dhcpl2relay, and kafka).
+
 ```sh
 cd ~/source/
 git clone https://gerrit.opencord.org/voltha-onos.git
-```
-
-Build the onos image with added onos apps (olt, aaa, sadis, dhcpl2relay).
-```sh
-export DOCKER_TAG=latest
 cd ~/source/voltha-onos
 make build
 ```
 
 
 
+### Install voltctl VOLTHA Command Line Management Tool
+
+A working Golang build environment is required as `voltctl` is build and run directly from the host.  Build the `voltctl` executable and install in ~/go/bin which should already be in your $PATH
+```sh
+cd ~/source/
+git clone https://gerrit.opencord.org/voltctl.git
+cd ~/source/voltctl
+make build
+make install
+```
+
+Configure the `voltctl` environment configuration files `~/.volt/config` and `~/.volt/command_options` to point at the local `voltha-rw-core` instance that will be running.
+```sh
+mkdir ~/.volt/
+
+cat << EOF > ~/.volt/config
+apiVersion: v2
+server: localhost:50057
+tls:
+  useTls: false
+  caCert: ""
+  cert: ""
+  key: ""
+  verify: ""
+grpc:
+  timeout: 10s
+EOF
+
+cat << EOF > ~/.volt/command_options
+device-list:
+  format: table{{.Id}}\t{{.Type}}\t{{.Root}}\t{{.ParentId}}\t{{.SerialNumber}}\t{{.Address}}\t{{.AdminState}}\t{{.OperStatus}}\t{{.ConnectStatus}}\t{{.Reason}}
+  order: -Root,SerialNumber
+
+device-ports:
+  order: PortNo
+
+device-flows:
+  order: Priority,EthType
+
+logical-device-list:
+  order: RootDeviceId,DataPathId
+
+logical-device-ports:
+  order: Id
+
+logical-device-flows:
+  order: Priority,EthType
+
+adapter-list:
+  order: Id
+
+component-list:
+  order: Component,Name,Id
+
+loglevel-get:
+  order: ComponentName,PackageName,Level
+
+loglevel-list:
+  order: ComponentName,PackageName,Level
+EOF
+
+```
+
+
+
+### Install VOLTHA bbsim olt/onu Simulator (Optional)
+
+If you do not have physical OLT/ONU hardware you can build a simulator.
+```sh
+cd ~/source/
+git clone https://gerrit.opencord.org/bbsim.git
+cd ~/source/bbsim
+make docker-build
+```
+
+
+
+
+
 ## Test
 
-Run the combined compose file that starts the core, its dependent systems and the openonu and openolt adapters.  Export an environment variable of your non-localhost ip address needed for inter-container communication.  For convenience you can also export `DOCKER_TAG` to signify the docker images tag you would like to use.  Though for typical development you may have to edit `compose/system-test.yml` to override the specific docker image `DOCKER_TAG` needed.
+### Startup
+
+Run the combined docker-compose yaml configuration file that starts the core, its dependent systems (etcd, zookeeper, and kafka) and the openonu and openolt adapters.  Export the `DOCKER_HOST_IP` environment variable to your non-localhost IP address needed for inter-container communication.  This can be the IP assigned to `eth0` or the `docker0` bridge (typically 172.17.0.1)
+
+For convenience you can also export `DOCKER_TAG` to signify the docker images tag you would like to use.  Though for typical development you may have to edit `compose/system-test.yml` to override the specific docker image `DOCKER_TAG` needed.  The `DOCKER_REGISTRY` and `DOCKER_REPOSITORY` variables are not needed unless you wish to override the docker image path.  See the `system-test.yml` file for details on the docker image path creation string.
 ```sh
-export DOCKER_HOST_IP=##YOUR_LOCAL_IP##
+export DOCKER_HOST_IP=172.17.0.1
 export DOCKER_TAG=latest
 
 cd ~/source/voltha-go
 docker-compose -f compose/system-test.yml up -d
+
+
+WARNING: The DOCKER_REGISTRY variable is not set. Defaulting to a blank string.
+WARNING: The DOCKER_REPOSITORY variable is not set. Defaulting to a blank string.
+Creating network "compose_default" with driver "bridge"
+Pulling zookeeper (wurstmeister/zookeeper:latest)...
+latest: Pulling from wurstmeister/zookeeper
+a3ed95caeb02: Pull complete
+ef38b711a50f: Pull complete
+e057c74597c7: Pull complete
+666c214f6385: Pull complete
+c3d6a96f1ffc: Pull complete
+3fe26a83e0ca: Pull complete
+3d3a7dd3a3b1: Pull complete
+f8cc938abe5f: Pull complete
+9978b75f7a58: Pull complete
+4d4dbcc8f8cc: Pull complete
+8b130a9baa49: Pull complete
+6b9611650a73: Pull complete
+5df5aac51927: Pull complete
+76eea4448d9b: Pull complete
+8b66990876c6: Pull complete
+f0dd38204b6f: Pull complete
+Digest: sha256:7a7fd44a72104bfbd24a77844bad5fabc86485b036f988ea927d1780782a6680
+Status: Downloaded newer image for wurstmeister/zookeeper:latest
+Pulling kafka (wurstmeister/kafka:2.11-2.0.1)...
+2.11-2.0.1: Pulling from wurstmeister/kafka
+4fe2ade4980c: Pull complete
+6fc58a8d4ae4: Pull complete
+819f4a45746c: Pull complete
+a3133bc2e3e5: Pull complete
+72f0dc369677: Pull complete
+1e1130fc942d: Pull complete
+Digest: sha256:20d08a6849383b124bccbe58bc9c48ec202eefb373d05e0a11e186459b84f2a0
+Status: Downloaded newer image for wurstmeister/kafka:2.11-2.0.1
+Pulling etcd (quay.io/coreos/etcd:v3.2.9)...
+v3.2.9: Pulling from coreos/etcd
+88286f41530e: Pull complete
+2fa4a2c3ffb5: Pull complete
+539b8e6ccce1: Pull complete
+79e70e608afa: Pull complete
+f1bf8f503bff: Pull complete
+c4abfc27d146: Pull complete
+Digest: sha256:1913dd980d55490fa50640bbef0f4540d124e5c66d6db271b0b4456e9370a272
+Status: Downloaded newer image for quay.io/coreos/etcd:v3.2.9
+Creating compose_kafka_1           ... done
+Creating compose_cli_1             ... done
+Creating compose_adapter_openolt_1 ... done
+Creating compose_rw_core_1         ... done
+Creating compose_adapter_openonu_1 ... done
+Creating compose_etcd_1            ... done
+Creating compose_onos_1            ... done
+Creating compose_ofagent_1         ... done
+Creating compose_zookeeper_1       ... done
 ```
 
+
+
 Verify containers have continuous uptime and no restarts
+
 ```sh
 docker-compose -f compose/system-test.yml ps
+
+
+          Name                         Command               State                                             Ports                                           
+---------------------------------------------------------------------------------------------------------------------------------------------------------------
+compose_adapter_openolt_1   /app/openolt --kafka_adapt ...   Up      0.0.0.0:50062->50062/tcp                                                                  
+compose_adapter_openonu_1   /voltha/adapters/brcm_open ...   Up                                                                                                
+compose_cli_1               /voltha/python/cli/setup.s ...   Up      0.0.0.0:5022->22/tcp                                                                      
+compose_etcd_1              etcd --name=etcd0 --advert ...   Up      0.0.0.0:2379->2379/tcp, 0.0.0.0:32773->2380/tcp, 0.0.0.0:32772->4001/tcp                  
+compose_kafka_1             start-kafka.sh                   Up      0.0.0.0:9092->9092/tcp                                                                    
+compose_ofagent_1           /ofagent/ofagent/main.py - ...   Up                                                                                                
+compose_onos_1              ./bin/onos-service server        Up      6640/tcp, 0.0.0.0:6653->6653/tcp, 0.0.0.0:8101->8101/tcp, 0.0.0.0:8181->8181/tcp, 9876/tcp
+compose_rw_core_1           /app/rw_core -kv_store_typ ...   Up      0.0.0.0:50057->50057/tcp                                                                  
+compose_zookeeper_1         /bin/sh -c /usr/sbin/sshd  ...   Up      0.0.0.0:2181->2181/tcp, 22/tcp, 2888/tcp, 3888/tcp                                        
+```
+
+```sh
 docker ps
+
+
+CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS              PORTS                                                                                        NAMES
+829c3cb4c6c5        voltha-onos:latest              "./bin/onos-service …"   22 seconds ago      Up 16 seconds       0.0.0.0:6653->6653/tcp, 0.0.0.0:8101->8101/tcp, 6640/tcp, 9876/tcp, 0.0.0.0:8181->8181/tcp   compose_onos_1
+e6f2db007bea        voltha-openonu-adapter:latest   "/voltha/adapters/br…"   22 seconds ago      Up 18 seconds                                                                                                    compose_adapter_openonu_1
+11be84da6d23        voltha-rw-core:latest           "/app/rw_core -kv_st…"   22 seconds ago      Up 12 seconds       0.0.0.0:50057->50057/tcp                                                                     compose_rw_core_1
+e497985c70ac        quay.io/coreos/etcd:v3.2.9      "etcd --name=etcd0 -…"   22 seconds ago      Up 13 seconds       0.0.0.0:2379->2379/tcp, 0.0.0.0:32773->2380/tcp, 0.0.0.0:32772->4001/tcp                     compose_etcd_1
+48fc5680e947        voltha-ofagent:latest           "/ofagent/ofagent/ma…"   22 seconds ago      Up 18 seconds                                                                                                    compose_ofagent_1
+1ba37663929a        voltha-cli:latest               "/voltha/python/cli/…"   22 seconds ago      Up 17 seconds       0.0.0.0:5022->22/tcp                                                                         compose_cli_1
+34d7ea255778        wurstmeister/kafka:2.11-2.0.1   "start-kafka.sh"         22 seconds ago      Up 19 seconds       0.0.0.0:9092->9092/tcp                                                                       compose_kafka_1
+c92d2e52ad96        wurstmeister/zookeeper:latest   "/bin/sh -c '/usr/sb…"   22 seconds ago      Up 18 seconds       22/tcp, 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp                                           compose_zookeeper_1
+69d3409fdf10        voltha-openolt-adapter:latest   "/app/openolt --kafk…"   22 seconds ago      Up 14 seconds       0.0.0.0:50062->50062/tcp 
 ```
 
-Login to cli and verify.  Username is voltha, Password is admin
+
+
+### Verify Cluster Communication
+
+Use `voltctl` commands to verify core and adapters are running.
+
 ```sh
-ssh -p 5022 voltha@localhost
+voltctl adapter list
+ID                   VENDOR            VERSION
+brcm_openomci_onu    Voltha project    2.0
+openolt              VOLTHA OpenOLT    2.2.3-dev
 ```
 
-Run voltha "devices" command to verify communication to etcd
-"table empty" is good
+List "devices" to verify no devices exist.
 ```sh
-(voltha) devices
-Devices:
-table empty
+voltctl device list
+ID    TYPE    ROOT    PARENTID    SERIALNUMBER    ADDRESS    ADMINSTATE    OPERSTATUS    CONNECTSTATUS    REASON
 ```
 
-At this point preprovision and enable olt, add flows using the CLI or ofagent.
+At this point create/preprovision and enable an olt device and add flows via onos and ofagent.
 
 
 
 ### Physical OLT/ONU Testing with Passing Traffic
-Start a physical OLT and ONU.  Tested with Edgecore OLT, Broadcom based ONU, and RG capable of EAPoL
 
-Preprovision and enable
+Start a physical OLT and ONU.  Tested with Edgecore OLT, Broadcom based ONU, and RG capable of EAPoL.  Create/Preprovision the OLT and enable.  The create command returns the device ID needed for enable and subsequent commands.
+
+
+
+**Add device to VOLTHA**
+
 ```sh
-(voltha) preprovision_olt -t openolt -H 10.64.1.207:9191
-success (device id = c6efa171c13056d36e69d1ab)
-(voltha) enable
-enabling c6efa171c13056d36e69d1ab
-waiting for device to be enabled...
-waiting for device to be enabled...
-success (device id = c6efa171c13056d36e69d1ab)
+voltctl device create -t openolt -H 10.64.1.206:9191
+ce7c6fc7bf8ce675d0ce9f21
+
+voltctl device enable ce7c6fc7bf8ce675d0ce9f21
 ```
 
-Verify device state
+
+
+**Verify device state**
+
 ```sh
-(voltha) devices
-Devices:
-+--------------------------+-------------------+------+--------------------------+---------------+-------------------+-------------+-------------+----------------+----------------+------------------+--------------------------------------+
-|                       id |              type | root |                parent_id | serial_number |       mac_address | admin_state | oper_status | connect_status | parent_port_no |    host_and_port |                               reason |
-+--------------------------+-------------------+------+--------------------------+---------------+-------------------+-------------+-------------+----------------+----------------+------------------+--------------------------------------+
-| c6efa171c13056d36e69d1ab |           openolt | True |             00000a4001cf |  EC1829000886 | 00:00:0a:40:01:cf |     ENABLED |      ACTIVE |      REACHABLE |                | 10.64.1.207:9191 |                                      |
-| 51e092cb40883b796c77a8f2 | brcm_openomci_onu |      | c6efa171c13056d36e69d1ab |  BRCM33333333 |                   |     ENABLED |      ACTIVE |      REACHABLE |      536870912 |                  | tech-profile-config-download-success |
-+--------------------------+-------------------+------+--------------------------+---------------+-------------------+-------------+-------------+----------------+----------------+------------------+--------------------------------------+
-
-(voltha) device c6efa171c13056d36e69d1ab
-(device c6efa171c13056d36e69d1ab) ports
-Device ports:
-+-----------+-----------+--------------+-------------+-------------+--------------------------------------------------------------------+
-|   port_no |     label |         type | admin_state | oper_status |                                                              peers |
-+-----------+-----------+--------------+-------------+-------------+--------------------------------------------------------------------+
-| 536870912 |      pon0 |      PON_OLT |     ENABLED |      ACTIVE | [{'port_no': 536870912, 'device_id': u'51e092cb40883b796c77a8f2'}] |
-|     65536 | nni-65536 | ETHERNET_NNI |     ENABLED |      ACTIVE |                                                                    |
-| 536870913 |      pon1 |      PON_OLT |     ENABLED |      ACTIVE |                                                                    |
-| 536870914 |      pon2 |      PON_OLT |     ENABLED |      ACTIVE |                                                                    |
-| 536870915 |      pon3 |      PON_OLT |     ENABLED |      ACTIVE |                                                                    |
-| 536870916 |      pon4 |      PON_OLT |     ENABLED |      ACTIVE |                                                                    |
-| 536870917 |      pon5 |      PON_OLT |     ENABLED |      ACTIVE |                                                                    |
-| 536870918 |      pon6 |      PON_OLT |     ENABLED |      ACTIVE |                                                                    |
-| 536870919 |      pon7 |      PON_OLT |     ENABLED |      ACTIVE |                                                                    |
-| 536870920 |      pon8 |      PON_OLT |     ENABLED |      ACTIVE |                                                                    |
-+-----------+-----------+--------------+-------------+-------------+--------------------------------------------------------------------+
-| 536870921 |      pon9 |      PON_OLT |     ENABLED |      ACTIVE |                                                                    |
-| 536870922 |     pon10 |      PON_OLT |     ENABLED |      ACTIVE |                                                                    |
-| 536870923 |     pon11 |      PON_OLT |     ENABLED |      ACTIVE |                                                                    |
-| 536870924 |     pon12 |      PON_OLT |     ENABLED |      ACTIVE |                                                                    |
-| 536870925 |     pon13 |      PON_OLT |     ENABLED |      ACTIVE |                                                                    |
-| 536870926 |     pon14 |      PON_OLT |     ENABLED |      ACTIVE |                                                                    |
-| 536870927 |     pon15 |      PON_OLT |     ENABLED |      ACTIVE |                                                                    |
-+-----------+-----------+--------------+-------------+-------------+--------------------------------------------------------------------+
-(device c6efa171c13056d36e69d1ab) quit
-
-
-(voltha) device 51e092cb40883b796c77a8f2
-(device 51e092cb40883b796c77a8f2) ports
-Device ports:
-+-----------+----------+--------------+-------------+-------------+--------------------------------------------------------------------+
-|   port_no |    label |         type | admin_state | oper_status |                                                              peers |
-+-----------+----------+--------------+-------------+-------------+--------------------------------------------------------------------+
-| 536870912 | PON port |      PON_ONU |     ENABLED |      ACTIVE | [{'port_no': 536870912, 'device_id': u'c6efa171c13056d36e69d1ab'}] |
-|        16 |   uni-16 | ETHERNET_UNI |     ENABLED |      ACTIVE |                                                                    |
-|        17 |   uni-17 | ETHERNET_UNI |     ENABLED |      ACTIVE |                                                                    |
-|        18 |   uni-18 | ETHERNET_UNI |     ENABLED |      ACTIVE |                                                                    |
-|        19 |   uni-19 | ETHERNET_UNI |     ENABLED |      ACTIVE |                                                                    |
-|        20 |   uni-20 | ETHERNET_UNI |     ENABLED |      ACTIVE |                                                                    |
-+-----------+----------+--------------+-------------+-------------+--------------------------------------------------------------------+
+voltctl device list
+ID                          TYPE                 ROOT     PARENTID                    SERIALNUMBER    ADDRESS             ADMINSTATE    OPERSTATUS    CONNECTSTATUS    REASON
+ce7c6fc7bf8ce675d0ce9f21    openolt              true     a82bb53678ae                EC1721000221    10.64.1.206:9191    ENABLED       ACTIVE        REACHABLE
+1815c74841da338cb48e1034    brcm_openomci_onu    false    ce7c6fc7bf8ce675d0ce9f21    ALPHe3d1cf57    unknown             ENABLED       ACTIVE        REACHABLE        omci-flows-pushed
 ```
 
-Verify onos device state and EAPoL authentication.  Username is karaf, Password is karaf
+```sh
+voltctl device ports ce7c6fc7bf8ce675d0ce9f21
+PORTNO       LABEL            TYPE            ADMINSTATE    OPERSTATUS    DEVICEID    PEERS
+1048576      nni-1048576      ETHERNET_NNI    ENABLED       ACTIVE                    []
+536870912    pon-536870912    PON_OLT         ENABLED       ACTIVE                    [{1815c74841da338cb48e1034 536870912}]
+536870913    pon-536870913    PON_OLT         ENABLED       ACTIVE                    []
+536870914    pon-536870914    PON_OLT         ENABLED       ACTIVE                    []
+536870915    pon-536870915    PON_OLT         ENABLED       ACTIVE                    []
+536870916    pon-536870916    PON_OLT         ENABLED       ACTIVE                    []
+536870917    pon-536870917    PON_OLT         ENABLED       ACTIVE                    []
+536870918    pon-536870918    PON_OLT         ENABLED       ACTIVE                    []
+536870919    pon-536870919    PON_OLT         ENABLED       ACTIVE                    []
+536870920    pon-536870920    PON_OLT         ENABLED       ACTIVE                    []
+536870921    pon-536870921    PON_OLT         ENABLED       ACTIVE                    []
+536870922    pon-536870922    PON_OLT         ENABLED       ACTIVE                    []
+536870923    pon-536870923    PON_OLT         ENABLED       ACTIVE                    []
+536870924    pon-536870924    PON_OLT         ENABLED       ACTIVE                    []
+536870925    pon-536870925    PON_OLT         ENABLED       ACTIVE                    []
+536870926    pon-536870926    PON_OLT         ENABLED       ACTIVE                    []
+536870927    pon-536870927    PON_OLT         ENABLED       ACTIVE                    []
+```
+
+```sh
+voltctl device ports 1815c74841da338cb48e1034
+PORTNO       LABEL       TYPE            ADMINSTATE    OPERSTATUS    DEVICEID    PEERS
+32           uni-32      ETHERNET_UNI    ENABLED       ACTIVE                    []
+33           uni-33      ETHERNET_UNI    ENABLED       ACTIVE                    []
+34           uni-34      ETHERNET_UNI    ENABLED       ACTIVE                    []
+35           uni-35      ETHERNET_UNI    ENABLED       ACTIVE                    []
+36           uni-36      ETHERNET_UNI    ENABLED       ACTIVE                    []
+536870912    PON port    PON_ONU         ENABLED       ACTIVE                    [{ce7c6fc7bf8ce675d0ce9f21 536870912}]
+```
+
+
+Verify ONOS device state and eventual EAPoL authentication.  ONOS default Username is `karaf`, Password is `karaf`
 ```sh
 ssh -p 8101 karaf@localhost
 ```
 
+Display the device and ports discovered
 ```sh
 onos> ports
-id=of:000000000a4001cf, available=true, local-status=connected 1h15m ago, role=MASTER, type=SWITCH, mfr=, hw=asfvolt16, sw=BAL.2.6.0__Openolt.2018.10.04, serial=EC1829000886, chassis=a4001cf, driver=voltha, channelId=172.18.0.1:38368, locType=none, managementAddress=172.18.0.1, name=of:000000000a4001cf, protocol=OF_13
-  port=16, state=enabled, type=fiber, speed=0 , adminState=enabled, portMac=08:00:00:00:00:10, portName=BRCM33333333-1
-  port=17, state=enabled, type=fiber, speed=0 , adminState=enabled, portMac=08:00:00:00:00:11, portName=BRCM33333333-2
-  port=18, state=enabled, type=fiber, speed=0 , adminState=enabled, portMac=08:00:00:00:00:12, portName=BRCM33333333-3
-  port=19, state=enabled, type=fiber, speed=0 , adminState=enabled, portMac=08:00:00:00:00:13, portName=BRCM33333333-4
-  port=20, state=enabled, type=fiber, speed=0 , adminState=enabled, portMac=08:00:00:00:00:14, portName=BRCM33333333-5
-  port=65536, state=enabled, type=fiber, speed=0 , adminState=enabled, portMac=00:00:00:01:00:00, portName=nni-65536
-
-onos> aaa-users
-UserName=E0:B7:0A:70:E6:C1,CurrentState=AUTHORIZED,DeviceId=of:000000000a4001cf,MAC=E0:B7:0A:70:E6:C1,PortNumber=16,SubscriberId=PON 1/1/3/1:3.1.1
+id=of:0000a82bb53678ae, available=true, local-status=connected 2m18s ago, role=MASTER, type=SWITCH, mfr=VOLTHA Project, hw=open_pon, sw=open_pon, serial=EC1721000221, chassis=a82bb53678ae, driver=voltha, channelId=172.30.0.1:39080, managementAddress=172.30.0.1, protocol=OF_13
+  port=32, state=enabled, type=fiber, speed=0 , adminState=enabled, portMac=08:00:00:00:00:20, portName=ALPHe3d1cf57-1
+  port=33, state=enabled, type=fiber, speed=0 , adminState=enabled, portMac=08:00:00:00:00:21, portName=ALPHe3d1cf57-2
+  port=34, state=enabled, type=fiber, speed=0 , adminState=enabled, portMac=08:00:00:00:00:22, portName=ALPHe3d1cf57-3
+  port=35, state=enabled, type=fiber, speed=0 , adminState=enabled, portMac=08:00:00:00:00:23, portName=ALPHe3d1cf57-4
+  port=36, state=enabled, type=fiber, speed=0 , adminState=enabled, portMac=08:00:00:00:00:24, portName=ALPHe3d1cf57-5
+  port=1048576, state=enabled, type=fiber, speed=0 , adminState=enabled, portMac=a8:2b:b5:36:78:ae, portName=nni-1048576
 ```
 
-Provision subscriber flows.  Verify traffic
+EAPoL may take up to 30 seconds to complete.
+```sh
+onos> aaa-users
+UserName=94:CC:B9:DA:AB:D1,CurrentState=AUTHORIZED,DeviceId=of:0000a82bb53678ae,MAC=94:CC:B9:DA:AB:D1,PortNumber=32,SubscriberId=PON 1/1/3/1:2.1.1
+```
+
+
+
+**Provision subscriber flows**
+
 ```sh
 onos> volt-subscribers
-port=of:000000000a4001cf/16, svlan=13, cvlan=22
+port=of:0000a82bb53678ae/32, svlan=13, cvlan=22
 
-onos> volt-add-subscriber-access of:000000000a4001cf 16
+onos> volt-add-subscriber-access of:0000a82bb53678ae 32
 
 onos> volt-programmed-subscribers
-location=of:000000000a4001cf/16 subscriber=[id:BRCM33333333-1,cTag:22,sTag:13,nasPortId:PON 1/1/3/1:3.1.1,uplinkPort:-1,slot:-1,hardwareIdentifier:null,ipaddress:null,nasId:null,circuitId:PON 1/1/3/1:3.1.1-CID,remoteId:ATLEDGEVOLT1-RID]
+location=of:of:0000a82bb53678ae/32 subscriber=[id:ALPHe3d1cf57-1,cTag:20,sTag:11,nasPortId:PON 1/1/3/1:2.1.1,uplinkPort:-1,slot:-1,hardwareIdentifier:null,ipaddress:null,nasId:null,circuitId:PON 1/1/3/1:2.1.1-CID,remoteId:ATLEDGEVOLT1-RID]
+```
 
+After about 30 seconds the RG should attempt DHCP which should be visible in onos.  At this point the RG should be able to pass database traffic via the ONU/OLT.
+```sh
+onos> dhcpl2relay-allocations
+SubscriberId=PON 1/1/3/1:2.1.1,ConnectPoint=of:0000a82bb53678ae/32,State=DHCPACK,MAC=94:CC:B9:DA:AB:D1,CircuitId=None,IP Allocated=29.29.206.20,Allocation Timestamp=2019-11-28T18:59:05.472Z
 ```
 
 
-### Test with BBSIM or Ponsim
-if you don't have a real OLT device and want to test with a simulator BBSIM or PONSIM can be used.
-```compose/system-test-bbsim.yml``` file includes BBSIM image and ```compose/system-test-ponsim.yml``` includes PONSIM. Please note that since PONSIM uses its own ```ponsim_adapter``` you need to run the preprovision command like this:
-```preprovision_olt -t ponsim_olt -H <IP of Ponsim OLT>:50060```
+
+### BBSIM Simulated OLT/ONU Testing Control Plane Traffic
+
+If you do not have physical OLT/ONU hardware you can start VOLTHA containers and the bbsim olt/onu hardware simulator using a different docker-compose yaml file.  Verify containers are running as above with the addition of the bbsim and radius server containers.
+```sh
+export DOCKER_HOST_IP=172.17.0.1
+export DOCKER_TAG=latest
+
+cd ~/source/voltha-go
+docker-compose -f compose/system-test-bbsim.yml up -d
+```
+
+Create/Preprovision and enable similarly to the physical OLT above, providing the local bbsim IP and listening port
+```sh
+voltctl device create -t openolt -H 172.17.0.1:50060
+ece94c86e93c6e06dd0a544b
+
+voltctl device enable ece94c86e93c6e06dd0a544b
+ece94c86e93c6e06dd0a544b
+```
+
+Proceed with the verification and ONOS provisioning commands similar to the physical OLT described above.