Merge "scheduling jobs with grpc images"
diff --git a/jjb/cord-test/nightly-build-pipeline.yaml b/jjb/cord-test/nightly-build-pipeline.yaml
index 84428df..7ff3007 100644
--- a/jjb/cord-test/nightly-build-pipeline.yaml
+++ b/jjb/cord-test/nightly-build-pipeline.yaml
@@ -25,6 +25,10 @@
 
     openoltAdapterChart: onf/voltha-adapter-openolt
 
+    oltAdapterReleaseName: open-olt
+
+    waitTimerForOltUp: 360
+
     <<: *test-pipe-job-boiler-plate
 
     parameters:
@@ -140,7 +144,17 @@
       - string:
           name: openoltAdapterChart
           default: '{openoltAdapterChart}'
-          description: 'OpenOLT chart name (or location on file system)'
+          description: 'Olt adapter chart name (or location on file system)'
+
+      - string:
+          name: oltAdapterReleaseName
+          default: '{oltAdapterReleaseName}'
+          description: 'Olt adapter release name'
+
+      - string:
+          name: waitTimerForOltUp
+          default: '{waitTimerForOltUp}'
+          description: 'Wait timer for the OLT to come up after reboot'
 
     concurrent: true
 
@@ -166,6 +180,10 @@
 
     openoltAdapterChart: onf/voltha-adapter-openolt
 
+    oltAdapterReleaseName: open-olt
+
+    waitTimerForOltUp: 360
+
     parameters:
       - string:
           name: buildNode
@@ -249,7 +267,17 @@
       - string:
           name: openoltAdapterChart
           default: '{openoltAdapterChart}'
-          description: 'OpenOLT chart name (or location on file system)'
+          description: 'Olt adapter chart name (or location on file system)'
+
+      - string:
+          name: oltAdapterReleaseName
+          default: '{oltAdapterReleaseName}'
+          description: 'Olt adapter release name'
+
+      - string:
+          name: waitTimerForOltUp
+          default: '{waitTimerForOltUp}'
+          description: 'Wait timer for the OLT to come up after reboot'
 
     concurrent: true
 
diff --git a/jjb/pipeline/voltha/master/physical-build.groovy b/jjb/pipeline/voltha/master/physical-build.groovy
index f5a7d74..7fa2529 100644
--- a/jjb/pipeline/voltha/master/physical-build.groovy
+++ b/jjb/pipeline/voltha/master/physical-build.groovy
@@ -25,6 +25,12 @@
 def infraNamespace = "infra"
 def volthaNamespace = "voltha"
 
+def deploy_custom_oltAdapterChart(namespace, name, chart, extraHelmFlags) {
+  sh """
+    helm install --create-namespace --set defaults.image_pullPolicy=Always --namespace ${namespace} ${extraHelmFlags} ${name} ${chart}
+   """
+}
+
 pipeline {
 
   /* no label, executor is determined by JJB */
@@ -121,6 +127,10 @@
             // adding user specified helm flags at the end so they'll have priority over everything else
             localHelmFlags = localHelmFlags + " ${extraHelmFlags}"
 
+            if(openoltAdapterChart != "onf/voltha-adapter-openolt") {
+              localHelmFlags = localHelmFlags + " --set voltha-adapter-openolt.enabled=false"
+            }
+
             volthaDeploy([
               workflow: workFlow.toLowerCase(),
               extraHelmFlags: localHelmFlags,
@@ -132,6 +142,10 @@
               etcdReplica: params.NumOfEtcd,
               bbsimReplica: bbsimReplicas.toInteger(),
               ])
+
+              if(openoltAdapterChart != "onf/voltha-adapter-openolt"){
+                deploy_custom_oltAdapterChart(volthaNamespace, oltAdapterReleaseName, openoltAdapterChart, extraHelmFlags)
+              }
           }
           sh """
           JENKINS_NODE_COOKIE="dontKillMe" _TAG="voltha-api" bash -c "while true; do kubectl port-forward --address 0.0.0.0 -n ${volthaNamespace} svc/voltha-voltha-api 55555:55555; done"&
@@ -318,28 +332,39 @@
     stage('Restart OLT processes') {
       steps {
         script {
+          //rebooting OLTs
           for(int i=0; i < deployment_config.olts.size(); i++) {
-            int waitTimerForOltUp = 360
-            if ( params.inBandManagement ) {
-              waitTimerForOltUp = 540
-            }
-            timeout(15) {
+            if ( params.oltAdapterReleaseName != "open-olt" ) {
+              timeout(15) {
+                sh returnStdout: true, script: """
+                ssh-keyscan -H ${deployment_config.olts[i].sship} >> ~/.ssh/known_hosts
+                sshpass -p ${deployment_config.olts[i].pass} ssh -l ${deployment_config.olts[i].user} ${deployment_config.olts[i].sship} 'rm -f /var/log/openolt.log; rm -f /var/log/dev_mgmt_daemon.log; rm -f /var/log/openolt_process_watchdog.log; reboot > /dev/null &' || true
+                """
+              }
+            } else {
               sh returnStdout: true, script: """
               ssh-keyscan -H ${deployment_config.olts[i].sship} >> ~/.ssh/known_hosts
-              sshpass -p ${deployment_config.olts[i].pass} ssh -l ${deployment_config.olts[i].user} ${deployment_config.olts[i].sship} 'rm -f /var/log/openolt.log; rm -f /var/log/dev_mgmt_daemon.log; rm -f /var/log/openolt_process_watchdog.log; reboot > /dev/null &' || true
-              sleep ${waitTimerForOltUp}
+              sshpass -p ${deployment_config.olts[i].pass} ssh -l ${deployment_config.olts[i].user} ${deployment_config.olts[i].sship} 'reboot > /dev/null &' || true
               """
             }
-            timeout(15) {
-              waitUntil {
-                devprocess = sh returnStdout: true, script: "sshpass -p ${deployment_config.olts[i].pass} ssh -l ${deployment_config.olts[i].user} ${deployment_config.olts[i].sship} 'ps -ef | grep dev_mgmt_daemon | wc -l'"
-                return devprocess.toInteger() > 0
+          }
+          sh returnStdout: true, script: """
+          sleep ${params.waitTimerForOltUp}
+          """
+          //Checking dev_management_deamon and openoltprocesses
+          for(int i=0; i < deployment_config.olts.size(); i++) {
+            if ( params.oltAdapterReleaseName != "open-olt" ) {
+              timeout(15) {
+                waitUntil {
+                  devprocess = sh returnStdout: true, script: "sshpass -p ${deployment_config.olts[i].pass} ssh -l ${deployment_config.olts[i].user} ${deployment_config.olts[i].sship} 'ps -ef | grep dev_mgmt_daemon | wc -l'"
+                  return devprocess.toInteger() > 0
+                }
               }
-            }
-            timeout(15) {
-              waitUntil {
-                openoltprocess = sh returnStdout: true, script: "sshpass -p ${deployment_config.olts[i].pass} ssh -l ${deployment_config.olts[i].user} ${deployment_config.olts[i].sship} 'ps -ef | grep openolt | wc -l'"
-                return openoltprocess.toInteger() > 0
+              timeout(15) {
+                waitUntil {
+                  openoltprocess = sh returnStdout: true, script: "sshpass -p ${deployment_config.olts[i].pass} ssh -l ${deployment_config.olts[i].user} ${deployment_config.olts[i].sship} 'ps -ef | grep openolt | wc -l'"
+                  return openoltprocess.toInteger() > 0
+                }
               }
             }
           }
diff --git a/jjb/pipeline/voltha/master/voltha-dt-physical-functional-tests.groovy b/jjb/pipeline/voltha/master/voltha-dt-physical-functional-tests.groovy
index fd27e86..a551fa4 100644
--- a/jjb/pipeline/voltha/master/voltha-dt-physical-functional-tests.groovy
+++ b/jjb/pipeline/voltha/master/voltha-dt-physical-functional-tests.groovy
@@ -29,7 +29,7 @@
     label "${params.buildNode}"
   }
   options {
-    timeout(time: 640, unit: 'MINUTES')
+    timeout(time: "${timeout}", unit: 'MINUTES')
   }
 
   environment {
diff --git a/jjb/pipeline/voltha/master/voltha-physical-functional-tests.groovy b/jjb/pipeline/voltha/master/voltha-physical-functional-tests.groovy
index 21feddd..aca802b 100644
--- a/jjb/pipeline/voltha/master/voltha-physical-functional-tests.groovy
+++ b/jjb/pipeline/voltha/master/voltha-physical-functional-tests.groovy
@@ -29,7 +29,7 @@
     label "${params.buildNode}"
   }
   options {
-    timeout(time: 380, unit: 'MINUTES')
+    timeout(time: "${timeout}", unit: 'MINUTES')
   }
 
   environment {
diff --git a/jjb/pipeline/voltha/master/voltha-physical-soak-dt-tests.groovy b/jjb/pipeline/voltha/master/voltha-physical-soak-dt-tests.groovy
index a87e300..a9a2005 100644
--- a/jjb/pipeline/voltha/master/voltha-physical-soak-dt-tests.groovy
+++ b/jjb/pipeline/voltha/master/voltha-physical-soak-dt-tests.groovy
@@ -31,7 +31,7 @@
     label "${params.buildNode}"
   }
   options {
-    timeout(time: 280, unit: 'MINUTES')
+    timeout(time: "${timeout}", unit: 'MINUTES')
   }
 
   environment {
diff --git a/jjb/pipeline/voltha/master/voltha-tt-physical-functional-tests.groovy b/jjb/pipeline/voltha/master/voltha-tt-physical-functional-tests.groovy
index d738ba3..cc3538a 100644
--- a/jjb/pipeline/voltha/master/voltha-tt-physical-functional-tests.groovy
+++ b/jjb/pipeline/voltha/master/voltha-tt-physical-functional-tests.groovy
@@ -29,7 +29,7 @@
     label "${params.buildNode}"
   }
   options {
-    timeout(time: 210, unit: 'MINUTES')
+    timeout(time: "${timeout}", unit: 'MINUTES')
   }
 
   environment {
diff --git a/jjb/pipeline/voltha/voltha-2.8/physical-build.groovy b/jjb/pipeline/voltha/voltha-2.8/physical-build.groovy
index 5244628..007da19 100644
--- a/jjb/pipeline/voltha/voltha-2.8/physical-build.groovy
+++ b/jjb/pipeline/voltha/voltha-2.8/physical-build.groovy
@@ -25,6 +25,12 @@
 def infraNamespace = "infra"
 def volthaNamespace = "voltha"
 
+def deploy_custom_oltAdapterChart(namespace, name, chart, extraHelmFlags) {
+  sh """
+    helm install --create-namespace --set defaults.image_pullPolicy=Always --namespace ${namespace} ${extraHelmFlags} ${name} ${chart}
+   """
+}
+
 pipeline {
 
   /* no label, executor is determined by JJB */
@@ -121,6 +127,10 @@
             // adding user specified helm flags at the end so they'll have priority over everything else
             localHelmFlags = localHelmFlags + " ${extraHelmFlags}"
 
+            if(openoltAdapterChart != "onf/voltha-adapter-openolt") {
+              localHelmFlags = localHelmFlags + " --set voltha-adapter-openolt.enabled=false"
+            }
+
             volthaDeploy([
               workflow: workFlow.toLowerCase(),
               extraHelmFlags: localHelmFlags,
@@ -132,6 +142,10 @@
               etcdReplica: params.NumOfEtcd,
               bbsimReplica: bbsimReplicas.toInteger(),
               ])
+
+              if(openoltAdapterChart != "onf/voltha-adapter-openolt"){
+                deploy_custom_oltAdapterChart(volthaNamespace, oltAdapterReleaseName, openoltAdapterChart, extraHelmFlags)
+              }
           }
           sh """
           JENKINS_NODE_COOKIE="dontKillMe" _TAG="voltha-api" bash -c "while true; do kubectl port-forward --address 0.0.0.0 -n ${volthaNamespace} svc/voltha-voltha-api 55555:55555; done"&
@@ -318,28 +332,39 @@
     stage('Restart OLT processes') {
       steps {
         script {
+          //rebooting OLTs
           for(int i=0; i < deployment_config.olts.size(); i++) {
-            int waitTimerForOltUp = 360
-            if ( params.inBandManagement ) {
-              waitTimerForOltUp = 540
-            }
-            timeout(15) {
+            if ( params.oltAdapterReleaseName != "open-olt" ) {
+              timeout(15) {
+                sh returnStdout: true, script: """
+                ssh-keyscan -H ${deployment_config.olts[i].sship} >> ~/.ssh/known_hosts
+                sshpass -p ${deployment_config.olts[i].pass} ssh -l ${deployment_config.olts[i].user} ${deployment_config.olts[i].sship} 'rm -f /var/log/openolt.log; rm -f /var/log/dev_mgmt_daemon.log; rm -f /var/log/openolt_process_watchdog.log; reboot > /dev/null &' || true
+                """
+              }
+            } else {
               sh returnStdout: true, script: """
               ssh-keyscan -H ${deployment_config.olts[i].sship} >> ~/.ssh/known_hosts
-              sshpass -p ${deployment_config.olts[i].pass} ssh -l ${deployment_config.olts[i].user} ${deployment_config.olts[i].sship} 'rm -f /var/log/openolt.log; rm -f /var/log/dev_mgmt_daemon.log; rm -f /var/log/openolt_process_watchdog.log; reboot > /dev/null &' || true
-              sleep ${waitTimerForOltUp}
+              sshpass -p ${deployment_config.olts[i].pass} ssh -l ${deployment_config.olts[i].user} ${deployment_config.olts[i].sship} 'reboot > /dev/null &' || true
               """
             }
-            timeout(15) {
-              waitUntil {
-                devprocess = sh returnStdout: true, script: "sshpass -p ${deployment_config.olts[i].pass} ssh -l ${deployment_config.olts[i].user} ${deployment_config.olts[i].sship} 'ps -ef | grep dev_mgmt_daemon | wc -l'"
-                return devprocess.toInteger() > 0
+          }
+          sh returnStdout: true, script: """
+          sleep ${params.waitTimerForOltUp}
+          """
+          //Checking dev_management_deamon and openoltprocesses
+          for(int i=0; i < deployment_config.olts.size(); i++) {
+            if ( params.oltAdapterReleaseName != "open-olt" ) {
+              timeout(15) {
+                waitUntil {
+                  devprocess = sh returnStdout: true, script: "sshpass -p ${deployment_config.olts[i].pass} ssh -l ${deployment_config.olts[i].user} ${deployment_config.olts[i].sship} 'ps -ef | grep dev_mgmt_daemon | wc -l'"
+                  return devprocess.toInteger() > 0
+                }
               }
-            }
-            timeout(15) {
-              waitUntil {
-                openoltprocess = sh returnStdout: true, script: "sshpass -p ${deployment_config.olts[i].pass} ssh -l ${deployment_config.olts[i].user} ${deployment_config.olts[i].sship} 'ps -ef | grep openolt | wc -l'"
-                return openoltprocess.toInteger() > 0
+              timeout(15) {
+                waitUntil {
+                  openoltprocess = sh returnStdout: true, script: "sshpass -p ${deployment_config.olts[i].pass} ssh -l ${deployment_config.olts[i].user} ${deployment_config.olts[i].sship} 'ps -ef | grep openolt | wc -l'"
+                  return openoltprocess.toInteger() > 0
+                }
               }
             }
           }
diff --git a/jjb/pipeline/voltha/voltha-2.8/voltha-dt-physical-functional-tests.groovy b/jjb/pipeline/voltha/voltha-2.8/voltha-dt-physical-functional-tests.groovy
index 8ecbc33..05e0902 100644
--- a/jjb/pipeline/voltha/voltha-2.8/voltha-dt-physical-functional-tests.groovy
+++ b/jjb/pipeline/voltha/voltha-2.8/voltha-dt-physical-functional-tests.groovy
@@ -29,7 +29,7 @@
     label "${params.buildNode}"
   }
   options {
-    timeout(time: 640, unit: 'MINUTES')
+    timeout(time: "${timeout}", unit: 'MINUTES')
   }
 
   environment {
diff --git a/jjb/pipeline/voltha/voltha-2.8/voltha-physical-functional-tests.groovy b/jjb/pipeline/voltha/voltha-2.8/voltha-physical-functional-tests.groovy
index 21feddd..aca802b 100644
--- a/jjb/pipeline/voltha/voltha-2.8/voltha-physical-functional-tests.groovy
+++ b/jjb/pipeline/voltha/voltha-2.8/voltha-physical-functional-tests.groovy
@@ -29,7 +29,7 @@
     label "${params.buildNode}"
   }
   options {
-    timeout(time: 380, unit: 'MINUTES')
+    timeout(time: "${timeout}", unit: 'MINUTES')
   }
 
   environment {
diff --git a/jjb/pipeline/voltha/voltha-2.8/voltha-physical-soak-dt-tests.groovy b/jjb/pipeline/voltha/voltha-2.8/voltha-physical-soak-dt-tests.groovy
index a87e300..a9a2005 100644
--- a/jjb/pipeline/voltha/voltha-2.8/voltha-physical-soak-dt-tests.groovy
+++ b/jjb/pipeline/voltha/voltha-2.8/voltha-physical-soak-dt-tests.groovy
@@ -31,7 +31,7 @@
     label "${params.buildNode}"
   }
   options {
-    timeout(time: 280, unit: 'MINUTES')
+    timeout(time: "${timeout}", unit: 'MINUTES')
   }
 
   environment {
diff --git a/jjb/pipeline/voltha/voltha-2.8/voltha-tt-physical-functional-tests.groovy b/jjb/pipeline/voltha/voltha-2.8/voltha-tt-physical-functional-tests.groovy
index 7ed2c37..c6cd0d2 100644
--- a/jjb/pipeline/voltha/voltha-2.8/voltha-tt-physical-functional-tests.groovy
+++ b/jjb/pipeline/voltha/voltha-2.8/voltha-tt-physical-functional-tests.groovy
@@ -29,7 +29,7 @@
     label "${params.buildNode}"
   }
   options {
-    timeout(time: 210, unit: 'MINUTES')
+    timeout(time: "${timeout}", unit: 'MINUTES')
   }
 
   environment {
diff --git a/jjb/verify/abstract-olt.yaml b/jjb/verify/abstract-olt.yaml
deleted file mode 100644
index fcd9bff..0000000
--- a/jjb/verify/abstract-olt.yaml
+++ /dev/null
@@ -1,100 +0,0 @@
----
-# verification jobs for 'abstract-olt' repo
-
-- project:
-    name: abstract-olt
-    project: '{name}'
-
-    jobs:
-      - 'verify-abstract-olt-jobs':
-          branch-regexp: '{supported-branches-regexp}'
-
-- job-group:
-    name: 'verify-abstract-olt-jobs'
-    jobs:
-      - 'verify-licensed'
-      - 'abstract-olt-tests':
-          dependency-jobs: 'verify_abstract-olt_licensed'
-
-- job-template:
-    id: 'abstract-olt-tests'
-    name: 'verify_{project}_tests'
-
-    description: |
-      Created by {id} job-template from ci-management/jjb/verify/abstract-olt.yaml
-
-    triggers:
-      - cord-infra-gerrit-trigger-patchset:
-          gerrit-server-name: '{gerrit-server-name}'
-          project-regexp: '^{project}$'
-          branch-regexp: '{branch-regexp}'
-          dependency-jobs: '{dependency-jobs}'
-          file-include-regexp: '{all-files-regexp}'
-
-    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: 20
-          jenkins-ssh-credential: '{jenkins-ssh-credential}'
-
-    scm:
-      - cord-infra-gerrit-scm:
-          git-url: '$GIT_URL/$GERRIT_PROJECT'
-          refspec: '$GERRIT_REFSPEC'
-          branch: '$GERRIT_BRANCH'
-          submodule-recursive: 'false'
-          choosing-strategy: 'gerrit'
-          jenkins-ssh-credential: '{jenkins-ssh-credential}'
-          basedir: '{project}'
-
-    node: 'ubuntu18.04-basebuild-1c-2g'
-    project-type: freestyle
-    concurrent: true
-
-    builders:
-      - shell: |
-          #!/usr/bin/env bash
-          set -eux -o pipefail
-
-          export GOPATH=~/go
-          export PATH=$PATH:/usr/lib/go-1.12/bin:/usr/local/go/bin:~/go/bin
-
-          # move code the proper location
-          mkdir -p $GOPATH/src/gerrit.opencord.org
-          mv abstract-olt $GOPATH/src/gerrit.opencord.org/abstract-olt
-
-          # get prereqs
-          go get -v github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway
-          go get -v github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger
-          go get -v github.com/golang/protobuf/protoc-gen-go
-
-          pushd $GOPATH/src/gerrit.opencord.org/abstract-olt
-
-          make test
-
-          go test -v ./...  2>&1 | go-junit-report > $WORKSPACE/junit-report.xml
-
-          go test -coverprofile=coverage.txt -covermode=count ./...
-          gocover-cobertura < coverage.txt > $WORKSPACE/coverage.xml
-
-          popd
-
-
-    publishers:
-      - junit:
-          results: "junit-report.xml"
-      - cobertura:
-          report-file: "coverage.xml"
-          targets:
-            - files:
-                healthy: 80
-                unhealthy: 0
-                failing: 0
-            - method:
-                healthy: 50
-                unhealthy: 0
-                failing: 0
diff --git a/jjb/verify/ofagent-py.yaml b/jjb/verify/ofagent-py.yaml
deleted file mode 100644
index 333246b..0000000
--- a/jjb/verify/ofagent-py.yaml
+++ /dev/null
@@ -1,32 +0,0 @@
----
-# verification jobs for 'ofagent-py' repo
-
-# NOTE ofagent-py is unmaintained, should we keep running tests?
-
-- project:
-    name: ofagent-py
-    project: '{name}'
-
-    jobs:
-      - 'verify-ofagent-py-jobs':
-          branch-regexp: '{all-branches-regexp}'
-      - 'publish-ofagent-py-jobs':
-          branch-regexp: '{all-branches-regexp}'
-
-- job-group:
-    name: 'verify-ofagent-py-jobs'
-    jobs:
-      - 'verify-licensed'
-      - 'tag-collision-reject'
-      - 'make-unit-test':
-          unit-test-keep-going: 'true'
-          junit-allow-empty-results: true
-      - 'voltha-patch-test':
-          pipeline-script: 'voltha/voltha-2.8/bbsim-tests.groovy'
-
-- job-group:
-    name: 'publish-ofagent-py-jobs'
-    jobs:
-      - 'docker-publish':
-          docker-repo: 'voltha'
-          dependency-jobs: 'version-tag'
diff --git a/jjb/verify/omci-sim.yaml b/jjb/verify/omci-sim.yaml
deleted file mode 100644
index 7d60783..0000000
--- a/jjb/verify/omci-sim.yaml
+++ /dev/null
@@ -1,19 +0,0 @@
----
-# verification jobs for 'omci-sim' repo
-
-- project:
-    name: omci-sim
-    project: '{name}'
-
-    jobs:
-      - 'verify-omci-sim-jobs':
-          branch-regexp: '{all-branches-regexp}'
-
-- job-group:
-    name: 'verify-omci-sim-jobs'
-    jobs:
-      - 'verify-licensed'
-      - 'tag-collision-reject':
-          dependency-jobs: 'verify_omci-sim_licensed'
-#      - 'make-unit-test':
-#         dest-gopath: "github.com/opencord"
diff --git a/jjb/verify/ponsim.yaml b/jjb/verify/ponsim.yaml
deleted file mode 100644
index 527c0cd..0000000
--- a/jjb/verify/ponsim.yaml
+++ /dev/null
@@ -1,31 +0,0 @@
----
-# verification jobs for 'ponsim' repo
-
-- project:
-    name: ponsim
-    project: '{name}'
-
-    jobs:
-      - 'verify-ponsim-jobs':
-          branch-regexp: '{all-branches-regexp}'
-      - 'publish-ponsim-jobs':
-          branch-regexp: '{all-branches-regexp}'
-
-- job-group:
-    name: 'verify-ponsim-jobs'
-    jobs:
-      - 'verify-licensed'
-      - 'tag-collision-reject':
-          dependency-jobs: 'verify_ponsim_licensed'
-      - 'make-unit-test':
-          build-node: 'ubuntu18.04-basebuild-1c-2g'
-          dest-gopath: "github.com/opencord"
-          unit-test-targets: 'test docker-build'
-          unit-test-keep-going: 'true'
-
-- job-group:
-    name: 'publish-ponsim-jobs'
-    jobs:
-      - 'docker-publish':
-          docker-repo: 'voltha'
-          dependency-jobs: 'version-tag'
diff --git a/jjb/verify/pyvoltha.yaml b/jjb/verify/pyvoltha.yaml
deleted file mode 100644
index 70cfc52..0000000
--- a/jjb/verify/pyvoltha.yaml
+++ /dev/null
@@ -1,30 +0,0 @@
----
-# verification jobs for 'pyvoltha' repo
-
-- project:
-    name: pyvoltha
-    project: '{name}'
-
-    jobs:
-      - 'verify-pyvoltha-jobs':
-          branch-regexp: '{all-branches-regexp}'
-      - 'publish-pyvoltha-jobs':
-          branch-regexp: '{all-branches-regexp}'
-          pypi-index: 'pypi'
-
-- job-group:
-    name: 'verify-pyvoltha-jobs'
-    jobs:
-      - 'verify-licensed'
-      - 'tag-collision-reject':
-          dependency-jobs: 'verify_pyvoltha_licensed'
-      - 'python-unit-test':
-          dependency-jobs: 'verify_pyvoltha_tag-collision'
-
-
-- job-group:
-    name: 'publish-pyvoltha-jobs'
-    jobs:
-      - 'pypi-publish':
-          project-regexp: '^{name}$'
-          dependency-jobs: 'version-tag'
diff --git a/jjb/verify/voltha-bbsim.yaml b/jjb/verify/voltha-bbsim.yaml
deleted file mode 100644
index 5cdf7ad..0000000
--- a/jjb/verify/voltha-bbsim.yaml
+++ /dev/null
@@ -1,33 +0,0 @@
----
-# verification jobs for 'voltha-bbsim' repo
-
-- project:
-    name: voltha-bbsim
-    project: '{name}'
-
-    jobs:
-      - 'verify-voltha-bbsim-jobs':
-          branch-regexp: '{all-branches-regexp}'
-      - 'publish-voltha-bbsim-jobs':
-          branch-regexp: '{all-branches-regexp}'
-
-- job-group:
-    name: 'verify-voltha-bbsim-jobs'
-    jobs:
-      - 'verify-licensed'
-      - 'tag-collision-reject':
-          dependency-jobs: 'verify_voltha-bbsim_licensed'
-      - 'make-unit-test':
-          unit-test-targets: 'test'
-          dest-gopath: "github.com/opencord"
-          junit-allow-empty-results: true
-          build-node: 'ubuntu18.04-basebuild-1c-2g'
-
-- job-group:
-    name: 'publish-voltha-bbsim-jobs'
-    jobs:
-      - 'docker-publish':
-          maintainers: "teo@opennetworking.org"
-          build-timeout: 30
-          docker-repo: 'voltha'
-          dependency-jobs: 'version-tag'
diff --git a/jjb/verify/voltha-openonu-adapter.yaml b/jjb/verify/voltha-openonu-adapter.yaml
deleted file mode 100644
index 564846a..0000000
--- a/jjb/verify/voltha-openonu-adapter.yaml
+++ /dev/null
@@ -1,56 +0,0 @@
----
-# verification jobs for 'voltha-openonu-adapter' repo
-# NOTE this component is deprecated, should we keep running the tests?
-
-- project:
-    name: voltha-openonu-adapter
-    project: '{name}'
-
-    jobs:
-      - 'verify-voltha-openonu-adapter-jobs':
-          branch-regexp: '{all-branches-regexp}'
-      - 'verify-voltha-openonu-adapter-jobs-voltha-2.8':
-          name-extension: '-voltha-2.8'
-          override-branch: 'voltha-2.8'
-          branch-regexp: '{kind-voltha-regexp}'
-      - 'verify-voltha-openonu-adapter-jobs-master':
-          branch-regexp: '^master$'
-      - 'publish-voltha-openonu-adapter-jobs':
-          branch-regexp: '{all-branches-regexp}'
-
-- job-group:
-    name: 'verify-voltha-openonu-adapter-jobs'
-    jobs:
-      - 'verify-licensed'
-      - 'tag-collision-reject':
-          dependency-jobs: 'verify_voltha-openonu-adapter_licensed'
-      - 'make-unit-test':
-          unit-test-targets: 'test'
-          unit-test-keep-going: 'true'
-          junit-allow-empty-results: true
-          build-timeout: 15
-      - 'make-sca':
-          unit-test-targets: 'sca'
-          unit-test-keep-going: 'true'
-          junit-allow-empty-results: true
-          build-timeout: 15
-
-- job-group:
-    name: 'verify-voltha-openonu-adapter-jobs-voltha-2.8'
-    jobs:
-      - 'voltha-patch-test':
-          pipeline-script: 'voltha/voltha-2.8/bbsim-tests.groovy'
-
-- job-group:
-    name: 'verify-voltha-openonu-adapter-jobs-master'
-    jobs:
-      - 'voltha-patch-test':
-          extraHelmFlags: '--set global.image_tag=master --set onos-classic.image.tag=master'
-
-- job-group:
-    name: 'publish-voltha-openonu-adapter-jobs'
-    jobs:
-      - 'docker-publish':
-          build-timeout: 30
-          docker-repo: 'voltha'
-          dependency-jobs: 'version-tag'
diff --git a/jjb/verify/voltha-ponsimolt-adapter.yaml b/jjb/verify/voltha-ponsimolt-adapter.yaml
deleted file mode 100644
index 052107d..0000000
--- a/jjb/verify/voltha-ponsimolt-adapter.yaml
+++ /dev/null
@@ -1,29 +0,0 @@
----
-# verification jobs for 'voltha-ponsimolt-adapter' repo
-
-- project:
-    name: voltha-ponsimolt-adapter
-    project: '{name}'
-
-    jobs:
-      - 'verify-voltha-ponsimolt-adapter-jobs':
-          branch-regexp: '{all-branches-regexp}'
-      - 'publish-voltha-ponsimolt-adapter-jobs':
-          branch-regexp: '{all-branches-regexp}'
-
-- job-group:
-    name: 'verify-voltha-ponsimolt-adapter-jobs'
-    jobs:
-      - 'verify-licensed'
-      - 'tag-collision-reject':
-          dependency-jobs: 'verify_voltha-ponsimolt-adapter_licensed'
-      - 'make-unit-test':
-          dest-gopath: "github.com/opencord"
-          unit-test-keep-going: 'true'
-
-- job-group:
-    name: 'publish-voltha-ponsimolt-adapter-jobs'
-    jobs:
-      - 'docker-publish':
-          docker-repo: 'voltha'
-          dependency-jobs: 'version-tag'
diff --git a/jjb/verify/voltha-ponsimonu-adapter.yaml b/jjb/verify/voltha-ponsimonu-adapter.yaml
deleted file mode 100644
index 3f83d09..0000000
--- a/jjb/verify/voltha-ponsimonu-adapter.yaml
+++ /dev/null
@@ -1,29 +0,0 @@
----
-# verification jobs for 'voltha-ponsimonu-adapter' repo
-
-- project:
-    name: voltha-ponsimonu-adapter
-    project: '{name}'
-
-    jobs:
-      - 'verify-voltha-ponsimonu-adapter-jobs':
-          branch-regexp: '{all-branches-regexp}'
-      - 'publish-voltha-ponsimonu-adapter-jobs':
-          branch-regexp: '{all-branches-regexp}'
-
-- job-group:
-    name: 'verify-voltha-ponsimonu-adapter-jobs'
-    jobs:
-      - 'verify-licensed'
-      - 'tag-collision-reject':
-          dependency-jobs: 'verify_voltha-ponsimonu-adapter_licensed'
-      - 'make-unit-test':
-          dest-gopath: "github.com/opencord"
-          unit-test-keep-going: 'true'
-
-- job-group:
-    name: 'publish-voltha-ponsimonu-adapter-jobs'
-    jobs:
-      - 'docker-publish':
-          docker-repo: 'voltha'
-          dependency-jobs: 'version-tag'
diff --git a/jjb/verify/voltha-python-base.yaml b/jjb/verify/voltha-python-base.yaml
deleted file mode 100644
index ce03fb3..0000000
--- a/jjb/verify/voltha-python-base.yaml
+++ /dev/null
@@ -1,30 +0,0 @@
----
-# verification jobs for 'voltha-python-base' repo
-
-- project:
-    name: voltha-python-base
-    project: '{name}'
-
-    jobs:
-      - 'verify-voltha-python-base-jobs':
-          branch-regexp: '{all-branches-regexp}'
-      - 'publish-voltha-python-base-jobs'
-
-- job-group:
-    name: 'verify-voltha-python-base-jobs'
-    jobs:
-      - 'verify-licensed'
-      - 'tag-collision-reject':
-          dependency-jobs: 'verify_voltha-python-base_licensed'
-      - 'make-unit-test':
-          build-timeout: 30
-          unit-test-targets: 'docker-build'
-          junit-allow-empty-results: true
-
-- job-group:
-    name: 'publish-voltha-python-base-jobs'
-    jobs:
-      - 'docker-publish':
-          build-timeout: 30
-          docker-repo: 'voltha'
-          dependency-jobs: 'version-tag'
diff --git a/jjb/verify/voltha-simolt-adapter.yaml b/jjb/verify/voltha-simolt-adapter.yaml
deleted file mode 100644
index 41afcac..0000000
--- a/jjb/verify/voltha-simolt-adapter.yaml
+++ /dev/null
@@ -1,29 +0,0 @@
----
-# verification jobs for 'voltha-simolt-adapter' repo
-
-- project:
-    name: voltha-simolt-adapter
-    project: '{name}'
-
-    jobs:
-      - 'verify-voltha-simolt-adapter-jobs':
-          branch-regexp: '{all-branches-regexp}'
-      - 'publish-voltha-simolt-adapter-jobs':
-          branch-regexp: '{all-branches-regexp}'
-
-- job-group:
-    name: 'verify-voltha-simolt-adapter-jobs'
-    jobs:
-      - 'verify-licensed'
-      - 'tag-collision-reject':
-          dependency-jobs: 'verify_voltha-simolt-adapter_licensed'
-      - 'make-unit-test':
-          dest-gopath: "github.com/opencord"
-          unit-test-keep-going: 'true'
-
-- job-group:
-    name: 'publish-voltha-simolt-adapter-jobs'
-    jobs:
-      - 'docker-publish':
-          docker-repo: 'voltha'
-          dependency-jobs: 'version-tag'
diff --git a/jjb/verify/voltha-simonu-adapter.yaml b/jjb/verify/voltha-simonu-adapter.yaml
deleted file mode 100644
index 29aa572..0000000
--- a/jjb/verify/voltha-simonu-adapter.yaml
+++ /dev/null
@@ -1,29 +0,0 @@
----
-# verification jobs for 'voltha-simonu-adapter' repo
-
-- project:
-    name: voltha-simonu-adapter
-    project: '{name}'
-
-    jobs:
-      - 'verify-voltha-simonu-adapter-jobs':
-          branch-regexp: '{all-branches-regexp}'
-      - 'publish-voltha-simonu-adapter-jobs':
-          branch-regexp: '{all-branches-regexp}'
-
-- job-group:
-    name: 'verify-voltha-simonu-adapter-jobs'
-    jobs:
-      - 'verify-licensed'
-      - 'tag-collision-reject':
-          dependency-jobs: 'verify_voltha-simonu-adapter_licensed'
-      - 'make-unit-test':
-          dest-gopath: "github.com/opencord"
-          unit-test-keep-going: 'true'
-
-- job-group:
-    name: 'publish-voltha-simonu-adapter-jobs'
-    jobs:
-      - 'docker-publish':
-          docker-repo: 'voltha'
-          dependency-jobs: 'version-tag'
diff --git a/jjb/verify/voltha.yaml b/jjb/verify/voltha.yaml
deleted file mode 100644
index 6eede8d..0000000
--- a/jjb/verify/voltha.yaml
+++ /dev/null
@@ -1,18 +0,0 @@
----
-# verification jobs for 'xos' repo
-
-- project:
-    name: voltha
-    project: '{name}'
-
-    jobs:
-      - 'verify-voltha-jobs':
-          branch-regexp: '^(master|voltha-.*)$'
-
-- job-group:
-    name: 'verify-voltha-jobs'
-    jobs:
-      - 'verify-licensed'
-      - 'voltha-unit-test':
-          dependency-jobs: 'verify_voltha_licensed'
-
diff --git a/jjb/voltha-test/voltha-certification.yaml b/jjb/voltha-test/voltha-certification.yaml
index 228833f..90b6d25 100644
--- a/jjb/voltha-test/voltha-certification.yaml
+++ b/jjb/voltha-test/voltha-certification.yaml
@@ -89,6 +89,7 @@
 
       # Certification (Radisys) POD test job - master versions: uses 1T8GEM tech profile on voltha branch
       - 'build_voltha_pod_test':
+          timeout: 270
           build-node: 'menlo-certification-pod'
           config-pod: 'menlo-certification-pod-radisys-3200g'
           disable-job: false
@@ -129,6 +130,62 @@
           power-switch: True
           pipeline-script: 'voltha/voltha-2.8/voltha-dt-physical-functional-tests.groovy'
 
+      # Certification (Radisys) pod with olt/onu - 2.8 version timer based job
+      - 'build_voltha_pod_release_timer':
+          build-node: 'menlo-certification-pod'
+          config-pod: 'menlo-certification-pod-radisys-1600g'
+          disable-job: false
+          reinstall-olt: false
+          release: '2.8'
+          branch: 'voltha-2.8'
+          name-extension: '_DT'
+          work-flow: 'DT'
+          profile: '1T8GEM'
+          time: '13'
+          pipeline-script: 'voltha/voltha-2.8/physical-build.groovy'
+
+      # Certification (Radisys) POD test job - master versions: uses 1T8GEM tech profile on voltha branch
+      - 'build_voltha_pod_test':
+          build-node: 'menlo-certification-pod'
+          config-pod: 'menlo-certification-pod-radisys-1600g'
+          disable-job: false
+          release: '2.8'
+          branch: 'voltha-2.8'
+          name-extension: '_DT'
+          work-flow: 'DT'
+          test-repo: 'voltha-system-tests'
+          profile: '1T8GEM'
+          power-switch: True
+          pipeline-script: 'voltha/voltha-2.8/voltha-dt-physical-functional-tests.groovy'
+
+      # Certification (Radisys) pod with olt/onu - 2.8 version timer based job
+      - 'build_voltha_pod_release_timer':
+          build-node: 'menlo-certification-pod'
+          config-pod: 'menlo-certification-pod-radisys-1600x'
+          disable-job: false
+          reinstall-olt: false
+          release: '2.8'
+          branch: 'voltha-2.8'
+          name-extension: '_DT'
+          work-flow: 'DT'
+          profile: '1T8GEM'
+          time: '17'
+          pipeline-script: 'voltha/voltha-2.8/physical-build.groovy'
+
+      # Certification (Radisys) POD test job - master versions: uses 1T8GEM tech profile on voltha branch
+      - 'build_voltha_pod_test':
+          build-node: 'menlo-certification-pod'
+          config-pod: 'menlo-certification-pod-radisys-1600x'
+          disable-job: false
+          release: '2.8'
+          branch: 'voltha-2.8'
+          name-extension: '_DT'
+          work-flow: 'DT'
+          test-repo: 'voltha-system-tests'
+          profile: '1T8GEM'
+          power-switch: True
+          pipeline-script: 'voltha/voltha-2.8/voltha-dt-physical-functional-tests.groovy'
+
       # Certification (Radisys) pod with olt/onu - master versions timer based job , two OLTs
       - 'build_voltha_pod_release_timer':
             build-node: 'menlo-certification-pod'
diff --git a/jjb/voltha-test/voltha-nightly-jobs.yaml b/jjb/voltha-test/voltha-nightly-jobs.yaml
index 5d4a1fd..bc70d30 100644
--- a/jjb/voltha-test/voltha-nightly-jobs.yaml
+++ b/jjb/voltha-test/voltha-nightly-jobs.yaml
@@ -7,6 +7,10 @@
 
     openoltAdapterChart: onf/voltha-adapter-openolt
 
+    oltAdapterReleaseName: open-olt
+
+    waitTimerForOltUp: 360
+
     parameters:
       - string:
           name: buildNode
@@ -168,7 +172,18 @@
       - string:
           name: openoltAdapterChart
           default: '{openoltAdapterChart}'
-          description: 'OpenOLT chart name (or location on file system)'
+          description: 'Olt adapter chart name (or location on file system)'
+
+      # this is used in the Adtran DT job
+      - string:
+          name: oltAdapterReleaseName
+          default: '{oltAdapterReleaseName}'
+          description: 'Olt adapter release name'
+
+      - string:
+          name: waitTimerForOltUp
+          default: '{waitTimerForOltUp}'
+          description: 'Wait timer for the OLT to come up after reboot'
 
 # defualt properties for the VOLTHA scale jobs
 - voltha-pipe-job-boiler-plate: &voltha-pipe-job-boiler-plate
@@ -289,9 +304,15 @@
 
     oltAdapterAppLabel: 'adapter-open-olt'
     enableMultiUni: false
+    timeout: 240
 
     parameters:
       - string:
+          name: timeout
+          default: '{timeout}'
+          description: 'Job pipeline timeout value [minutes]'
+
+      - string:
           name: buildNode
           default: '{build-node}'
           description: 'Name of the Jenkins executor node to run the job on'
@@ -415,9 +436,15 @@
     manifest-branch: 'master'
 
     oltAdapterAppLabel: 'adapter-open-olt'
+    timeout: 240
 
     parameters:
       - string:
+          name: timeout
+          default: '{timeout}'
+          description: 'Job pipeline timeout value [minutes]'
+
+      - string:
           name: buildNode
           default: '{build-node}'
           description: 'Name of the Jenkins executor node to run the job on'
@@ -540,9 +567,15 @@
 
     oltAdapterAppLabel: 'adapter-open-olt'
     enableMultiUni: false
+    timeout: 240
 
     parameters:
       - string:
+          name: timeout
+          default: '{timeout}'
+          description: 'Job pipeline timeout value [minutes]'
+
+      - string:
           name: buildNode
           default: '{build-node}'
           description: 'Name of the Jenkins executor node to run the job on'
diff --git a/jjb/voltha-test/voltha.yaml b/jjb/voltha-test/voltha.yaml
index f9f8d58..04253bf 100644
--- a/jjb/voltha-test/voltha.yaml
+++ b/jjb/voltha-test/voltha.yaml
@@ -189,11 +189,13 @@
           num-of-onos: '3'
           num-of-atomix: '3'
           in-band-management: true
+          waitTimerForOltUp: 540
           VolthaEtcdPort: 9999
           time: '1'
 
       # Menlo pod test job - master test job uses tech profile on voltha branch
       - 'build_voltha_pod_test':
+          timeout: 300
           build-node: 'menlo-demo-pod'
           config-pod: 'onf-demo-pod'
           release: 'master'
@@ -213,10 +215,12 @@
           num-of-atomix: '3'
           VolthaEtcdPort: 9999
           in-band-management: true
+          waitTimerForOltUp: 540
           time: '4'
 
       # Menlo pod test job - uses tech profile on voltha branch
       - 'build_voltha_pod_test':
+          timeout: 300
           build-node: 'menlo-demo-pod'
           config-pod: 'onf-demo-pod'
           release: 'master'
@@ -246,6 +250,7 @@
 
       # Menlo pod test job - uses tech profile on voltha branch
       - 'build_voltha_pod_test':
+          timeout: 300
           build-node: 'menlo-demo-pod'
           config-pod: 'onf-demo-pod'
           release: '2.8'
@@ -391,10 +396,11 @@
           profile: '1T8GEM'
           num-of-onos: '3'
           num-of-atomix: '3'
-          time: '18'
+          time: '16'
 
       # Berlin POD test job - master versions: uses tech profile on voltha branch
       - 'build_voltha_pod_test':
+          timeout: 300
           build-node: 'dt-berlin-community-pod'
           config-pod: 'dt-berlin-pod-multi-olt'
           release: 'master'
@@ -441,7 +447,7 @@
           profile: '1T8GEM'
           num-of-onos: '3'
           num-of-atomix: '3'
-          time: '13'
+          time: '11'
           pipeline-script: 'voltha/voltha-2.8/physical-build.groovy'
 
       # Berlin POD test job - master versions: uses 1T8GEM tech profile on voltha branch
@@ -469,7 +475,7 @@
           num-of-onos: '3'
           num-of-atomix: '3'
           pipeline-script: 'voltha/voltha-2.8/physical-build.groovy'
-          time: '6'
+          time: '5'
 
       # Berlin POD test job - master versions: uses tech profile on voltha branch
       - 'build_voltha_pod_test':
@@ -483,3 +489,39 @@
           profile: '1T8GEM'
           power-switch: True
           pipeline-script: 'voltha/voltha-2.8/voltha-dt-physical-functional-tests.groovy'
+
+      # Berlin pod with adtran gpon olt/onu - 2.8 1T8GEM tech profile and timer based job
+      - 'build_voltha_pod_release_timer':
+          build-node: 'dt-berlin-community-pod'
+          config-pod: 'dt-berlin-pod-gpon-adtran'
+          name-extension: '_DT'
+          work-flow: 'DT'
+          release: '2.8'
+          branch: 'voltha-2.8'
+          profile: '1T8GEM'
+          reinstall-olt: false
+          extraHelmFlags: "--set adapter_adtran_olt.kv_store_data_prefix='service/voltha/voltha_voltha' --set network.netconfUserSecret='' --set adapter_adtran_olt.topics.core_topic=voltha_voltha_rwcore"
+          num-of-onos: '3'
+          num-of-atomix: '3'
+          pipeline-script: 'voltha/voltha-2.8/physical-build.groovy'
+          VolthaEtcdPort: 9999
+          openoltAdapterChart: '/home/community/adtran-21.4-voltha-2.8/voltha-adapter-adtran-olt'
+          oltAdapterReleaseName: 'adtran-olt'
+          waitTimerForOltUp: 420
+          time: '21'
+
+      # Berlin POD adtran test job - 2.8 versions: uses 1T8GEM tech profile on voltha branch
+      - 'build_voltha_pod_test':
+          timeout: 390
+          build-node: 'dt-berlin-community-pod'
+          config-pod: 'dt-berlin-pod-gpon-adtran'
+          release: '2.8'
+          branch: 'voltha-2.8'
+          name-extension: '_DT'
+          work-flow: 'DT'
+          test-repo: 'voltha-system-tests'
+          profile: '1T8GEM'
+          power-switch: True
+          pipeline-script: 'voltha/voltha-2.8/voltha-dt-physical-functional-tests.groovy'
+          oltAdapterAppLabel: 'adapter-adtran-olt'
+