Merge "[VOL-2584] - Download the latest version voltctl in testing job, also change the priority of PATH"
diff --git a/jjb/cord-test/nightly-build-pipeline.yaml b/jjb/cord-test/nightly-build-pipeline.yaml
index c0f957c..354f92f 100644
--- a/jjb/cord-test/nightly-build-pipeline.yaml
+++ b/jjb/cord-test/nightly-build-pipeline.yaml
@@ -836,7 +836,7 @@
               - '{branch}'
 
 - job-template:
-    name: 'build_{config-pod}_{profile}_voltha_{release}'
+    name: 'build_{config-pod}_{profile}{name-extension}_voltha_{release}'
     id: build_voltha_pod_release
     description: |
                   <!-- Managed by Jenkins Job Builder -->
@@ -938,6 +938,11 @@
           default: '{with-kind}'
           description: "The pods uses kind and a physical fabric thus port forward to the management is needed"
 
+      - bool:
+          name: ofagentGo
+          default: '{use-ofagent-go}'
+          description: "Installs POD with go version when true"
+
     concurrent: true
 
     pipeline-scm:
@@ -954,7 +959,7 @@
                  H {time} * * *
 
 - job-template:
-    name: 'build_{config-pod}_{profile}_voltha_{release}_test'
+    name: 'build_{config-pod}_{profile}_voltha{name-extension}_{release}_test'
     id: build_voltha_pod_test
     description: |
                   <!-- Managed by Jenkins Job Builder -->
@@ -1046,5 +1051,5 @@
 
     triggers:
       - reverse:
-          jobs: 'build_{config-pod}_{profile}_voltha_{release}'
+          jobs: 'build_{config-pod}_{profile}{name-extension}_voltha_{release}'
           result: 'success'
diff --git a/jjb/cord-test/voltha.yaml b/jjb/cord-test/voltha.yaml
index e94c8a0..30ad2db 100644
--- a/jjb/cord-test/voltha.yaml
+++ b/jjb/cord-test/voltha.yaml
@@ -9,6 +9,7 @@
     build-timeout: '300'
 
     with-kind: false
+    use-ofagent-go: false
     onos-version: '2.2'
     power-switch: False
 
@@ -127,6 +128,34 @@
           test-repo: 'voltha-system-tests'
           profile: '1T4GEM-bal31'
 
+    # flex OCP pod with olt/onu - OFAGENT GO job, uses 1TCONT/4GEMs tech profile on voltha - timer based job
+      - 'build_voltha_pod_release':
+          build-node: 'qa-testvm-pod'
+          config-pod: 'flex-ocp-cord'
+          release: 'master'
+          branch: 'master'
+          released: false
+          name-extension: '_GO'
+          use-ofagent-go: true
+          test-repo: 'voltha-system-tests'
+          Jenkinsfile: 'Jenkinsfile-voltha-bal31-build'
+          oltDebVersion: 'openolt_asfvolt16_bal3.2.deb'
+          configurePod: true
+          profile: '1T4GEM-bal31'
+          time: '6'
+
+      # flex pod1 test job - OFAGENT GO job, test job uses 1TCONT/4GEMs tech profile - using voltha branch
+      - 'build_voltha_pod_test':
+          build-node: 'qa-testvm-pod'
+          config-pod: 'flex-ocp-cord'
+          release: 'master'
+          branch: 'master'
+          name-extension: '_GO'
+          released: false
+          power-switch: True
+          test-repo: 'voltha-system-tests'
+          profile: '1T4GEM-bal31'
+
       # Menlo pod with olt/onu - Default tech profile and timer based job
       - 'build_voltha_pod_release':
           build-node: 'menlo-demo-pod'
@@ -136,7 +165,7 @@
           released: false
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-bal31-build'
-          oltDebVersion: 'openolt_asfvolt16_bal3.2.deb'
+          oltDebVersion: 'openolt-2.3.0.deb'
           configurePod: true
           profile: 'Default'
           time: '1'
@@ -184,17 +213,71 @@
           released: false
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-bal31-build'
-          oltDebVersion: 'openolt_asfvolt16_bal3.2.deb'
+          oltDebVersion: 'openolt-2.3.0.deb'
           configurePod: true
           profile: '1T4GEM-bal31'
           time: '4'
 
+      # Menlo pod test job - master test job uses tech profile on voltha branch
+      - 'build_voltha_pod_test':
+          build-node: 'menlo-demo-pod'
+          config-pod: 'onf-demo-pod'
+          release: 'master'
+          branch: 'master'
+          released: false
+          test-repo: 'voltha-system-tests'
+          profile: '1T4GEM-bal31'
+
+      # Menlo pod with olt/onu - Uses GO Version - Default tech profile and timer based job
+      - 'build_voltha_pod_release':
+          build-node: 'menlo-demo-pod'
+          config-pod: 'onf-demo-pod'
+          release: 'master'
+          branch: 'master'
+          name-extension: '_GO'
+          use-ofagent-go: true
+          released: false
+          test-repo: 'voltha-system-tests'
+          Jenkinsfile: 'Jenkinsfile-voltha-bal31-build'
+          oltDebVersion: 'openolt-2.3.0.deb'
+          configurePod: true
+          profile: 'Default'
+          time: '6'
+
       # Menlo pod test job - uses tech profile on voltha branch
       - 'build_voltha_pod_test':
           build-node: 'menlo-demo-pod'
           config-pod: 'onf-demo-pod'
           release: 'master'
           branch: 'master'
+          name-extension: '_GO'
+          released: false
+          test-repo: 'voltha-system-tests'
+          profile: 'Default'
+
+      # Menlo pod with olt/onu - Uses GO Version - Default tech profile and timer based job
+      - 'build_voltha_pod_release':
+          build-node: 'menlo-demo-pod'
+          config-pod: 'onf-demo-pod'
+          release: 'master'
+          branch: 'master'
+          name-extension: '_GO'
+          use-ofagent-go: true
+          released: false
+          test-repo: 'voltha-system-tests'
+          Jenkinsfile: 'Jenkinsfile-voltha-bal31-build'
+          oltDebVersion: 'openolt-2.3.0.deb'
+          configurePod: true
+          profile: '1T4GEM-bal31'
+          time: '8'
+
+      # Menlo pod test job - uses tech profile on voltha branch
+      - 'build_voltha_pod_test':
+          build-node: 'menlo-demo-pod'
+          config-pod: 'onf-demo-pod'
+          release: 'master'
+          branch: 'master'
+          name-extension: '_GO'
           released: false
           test-repo: 'voltha-system-tests'
           profile: '1T4GEM-bal31'
@@ -207,7 +290,7 @@
           branch: 'master'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-bal31-build'
-          oltDebVersion: 'openolt_asfvolt16_bal3.2.deb'
+          oltDebVersion: 'openolt-2.3.0.deb'
           configurePod: true
           profile: '1T4GEM-bal31'
       - 'build_pod_test':
@@ -264,29 +347,29 @@
           profile: 'Default'
 
 
-      # Berlin pod with olt/onu - Released versions Default tech profile and timer based job
+      # Berlin pod with olt/onu - master versions Default tech profile and timer based job
       - 'build_voltha_pod_release':
           build-node: 'dt-berlin-community-pod'
           config-pod: 'dt-berlin-pod'
-          release: 'release'
+          release: 'master'
           branch: 'master'
           onos-version: '2.2'
           test-repo: 'voltha-system-tests'
           Jenkinsfile: 'Jenkinsfile-voltha-bal31-build'
           oltDebVersion: 'openolt_asfvolt16_bal3.2.deb'
           configurePod: true
-          released: true
+          released: false
           profile: 'Default'
           with-kind: true
           time: '9'
 
 
-      # Berlin POD test job - released versions: uses tech profile on voltha branch
+      # Berlin POD test job - master versions: uses tech profile on voltha branch
       - 'build_voltha_pod_test':
           build-node: 'dt-berlin-community-pod'
           config-pod: 'dt-berlin-pod'
-          release: 'release'
+          release: 'master'
           branch: 'master'
-          released: true
+          released: false
           test-repo: 'voltha-system-tests'
           profile: 'Default'
diff --git a/jjb/omec-ci.yaml b/jjb/omec-ci.yaml
index 585b12e..f2922c9 100644
--- a/jjb/omec-ci.yaml
+++ b/jjb/omec-ci.yaml
@@ -106,6 +106,48 @@
           build-timeout: 30
           docker-repo: 'omecproject'
 
+# for nucleus
+- project:
+    name: Nucleus
+    project: '{name}'
+
+    build-node: 'intel-102'
+
+    github-organization: 'omec-project'
+
+    github_pr_auth_id: '64fe2b1a-b33a-4f13-8442-ad8360434003'
+    github_pr_org_list:
+      - 'omec-project'
+
+    jobs:
+      - 'omec-fossa':
+          pipeline-file: 'omec-fossa-scan.groovy'
+          build-node: 'omec-qa'
+      - 'omec-reuse':
+          pipeline-file: 'omec-reuse-scan.groovy'
+          build-node: 'omec-qa'
+
+# for freediameter
+- project:
+    name: freediameter
+    project: '{name}'
+
+    build-node: 'intel-102'
+
+    github-organization: 'omec-project'
+
+    github_pr_auth_id: '64fe2b1a-b33a-4f13-8442-ad8360434003'
+    github_pr_org_list:
+      - 'omec-project'
+
+    jobs:
+      - 'omec-fossa':
+          pipeline-file: 'omec-fossa-scan.groovy'
+          build-node: 'omec-qa'
+      - 'omec-reuse':
+          pipeline-file: 'omec-reuse-scan.groovy'
+          build-node: 'omec-qa'
+
 # Combined pipeline
 - job-template:
     id: 'omec-combined'
diff --git a/jjb/pipeline/siab-test.groovy b/jjb/pipeline/siab-test.groovy
index b13ca11..1ab109e 100644
--- a/jjb/pipeline/siab-test.groovy
+++ b/jjb/pipeline/siab-test.groovy
@@ -47,18 +47,6 @@
       }
     }
 
-    // FIXME: remove once Zack completes cord-tester refactoring, as master is
-    //  currently broken for siab tests.
-    stage('Cord-tester fix') {
-      steps {
-        sh """
-           pushd $WORKSPACE/cord/test/cord-tester
-           git checkout -b foo 7b3f901659a22c09e4759e343ad693b80125e06b
-           popd
-           """
-      }
-    }
-
     stage ('Reset Kubeadm') {
       steps {
         sh """
diff --git a/jjb/pipeline/voltha-bbsim-tests.groovy b/jjb/pipeline/voltha-bbsim-tests.groovy
index b1a7413..6363770 100644
--- a/jjb/pipeline/voltha-bbsim-tests.groovy
+++ b/jjb/pipeline/voltha-bbsim-tests.groovy
@@ -64,7 +64,12 @@
       steps {
         sh """
            pushd voltha
-           repo download "${gerritProject}" "${gerritChangeNumber}/${gerritPatchsetNumber}"
+           if [ "${gerritProject}" != "" -a "${gerritChangeNumber}" != "" -a "${gerritPatchsetNumber}" != "" ]
+           then
+             repo download "${gerritProject}" "${gerritChangeNumber}/${gerritPatchsetNumber}"
+           else
+             echo "No patchset to download!"
+           fi
            popd
            """
       }
diff --git a/jjb/pipeline/voltha-go-tests.groovy b/jjb/pipeline/voltha-go-tests.groovy
index 33da214..5e519c2 100644
--- a/jjb/pipeline/voltha-go-tests.groovy
+++ b/jjb/pipeline/voltha-go-tests.groovy
@@ -108,6 +108,27 @@
 
          sleep 60 # Wait for log-collector and log-combine to complete
 
+         ## Pull out errors from log files
+         extract_errors_go() {
+           echo
+           echo "Error summary for $1:"
+           grep '"level":"error"' $WORKSPACE/kind-voltha/scripts/logger/combined/$1*
+           echo
+         }
+
+         extract_errors_python() {
+           echo
+           echo "Error summary for $1:"
+           grep 'ERROR' $WORKSPACE/kind-voltha/scripts/logger/combined/$1*
+           echo
+         }
+
+         extract_errors_go voltha-rw-core > $WORKSPACE/error-report.log
+         extract_errors_go adapter-open-olt >> $WORKSPACE/error-report.log
+         extract_errors_python adapter-open-onu >> $WORKSPACE/error-report.log
+         extract_errors_go voltha-ofagent >> $WORKSPACE/error-report.log
+         extract_errors_python onos >> $WORKSPACE/error-report.log
+
          cd $WORKSPACE/kind-voltha/scripts/logger/combined/
          tar czf $WORKSPACE/container-logs.tgz *
 
diff --git a/jjb/pipeline/voltha-physical-functional-tests.groovy b/jjb/pipeline/voltha-physical-functional-tests.groovy
index 67ff7a0..47ace1e 100644
--- a/jjb/pipeline/voltha-physical-functional-tests.groovy
+++ b/jjb/pipeline/voltha-physical-functional-tests.groovy
@@ -148,6 +148,30 @@
 
       sleep 60 # Wait for log-collector and log-combine to complete
 
+      # Clean up "announcer" pod used by the tests if present
+      kubectl delete pod announcer || true
+
+      ## Pull out errors from log files
+      extract_errors_go() {
+        echo
+        echo "Error summary for $1:"
+        grep '"level":"error"' $WORKSPACE/kind-voltha/scripts/logger/combined/$1*
+        echo
+      }
+
+      extract_errors_python() {
+        echo
+        echo "Error summary for $1:"
+        grep 'ERROR' $WORKSPACE/kind-voltha/scripts/logger/combined/$1*
+        echo
+      }
+
+      extract_errors_go voltha-rw-core > $WORKSPACE/error-report.log
+      extract_errors_go adapter-open-olt >> $WORKSPACE/error-report.log
+      extract_errors_python adapter-open-onu >> $WORKSPACE/error-report.log
+      extract_errors_python voltha-ofagent >> $WORKSPACE/error-report.log
+      extract_errors_python onos >> $WORKSPACE/error-report.log
+
       cd $WORKSPACE/kind-voltha/scripts/logger/combined/
       tar czf $WORKSPACE/container-logs.tgz *
 
diff --git a/jjb/pipeline/voltha-scale-measurements.groovy b/jjb/pipeline/voltha-scale-measurements.groovy
index 082703c..f49de5f 100644
--- a/jjb/pipeline/voltha-scale-measurements.groovy
+++ b/jjb/pipeline/voltha-scale-measurements.groovy
@@ -25,13 +25,14 @@
     stage('set-description') {
       steps {
         script {
-          currentBuild.description = "${onuPerPon} ONU x ${ponPorts} PON - BBSIM Delay ${BBSIMdelay}"
+          currentBuild.description = "$BUILD_TIMESTAMP"
         }
       }
     }
     stage('cleanup') {
       steps {
         sh '''
+          rm -rf voltha-devices.txt onos-ports.txt total-time.txt onu-activation.txt
           for hchart in \$(helm list -q | grep -E -v 'docker-registry|cord-kafka|etcd-operator');
           do
               echo "Purging chart: \${hchart}"
@@ -51,14 +52,24 @@
       }
     }
     stage('deploy-voltha') {
+      options {
+        timeout(time:10)
+      }
       steps {
         sh '''
           helm install -n onos onf/onos --set images.onos.repository=voltha/voltha-onos --set images.onos.tag=4.0.1
-          helm install -n voltha onf/voltha -f /home/cord/voltha-scale/voltha-values.yaml
-          helm install -n openolt onf/voltha-adapter-openolt -f /home/cord/voltha-scale/voltha-values.yaml
-          helm install -n openonu onf/voltha-adapter-openonu -f /home/cord/voltha-scale/voltha-values.yaml
 
-          helm install -n bbsim onf/bbsim --set pon=${ponPorts},onu=${onuPerPon},auth=${bbsimAuth},dhcp=${bbsimDhcp},delay=${BBSIMdelay}
+          IFS=: read -r volthaRepo volthaTag <<< ${volthaImg}
+          helm install -n voltha onf/voltha -f /home/cord/voltha-scale/voltha-values.yaml --set images.voltha.repository=${volthaRepo},images.voltha.tag=${volthaTag}
+
+          IFS=: read -r openoltAdapterRepo openoltAdapterTag <<< ${openoltAdapterImg}
+          helm install -n openolt onf/voltha-adapter-openolt -f /home/cord/voltha-scale/voltha-values.yaml --set images.adapter_open_olt.repository=${openoltAdapterRepo},images.adapter_open_olt.tag=${openoltAdapterTag}
+
+          IFS=: read -r openonuAdapterRepo openonuAdapterTag <<< ${openonuAdapterImg}
+          helm install -n openonu onf/voltha-adapter-openonu -f /home/cord/voltha-scale/voltha-values.yaml --set images.adapter_open_olt.repository=${openonuAdapterRepo},images.adapter_open_olt.tag=${openonuAdapterTag}
+
+          IFS=: read -r bbsimRepo bbsimTag <<< ${bbsimImg}
+          helm install -n bbsim onf/bbsim --set pon=${ponPorts},onu=${onuPerPon},auth=${bbsimAuth},dhcp=${bbsimDhcp},delay=${BBSIMdelay},images.bbsim.repository=${bbsimRepo},images.bbsim.tag=${bbsimTag}
           helm install -n radius onf/freeradius
 
           if [ ! -z ${bbsimImg} ];
@@ -76,6 +87,26 @@
           '''
       }
     }
+    stage('wait for adapters to be registered') {
+      options {
+        timeout(time:5)
+      }
+      steps{
+        waitUntil {
+          script {
+            openolt_res = sh returnStdout: true, script: """
+            voltctl adapter list | grep openolt | wc -l
+            """
+
+            openonu_res = sh returnStdout: true, script: """
+            voltctl adapter list | grep brcm_openomci_onu | wc -l
+            """
+
+            return openolt_res.toInteger() == 1 && openonu_res.toInteger() == 1
+          }
+        }
+      }
+    }
     stage('MIB-template') {
       steps {
         sh '''
@@ -141,7 +172,7 @@
                 i=$(voltctl device list | grep -v OLT | grep ACTIVE | wc -l)
               done
               echo "${expectedOnus} ONUs Activated in $SECONDS seconds (time: $SECONDS)"
-              echo $SECONDS > activation-time.txt
+              echo $SECONDS > voltha-devices.txt
             '''
           }
         }
@@ -157,11 +188,11 @@
                 z=$(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@localhost ports -e | grep BBSM | wc -l)
               done
               echo "${expectedOnus} ports enabled in $SECONDS seconds (time: $SECONDS)"
-              echo $SECONDS > port-recognition.txt
+              echo $SECONDS > onos-ports.txt
               echo "ONOS-Duration(s)" > total-time.txt
               echo "VOLTHA-Duration(s)" > onu-activation.txt
-              cat activation-time.txt >> onu-activation.txt
-              paste activation-time.txt port-recognition.txt | awk '{print ($1 + $2)}' >> total-time.txt
+              cat voltha-devices.txt >> onu-activation.txt
+              paste voltha-devices.txt onos-ports.txt | awk '{print ($1 + $2)}' >> total-time.txt
             '''
           }
         }
@@ -169,28 +200,41 @@
     }
   }
   post {
-    always {
+    success {
       plot([
         csvFileName: 'plot-onu-activation.csv',
         csvSeries: [[displayTableFlag: false, exclusionValues: '', file: 'onu-activation.txt', inclusionFlag: 'OFF', url: ''], [displayTableFlag: false, exclusionValues: '', file: 'total-time.txt', inclusionFlag: 'OFF', url: '']],
-        group: 'Voltha-Scale-Numbers', numBuilds: '100', style: 'line', title: 'Time (200ms Delay)', useDescr: true, yaxis: 'Time (s)'
+        group: 'Voltha-Scale-Numbers', numBuilds: '100', style: 'line', title: "Time (${BBSIMdelay}s Delay)", yaxis: 'Time (s)', useDescr: true
       ])
-      archiveArtifacts artifacts: '*.log,*.txt'
+    }
+    always {
+      sh '''
+        echo $(voltctl device list | grep -v OLT | grep ACTIVE | wc -l) > onus.txt
+        echo "#-of-ONUs" > no_onus.txt
+        cat onus.txt >> no_onus.txt
+
+        echo $(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@localhost ports -e | grep BBSM | wc -l) > ports.txt
+        echo "#-of-ports" > no_ports.txt
+        cat ports.txt >> no_ports.txt
+
+        kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\t'}{.imageID}{'\\n'}" | sort | uniq -c
+        voltctl device list -o json > device-list.json
+        python -m json.tool device-list.json > volt-device-list.json
+        sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@localhost ports > onos-ports.txt
+        '''
+      plot([
+        csvFileName: 'plot-numbers.csv',
+        csvSeries: [[displayTableFlag: false, exclusionValues: '', file: 'no_onus.txt', inclusionFlag: 'OFF', url: ''], [displayTableFlag: false, exclusionValues: '', file: 'no_ports.txt', inclusionFlag: 'OFF', url: '']],
+        group: 'Voltha-Scale-Numbers', numBuilds: '100', style: 'line', title: "Activated ONUs and Recognized Ports", yaxis: 'Number of Ports/ONUs', useDescr: true
+      ])
+
+      archiveArtifacts artifacts: '*.log,*.json,*txt'
+
       script {
         sh '''
-          kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\t'}{.imageID}{'\\n'}" | sort | uniq -c
+          rm -rf onus.txt ports.txt voltha-devices.txt onos-ports.txt total-time.txt onu-activation.txt device-list.json
         '''
       }
     }
-    success {
-      sh '''
-        #!/usr/bin/env bash
-        set +e
-        rm onu-activation.txt
-        rm total-time.txt
-        rm port-recognition.txt
-        rm activation-time.txt
-      '''
-    }
   }
 }
diff --git a/jjb/siab.yaml b/jjb/siab.yaml
index 3d12c2c..0dc5d9d 100644
--- a/jjb/siab.yaml
+++ b/jjb/siab.yaml
@@ -18,7 +18,7 @@
 
     description: |
       <!-- Managed by Jenkins Job Builder -->
-      Created by {id} job-template from ci-management/jjb/siba.yaml  <br /><br />
+      Created by {id} job-template from ci-management/jjb/siab.yaml  <br /><br />
       E2E Validation for Seba-in-a-Box
 
     properties:
@@ -68,7 +68,7 @@
 
     description: |
       <!-- Managed by Jenkins Job Builder -->
-      Created by {id} job-template from ci-management/jjb/siba.yaml  <br /><br />
+      Created by {id} job-template from ci-management/jjb/siab.yaml, with pipleine: siab.groovy <br /><br />
       E2E Validation for Seba-in-a-Box
 
     properties:
@@ -118,7 +118,7 @@
 
     description: |
       <!-- Managed by Jenkins Job Builder -->
-      Created by {id} job-template from ci-management/jjb/siba.yaml  <br /><br />
+      Created by {id} job-template from ci-management/jjb/siab.yaml, with pipleine: siab.groovy <br /><br />
       E2E Validation for Seba-in-a-Box
 
     properties:
@@ -169,7 +169,7 @@
 
     description: |
       <!-- Managed by Jenkins Job Builder -->
-      Created by {id} job-template from ci-management/jjb/siba.yaml  <br /><br />
+      Created by {id} job-template from ci-management/jjb/siab.yaml, with pipleine: siab-test.groovy <br /><br />
       E2E Validation for Seba-in-a-Box
 
     properties:
diff --git a/jjb/verify/pyvoltha.yaml b/jjb/verify/pyvoltha.yaml
index 4100715..b8564cb 100644
--- a/jjb/verify/pyvoltha.yaml
+++ b/jjb/verify/pyvoltha.yaml
@@ -11,6 +11,17 @@
       - 'publish-pyvoltha-jobs':
           branch-regexp: '{all-branches-regexp}'
           pypi-index: 'pypi'
+      - 'voltha-periodic-test':
+          name: 'nightly-pyvoltha-compatibility-test'
+          pipeline-script: 'voltha-bbsim-tests.groovy'
+          build-node: 'ubuntu16.04-basebuild-4c-8g'
+          default-image-tag: 'master'
+          code-branch: 'master'
+          make-target: sanity-single-kind
+          gerrit-project: pyvoltha
+          onus: 1
+          pons: 1
+          time-trigger: "@daily"
 
 - job-group:
     name: 'verify-pyvoltha-jobs'
@@ -20,9 +31,7 @@
           dependency-jobs: 'verify_pyvoltha_licensed'
       - 'python-unit-test':
           dependency-jobs: 'verify_pyvoltha_tag-collision'
-      - 'voltha-patch-test':
-          pipeline-script: 'voltha-bbsim-tests.groovy'
-          skip-vote: true
+
 
 - job-group:
     name: 'publish-pyvoltha-jobs'
diff --git a/jjb/verify/voltha-lib-go.yaml b/jjb/verify/voltha-lib-go.yaml
index fee00c3..9f148ef 100644
--- a/jjb/verify/voltha-lib-go.yaml
+++ b/jjb/verify/voltha-lib-go.yaml
@@ -8,6 +8,17 @@
     jobs:
       - 'verify-voltha-lib-go-jobs':
           branch-regexp: '{all-branches-regexp}'
+      - 'voltha-periodic-test':
+          name: 'nightly-voltha-lib-go-compatibility-test'
+          pipeline-script: 'voltha-bbsim-tests.groovy'
+          build-node: 'ubuntu16.04-basebuild-4c-8g'
+          default-image-tag: 'master'
+          code-branch: 'master'
+          make-target: sanity-single-kind
+          gerrit-project: voltha-lib-go
+          onus: 1
+          pons: 1
+          time-trigger: "@daily"
 
 - job-group:
     name: 'verify-voltha-lib-go-jobs'
@@ -21,6 +32,3 @@
           dest-gopath: "github.com/opencord"
           unit-test-targets: 'lint sca test'
           unit-test-keep-going: 'true'
-      - 'voltha-patch-test':
-          pipeline-script: 'voltha-bbsim-tests.groovy'
-          skip-vote: true
diff --git a/jjb/verify/voltha-protos.yaml b/jjb/verify/voltha-protos.yaml
index ef7b6ab..98afdb0 100644
--- a/jjb/verify/voltha-protos.yaml
+++ b/jjb/verify/voltha-protos.yaml
@@ -12,6 +12,17 @@
           branch-regexp: '{all-branches-regexp}'
           pypi-index: 'pypi'
           pypi-prep-commands: 'make python-protos'
+      - 'voltha-periodic-test':
+          name: 'nightly-voltha-protos-compatibility-test'
+          pipeline-script: 'voltha-bbsim-tests.groovy'
+          build-node: 'ubuntu16.04-basebuild-4c-8g'
+          default-image-tag: 'master'
+          code-branch: 'master'
+          make-target: sanity-single-kind
+          gerrit-project: voltha-protos
+          onus: 1
+          pons: 1
+          time-trigger: "@daily"
 
 - job-group:
     name: 'verify-voltha-protos-jobs'
@@ -23,9 +34,6 @@
           build-timeout: 20
           unit-test-targets: 'test'
           unit-test-keep-going: 'true'
-      - 'voltha-patch-test':
-          pipeline-script: 'voltha-bbsim-tests.groovy'
-          skip-vote: true
 
 - job-group:
     name: 'post-merge-voltha-protos-jobs'
diff --git a/jjb/voltha-e2e.yaml b/jjb/voltha-e2e.yaml
index fdab5f3..1dff600 100644
--- a/jjb/voltha-e2e.yaml
+++ b/jjb/voltha-e2e.yaml
@@ -60,6 +60,16 @@
           pons: 8
           time-trigger: "H H/3 * * *"
 
+      - 'voltha-periodic-test':
+          name: 'periodic-voltha-alarm-test'
+          build-node: 'qct-pod4-node2'
+          default-image-tag: 'master'
+          code-branch: 'master'
+          make-target: bbsim-alarms-kind
+          onus: 1
+          pons: 1
+          time-trigger: "H H/3 * * *"
+
       # Per-patchset Pod builds on Tucson pod
       - 'verify_physical_voltha_patchset_auto':
           name: 'verify_physical_voltha_patchset_auto'
@@ -97,6 +107,8 @@
     pipeline-script: 'voltha-go-tests.groovy'
     test-runs: 1
     robot-args: ''
+    gerrit-project: ''
+
 
     description: |
       <!-- Managed by Jenkins Job Builder -->
@@ -140,6 +152,21 @@
           description: 'Repo manifest branch for code checkout (so we can display changes in Jenkins)'
 
       - string:
+          name: gerritProject
+          default: '{gerrit-project}'
+          description: 'Name of the Gerrit project'
+
+      - string:
+          name: gerritChangeNumber
+          default: ''
+          description: 'Changeset number in Gerrit'
+
+      - string:
+          name: gerritPatchsetNumber
+          default: ''
+          description: 'PatchSet number in Gerrit'
+
+      - string:
           name: testRuns
           default: '{test-runs}'
           description: 'How many times to repeat the tests'
@@ -365,7 +392,7 @@
 
       - string:
           name: extraRobotArgs
-          default: '-i sanity'
+          default: '-i sanityORDeleteOLT'
           description: 'Arguments to pass to robot'
 
     project-type: pipeline
@@ -387,7 +414,7 @@
                 approval-value: '+2'
           projects:
             - project-compare-type: REG_EXP
-              project-pattern: '^(voltha-openolt-adapter|voltha-openonu-adapter)$'
+              project-pattern: '^(voltha-openolt-adapter|voltha-openonu-adapter|voltha-go)$'
               branches:
                 - branch-compare-type: PLAIN
                   branch-pattern: 'master'
@@ -506,7 +533,7 @@
 
       - string:
           name: extraRobotArgs
-          default: '-i sanity'
+          default: '-i sanityORDeleteOLT'
           description: 'Arguments to pass to robot'
 
     project-type: pipeline
diff --git a/jjb/voltha-scale.yaml b/jjb/voltha-scale.yaml
index e43df51..33c33c5 100644
--- a/jjb/voltha-scale.yaml
+++ b/jjb/voltha-scale.yaml
@@ -8,36 +8,148 @@
 
     jobs:
       - 'voltha-scale-measurements-periodic':
-          name: 'voltha-scale-measurements-periodic-256-200ms'
+          name: 'voltha-scale-measurements-periodic-8-32-200ms'
           build-node: 'onf-pod1-head-node'
-          time-trigger: "0 * * * *"
+          time-trigger: "H H/4 * * *"
           onuPerPon: 32
           ponPorts: 8
           expectedOnus: 256
           BBSIMdelay: 200
       - 'voltha-scale-measurements-periodic':
-          name: 'voltha-scale-measurements-periodic-128-200ms'
+          name: 'voltha-scale-measurements-periodic-8-32-1000ms'
           build-node: 'onf-pod1-head-node'
-          time-trigger: "15 * * * *"
-          onuPerPon: 32
-          ponPorts: 4
-          expectedOnus: 128
-          BBSIMdelay: 200
-      - 'voltha-scale-measurements-periodic':
-          name: 'voltha-scale-measurements-periodic-256-1000ms'
-          build-node: 'onf-pod1-head-node'
-          time-trigger: "30 * * * *"
+          time-trigger: "H H/4 * * *"
           onuPerPon: 32
           ponPorts: 8
           expectedOnus: 256
           BBSIMdelay: 1000
       - 'voltha-scale-measurements-periodic':
-          name: 'voltha-scale-measurements-periodic-128-1000ms'
+          name: 'voltha-scale-measurements-periodic-8-48-200ms'
           build-node: 'onf-pod1-head-node'
-          time-trigger: "45 * * * *"
+          time-trigger: "H H/4 * * *"
+          onuPerPon: 48
+          ponPorts: 8
+          expectedOnus: 384
+          BBSIMdelay: 200
+      - 'voltha-scale-measurements-periodic':
+          name: 'voltha-scale-measurements-periodic-8-48-1000ms'
+          build-node: 'onf-pod1-head-node'
+          time-trigger: "H H/4 * * *"
+          onuPerPon: 48
+          ponPorts: 8
+          expectedOnus: 384
+          BBSIMdelay: 1000
+      - 'voltha-scale-measurements-periodic':
+          name: 'voltha-scale-measurements-periodic-4-32-200ms'
+          build-node: 'onf-pod1-head-node'
+          time-trigger: "H H/4 * * *"
           onuPerPon: 32
           ponPorts: 4
           expectedOnus: 128
+          BBSIMdelay: 200
+      - 'voltha-scale-measurements-periodic':
+          name: 'voltha-scale-measurements-periodic-4-32-1000ms'
+          build-node: 'onf-pod1-head-node'
+          time-trigger: "H H/4 * * *"
+          onuPerPon: 32
+          ponPorts: 4
+          expectedOnus: 128
+          BBSIMdelay: 1000
+      - 'voltha-scale-measurements-periodic':
+          name: 'voltha-scale-measurements-periodic-16-32-200ms'
+          build-node: 'onf-pod1-head-node'
+          time-trigger: "H H/4 * * *"
+          onuPerPon: 32
+          ponPorts: 16
+          expectedOnus: 512
+          BBSIMdelay: 200
+      - 'voltha-scale-measurements-periodic':
+          name: 'voltha-scale-measurements-periodic-16-32-1000ms'
+          build-node: 'onf-pod1-head-node'
+          time-trigger: "H H/4 * * *"
+          onuPerPon: 32
+          ponPorts: 16
+          expectedOnus: 512
+          BBSIMdelay: 1000
+      - 'voltha-scale-measurements-periodic':
+          name: 'voltha-scale-measurements-periodic-4-64-200ms'
+          build-node: 'onf-pod1-head-node'
+          time-trigger: "H H/4 * * *"
+          onuPerPon: 64
+          ponPorts: 4
+          expectedOnus: 256
+          BBSIMdelay: 200
+      - 'voltha-scale-measurements-periodic':
+          name: 'voltha-scale-measurements-periodic-4-64-1000ms'
+          build-node: 'onf-pod1-head-node'
+          time-trigger: "H H/4 * * *"
+          onuPerPon: 64
+          ponPorts: 4
+          expectedOnus: 256
+          BBSIMdelay: 1000
+      - 'voltha-scale-measurements-periodic':
+          name: 'voltha-scale-measurements-periodic-4-128-200ms'
+          build-node: 'onf-pod1-head-node'
+          time-trigger: "H H/4 * * *"
+          onuPerPon: 128
+          ponPorts: 4
+          expectedOnus: 512
+          BBSIMdelay: 200
+      - 'voltha-scale-measurements-periodic':
+          name: 'voltha-scale-measurements-periodic-4-128-1000ms'
+          build-node: 'onf-pod1-head-node'
+          time-trigger: "H H/4 * * *"
+          onuPerPon: 128
+          ponPorts: 4
+          expectedOnus: 512
+          BBSIMdelay: 1000
+      - 'voltha-scale-measurements-periodic':
+          name: 'voltha-scale-measurements-periodic-1-128-200ms'
+          build-node: 'onf-pod1-head-node'
+          time-trigger: "H H/4 * * *"
+          onuPerPon: 128
+          ponPorts: 1
+          expectedOnus: 128
+          BBSIMdelay: 200
+      - 'voltha-scale-measurements-periodic':
+          name: 'voltha-scale-measurements-periodic-1-128-1000ms'
+          build-node: 'onf-pod1-head-node'
+          time-trigger: "H H/4 * * *"
+          onuPerPon: 128
+          ponPorts: 1
+          expectedOnus: 128
+          BBSIMdelay: 1000
+      - 'voltha-scale-measurements-periodic':
+          name: 'voltha-scale-measurements-periodic-1-64-200ms'
+          build-node: 'onf-pod1-head-node'
+          time-trigger: "H H/4 * * *"
+          onuPerPon: 64
+          ponPorts: 1
+          expectedOnus: 64
+          BBSIMdelay: 200
+      - 'voltha-scale-measurements-periodic':
+          name: 'voltha-scale-measurements-periodic-1-64-1000ms'
+          build-node: 'onf-pod1-head-node'
+          time-trigger: "H H/4 * * *"
+          onuPerPon: 64
+          ponPorts: 1
+          expectedOnus: 64
+          BBSIMdelay: 1000
+      - 'voltha-scale-measurements-periodic':
+          name: 'voltha-scale-measurements-periodic-1-1-200ms'
+          build-node: 'onf-pod1-head-node'
+          time-trigger: "H H/4 * * *"
+          onuPerPon: 1
+          ponPorts: 1
+          expectedOnus: 1
+          BBSIMdelay: 200
+      - 'voltha-scale-measurements-periodic':
+          name: 'voltha-scale-measurements-periodic-1-1-1000ms'
+          build-node: 'onf-pod1-head-node'
+          time-trigger: "H H/4 * * *"
+          onuPerPon: 1
+          ponPorts: 1
+          expectedOnus: 1
           BBSIMdelay: 1000
       - 'voltha-scale-measurements':
           name: 'voltha-scale-measurements-dev'
@@ -136,14 +248,24 @@
 
       - string:
           name: bbsimImg
-          default:
+          default: 'voltha/bbsim:master'
           description: 'Custom image selection for BBSIM (repo:tag)'
 
       - string:
           name: volthaImg
-          default:
+          default: 'voltha/voltha-rw-core:master'
           description: 'Custom image selection for VOLTHA (repo:tag)'
 
+      - string:
+          name: openoltAdapterImg
+          default: voltha/voltha-openolt-adapter:master
+          description: 'Custom image selection for Openolt Adapter (repo:tag)'
+
+      - string:
+          name: openonuAdapterImg
+          default: voltha/voltha-openonu-adapter:master
+          description: 'Custom image selection for Openonu Adapter (repo:tag)'
+
     project-type: pipeline
     concurrent: false
 
@@ -243,15 +365,25 @@
 
       - string:
           name: bbsimImg
-          default:
+          default: voltha/bbsim:master
           description: 'Custom image selection for BBSIM (repo:tag)'
 
       - string:
           name: volthaImg
-          default:
+          default: voltha/voltha-rw-core:master
           description: 'Custom image selection for VOLTHA (repo:tag)'
 
+      - string:
+          name: openoltAdapterImg
+          default: voltha/voltha-openolt-adapter:master
+          description: 'Custom image selection for Openolt Adapter (repo:tag)'
+
+      - string:
+          name: openonuAdapterImg
+          default: voltha/voltha-openonu-adapter:master
+          description: 'Custom image selection for Openonu Adapter (repo:tag)'
+
     project-type: pipeline
     concurrent: false
 
-    dsl: !include-raw-escape: pipeline/{pipeline-script}
+    dsl: !include-raw-escape: pipeline/{pipeline-script}
\ No newline at end of file