Merge "Adding list of running pods in the voltha-scale-measurement pipeline"
diff --git a/jjb/comac-in-a-box.yaml b/jjb/comac-in-a-box.yaml
new file mode 100644
index 0000000..8fa4a6f
--- /dev/null
+++ b/jjb/comac-in-a-box.yaml
@@ -0,0 +1,76 @@
+# COMAC in a box test for helm-charts repo
+
+- job-template:
+    id: 'comac-in-a-box'
+    name: '{name}'
+    project-type: pipeline
+
+    pipeline-script: 'comac-in-a-box.groovy'
+
+    description: |
+      Automated build on AMI executor using {pipeline-script}. <br /><br />
+      Created from job-template {id} from ci-management/jjb/charts.yaml <br />
+      Created by Jeremy Ronquillo, jeremyr@opennetworking.org <br />
+      Copyright (c) 2020 Open Networking Foundation (ONF)
+
+    triggers:
+      - gerrit:
+          server-name: '{gerrit-server-name}'
+          dependency-jobs: '{dependency-jobs}'
+          trigger-on:
+            - patchset-created-event:
+                exclude-drafts: true
+                exclude-trivial-rebase: false
+                exclude-no-code-change: true
+            - draft-published-event
+            - comment-added-contains-event:
+                comment-contains-value: '(?i)^.*recheck$'
+          projects:
+            - project-compare-type: REG_EXP
+              project-pattern: 'helm-charts'
+              branches:
+                - branch-compare-type: REG_EXP
+                  branch-pattern: '{all-branches-regexp}'
+              file-paths:
+                - compare-type: REG_EXP
+                  pattern: 'omec/.*'
+                - compare-type: REG_EXP
+                  pattern: 'aether-apps/.*'
+
+    properties:
+      - cord-infra-properties:
+          build-days-to-keep: '{build-days-to-keep}'
+          artifact-num-to-keep: '{artifact-num-to-keep}'
+
+    wrappers:
+      - lf-infra-wrappers:
+          build-timeout: '{build-timeout}'
+          jenkins-ssh-credential: '{jenkins-ssh-credential}'
+
+    parameters:
+      - string:
+          name: buildNode
+          default: 'comac_in_a_box'
+          description: 'Name of the Jenkins executor node to run the job on'
+      - string:
+          name: GERRIT_REFSPEC
+          default: '$GERRIT_REFSPEC'
+          description: 'Gerrit ref to fetch.' 
+      - string:
+          name: gitUrl
+          default: '{gerrit-server-url}/$GERRIT_PROJECT'
+          description: 'URL to the git repo'
+    scm:
+      - lf-infra-gerrit-scm:
+          git-url: '$GIT_URL/$GERRIT_PROJECT'
+          refspec: '$GERRIT_REFSPEC'
+          branch: '$GERRIT_BRANCH'
+          submodule-disable: '{submodule-disable}'
+          submodule-recursive: 'false'
+          submodule-timeout: '{submodule-timeout}'
+          choosing-strategy: gerrit
+          jenkins-ssh-credential: '{jenkins-ssh-credential}'
+
+    concurrent: false
+
+    dsl: !include-raw-escape: pipeline/{pipeline-script}
diff --git a/jjb/cord-test/nightly-build-pipeline.yaml b/jjb/cord-test/nightly-build-pipeline.yaml
index e784f69..76da0cb 100644
--- a/jjb/cord-test/nightly-build-pipeline.yaml
+++ b/jjb/cord-test/nightly-build-pipeline.yaml
@@ -917,6 +917,11 @@
           default: '{work-flow}'
           description: 'Installs the specified work flow on the POD'
 
+      - string:
+          name: NumOfOpenOnu
+          default: '{num-of-openonu}'
+          description: 'Installs the specified Number of OpenOnu Adapters'
+
       - bool:
           name: configurePod
           default: true
diff --git a/jjb/cord-test/voltha.yaml b/jjb/cord-test/voltha.yaml
index c461759..f9f64b0 100644
--- a/jjb/cord-test/voltha.yaml
+++ b/jjb/cord-test/voltha.yaml
@@ -11,6 +11,7 @@
     with-kind: false
     power-switch: False
     work-flow: ''
+    num-of-openonu: '1'
 
     jobs:
       # flex OCP pod with olt/onu - manual test job, voltha master build job
@@ -59,6 +60,7 @@
           config-pod: 'flex-ocp-cord'
           release: 'master'
           branch: 'master'
+          num-of-openonu: '2'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-build'
           oltDebVersion: 'openolt_asfvolt16-2.3.0-bc6e0853e0e8bf6bd7e4223d4a7ee0dd35ce634d.deb'
@@ -82,6 +84,7 @@
           config-pod: 'flex-ocp-cord'
           release: 'master'
           branch: 'master'
+          num-of-openonu: '2'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-build'
           oltDebVersion: 'openolt_asfvolt16-2.3.0-bc6e0853e0e8bf6bd7e4223d4a7ee0dd35ce634d.deb'
@@ -128,6 +131,7 @@
           config-pod: 'onf-demo-pod'
           release: 'master'
           branch: 'master'
+          num-of-openonu: '2'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-build'
           oltDebVersion: 'openolt_asfvolt16-2.3.0-bc6e0853e0e8bf6bd7e4223d4a7ee0dd35ce634d.deb'
@@ -172,6 +176,7 @@
           config-pod: 'onf-demo-pod'
           release: 'master'
           branch: 'master'
+          num-of-openonu: '2'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-build'
           oltDebVersion: 'openolt_asfvolt16-2.3.0-bc6e0853e0e8bf6bd7e4223d4a7ee0dd35ce634d.deb'
@@ -194,6 +199,7 @@
           config-pod: 'onf-demo-pod'
           release: 'master'
           branch: 'master'
+          num-of-openonu: '2'
           name-extension: '_DT'
           work-flow: 'DT'
           test-repo: 'voltha-system-tests'
@@ -287,6 +293,7 @@
           config-pod: 'infosys-pod'
           release: 'master'
           branch: 'master'
+          num-of-openonu: '2'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-build'
           oltDebVersion: 'openolt_asfvolt16-2.3.0-bc6e0853e0e8bf6bd7e4223d4a7ee0dd35ce634d.deb'
@@ -332,6 +339,7 @@
           config-pod: 'dt-berlin-pod'
           release: 'master'
           branch: 'master'
+          num-of-openonu: '2'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-build'
           oltDebVersion: 'openolt_asfvolt16-2.3.0-bc6e0853e0e8bf6bd7e4223d4a7ee0dd35ce634d.deb'
@@ -382,6 +390,7 @@
           config-pod: 'dt-berlin-pod-gpon'
           release: 'master'
           branch: 'master'
+          num-of-openonu: '2'
           name-extension: '_DT'
           work-flow: 'DT'
           test-repo: 'voltha-system-tests'
diff --git a/jjb/defaults.yaml b/jjb/defaults.yaml
index c48cf5f..7eb22bd 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)$'
+    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)$'
 
     # 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 a5c0092..a06ac4f 100644
--- a/jjb/omec-ci.yaml
+++ b/jjb/omec-ci.yaml
@@ -20,7 +20,7 @@
           project: '{name}'
           build-node: 'omec-qa'
           c3po-branch-name: 'multiUpfs'
-          ngic-branch-name: 'master'
+          ngic-branch-name: 'central-cp-multi-upfs'
           openmme-branch-name: 'paging'
           pipeline-file: 'omec-postmerge.groovy'
 
@@ -42,6 +42,7 @@
           pipeline-file: 'Jenkinsfile-omec-combined.groovy'
       - 'omec-install':
           sub-project: '{name}'
+          branch: 'central-cp-multi-upfs'
           pipeline-file: 'Jenkinsfile-omec-install-ngic-rtc-vnf.groovy'
       - 'omec-fossa':
           pipeline-file: 'omec-fossa-scan.groovy'
@@ -72,9 +73,11 @@
           pipeline-file: 'Jenkinsfile-omec-combined.groovy'
       - 'omec-install':
           sub-project: 'c3po-sgx'
+          branch: 'master'
           pipeline-file: 'Jenkinsfile-omec-install-c3po-sgx-vnf.groovy'
       - 'omec-install':
           sub-project: 'c3po-hss'
+          branch: 'master'
           pipeline-file: 'Jenkinsfile-omec-install-c3po-hss-vnf.groovy'
       - 'omec-fossa':
           pipeline-file: 'omec-fossa-scan.groovy'
@@ -105,6 +108,7 @@
           pipeline-file: 'Jenkinsfile-omec-combined.groovy'
       - 'omec-install':
           sub-project: '{name}'
+          branch: 'paging'
           pipeline-file: 'Jenkinsfile-omec-install-openmme-vnf.groovy'
       - 'omec-fossa':
           pipeline-file: 'omec-fossa-scan.groovy'
@@ -289,6 +293,11 @@
           default: '{project}'
           description: 'Name of the project'
 
+      - string:
+          name: branch
+          default: '{branch}'
+          description: 'Branch of the project'
+
     concurrent: false
 
     pipeline-scm:
@@ -467,7 +476,7 @@
     description: |
       Automated build on AMI executor using pipeline/omec-deploy-staging.groovy. <br /><br />
       Created from job-template {id} from ci-management/jjb/charts.yaml <br />
-      Created by Jeremy Ronquillo, jeremyr@opennetworking.org <br />
+      Created by Jeremy Ronquillo - jeremyr@opennetworking.org <br />
       Copyright (c) 2020 Open Networking Foundation (ONF)
 
     properties:
@@ -485,10 +494,14 @@
           name: buildNode
           default: 'omec-staging'
           description: 'Name of the Jenkins executor node to run the job on.'
+      - bool:
+          name: useProductionCluster
+          default: false
+          description: 'Check this option to use the production cluster instead of the staging cluster. <b>Use with caution.</b>'
       - string:
           name: registry
           default: 'omecproject'
-          description: 'Registry for all images.'
+          description: 'Registry for all images that will be changed.'
       - string:
           name: hssdb_tag
           default: ''
diff --git a/jjb/pipeline/comac-in-a-box.groovy b/jjb/pipeline/comac-in-a-box.groovy
new file mode 100644
index 0000000..a4a4688
--- /dev/null
+++ b/jjb/pipeline/comac-in-a-box.groovy
@@ -0,0 +1,58 @@
+// Copyright 2020-present Open Networking Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// comac-in-a-box build+test
+// steps taken from https://guide.opencord.org/profiles/comac/install/ciab.html
+
+pipeline {
+
+  /* no label, executor is determined by JJB */
+  agent {
+    label "${params.buildNode}"
+  }
+
+  options {
+    timeout(time: 1, unit: 'HOURS')
+  }
+
+  stages {
+    stage ("Fetch Helm-Charts Changes"){
+      steps {
+        sh label: 'Fetch helm-charts Gerrit Changes', script: """
+          cd cord/helm-charts/
+          pwd
+          if [ ! -z "${GERRIT_REFSPEC}" ]
+          then
+            echo "Checking out Gerrit patchset: ${GERRIT_REFSPEC}"
+            git fetch ${gitUrl} ${GERRIT_REFSPEC} && git checkout FETCH_HEAD
+          else
+            echo "GERRIT_REFSPEC not provided. Checking out master branch."
+            git checkout master
+          fi
+          """
+      }
+    }
+
+    stage ("Run COMAC-in-a-box"){
+      steps {
+        sh label: 'Run Makefile', script: '''
+          HOME=$(pwd)
+          cd automation-tools/comac-in-a-box/
+          sudo make reset-test
+          sudo make test
+          '''
+      }
+    }
+  }
+}
diff --git a/jjb/pipeline/omec-deploy-staging.groovy b/jjb/pipeline/omec-deploy-staging.groovy
index 2b48fed..87f8aa3 100644
--- a/jjb/pipeline/omec-deploy-staging.groovy
+++ b/jjb/pipeline/omec-deploy-staging.groovy
@@ -15,6 +15,13 @@
 // Jenkinsfile-omec-deploy-staging.groovy: Changes staging images in
 // omec-cp.yaml and omec-dp.yaml based on params and deploys omec staging.
 // Mainly triggered from omec-postmerge after publishing docker images.
+// Can deploy in production (manual trigger only).
+
+dp_context = ""
+omec_cp = ""
+omec_dp = ""
+accelleran_cbrs_common = ""
+accelleran_cbrs_cu = ""
 
 pipeline {
 
@@ -23,22 +30,55 @@
     label "${params.buildNode}"
   }
 
-  /* locations of omec-cp.yaml and omec-dp.yaml */
   environment {
-    omec_cp = "~/pod-configs/deployment-configs/aether/apps/gcp-stg/omec-cp.yaml"
-    omec_dp = "~/pod-configs/deployment-configs/aether/apps/menlo-stg/omec-dp.yaml"
+      vm = "comac@192.168.122.57"
   }
 
   stages {
+    stage('Environment Setup') {
+        steps {
+            script {
+                if (params.useProductionCluster) {
+                    dp_context = "production-edge-demo"
+                    omec_cp = "~/pod-configs/deployment-configs/aether/apps/gcp-prd/omec-cp.yaml"
+                    omec_dp = "~/pod-configs/deployment-configs/aether/apps/menlo-demo/omec-dp-cbrs.yaml"
+                    accelleran_cbrs_common = "~/pod-configs/deployment-configs/aether/apps/menlo-demo/accelleran-cbrs-common.yaml"
+                    accelleran_cbrs_cu = "~/pod-configs/deployment-configs/aether/apps/menlo-demo/accelleran-cbrs-cu.yaml"
+                    sh script: "ssh ${env.vm} 'cp ~/.kube/omec_production_config ~/.kube/config'"
+                    println "Using PRODUCTION cluster."
+                } else {
+                    dp_context = "staging-edge-onf-menlo"
+                    omec_cp = "~/pod-configs/deployment-configs/aether/apps/gcp-stg/omec-cp.yaml"
+                    omec_dp = "~/pod-configs/deployment-configs/aether/apps/menlo-stg/omec-dp.yaml"
+                    accelleran_cbrs_common = "~/pod-configs/deployment-configs/aether/apps/menlo-stg/accelleran-cbrs-common.yaml"
+                    accelleran_cbrs_cu = "~/pod-configs/deployment-configs/aether/apps/menlo-stg/accelleran-cbrs-cu.yaml"
+                    sh script: "ssh ${env.vm} 'cp ~/.kube/omec_staging_config ~/.kube/config'"
+                    println "Using STAGING cluster."
+                }
+            }
+        }
+    }
+    stage('Reset Staging') {
+      steps {
+        sh label: 'Reset Deployment', script: """
+          ssh ${env.vm} '
+            helm delete --purge --kube-context staging-edge-onf-menlo accelleran-cbrs-cu | true
+            helm delete --purge --kube-context staging-edge-onf-menlo accelleran-cbrs-common | true
+            helm delete --purge --kube-context staging-edge-onf-menlo omec-data-plane | true
+            helm delete --purge --kube-context staging-central-gcp omec-control-plane | true
+          '
+        """
+      }
+    }
     stage('Change Staging Images Config') {
       steps {
         sh label: 'Change Staging Images Config', script: """
-          ssh comac@192.168.122.57 '
+          ssh ${env.vm} '
 
             # if hssdb tag is provided, change hssdb tag in omec_cp.yaml.
             if [ ! -z "${params.hssdb_tag}" ]
             then
-              sed -i "s;hssdb: .*;hssdb: \\"${params.registry}/c3po-hssdb:${params.hssdb_tag}\\";" ${env.omec_cp}
+              sed -i "s;hssdb: .*;hssdb: \\"${params.registry}/c3po-hssdb:${params.hssdb_tag}\\";" ${omec_cp}
               echo "Changed hssdb tag."
             else
               echo "hssdb tag not provided. Not changing."
@@ -47,7 +87,7 @@
             # if hss tag is provided, change hss tag in omec_cp.yaml.
             if [ ! -z "${params.hss_tag}" ]
             then
-              sed -i "s;hss: .*;hss: \\"${params.registry}/c3po-hss:${params.hss_tag}\\";" ${env.omec_cp}
+              sed -i "s;hss: .*;hss: \\"${params.registry}/c3po-hss:${params.hss_tag}\\";" ${omec_cp}
               echo "Changed hss tag."
             else
               echo "hss tag not provided. Not changing."
@@ -56,7 +96,7 @@
             # if mme tag is provided, change mme tag in omec_cp.yaml.
             if [ ! -z "${params.mme_tag}" ]
             then
-              sed -i "s;mme: .*;mme: \\"${params.registry}/openmme:${params.mme_tag}\\";" ${env.omec_cp}
+              sed -i "s;mme: .*;mme: \\"${params.registry}/openmme:${params.mme_tag}\\";" ${omec_cp}
               echo "Changed mme tag."
             else
               echo "mme tag not provided. Not changing."
@@ -65,7 +105,7 @@
             # if mmeExporter tag is provided, change mmeExporter tag in omec_cp.yaml.
             if [ ! -z "${params.mmeExporter_tag}" ]
             then
-              sed -i "s;mmeExporter: .*;mmeExporter: \\"${params.registry}/mme-exporter:${params.mmeExporter_tag}\\";" ${env.omec_cp}
+              sed -i "s;mmeExporter: .*;mmeExporter: \\"${params.registry}/mme-exporter:${params.mmeExporter_tag}\\";" ${omec_cp}
               echo "Changed mmeExporter tag."
             else
               echo "mmeExporter tag not provided. Not changing."
@@ -74,7 +114,7 @@
             # if spgwc tag is provided, change spgwc tag in omec_cp.yaml.
             if [ ! -z "${params.spgwc_tag}" ]
             then
-              sed -i "s;spgwc: .*;spgwc: \\"${params.registry}/ngic-cp:${params.spgwc_tag}\\";" ${env.omec_cp}
+              sed -i "s;spgwc: .*;spgwc: \\"${params.registry}/ngic-cp:${params.spgwc_tag}\\";" ${omec_cp}
               echo "Changed spgwc tag."
             else
               echo "spgwc tag not provided. Not changing."
@@ -83,7 +123,7 @@
             # if spgwu tag is provided, change spgwu tag in omec_dp.yaml.
             if [ ! -z "${params.spgwu_tag}" ]
             then
-              sed -i "s;spgwu: .*;spgwu: \\"${params.registry}/ngic-dp:${params.spgwu_tag}\\";" ${env.omec_dp}
+              sed -i "s;spgwu: .*;spgwu: \\"${params.registry}/ngic-dp:${params.spgwu_tag}\\";" ${omec_dp}
               echo "Changed spgwu tag."
             else
               echo "spgwu tag not provided. Not changing."
@@ -91,20 +131,20 @@
 
             # display omec-cp.yaml
             echo "omec_cp:"
-            cat ${env.omec_cp}
+            cat ${omec_cp}
 
             # display omec-dp.yaml
             echo "omec_dp:"
-            cat ${env.omec_dp}
+            cat ${omec_dp}
             '
           """
       }
     }
 
-    stage('Deploy: staging-central-gcp') {
+    stage('Deploy Control Plane') {
       steps {
-        sh label: 'staging-central-gcp', script: '''
-          ssh comac@192.168.122.57 '
+        sh label: 'staging-central-gcp', script: """
+          ssh ${env.vm} '
             kubectl config use-context staging-central-gcp
 
             helm del --purge omec-control-plane | true
@@ -112,7 +152,7 @@
             helm install --kube-context staging-central-gcp \
                          --name omec-control-plane \
                          --namespace omec \
-                         --values pod-configs/deployment-configs/aether/apps/gcp-stg/omec-cp.yaml \
+                         --values ${omec_cp} \
                          cord/omec-control-plane
 
             kubectl --context staging-central-gcp -n omec wait \
@@ -120,60 +160,60 @@
                          --timeout=300s \
                          pod -l app=spgwc
             '
-          '''
+          """
       }
     }
 
-    stage('Deploy: omec-data-plane') {
+    stage('Deploy Data Plane') {
       steps {
-        sh label: 'staging-edge-onf-menlo', script: '''
-          ssh comac@192.168.122.57 '
-            kubectl config use-context staging-edge-onf-menlo
+        sh label: 'dp_context', script: """
+          ssh ${env.vm} '
+            kubectl config use-context ${dp_context}
 
             helm del --purge omec-data-plane | true
 
-            helm install --kube-context staging-edge-onf-menlo \
+            helm install --kube-context ${dp_context} \
                          --name omec-data-plane \
                          --namespace omec \
-                         --values pod-configs/deployment-configs/aether/apps/menlo-stg/omec-dp.yaml \
+                         --values ${omec_dp} \
                          cord/omec-data-plane
 
-            kubectl --context staging-edge-onf-menlo -n omec wait \
+            kubectl --context ${dp_context} -n omec wait \
                          --for=condition=Ready \
                          --timeout=300s \
                          pod -l app=spgwu
             '
-          '''
+          """
       }
     }
 
-    stage('Deploy: accelleran-cbrs') {
+    stage('Deploy Accelleran CBRS') {
       steps {
-        sh label: 'accelleran-cbrs-common', script: '''
-          ssh comac@192.168.122.57 '
-            kubectl config use-context staging-edge-onf-menlo
+        sh label: 'accelleran-cbrs-common', script: """
+          ssh ${env.vm} '
+            kubectl config use-context ${dp_context}
 
             helm del --purge accelleran-cbrs-common | true
             helm del --purge accelleran-cbrs-cu | true
 
-            helm install --kube-context staging-edge-onf-menlo \
+            helm install --kube-context ${dp_context} \
                          --name accelleran-cbrs-common \
                          --namespace omec \
-                         --values pod-configs/deployment-configs/aether/apps/menlo-stg/accelleran-cbrs-common.yaml \
+                         --values ${accelleran_cbrs_common} \
                          cord/accelleran-cbrs-common
 
-            helm install --kube-context staging-edge-onf-menlo \
+            helm install --kube-context ${dp_context} \
                          --name accelleran-cbrs-cu \
                          --namespace omec \
-                         --values pod-configs/deployment-configs/aether/apps/menlo-stg/accelleran-cbrs-cu.yaml \
+                         --values ${accelleran_cbrs_cu} \
                          cord/accelleran-cbrs-cu
 
-            kubectl --context staging-edge-onf-menlo -n omec wait \
+            kubectl --context ${dp_context} -n omec wait \
                          --for=condition=Ready \
                          --timeout=300s \
                          pod -l app=accelleran-cbrs-cu
             '
-          '''
+          """
       }
     }
   }
diff --git a/jjb/pipeline/omec-postmerge.groovy b/jjb/pipeline/omec-postmerge.groovy
index 9df3600..f64757d 100644
--- a/jjb/pipeline/omec-postmerge.groovy
+++ b/jjb/pipeline/omec-postmerge.groovy
@@ -77,8 +77,8 @@
         }
         build job: "omec-deploy-staging", parameters: [
               string(name: 'hssdb_tag', value: "${hssdb_tag}"),
-              string(name: 'mme_tag', value: "${hss_tag}"),
-              string(name: 'hss_tag', value: "${mme_tag}"),
+              string(name: 'hss_tag', value: "${hss_tag}"),
+              string(name: 'mme_tag', value: "${mme_tag}"),
               string(name: 'spgwc_tag', value: "${spgwc_tag}"),
               string(name: 'spgwu_tag', value: "${spgwu_tag}"),
             ], quietPeriod: quietPeriodTime
diff --git a/jjb/pipeline/voltha-go-multi-tests.groovy b/jjb/pipeline/voltha-go-multi-tests.groovy
index b2fccfb..8d94841 100644
--- a/jjb/pipeline/voltha-go-multi-tests.groovy
+++ b/jjb/pipeline/voltha-go-multi-tests.groovy
@@ -97,7 +97,6 @@
         sh '''
            set +e
            mkdir -p $WORKSPACE/RobotLogs
-           git clone https://gerrit.opencord.org/voltha-system-tests
 
            cd $HOME/kind-voltha/scripts
            ./log-collector.sh > /dev/null &
@@ -105,7 +104,7 @@
 
            for i in \$(seq 1 ${testRuns})
            do
-             make -C $WORKSPACE/voltha-system-tests ${makeTarget}
+             make -C $WORKSPACE/voltha/voltha-system-tests ${makeTarget}
              echo "Completed run: \$i"
              echo ""
            done
diff --git a/jjb/pipeline/voltha-go-tests.groovy b/jjb/pipeline/voltha-go-tests.groovy
index b5034ed..df0c476 100644
--- a/jjb/pipeline/voltha-go-tests.groovy
+++ b/jjb/pipeline/voltha-go-tests.groovy
@@ -104,13 +104,12 @@
         sh '''
            set +e
            mkdir -p $WORKSPACE/RobotLogs
-           git clone https://gerrit.opencord.org/voltha-system-tests
 
            cd $HOME/kind-voltha/scripts
            ./log-collector.sh > /dev/null &
            ./log-combine.sh > /dev/null &
 
-           make -C $WORKSPACE/voltha-system-tests ${makeTarget} || true
+           make -C $WORKSPACE/voltha/voltha-system-tests ${makeTarget} || true
            '''
       }
     }
diff --git a/jjb/pipeline/voltha-physical-build-and-tests.groovy b/jjb/pipeline/voltha-physical-build-and-tests.groovy
index abc7929..86c394d 100644
--- a/jjb/pipeline/voltha-physical-build-and-tests.groovy
+++ b/jjb/pipeline/voltha-physical-build-and-tests.groovy
@@ -164,10 +164,10 @@
 
     stage('Deploy Voltha') {
       environment {
-        WITH_SIM_ADAPTERS="n"
-        WITH_RADIUS="y"
-        DEPLOY_K8S="n"
-        VOLTHA_LOG_LEVEL="debug"
+        WITH_SIM_ADAPTERS="no"
+        WITH_RADIUS="yes"
+        DEPLOY_K8S="no"
+        VOLTHA_LOG_LEVEL="DEBUG"
       }
       steps {
         script {
@@ -207,6 +207,14 @@
           echo \$EXTRA_HELM_FLAGS
           kail -n voltha -n default > $WORKSPACE/onos-voltha-combined.log &
           ./voltha up
+
+          # Remove noise from voltha-core logs
+          voltctl loglevel set WARN read-write-core#github.com/opencord/voltha-go/db/model
+          voltctl loglevel set WARN read-write-core#github.com/opencord/voltha-lib-go/v3/pkg/kafka
+          # Remove noise from openolt logs
+          voltctl loglevel set WARN adapter-open-olt#github.com/opencord/voltha-lib-go/v3/pkg/db
+          voltctl loglevel set WARN adapter-open-olt#github.com/opencord/voltha-lib-go/v3/pkg/probe
+          voltctl loglevel set WARN adapter-open-olt#github.com/opencord/voltha-lib-go/v3/pkg/kafka
           """
         }
       }
diff --git a/jjb/pipeline/voltha-physical-functional-tests.groovy b/jjb/pipeline/voltha-physical-functional-tests.groovy
index 9f007e7..1ac0a71 100644
--- a/jjb/pipeline/voltha-physical-functional-tests.groovy
+++ b/jjb/pipeline/voltha-physical-functional-tests.groovy
@@ -70,6 +70,14 @@
         curl -o $WORKSPACE/bin/voltctl -sSL https://github.com/opencord/voltctl/releases/download/v\${VC_VERSION}/voltctl-\${VC_VERSION}-\${HOSTOS}-\${HOSTARCH}
         chmod 755 $WORKSPACE/bin/voltctl
         voltctl version --clientonly
+
+        # Remove noise from voltha-core logs
+        voltctl loglevel set WARN read-write-core#github.com/opencord/voltha-go/db/model
+        voltctl loglevel set WARN read-write-core#github.com/opencord/voltha-lib-go/v3/pkg/kafka
+        # Remove noise from openolt logs
+        voltctl loglevel set WARN adapter-open-olt#github.com/opencord/voltha-lib-go/v3/pkg/db
+        voltctl loglevel set WARN adapter-open-olt#github.com/opencord/voltha-lib-go/v3/pkg/probe
+        voltctl loglevel set WARN adapter-open-olt#github.com/opencord/voltha-lib-go/v3/pkg/kafka
         """
       }
     }
diff --git a/jjb/pipeline/voltha-scale-measurements.groovy b/jjb/pipeline/voltha-scale-measurements.groovy
index da7d171..8f11e91 100644
--- a/jjb/pipeline/voltha-scale-measurements.groovy
+++ b/jjb/pipeline/voltha-scale-measurements.groovy
@@ -206,8 +206,8 @@
         cat ports.txt >> onos-ports-count.txt
       '''
       sh '''
-        kubectl get pods -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\t'}{.image}{'\\n'}" | sort | uniq
-        kubectl get pods -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\t'}{.imageID}{'\\n'}" | sort | uniq
+        kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\n'}" | sort | uniq
+        kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.imageID}{'\\n'}" | sort | uniq
       '''
       sh '''
         voltctl device list -o json > device-list.json
diff --git a/jjb/pipeline/xos-core.groovy b/jjb/pipeline/xos-core.groovy
index 6405553..e3f398b 100644
--- a/jjb/pipeline/xos-core.groovy
+++ b/jjb/pipeline/xos-core.groovy
@@ -70,7 +70,7 @@
           timeout(3) {
             waitUntil {
               sleep 5
-              def kc_ret = sh script: "kubectl get po", returnStatus: true
+              def kc_ret = sh script: "kubectl get pods", returnStatus: true
               return (kc_ret == 0);
             }
           }
@@ -146,11 +146,13 @@
       steps {
         sh """
            #!/usr/bin/env bash
-           set -eu -o pipefail
-           pushd cord/test/cord-tester/src/test/cord-api/
-           source setup_venv.sh
+           set -ex -o pipefail
 
-           cd Tests/xos-test-service
+           pushd cord/test/cord-tester
+           make venv_cord
+           source venv_cord/bin/activate
+           cd src/test/cord-api/Tests/xos-test-service
+
            robot -e notready test-service.robot || true
            popd
            """
diff --git a/jjb/verify/goloxi.yaml b/jjb/verify/goloxi.yaml
new file mode 100644
index 0000000..c9f6f43
--- /dev/null
+++ b/jjb/verify/goloxi.yaml
@@ -0,0 +1,19 @@
+---
+# verification jobs for 'goloxi' repo
+
+- project:
+    name: goloxi
+    project: '{name}'
+
+    jobs:
+      - 'verify-goloxi-jobs':
+          branch-regexp: '{all-branches-regexp}'
+
+- job-group:
+    name: 'verify-goloxi-jobs'
+    jobs:
+      - 'verify-licensed'
+      - 'tag-collision-reject'
+      - 'make-unit-test':
+          unit-test-targets: 'test'
+          junit-allow-empty-results: true
diff --git a/jjb/verify/helm-charts.yaml b/jjb/verify/helm-charts.yaml
index 137586b..2c9ffe4 100644
--- a/jjb/verify/helm-charts.yaml
+++ b/jjb/verify/helm-charts.yaml
@@ -16,6 +16,8 @@
           branch: 'cord-6.0'
           name-extension: '-cord6.0'
           timed-trigger: '{once-a-day}'
+      - 'comac-in-a-box':
+          name: 'comac-in-a-box'
 
 - job-group:
     name: 'verify-helm-charts-jobs'
diff --git a/jjb/verify/mac-learning.yaml b/jjb/verify/mac-learning.yaml
new file mode 100644
index 0000000..c27a444
--- /dev/null
+++ b/jjb/verify/mac-learning.yaml
@@ -0,0 +1,18 @@
+---
+# jobs for 'mac-learning' repo
+
+- project:
+    name: mac-learning
+    project: '{name}'
+
+    jobs:
+      - 'mac-learning-jobs':
+          branch-regexp: '^(.*)$'
+
+- job-group:
+    name: 'mac-learning-jobs'
+    jobs:
+      - 'verify-licensed'
+      - 'tag-collision-reject'
+      - 'maven-test'
+      - 'maven-publish'
diff --git a/jjb/voltha-scale.yaml b/jjb/voltha-scale.yaml
index 8e0eb1c..1a654b1 100644
--- a/jjb/voltha-scale.yaml
+++ b/jjb/voltha-scale.yaml
@@ -80,11 +80,7 @@
           ponPorts: 16
           expectedOnus: 512
           BBSIMdelay: 200
-          # multi-adapter-tmp-changes
-          volthaImg: "matteoscandolo/voltha-rw-core:replica"
-          openoltAdapterImg: "matteoscandolo/voltha-openolt-adapter:replica"
-          openonuAdapterImg: "matteoscandolo/voltha-openonu-adapter:replica"
-          openonuAdapterChart: "/home/cord/voltha-helm-charts/voltha-adapter-openonu"
+          # multi-adapter
           extraHelmFlags: "--set replicas.adapter_open_onu=8"
       - 'voltha-scale-measurements-periodic':
           name: 'voltha-scale-measurements-periodic-16-64-200ms'
@@ -94,11 +90,7 @@
           ponPorts: 16
           expectedOnus: 1024
           BBSIMdelay: 200
-          # multi-adapter-tmp-changes
-          volthaImg: "matteoscandolo/voltha-rw-core:replica"
-          openoltAdapterImg: "matteoscandolo/voltha-openolt-adapter:replica"
-          openonuAdapterImg: "matteoscandolo/voltha-openonu-adapter:replica"
-          openonuAdapterChart: "/home/cord/voltha-helm-charts/voltha-adapter-openonu"
+          # multi-adapter
           extraHelmFlags: "--set replicas.adapter_open_onu=8"
       - 'voltha-scale-measurements-periodic':
           name: 'voltha-scale-measurements-periodic-4-64-200ms'