Merge "[VOL-901] As an operator, I should be able to view logs from all VOLTHA components in a single stream"
diff --git a/jjb/comac-in-a-box-gerrit.yaml b/jjb/comac-in-a-box-gerrit.yaml
index 7eac98b..cf12159 100644
--- a/jjb/comac-in-a-box-gerrit.yaml
+++ b/jjb/comac-in-a-box-gerrit.yaml
@@ -27,7 +27,7 @@
                 comment-contains-value: '(?i)^.*recheck$'
           projects:
             - project-compare-type: REG_EXP
-              project-pattern: 'helm-charts'
+              project-pattern: 'aether-helm-charts'
               branches:
                 - branch-compare-type: REG_EXP
                   branch-pattern: '{all-branches-regexp}'
diff --git a/jjb/cord-test/nightly-build-pipeline.yaml b/jjb/cord-test/nightly-build-pipeline.yaml
index 1b4dd59..c2c47fd 100644
--- a/jjb/cord-test/nightly-build-pipeline.yaml
+++ b/jjb/cord-test/nightly-build-pipeline.yaml
@@ -68,11 +68,6 @@
           description: 'The config file'
 
       - string:
-          name: oltDebVersion
-          default: '{oltDebVersion}'
-          description: 'OLT Software version to install'
-
-      - string:
           name: branch
           default: '{branch}'
 
@@ -865,6 +860,7 @@
                   Copyright (c) 2018 Open Networking Foundation (ONF)
 
     <<: *test-pipe-job-boiler-plate
+    VolthaEtcdPort: '2379'
 
     parameters:
       - string:
@@ -913,11 +909,6 @@
           description: 'Technology Profile pushed to the ETCD'
 
       - string:
-          name: oltDebVersion
-          default: '{oltDebVersion}'
-          description: 'OLT Software version to install'
-
-      - string:
           name: helmRepoUrl
           default: 'https://charts.opencord.org'
           description: 'URL where helm-charts are published'
@@ -966,6 +957,11 @@
           default: '{with-kind}'
           description: "The pods uses kind and a physical fabric thus port forward to the management is needed"
 
+      - string:
+          name: VolthaEtcdPort
+          default: '{VolthaEtcdPort}'
+          description: 'Localhost port that is forwarded to VOLTHA etcd'
+
     concurrent: true
 
     pipeline-scm:
diff --git a/jjb/cord-test/voltha.yaml b/jjb/cord-test/voltha.yaml
index a6c62c1..3c8dc25 100644
--- a/jjb/cord-test/voltha.yaml
+++ b/jjb/cord-test/voltha.yaml
@@ -25,7 +25,6 @@
           num-of-openonu: '2'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-build'
-          oltDebVersion: 'openolt_asfvolt16-2.3.0-bc6e0853e0e8bf6bd7e4223d4a7ee0dd35ce634d.deb'
           profile: '1T4GEM'
 
       # flex pod1 test job - using voltha branch
@@ -45,7 +44,6 @@
           branch: 'master'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-build'
-          oltDebVersion: 'openolt_asfvolt16-2.3.0-bc6e0853e0e8bf6bd7e4223d4a7ee0dd35ce634d.deb'
           profile: '1T4GEM'
 
       # onlab pod1 test job - BAL3.1 tests using voltha branch
@@ -68,7 +66,6 @@
           num-of-atomix: '3'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-build'
-          oltDebVersion: 'openolt_asfvolt16-2.3.0-bc6e0853e0e8bf6bd7e4223d4a7ee0dd35ce634d.deb'
           configurePod: true
           profile: 'Default'
           time: '1'
@@ -94,7 +91,6 @@
           num-of-atomix: '3'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-build'
-          oltDebVersion: 'openolt_asfvolt16-2.3.0-bc6e0853e0e8bf6bd7e4223d4a7ee0dd35ce634d.deb'
           configurePod: true
           profile: '1T4GEM'
           time: '3'
@@ -117,7 +113,6 @@
           branch: 'voltha-2.3'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-build'
-          oltDebVersion: 'openolt_asfvolt16-2.3.0-bc6e0853e0e8bf6bd7e4223d4a7ee0dd35ce634d.deb'
           configurePod: true
           profile: '1T4GEM'
           time: '4'
@@ -143,10 +138,10 @@
           num-of-atomix: '3'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-build'
-          oltDebVersion: 'openolt_asfvolt16-2.3.0-bc6e0853e0e8bf6bd7e4223d4a7ee0dd35ce634d.deb'
           configurePod: true
           profile: 'Default'
           time: '1'
+          VolthaEtcdPort: '9999'
 
       # Menlo pod test job - uses tech profile on voltha branch
       - 'build_voltha_pod_test':
@@ -166,10 +161,10 @@
           branch: 'voltha-2.3'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-build'
-          oltDebVersion: 'openolt_asfvolt16-2.3.0-bc6e0853e0e8bf6bd7e4223d4a7ee0dd35ce634d.deb'
           configurePod: true
           profile: 'Default'
           time: '3'
+          VolthaEtcdPort: '9999'
 
       # Menlo pod test job - uses tech profile on voltha branch
       - 'build_voltha_pod_test':
@@ -192,10 +187,10 @@
           num-of-atomix: '3'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-build'
-          oltDebVersion: 'openolt_asfvolt16-2.3.0-bc6e0853e0e8bf6bd7e4223d4a7ee0dd35ce634d.deb'
           configurePod: true
           profile: '1T4GEM'
           time: '4'
+          VolthaEtcdPort: '9999'
 
       # Menlo pod test job - master test job uses tech profile on voltha branch
       - 'build_voltha_pod_test':
@@ -218,10 +213,10 @@
           work-flow: 'DT'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-build'
-          oltDebVersion: 'openolt_asfvolt16-2.3.0-bc6e0853e0e8bf6bd7e4223d4a7ee0dd35ce634d.deb'
           configurePod: true
           profile: '1T8GEM'
           time: '6'
+          VolthaEtcdPort: '9999'
 
       # Menlo pod test job - uses tech profile on voltha branch
       - 'build_voltha_pod_test':
@@ -247,10 +242,10 @@
           work-flow: 'DT'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-build'
-          oltDebVersion: 'openolt_asfvolt16-2.3.0-bc6e0853e0e8bf6bd7e4223d4a7ee0dd35ce634d.deb'
           configurePod: true
           profile: '1T8GEM'
           time: '7'
+          VolthaEtcdPort: '9999'
 
       # Menlo pod test job - uses tech profile on voltha branch
       - 'build_voltha_pod_test':
@@ -273,7 +268,6 @@
           branch: 'master'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-build'
-          oltDebVersion: 'openolt_asfvolt16-2.3.0-bc6e0853e0e8bf6bd7e4223d4a7ee0dd35ce634d.deb'
           configurePod: true
           profile: '1T4GEM'
       - 'build_pod_test':
@@ -292,7 +286,6 @@
           branch: 'master'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-build'
-          oltDebVersion: 'openolt_asfvolt16-2.3.0-bc6e0853e0e8bf6bd7e4223d4a7ee0dd35ce634d.deb'
           configurePod: true
           profile: 'Default'
 
@@ -305,6 +298,26 @@
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-test'
 
+      # ONF Menlo Soak POD build job - voltha-master branch
+      - 'build_pod_manual':
+          build-node: 'menlo-soak-pod'
+          config-pod: 'onf-soak-pod'
+          release: 'master'
+          branch: 'master'
+          test-repo: 'voltha-system-tests'
+          Jenkinsfile: 'Jenkinsfile-voltha-build'
+          configurePod: true
+          profile: 'Default'
+
+      # ONF Menlo Soak POD test job - voltha-master branch
+      - 'build_pod_test':
+          build-node: 'menlo-soak-pod'
+          config-pod: 'onf-soak-pod'
+          profile: 'Default'
+          branch: 'master'
+          test-repo: 'voltha-system-tests'
+          Jenkinsfile: 'Jenkinsfile-voltha-test'
+
       # Infosys pod with olt/onu - Default tech profile and timer based job
       - 'build_voltha_pod_release':
           build-node: 'infosys-test-pod'
@@ -316,7 +329,6 @@
           num-of-atomix: '3'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-build'
-          oltDebVersion: 'openolt_asfvolt16-2.3.0-bc6e0853e0e8bf6bd7e4223d4a7ee0dd35ce634d.deb'
           configurePod: true
           profile: 'Default'
           time: '10'
@@ -338,7 +350,6 @@
           branch: 'voltha-2.3'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-build'
-          oltDebVersion: 'openolt_asfvolt16-2.3.0-bc6e0853e0e8bf6bd7e4223d4a7ee0dd35ce634d.deb'
           configurePod: true
           profile: 'Default'
           time: '12'
@@ -362,7 +373,6 @@
           num-of-openonu: '2'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-build'
-          oltDebVersion: 'openolt_asfvolt16-2.3.0-bc6e0853e0e8bf6bd7e4223d4a7ee0dd35ce634d.deb'
           profile: 'Default'
       # infosys test job - Manual Job
       - 'build_pod_test':
@@ -384,7 +394,6 @@
           num-of-atomix: '3'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-build'
-          oltDebVersion: 'openolt_asfvolt16-2.3.0-bc6e0853e0e8bf6bd7e4223d4a7ee0dd35ce634d.deb'
           configurePod: true
           profile: 'Default'
           with-kind: true
@@ -409,7 +418,6 @@
           branch: 'voltha-2.3'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-build'
-          oltDebVersion: 'openolt_asfvolt16-2.3.0-bc6e0853e0e8bf6bd7e4223d4a7ee0dd35ce634d.deb'
           configurePod: true
           profile: 'Default'
           with-kind: true
@@ -439,7 +447,6 @@
           work-flow: 'DT'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-build'
-          oltDebVersion: 'openolt_asgvolt64.deb'
           configurePod: true
           profile: '1T8GEM'
           with-kind: true
@@ -458,3 +465,23 @@
           profile: '1T8GEM'
           power-switch: True
           pipeline-script: 'voltha-dt-physical-functional-tests.groovy'
+
+      # Berlin pod with olt/onu - manual test job, voltha master build job
+      - 'build_pod_manual':
+          build-node: 'dt-berlin-community-pod'
+          config-pod: 'dt-berlin-pod-gpon'
+          release: 'master'
+          branch: 'master'
+          num-of-openonu: '2'
+          test-repo: 'voltha-system-tests'
+          Jenkinsfile: 'Jenkinsfile-voltha-build'
+          profile: 'Default'
+
+      # Berlin pod1 test job - using voltha branch
+      - 'build_pod_test':
+          build-node: 'dt-berlin-community-pod'
+          config-pod: 'dt-berlin-pod-gpon'
+          profile: 'Default'
+          branch: 'master'
+          test-repo: 'voltha-system-tests'
+          Jenkinsfile: 'Jenkinsfile-voltha-test'
diff --git a/jjb/defaults.yaml b/jjb/defaults.yaml
index 7eb22bd..3d8517d 100644
--- a/jjb/defaults.yaml
+++ b/jjb/defaults.yaml
@@ -90,7 +90,7 @@
 
     # matching repos that should be version tagged by the version-tag job
     # (basically the same as imagebuilder projects + helm charts + tools
-    version-tag-projects-regexp: '^(xos.*|.*helm-charts|automation-tools|cord-tester|chameleon|rcord|mcord|ecord|acordion|addressmanager|epc-service|exampleservice|fabric.*|globalxos|hippie-oss|hss_db|hypercache|internetemulator|kubernetes-service|monitoring|olt-service|onos-service|openstack|progran|sdn-controller|simpleexampleservice|templateservice|vEE|vEG|vBBU|venb|vHSS|vMME|vnaas|vPGWC|vPGWU|vrouter|vsg|vsg-hw|vSGW|vSM|vspgwc|vspgwu|vtn-service|vtr|.*-workflow-driver|ves-agent|voltha-bbsim|openolt|sadis-server|kafka-topic-exporter|pyvoltha||plyxproto|voltha-protos|alpine-grpc-base|cordctl|voltha-go|voltha-onos|device-management|cord-workflow.*|voltha-system-tests|openairinterface|omec-.*|bbsim|omci-sim|ponsim|pppoel2relay|voltha-api-server|aaa|config|dhcpl2relay|igmp|igmpproxy|kafka-onos|mcast|olt|sadis|vtn|voltha-.*-adapter.*|voltha-lib-go|voltha-python-base|voltha-docker-tools|mn-stratum-siab|ofagent.*|bng|voltctl|openolt-scale-tester|nem-ondemand-proxy|multifabric|openolt-test|omci-lib-go|kind-voltha|voltha-docs|mac-learning|goloxi)$'
+    version-tag-projects-regexp: '^(xos.*|.*helm-charts|automation-tools|cord-tester|chameleon|rcord|mcord|ecord|acordion|addressmanager|epc-service|exampleservice|fabric.*|globalxos|hippie-oss|hss_db|hypercache|internetemulator|kubernetes-service|monitoring|olt-service|onos-service|openstack|progran|sdn-controller|simpleexampleservice|templateservice|vEE|vEG|vBBU|venb|vHSS|vMME|vnaas|vPGWC|vPGWU|vrouter|vsg|vsg-hw|vSGW|vSM|vspgwc|vspgwu|vtn-service|vtr|.*-workflow-driver|ves-agent|voltha-bbsim|openolt|sadis-server|kafka-topic-exporter|pyvoltha||plyxproto|voltha-protos|alpine-grpc-base|cordctl|voltha-go|voltha-onos|device-management|cord-workflow.*|voltha-system-tests|openairinterface|omec-.*|bbsim|omci-sim|ponsim|pppoel2relay|voltha-api-server|aaa|config|dhcpl2relay|igmp|igmpproxy|kafka-onos|mcast|olt|sadis|vtn|voltha-.*-adapter.*|voltha-lib-go|voltha-python-base|voltha-docker-tools|mn-stratum-siab|ofagent.*|bng|voltctl|openolt-scale-tester|nem-ondemand-proxy|multifabric|openolt-test|omci-lib-go|kind-voltha|voltha-docs|mac-learning|goloxi|device-management-interface)$'
 
     # List of all repos that contribute to the CORD guide
     cord-guide-projects-regexp: '^(att-workflow-driver|cord-tester|cordctl|exampleservice|fabric|fabric-crossconnect|hippie-oss|kubernetes-service|olt-service|onos-service|openolt|openstack|rcord|simpleexampleservice|vrouter|vtn-service|xos|xos-gui|xos-tosca)$'
diff --git a/jjb/omec-ci.yaml b/jjb/omec-ci.yaml
index ed32c7f..04b62d3 100644
--- a/jjb/omec-ci.yaml
+++ b/jjb/omec-ci.yaml
@@ -19,7 +19,7 @@
       - 'omec-postmerge':
           project: '{name}'
           build-node: 'omec-qa'
-          c3po-branch-name: 'multiUpfs'
+          c3po-branch-name: 'master'
           ngic-branch-name: 'central-cp-multi-upfs'
           openmme-branch-name: 'master'
           pipeline-file: 'omec-postmerge.groovy'
@@ -157,6 +157,10 @@
       - 'omec-reuse':
           pipeline-file: 'omec-reuse-scan.groovy'
           build-node: 'omec-qa'
+      - 'docker-publish-github':
+          build-timeout: 60
+          docker-repo: 'omecproject'
+          build-node: 'ubuntu16.04-basebuild-1c-2g'
       - 'omec-comac-in-a-box':
           build-node: 'comac_in_a_box'
 
@@ -224,6 +228,7 @@
           build-timeout: 30
           docker-repo: 'omecproject'
           build-node: 'ubuntu16.04-basebuild-2c-4g'
+          extraEnvironmentVars: CPU=haswell
 
 # Combined pipeline
 - job-template:
diff --git a/jjb/pipeline/comac-in-a-box-github.groovy b/jjb/pipeline/comac-in-a-box-github.groovy
index f2791ec..5153b6c 100644
--- a/jjb/pipeline/comac-in-a-box-github.groovy
+++ b/jjb/pipeline/comac-in-a-box-github.groovy
@@ -30,9 +30,8 @@
   }
 
   environment {
-
-    omec_cp = "$HOME/cord/helm-charts/omec/omec-control-plane/values.yaml"
-    omec_dp = "$HOME/cord/helm-charts/omec/omec-data-plane/values.yaml"
+    omec_cp = "$HOME/cord/aether-helm-charts/omec/omec-control-plane/values.yaml"
+    omec_dp = "$HOME/cord/aether-helm-charts/omec/omec-data-plane/values.yaml"
   }
 
   stages {
@@ -44,18 +43,12 @@
         sh label: 'Run COMAC-in-a-box reset-test', script: """
           echo $HOME
           cd $HOME/automation-tools/comac-in-a-box/
-          sudo make reset-test
+          make reset-test
           """
-        sh label: 'Cleanup Docker Images', script: '''
-          sudo docker rmi -f $(sudo docker images --format '{{.Repository}} {{.ID}}' | grep 'none' | awk '{print $2}') || true
-          sudo docker rmi -f $(sudo docker images --format '{{.Repository}}:{{.Tag}}' | grep 'openmme') || true
-          sudo docker rmi -f $(sudo docker images --format '{{.Repository}}:{{.Tag}}' | grep 'ngic') || true
-          sudo docker rmi -f $(sudo docker images --format '{{.Repository}}:{{.Tag}}' | grep 'c3po') || true
-          '''
         sh label: 'helm-charts Repo Fresh Clone', script: """
           cd $HOME/cord/
-          sudo rm -rf helm-charts/
-          git clone https://gerrit.opencord.org/helm-charts
+          rm -rf aether-helm-charts/
+          git clone ssh://jeremyr@gerrit.opencord.org:29418/aether-helm-charts
           """
       }
     }
@@ -71,7 +64,7 @@
             docker_tag = "${params.branch}-${pull_request_num}-${abbreviated_commit_hash}"
           }
         }
-        sh label: 'Clone repo', script: """
+        sh label: 'Clone repo, then make docker-build', script: """
           rm -rf ${params.project}
           if [ "${params.project}" = "c3po" ]
           then
@@ -108,7 +101,7 @@
             echo "Changed mme tag: ${docker_tag}"
           elif [ "${params.project}" = "Nucleus" ]
           then
-            sed -i "s;mme: .*;mme: \\"openmme:${docker_tag}\\";" ${omec_cp} # nucleus shares the same docker name as openmme.
+            sed -i "s;mme: .*;mme: \\"nucleus:${docker_tag}\\";" ${omec_cp}
             echo "Changed mme tag: ${docker_tag}"
           elif [ "${params.project}" = "ngic-rtc" ]
           then
@@ -119,12 +112,6 @@
             echo "The project ${params.project} is not supported. Aborting job."
             exit 1
           fi
-
-          echo "omec_cp:"
-          cat "${omec_cp}"
-
-          echo "omec_dp:"
-          cat "${omec_dp}"
         """
       }
     }
@@ -135,8 +122,8 @@
           try{
             sh label: 'Run Makefile', script: """
               cd $HOME/automation-tools/comac-in-a-box/
-              sudo make reset-test
-              sudo make test
+              make reset-test
+              make test
               """
           } finally {
             sh label: 'Archive Logs', script: '''
diff --git a/jjb/pipeline/voltha-dt-physical-functional-tests.groovy b/jjb/pipeline/voltha-dt-physical-functional-tests.groovy
index b03f9e2..07cf657 100644
--- a/jjb/pipeline/voltha-dt-physical-functional-tests.groovy
+++ b/jjb/pipeline/voltha-dt-physical-functional-tests.groovy
@@ -37,6 +37,7 @@
       steps {
         step([$class: 'WsCleanup'])
         sh returnStdout: false, script: "git clone -b master ${cordRepoUrl}/${configBaseDir}"
+        sh returnStdout: false, script: "git clone -b master ${cordRepoUrl}/kind-voltha"
         script {
            deployment_config = readYaml file: "${configBaseDir}/${configDeploymentDir}/${configFileName}-DT.yaml"
         }
@@ -60,8 +61,14 @@
         mkdir -p $WORKSPACE/bin
         bash <( curl -sfL https://raw.githubusercontent.com/boz/kail/master/godownloader.sh) -b "$WORKSPACE/bin"
         cd $WORKSPACE
+        if [ "${params.branch}" != "master" ]; then
+           cd $WORKSPACE/kind-voltha
+           source releases/${params.branch}
+           VC_VERSION=1.0.18
+        else
+           VC_VERSION=\$(curl -sSL https://api.github.com/repos/opencord/voltctl/releases/latest | jq -r .tag_name | sed -e 's/^v//g')
+        fi
 
-        VC_VERSION=\$(curl -sSL https://api.github.com/repos/opencord/voltctl/releases/latest | jq -r .tag_name | sed -e 's/^v//g')
         HOSTOS=\$(uname -s | tr "[:upper:]" "[:lower:"])
         HOSTARCH=\$(uname -m | tr "[:upper:]" "[:lower:"])
         if [ \$HOSTARCH == "x86_64" ]; then
@@ -71,26 +78,22 @@
         chmod 755 $WORKSPACE/bin/voltctl
         voltctl version --clientonly
 
+        
         # Default kind-voltha config doesn't work on ONF demo pod for accessing kvstore.
         # The issue is that the mgmt node is also one of the k8s nodes and so port forwarding doesn't work.
         # We should change this. In the meantime here is a workaround.
-        set +e
+        if [ "${params.branch}" == "master" ]; then
+           set +e
 
-        voltctl log level list
-        if [ \$? -ne 0 ]
-        then
-          export KVSTORE="-e \$(kubectl -n voltha get svc voltha-etcd-cluster-client -o jsonpath='{.spec.clusterIP}:{.spec.ports[0].port}')"
-        else
-          export KVSTORE=""
-        fi
 
         # Remove noise from voltha-core logs
-        voltctl \$KVSTORE log level set WARN read-write-core#github.com/opencord/voltha-go/db/model
-        voltctl \$KVSTORE log level set WARN read-write-core#github.com/opencord/voltha-lib-go/v3/pkg/kafka
+           voltctl log level set WARN read-write-core#github.com/opencord/voltha-go/db/model
+           voltctl log level set WARN read-write-core#github.com/opencord/voltha-lib-go/v3/pkg/kafka
         # Remove noise from openolt logs
-        voltctl \$KVSTORE log level set WARN adapter-open-olt#github.com/opencord/voltha-lib-go/v3/pkg/db
-        voltctl \$KVSTORE log level set WARN adapter-open-olt#github.com/opencord/voltha-lib-go/v3/pkg/probe
-        voltctl \$KVSTORE log level set WARN adapter-open-olt#github.com/opencord/voltha-lib-go/v3/pkg/kafka
+           voltctl log level set WARN adapter-open-olt#github.com/opencord/voltha-lib-go/v3/pkg/db
+           voltctl log level set WARN adapter-open-olt#github.com/opencord/voltha-lib-go/v3/pkg/probe
+           voltctl log level set WARN adapter-open-olt#github.com/opencord/voltha-lib-go/v3/pkg/kafka
+        fi
         """
       }
     }
@@ -142,7 +145,7 @@
       steps {
         sh """
         mkdir -p $ROBOT_LOGS_DIR
-        export ROBOT_MISC_ARGS="--removekeywords wuks -L TRACE -i dataplaneDt -e bbsim -e notready -d $ROBOT_LOGS_DIR -v POD_NAME:${configFileName} -v KUBERNETES_CONFIGS_DIR:$WORKSPACE/${configBaseDir}/${configKubernetesDir} -v container_log_dir:$WORKSPACE"
+        export ROBOT_MISC_ARGS="--removekeywords wuks -i dataplaneDt -e bbsim -e notready -d $ROBOT_LOGS_DIR -v POD_NAME:${configFileName} -v KUBERNETES_CONFIGS_DIR:$WORKSPACE/${configBaseDir}/${configKubernetesDir} -v container_log_dir:$WORKSPACE"
         make -C $WORKSPACE/voltha/voltha-system-tests voltha-dt-test || true
         """
       }
diff --git a/jjb/pipeline/voltha-go-tests.groovy b/jjb/pipeline/voltha-go-tests.groovy
index df0c476..e843fa8 100644
--- a/jjb/pipeline/voltha-go-tests.groovy
+++ b/jjb/pipeline/voltha-go-tests.groovy
@@ -158,6 +158,7 @@
          ## shut down voltha but leave kind-voltha cluster
          cd $HOME/kind-voltha/
          DEPLOY_K8S=n WAIT_ON_DOWN=y ./voltha down
+         kubectl delete deployment voltctl || true
          '''
          step([$class: 'RobotPublisher',
             disableArchiveOutput: false,
diff --git a/jjb/pipeline/voltha-nightly-tests-bbsim.groovy b/jjb/pipeline/voltha-nightly-tests-bbsim.groovy
index cc5ea23..f01a024 100644
--- a/jjb/pipeline/voltha-nightly-tests-bbsim.groovy
+++ b/jjb/pipeline/voltha-nightly-tests-bbsim.groovy
@@ -23,7 +23,7 @@
     label "${params.buildNode}"
   }
   options {
-      timeout(time: 40, unit: 'MINUTES')
+      timeout(time: 60, unit: 'MINUTES')
   }
   environment {
     KUBECONFIG="$HOME/.kube/kind-config-voltha-minimal"
@@ -199,6 +199,7 @@
          ## shut down voltha but leave kind-voltha cluster
          cd $HOME/kind-voltha/
          DEPLOY_K8S=n WAIT_ON_DOWN=y ./voltha down
+         kubectl delete deployment voltctl || true
          '''
          step([$class: 'RobotPublisher',
             disableArchiveOutput: false,
diff --git a/jjb/pipeline/voltha-physical-build-and-tests.groovy b/jjb/pipeline/voltha-physical-build-and-tests.groovy
index ba236dd..8395eeb 100644
--- a/jjb/pipeline/voltha-physical-build-and-tests.groovy
+++ b/jjb/pipeline/voltha-physical-build-and-tests.groovy
@@ -148,7 +148,7 @@
           echo "on master, using default settings for kind-voltha"
         fi
 
-        if ! [[ "${gerritProject}" =~ ^(voltha-system-tests)\$ ]]; then
+        if ! [[ "${gerritProject}" =~ ^(voltha-system-tests|kind-voltha|voltha-helm-charts)\$ ]]; then
           make -C $WORKSPACE/voltha/${gerritProject} DOCKER_REPOSITORY=voltha/ DOCKER_TAG=citest docker-build
           docker images | grep citest
           for image in \$(docker images -f "reference=*/*citest" --format "{{.Repository}}")
@@ -203,6 +203,16 @@
               EXTRA_HELM_FLAGS+="--set images.\$I.tag=citest,images.\$I.pullPolicy=Never "
           done
 
+          if [ "${gerritProject}" = "voltha-helm-charts" ]; then
+              export CHART_PATH=$WORKSPACE/voltha/voltha-helm-charts
+              export VOLTHA_CHART=\$CHART_PATH/voltha
+              export VOLTHA_ADAPTER_OPEN_OLT_CHART=\$CHART_PATH/voltha-adapter-openolt
+              export VOLTHA_ADAPTER_OPEN_ONU_CHART=\$CHART_PATH/voltha-adapter-openonu
+              helm dep update \$VOLTHA_CHART
+              helm dep update \$VOLTHA_ADAPTER_OPEN_OLT_CHART
+              helm dep update \$VOLTHA_ADAPTER_OPEN_ONU_CHART
+          fi
+
           cd $WORKSPACE/voltha/kind-voltha/
           echo \$EXTRA_HELM_FLAGS
           kail -n voltha -n default > $WORKSPACE/onos-voltha-combined.log &
@@ -394,9 +404,17 @@
       script {
         deployment_config.olts.each { olt ->
           sh returnStdout: false, script: """
-          sshpass -p ${olt.pass} scp ${olt.user}@${olt.ip}:/var/log/openolt.log $WORKSPACE/openolt-${olt.ip}.log || true
+          until sshpass -p ${olt.pass} scp ${olt.user}@${olt.ip}:/var/log/openolt.log $WORKSPACE/openolt-${olt.ip}.log
+          do
+              echo "Fetching openolt.log log failed, retrying..."
+              sleep 10
+          done
           sed -i 's/\\x1b\\[[0-9;]*[a-zA-Z]//g' $WORKSPACE/openolt-${olt.ip}.log  # Remove escape sequences
-          sshpass -p ${olt.pass} scp ${olt.user}@${olt.ip}:/var/log/dev_mgmt_daemon.log $WORKSPACE/dev_mgmt_daemon-${olt.ip}.log || true
+          until sshpass -p ${olt.pass} scp ${olt.user}@${olt.ip}:/var/log/dev_mgmt_daemon.log $WORKSPACE/dev_mgmt_daemon-${olt.ip}.log
+          do
+              echo "Fetching dev_mgmt_daemon.log failed, retrying..."
+              sleep 10
+          done
           sed -i 's/\\x1b\\[[0-9;]*[a-zA-Z]//g' $WORKSPACE/dev_mgmt_daemon-${olt.ip}.log  # Remove escape sequences
           """
         }
diff --git a/jjb/pipeline/voltha-physical-functional-tests.groovy b/jjb/pipeline/voltha-physical-functional-tests.groovy
index f118e07..b544d8a 100644
--- a/jjb/pipeline/voltha-physical-functional-tests.groovy
+++ b/jjb/pipeline/voltha-physical-functional-tests.groovy
@@ -37,6 +37,7 @@
       steps {
         step([$class: 'WsCleanup'])
         sh returnStdout: false, script: "git clone -b master ${cordRepoUrl}/${configBaseDir}"
+        sh returnStdout: false, script: "git clone -b master ${cordRepoUrl}/kind-voltha"
         script {
           deployment_config = readYaml file: "${configBaseDir}/${configDeploymentDir}/${configFileName}.yaml"
         }
@@ -60,8 +61,14 @@
         mkdir -p $WORKSPACE/bin
         bash <( curl -sfL https://raw.githubusercontent.com/boz/kail/master/godownloader.sh) -b "$WORKSPACE/bin"
         cd $WORKSPACE
+        if [ "${params.branch}" != "master" ]; then
+           cd $WORKSPACE/kind-voltha
+           source releases/${params.branch}
+           VC_VERSION=1.0.18
+        else
+           VC_VERSION=\$(curl -sSL https://api.github.com/repos/opencord/voltctl/releases/latest | jq -r .tag_name | sed -e 's/^v//g')
+        fi
 
-        VC_VERSION=\$(curl -sSL https://api.github.com/repos/opencord/voltctl/releases/latest | jq -r .tag_name | sed -e 's/^v//g')
         HOSTOS=\$(uname -s | tr "[:upper:]" "[:lower:"])
         HOSTARCH=\$(uname -m | tr "[:upper:]" "[:lower:"])
         if [ \$HOSTARCH == "x86_64" ]; then
@@ -71,26 +78,20 @@
         chmod 755 $WORKSPACE/bin/voltctl
         voltctl version --clientonly
 
+        if [ "${params.branch}" == "master" ]; then
         # Default kind-voltha config doesn't work on ONF demo pod for accessing kvstore.
         # The issue is that the mgmt node is also one of the k8s nodes and so port forwarding doesn't work.
         # We should change this. In the meantime here is a workaround.
-        set +e
-
-        voltctl log level list
-        if [ \$? -ne 0 ]
-        then
-          export KVSTORE="-e \$(kubectl -n voltha get svc voltha-etcd-cluster-client -o jsonpath='{.spec.clusterIP}:{.spec.ports[0].port}')"
-        else
-          export KVSTORE=""
-        fi
+           set +e
 
         # Remove noise from voltha-core logs
-        voltctl \$KVSTORE log level set WARN read-write-core#github.com/opencord/voltha-go/db/model
-        voltctl \$KVSTORE log level set WARN read-write-core#github.com/opencord/voltha-lib-go/v3/pkg/kafka
+           voltctl log level set WARN read-write-core#github.com/opencord/voltha-go/db/model
+           voltctl log level set WARN read-write-core#github.com/opencord/voltha-lib-go/v3/pkg/kafka
         # Remove noise from openolt logs
-        voltctl \$KVSTORE log level set WARN adapter-open-olt#github.com/opencord/voltha-lib-go/v3/pkg/db
-        voltctl \$KVSTORE log level set WARN adapter-open-olt#github.com/opencord/voltha-lib-go/v3/pkg/probe
-        voltctl \$KVSTORE log level set WARN adapter-open-olt#github.com/opencord/voltha-lib-go/v3/pkg/kafka
+           voltctl log level set WARN adapter-open-olt#github.com/opencord/voltha-lib-go/v3/pkg/db
+           voltctl log level set WARN adapter-open-olt#github.com/opencord/voltha-lib-go/v3/pkg/probe
+           voltctl log level set WARN adapter-open-olt#github.com/opencord/voltha-lib-go/v3/pkg/kafka
+        fi
         """
       }
     }
@@ -142,7 +143,7 @@
       steps {
         sh """
         mkdir -p $ROBOT_LOGS_DIR
-        export ROBOT_MISC_ARGS="--removekeywords wuks -L TRACE -i dataplane -e bbsim -e notready -d $ROBOT_LOGS_DIR -v POD_NAME:${configFileName} -v KUBERNETES_CONFIGS_DIR:$WORKSPACE/${configBaseDir}/${configKubernetesDir} -v container_log_dir:$WORKSPACE"
+        export ROBOT_MISC_ARGS="--removekeywords wuks -i dataplane -e bbsim -e notready -d $ROBOT_LOGS_DIR -v POD_NAME:${configFileName} -v KUBERNETES_CONFIGS_DIR:$WORKSPACE/${configBaseDir}/${configKubernetesDir} -v container_log_dir:$WORKSPACE"
         make -C $WORKSPACE/voltha/voltha-system-tests voltha-test || true
         """
       }
diff --git a/jjb/pipeline/voltha-scale-test.groovy b/jjb/pipeline/voltha-scale-test.groovy
index e2fbbe8..2222803 100644
--- a/jjb/pipeline/voltha-scale-test.groovy
+++ b/jjb/pipeline/voltha-scale-test.groovy
@@ -24,6 +24,7 @@
       timeout(time: 30, unit: 'MINUTES')
   }
   environment {
+    JENKINS_NODE_COOKIE="dontKillMe" // do not kill processes after the build is done
     KUBECONFIG="$HOME/.kube/config"
     VOLTCONFIG="$HOME/.volt/config"
     SSHPASS="karaf"
@@ -68,8 +69,6 @@
       steps {
         timeout(time: 11, unit: 'MINUTES') {
           sh returnStdout: false, script: """
-            test -e $WORKSPACE/kind-voltha/voltha && cd $WORKSPACE/kind-voltha && ./voltha down
-
             for hchart in \$(helm list -q | grep -E -v 'docker-registry|kafkacat|etcd-operator');
             do
                 echo "Purging chart: \${hchart}"
@@ -77,6 +76,8 @@
             done
             bash /home/cord/voltha-scale/wait_for_pods.sh
 
+            test -e $WORKSPACE/kind-voltha/voltha && cd $WORKSPACE/kind-voltha && ./voltha down
+
             cd $WORKSPACE
             rm -rf $WORKSPACE/*
           """
@@ -112,9 +113,14 @@
         script {
           sh(script:"""
             if [ ${volthaSystemTestsChange} != '' ] ; then
-              cd voltha-system-tests;
+              cd $WORKSPACE/voltha-system-tests;
               git fetch https://gerrit.opencord.org/voltha-system-tests ${volthaSystemTestsChange} && git checkout FETCH_HEAD
             fi
+
+            if [ ${kindVolthaChange} != '' ] ; then
+              cd $WORKSPACE/kind-voltha;
+              git fetch https://gerrit.opencord.org/kind-voltha ${volthaSystemTestsChange} && git checkout FETCH_HEAD
+            fi
             """)
         }
       }
@@ -172,6 +178,9 @@
             ./voltha up
           """
         }
+        // bbsim-sadis server takes a while to cache the subscriber entries
+        // wait for that before starting the tests
+        sleep(120)
       }
     }
     stage('Configuration') {
@@ -215,9 +224,7 @@
             cat BBSM-12345123451234512345-00000000000001-v1.json | kubectl exec -it $(kubectl get pods | grep etcd-cluster | awk 'NR==1{print $1}') etcdctl put service/voltha/omci_mibs/templates/BBSM/12345123451234512345/00000000000001
           fi
 
-          sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 log:set DEBUG org.onosproject.net.device.impl.DeviceManager
-          sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 log:set DEBUG org.onosproject.openflow.controller.impl.OpenFlowControllerImpl
-          sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 log:set DEBUG org.onosproject.openflow.controller.impl.OFChannelHandler
+          sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 log:set DEBUG org.opencord.olt
         '''
       }
     }
@@ -361,47 +368,19 @@
         kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.imageID}{'\\n'}" | sort | uniq | tee $LOG_FOLDER/pod-imagesId.txt
 
         # log in individual files for all the container that match the selector app=$APP_TO_LOG
-
-        APPS_TO_LOG=(etcd kafka onos onos-onos-classic adapter-open-onu adapter-open-olt rw-core ofagent bbsim)
+        APPS_TO_LOG=(etcd kafka onos adapter-open-onu adapter-open-olt rw-core ofagent bbsim)
         for app in "${APPS_TO_LOG[@]}"
         do
           echo "Getting logs for: ${app}"
           kubectl get pods -l app=${app} -o=jsonpath=\"{.items[*]['metadata.name']}\"
-          printf '%s\n' $(kubectl get pods -l app=$app -o=jsonpath="{.items[*]['metadata.name']}") | xargs -I@ bash -c "kubectl logs @ > $LOG_FOLDER/@.logs"
+          printf '%s\n' $(kubectl get pods -l app=$app -o=jsonpath="{.items[*]['metadata.name']}") | xargs -I@ bash -c "kubectl logs @ > $LOG_FOLDER/@.log"
+
+          # Get the logs from the previous POD if any (useful in case of restarts)
+          printf '%s\n' $(kubectl get pods -l app=$app -o=jsonpath="{.items[*]['metadata.name']}") | xargs -I@ bash -c "kubectl logs -p @ > $LOG_FOLDER/@-previous.log" || true
         done
-      '''
-      // count how many ONUs have been activated
-      sh '''
-        echo "#-of-ONUs" > $WORKSPACE/logs/voltha-devices-count.txt
-        echo $(voltctl device list | grep -v OLT | grep ACTIVE | wc -l) >> $WORKSPACE/logs/voltha-devices-count.txt
-      '''
-      // count how many ports have been discovered
-      sh '''
-        echo "#-of-ports" > $WORKSPACE/logs/onos-ports-count.txt
-        echo $(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 ports -e | grep BBSM | wc -l) >> $WORKSPACE/logs/onos-ports-count.txt
-      '''
-      // count how many flows have been provisioned
-      sh '''
-        echo "#-of-flows" > $WORKSPACE/logs/onos-flows-count.txt
-        echo $(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 flows -s | grep ADDED | wc -l) >> $WORKSPACE/logs/onos-flows-count.txt
-      '''
-      // dump and count the authenticated users
-      sh '''
-        if [ ${withOnosApps} = true ] && [ ${bbsimAuth} ] ; then
-          echo $(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 aaa-users) >> $WORKSPACE/logs/onos-aaa-users.txt
 
-          echo "#-of-authenticated-users" > $WORKSPACE/logs/onos-aaa-count.txt
-          echo $(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 aaa-users | grep AUTHORIZED_STATE | wc -l) >> $WORKSPACE/logs/onos-aaa-count.txt
-        fi
-      '''
-      // dump and count the dhcp users
-      sh '''
-        if [ ${withOnosApps} = true ] && [ ${bbsimDhcp} ] ; then
-          echo $(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 dhcpl2relay-allocations) >> $WORKSPACE/logs/onos-dhcp-allocations.txt
-
-          echo "#-of-dhcp-allocations" > $WORKSPACE/logs/onos-dhcp-count.txt
-          echo $(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 dhcpl2relay-allocations | grep DHCPACK | wc -l) >> $WORKSPACE/logs/onos-dhcp-count.txt
-        fi
+        # copy the ONOS logs directly from the container to avoid the color codes
+        printf '%s\n' $(kubectl get pods -l app=onos-onos-classic -o=jsonpath="{.items[*]['metadata.name']}") | xargs -I@ bash -c "kubectl cp @:apache-karaf-4.2.8/data/log/karaf.log $LOG_FOLDER/@.log"
       '''
       // dump all the BBSim(s) ONU informations
       sh '''
@@ -413,17 +392,51 @@
         kubectl exec -t $bbsim bbsimctl onu list > $WORKSPACE/logs/$bbsim-device-list.txt
       done
       '''
-      // get ports and flows from ONOS
+      // get ONOS debug infos
       sh '''
         sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 ports > $WORKSPACE/logs/onos-ports-list.txt
-        sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 flows -s > $WORKSPACE/logs/onos-flows-list.txt
+
+        if [ ${withFlows} = true ] ; then
+          sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 flows -s > $WORKSPACE/logs/onos-flows-list.txt
+          sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 meters > $WORKSPACE/logs/onos-meters-list.txt
+        fi
+
+        if [ ${provisionSubscribers} = true ]; then
+          sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 volt-programmed-subscribers > $WORKSPACE/logs/onos-programmed-subscribers.txt
+          sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 volt-programmed-meters > $WORKSPACE/logs/onos-programmed-meters.txt
+        fi
+
+        if [ ${withOnosApps} = true ] && [ ${withEapol} = true ] ; then
+          sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 aaa-users > $WORKSPACE/logs/onos-aaa-users.txt
+        fi
+
+        if [ ${withOnosApps} = true ] && [ ${withDhcp} = true ] ; then
+          sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 dhcpl2relay-allocations > $WORKSPACE/logs/onos-dhcp-allocations.txt
+        fi
       '''
-      // dump all the VOLTHA devices informations
+      // get cpu usage by container
+      sh '''
+        curl -s -X GET -G http://10.90.0.101:31301/api/v1/query --data-urlencode 'query=avg(rate(container_cpu_usage_seconds_total[10m])*100) by (pod_name)' | jq . > $WORKSPACE/cpu-usage.json
+      '''
+      // collect etcd metrics
+      sh '''
+        mkdir $WORKSPACE/etcd-metrics
+        curl -s -X GET -G http://10.90.0.101:31301/api/v1/query --data-urlencode 'query=etcd_debugging_mvcc_keys_total' | jq '.data.result[0].value[1]' > $WORKSPACE/etcd-metrics/etcd-key-count.json
+        curl -s -X GET -G http://10.90.0.101:31301/api/v1/query --data-urlencode 'query=grpc_server_handled_total{grpc_code="OK",grpc_service="etcdserverpb.KV"}' | jq . > $WORKSPACE/etcd-metrics/etcd-rpc-count.json
+        curl -s -X GET -G http://10.90.0.101:31301/api/v1/query --data-urlencode 'query=etcd_debugging_mvcc_db_total_size_in_bytes' | jq '.data.result[0].value[1]' > $WORKSPACE/etcd-metrics/etcd-db-size.json
+      '''
+      // get VOLTHA debug infos
       script {
         try {
           sh '''
           voltctl device list -o json > $WORKSPACE/logs/device-list.json
           python -m json.tool $WORKSPACE/logs/device-list.json > $WORKSPACE/logs/voltha-devices-list.json
+
+          printf '%s\n' $(voltctl device list | grep olt | awk '{print $1}') | xargs -I@ bash -c "voltctl device flows @ > $WORKSPACE/logs/voltha-device-flows-@.txt"
+          printf '%s\n' $(voltctl device list | grep olt | awk '{print $1}') | xargs -I@ bash -c "voltctl device port list --format 'table{{.PortNo}}\t{{.Label}}\t{{.Type}}\t{{.AdminState}}\t{{.OperStatus}}' @ > $WORKSPACE/logs/voltha-device-ports-@.txt"
+
+          printf '%s\n' $(voltctl logicaldevice list -q) | xargs -I@ bash -c "voltctl logicaldevice flows @ > $WORKSPACE/logs/voltha-logicaldevice-flows-@.txt"
+          printf '%s\n' $(voltctl logicaldevice list -q) | xargs -I@ bash -c "voltctl logicaldevice port list @ > $WORKSPACE/logs/voltha-logicaldevice-ports-@.txt"
           '''
         } catch(e) {
           sh '''
diff --git a/jjb/verify/device-management-interface.yaml b/jjb/verify/device-management-interface.yaml
new file mode 100644
index 0000000..c4498e7
--- /dev/null
+++ b/jjb/verify/device-management-interface.yaml
@@ -0,0 +1,17 @@
+---
+# verification jobs for 'device-management-interface' repo
+
+- project:
+    name: device-management-interface
+    project: '{name}'
+
+    jobs:
+      - 'verify-device-management-interface-jobs':
+          branch-regexp: '{all-branches-regexp}'
+
+- job-group:
+    name: 'verify-device-management-interface-jobs'
+    jobs:
+      - 'verify-licensed'
+      - 'tag-collision-reject'
+      - 'make-unit-test'
diff --git a/jjb/voltha-e2e.yaml b/jjb/voltha-e2e.yaml
index a89f908..ee1fa0c 100644
--- a/jjb/voltha-e2e.yaml
+++ b/jjb/voltha-e2e.yaml
@@ -121,8 +121,8 @@
           name: 'verify_physical_voltha_patchset_auto'
           build-node: 'tucson-pod'
           config-pod: 'tucson-pod'
-          oltDebVersionMaster: 'openolt_asfvolt16-2.4.6-5d9ab1a36e13e55ca3687af160cfd4f582317493.deb'
-          oltDebVersionVoltha23: 'openolt_asfvolt16-2.4.3-c636279643a1cac3128395cc9fc22977e8edc46d.deb'
+          oltDebVersionMaster: 'openolt_asfvolt16-2.4.9-dev-5057a3db7f0c73ef23903901514159963d1ef7a2.deb'
+          oltDebVersionVoltha23: 'openolt_asfvolt16-2.4.9-dev-5057a3db7f0c73ef23903901514159963d1ef7a2.deb'
           profile: 'Default'
 
       # Per-patchset Pod builds on Tucson pod
@@ -130,8 +130,8 @@
           name: 'verify_physical_voltha_patchset_manual'
           build-node: 'tucson-pod'
           config-pod: 'tucson-pod'
-          oltDebVersionMaster: 'openolt_asfvolt16-2.4.6-5d9ab1a36e13e55ca3687af160cfd4f582317493.deb'
-          oltDebVersionVoltha23: 'openolt_asfvolt16-2.4.3-c636279643a1cac3128395cc9fc22977e8edc46d.deb'
+          oltDebVersionMaster: 'openolt_asfvolt16-2.4.9-dev-5057a3db7f0c73ef23903901514159963d1ef7a2.deb'
+          oltDebVersionVoltha23: 'openolt_asfvolt16-2.4.9-dev-5057a3db7f0c73ef23903901514159963d1ef7a2.deb'
           profile: 'Default'
 
       # Manual build job for Tucson pod
@@ -141,8 +141,8 @@
           build-node: 'tucson-pod'
           config-pod: 'tucson-pod'
           manualBranch: 'master'
-          oltDebVersionMaster: 'openolt_asfvolt16-2.4.6-5d9ab1a36e13e55ca3687af160cfd4f582317493.deb'
-          oltDebVersionVoltha23: 'openolt_asfvolt16-2.4.3-c636279643a1cac3128395cc9fc22977e8edc46d.deb'
+          oltDebVersionMaster: 'openolt_asfvolt16-2.4.9-dev-5057a3db7f0c73ef23903901514159963d1ef7a2.deb'
+          oltDebVersionVoltha23: 'openolt_asfvolt16-2.4.9-dev-5057a3db7f0c73ef23903901514159963d1ef7a2.deb'
           profile: 'Default'
 
 - job-template:
@@ -437,7 +437,7 @@
 
       - string:
           name: extraRobotArgs
-          default: '-i sanityORDeleteOLT'
+          default: '-i sanityORDeleteOLT -X'
           description: 'Arguments to pass to robot'
 
     project-type: pipeline
@@ -579,7 +579,7 @@
 
       - string:
           name: extraRobotArgs
-          default: '-i sanityORDeleteOLT'
+          default: '-i sanityORDeleteOLT -X'
           description: 'Arguments to pass to robot'
 
     project-type: pipeline
@@ -602,7 +602,7 @@
                 comment-contains-value: '^hardware test with delay$'
           projects:
             - project-compare-type: REG_EXP
-              project-pattern: '^(voltha-go|voltha-openolt-adapter|voltha-openonu-adapter|voltha-api-server|voltha-system-tests|ofagent-py|ofagent-go|voltha-onos)$'
+              project-pattern: '^(voltha-go|voltha-openolt-adapter|voltha-openonu-adapter|voltha-api-server|voltha-system-tests|ofagent-py|ofagent-go|voltha-onos|kind-voltha|voltha-helm-charts)$'
               branches:
                 - branch-compare-type: REG_EXP
                   branch-pattern: '{all-branches-regexp}'
@@ -722,7 +722,7 @@
 
       - string:
           name: extraRobotArgs
-          default: '-e bbsim'
+          default: '-e bbsim -X'
           description: 'Arguments to pass to robot'
 
     project-type: pipeline
diff --git a/jjb/voltha-scale.yaml b/jjb/voltha-scale.yaml
index ed6dd76..a02386c 100644
--- a/jjb/voltha-scale.yaml
+++ b/jjb/voltha-scale.yaml
@@ -125,97 +125,127 @@
           openonuAdapterReplicas: 8
           onosReplicas: 3
           atomixReplicas: 3
-          extraHelmFlags: '--set auth=false --set memoryLimit=8192Mi'
-      # - 'voltha-scale-measurements':
-      #     name: 'voltha-scale-measurements-1-16-32-att-subscribers'
-      #     build-node: 'onf-pod1-head-node'
-      #     time-trigger: "H H/4 * * *"
-      #     olts: 1
-      #     pons: 16
-      #     onus: 32
-      #     withFlows: true
-      #     provisionSubscribers: true
-      #     withEapol: true
-      #     withDhcp: true
-      #     withIgmp: false
-      #     openonuAdapterReplicas: 8
-      #     onosReplicas: 3
-      #     atomixReplicas: 3
-      #
-      # # jobs for DT with 512 ONUs with a 8 openonu-adapters and clustered ONOS.
-      # - 'voltha-scale-measurements':
-      #     name: 'voltha-scale-measurements-1-16-32-dt-subscribers'
-      #     build-node: 'onf-pod1-head-node'
-      #     time-trigger: "H H/4 * * *"
-      #     olts: 1
-      #     pons: 16
-      #     onus: 32
-      #     withFlows: true
-      #     provisionSubscribers: true
-      #     workflow: dt
-      #     withEapol: false
-      #     withDhcp: false
-      #     withIgmp: false
-      #     openonuAdapterReplicas: 8
-      #     onosReplicas: 3
-      #     atomixReplicas: 3
+          extraHelmFlags: '--set auth=false --set memoryLimit=8192Mi '
+
+
+      - 'voltha-scale-measurements':
+          name: 'voltha-scale-measurements-1-16-32-att-subscribers'
+          build-node: 'onf-pod1-head-node'
+          time-trigger: "H H/4 * * *"
+          olts: 1
+          pons: 16
+          onus: 32
+          withFlows: true
+          provisionSubscribers: true
+          withEapol: true
+          withDhcp: true
+          withIgmp: false
+          openonuAdapterReplicas: 8
+          onosReplicas: 3
+          atomixReplicas: 3
+          extraHelmFlags: '--set memoryLimit=8192Mi --set defaults.rw_core.timeout=30s'
+
+
+      # jobs for DT with 512 ONUs with a 8 openonu-adapters and clustered ONOS.
+      - 'voltha-scale-measurements':
+          name: 'voltha-scale-measurements-1-16-32-dt-subscribers'
+          build-node: 'onf-pod1-head-node'
+          time-trigger: "H H/4 * * *"
+          olts: 1
+          pons: 16
+          onus: 32
+          withFlows: true
+          provisionSubscribers: true
+          workflow: dt
+          withEapol: false
+          withDhcp: false
+          withIgmp: false
+          openonuAdapterReplicas: 8
+          onosReplicas: 3
+          atomixReplicas: 3
+          extraHelmFlags: '--set memoryLimit=8192Mi '
+
 
       # jobs for 1024 ONUs with a 8 openonu-adapters and clustered ONOS (2 OLTs)
-      # - 'voltha-scale-measurements':
-      #     disabled: true
-      #     name: 'voltha-scale-measurements-2-16-32-activation'
-      #     build-node: 'onf-pod1-head-node'
-      #     time-trigger: "H H/4 * * *"
-      #     olts: 2
-      #     pons: 16
-      #     onus: 32
-      #     withFlows: false
-      #     provisionSubscribers: false
-      #     withEapol: false
-      #     withDhcp: false
-      #     withIgmp: false
-      #     openonuAdapterReplicas: 8
-      #     onosReplicas: 3
-      #     atomixReplicas: 3
-      # - 'voltha-scale-measurements':
-      #     disabled: true
-      #     name: 'voltha-scale-measurements-2-16-32-att-flows'
-      #     build-node: 'onf-pod1-head-node'
-      #     time-trigger: "H H/4 * * *"
-      #     olts: 2
-      #     pons: 16
-      #     onus: 32
-      #     withFlows: true
-      #     provisionSubscribers: false
-      #     withEapol: true
-      #     withDhcp: true
-      #     withIgmp: false
-      #     openonuAdapterReplicas: 8
-      #     onosReplicas: 3
-      #     atomixReplicas: 3
-      #     extraHelmFlags: '--set auth=false '
-      # - 'voltha-scale-measurements':
-      #     disabled: true
-      #     name: 'voltha-scale-measurements-2-16-32-att-subscribers'
-      #     build-node: 'onf-pod1-head-node'
-      #     time-trigger: "H H/4 * * *"
-      #     olts: 2
-      #     pons: 16
-      #     onus: 32
-      #     withFlows: true
-      #     provisionSubscribers: true
-      #     withEapol: true
-      #     withDhcp: true
-      #     withIgmp: false
-      #     openonuAdapterReplicas: 8
-      #     onosReplicas: 3
-      #     atomixReplicas: 3
+      - 'voltha-scale-measurements':
+          disabled: true
+          name: 'voltha-scale-measurements-2-16-32-activation'
+          build-node: 'onf-pod1-head-node'
+          time-trigger: "H H/4 * * *"
+          olts: 2
+          pons: 16
+          onus: 32
+          withFlows: false
+          provisionSubscribers: false
+          withEapol: false
+          withDhcp: false
+          withIgmp: false
+          openonuAdapterReplicas: 8
+          onosReplicas: 3
+          atomixReplicas: 3
+          extraHelmFlags: '--set memoryLimit=8192Mi '
+
+      - 'voltha-scale-measurements':
+          disabled: true
+          name: 'voltha-scale-measurements-2-16-32-att-flows'
+          build-node: 'onf-pod1-head-node'
+          time-trigger: "H H/4 * * *"
+          olts: 2
+          pons: 16
+          onus: 32
+          withFlows: true
+          provisionSubscribers: false
+          withEapol: true
+          withDhcp: true
+          withIgmp: false
+          openonuAdapterReplicas: 8
+          onosReplicas: 3
+          atomixReplicas: 3
+          extraHelmFlags: '--set memoryLimit=8192Mi --set auth=false '
+
+      - 'voltha-scale-measurements':
+          disabled: true
+          name: 'voltha-scale-measurements-2-16-32-att-subscribers'
+          build-node: 'onf-pod1-head-node'
+          time-trigger: "H H/4 * * *"
+          olts: 2
+          pons: 16
+          onus: 32
+          withFlows: true
+          provisionSubscribers: true
+          withEapol: true
+          withDhcp: true
+          withIgmp: false
+          openonuAdapterReplicas: 8
+          onosReplicas: 3
+          atomixReplicas: 3
+          extraHelmFlags: '--set memoryLimit=8192Mi --set defaults.rw_core.timeout=30s'
+
+      # jobs for DT with 512 ONUs with a 8 openonu-adapters and clustered ONOS.
+      - 'voltha-scale-measurements':
+          name: 'voltha-scale-measurements-2-16-32-dt-subscribers'
+          build-node: 'onf-pod1-head-node'
+          time-trigger: "H H/4 * * *"
+          olts: 2
+          pons: 16
+          onus: 32
+          withFlows: true
+          provisionSubscribers: true
+          workflow: dt
+          withEapol: false
+          withDhcp: false
+          withIgmp: false
+          openonuAdapterReplicas: 8
+          onosReplicas: 3
+          atomixReplicas: 3
+          extraHelmFlags: '--set memoryLimit=8192Mi --set defaults.rw_core.timeout=30s'
 
       # development pipeline
       - 'voltha-scale-measurements-dev':
           name: 'voltha-scale-measurements-dev'
           build-node: 'voltha-scale'
 
+
 - job-template:
     id: 'voltha-scale-measurements'
     name: '{name}'
@@ -268,6 +298,8 @@
     atomixReplicas: 0
     extraHelmFlags: ''
     onosStatInterval: 5
+    volthaSystemTestsChange: ''
+    kindVolthaChange: ''
 
     parameters:
       - string:
@@ -422,9 +454,14 @@
 
       - string:
           name: volthaSystemTestsChange
-          default: ''
+          default: '{volthaSystemTestsChange}'
           description: 'Download a change for gerrit in the voltha-system-tests repo, example value: "refs/changes/79/18779/13"'
 
+      - string:
+          name: kindVolthaChange
+          default: '{kindVolthaChange}'
+          description: 'Download a change for gerrit in the kind-voltha repo, example value: "refs/changes/32/19132/1"'
+
     project-type: pipeline
     concurrent: false
 
@@ -626,6 +663,11 @@
           default: ''
           description: 'Download a change for gerrit in the voltha-system-tests repo, example value: "refs/changes/79/18779/13"'
 
+      - string:
+          name: kindVolthaChange
+          default: ''
+          description: 'Download a change for gerrit in the kind-voltha repo, example value: "refs/changes/32/19132/1"'
+
     project-type: pipeline
     concurrent: false