Merge "Connecting OfAgent to all ONOS nodes"
diff --git a/jjb/cord-test/voltha.yaml b/jjb/cord-test/voltha.yaml
index 2fb494f..c0cd766 100644
--- a/jjb/cord-test/voltha.yaml
+++ b/jjb/cord-test/voltha.yaml
@@ -97,6 +97,7 @@
           config-pod: 'flex-ocp-cord'
           release: '2.6'
           branch: 'voltha-2.6'
+          disable-job: true
           num-of-openonu: '1'
           num-of-onos: '3'
           num-of-atomix: '3'
@@ -112,15 +113,42 @@
           config-pod: 'flex-ocp-cord'
           release: '2.6'
           branch: 'voltha-2.6'
+          disable-job: true
           power-switch: True
           test-repo: 'voltha-system-tests'
           profile: '1T4GEM'
 
 
+      # flex OCP pod with olt/onu - Released versions Default tech profile and timer based job
+      - 'build_voltha_pod_release_timer':
+          build-node: 'qa-testvm-pod'
+          config-pod: 'flex-ocp-cord'
+          release: '2.7'
+          branch: 'voltha-2.7'
+          num-of-openonu: '1'
+          num-of-onos: '3'
+          num-of-atomix: '3'
+          test-repo: 'voltha-system-tests'
+          Jenkinsfile: 'Jenkinsfile-voltha-build'
+          configurePod: true
+          profile: '1T4GEM'
+          time: '1'
+
+      # flex pod1 test job - released versions: uses tech profile on voltha branch
+      - 'build_voltha_pod_test':
+          build-node: 'qa-testvm-pod'
+          config-pod: 'flex-ocp-cord'
+          release: '2.7'
+          branch: 'voltha-2.7'
+          power-switch: True
+          test-repo: 'voltha-system-tests'
+          profile: '1T4GEM'
+
      # flex OCP pod with olt/onu - Released versions Default tech profile and timer based job
       - 'build_voltha_pod_release_timer':
           build-node: 'qa-testvm-pod'
           config-pod: 'flex-ocp-cord'
+          disable-job: true
           release: '2.6'
           branch: 'voltha-2.6'
           num-of-openonu: '1'
@@ -138,6 +166,7 @@
       - 'build_voltha_pod_test':
           build-node: 'qa-testvm-pod'
           config-pod: 'flex-ocp-cord'
+          disable-job: true
           release: '2.6'
           branch: 'voltha-2.6'
           name-extension: '_TT'
@@ -147,6 +176,37 @@
           test-repo: 'voltha-system-tests'
           profile: 'TP'
 
+
+     # flex OCP pod with olt/onu - Released versions Default tech profile and timer based job
+      - 'build_voltha_pod_release_timer':
+          build-node: 'qa-testvm-pod'
+          config-pod: 'flex-ocp-cord'
+          release: '2.7'
+          branch: 'voltha-2.7'
+          num-of-openonu: '1'
+          num-of-onos: '3'
+          num-of-atomix: '3'
+          name-extension: '_TT'
+          work-flow: 'TT'
+          test-repo: 'voltha-system-tests'
+          Jenkinsfile: 'Jenkinsfile-voltha-build'
+          configurePod: true
+          profile: 'TP'
+          time: '22'
+
+      # flex pod1 test job - released versions: uses tech profile on voltha branch
+      - 'build_voltha_pod_test':
+          build-node: 'qa-testvm-pod'
+          config-pod: 'flex-ocp-cord'
+          release: '2.7'
+          branch: 'voltha-2.7'
+          name-extension: '_TT'
+          work-flow: 'TT'
+          power-switch: True
+          pipeline-script: 'voltha-tt-physical-functional-tests.groovy'
+          test-repo: 'voltha-system-tests'
+          profile: 'TP'
+
     # flex OCP pod with olt/onu - Released versions Default tech profile and timer based job
       - 'build_voltha_pod_release_timer':
           build-node: 'qa-testvm-pod'
@@ -181,6 +241,7 @@
       - 'build_voltha_pod_release_timer':
           build-node: 'qa-testvm-pod'
           config-pod: 'flex-ocp-cord-openonupy'
+          disable-job: true
           release: '2.6'
           branch: 'voltha-2.6'
           num-of-onos: '3'
@@ -196,6 +257,7 @@
       - 'build_voltha_pod_test':
           build-node: 'qa-testvm-pod'
           config-pod: 'flex-ocp-cord-openonupy'
+          disable-job: true
           name-extension: '_openonupy'
           release: '2.6'
           branch: 'voltha-2.6'
@@ -207,6 +269,7 @@
       - 'build_voltha_pod_release_timer':
           build-node: 'qa-testvm-pod'
           config-pod: 'flex-ocp-cord-openonupy'
+          disable-job: true
           release: '2.6'
           branch: 'voltha-2.6'
           num-of-onos: '3'
@@ -224,6 +287,7 @@
       - 'build_voltha_pod_test':
           build-node: 'qa-testvm-pod'
           config-pod: 'flex-ocp-cord-openonupy'
+          disable-job: true
           name-extension: '_TT_openonupy'
           release: '2.6'
           branch: 'voltha-2.6'
@@ -297,6 +361,7 @@
       - 'build_voltha_pod_release_timer':
           build-node: 'menlo-demo-pod'
           config-pod: 'onf-demo-pod'
+          disable-job: true
           release: '2.6'
           branch: 'voltha-2.6'
           name-extension: '_DT'
@@ -316,6 +381,7 @@
       - 'build_voltha_pod_test':
           build-node: 'menlo-demo-pod'
           config-pod: 'onf-demo-pod'
+          disable-job: true
           release: '2.6'
           branch: 'voltha-2.6'
           name-extension: '_DT'
@@ -325,6 +391,39 @@
           pipeline-script: 'voltha-dt-physical-functional-tests.groovy'
           power-switch: True
 
+
+      # Menlo pod with olt/onu - released branch,  Default tech profile and timer based job
+      - 'build_voltha_pod_release_timer':
+          build-node: 'menlo-demo-pod'
+          config-pod: 'onf-demo-pod'
+          release: '2.7'
+          branch: 'voltha-2.7'
+          name-extension: '_DT'
+          work-flow: 'DT'
+          num-of-openonu: '1'
+          num-of-onos: '3'
+          num-of-atomix: '3'
+          test-repo: 'voltha-system-tests'
+          Jenkinsfile: 'Jenkinsfile-voltha-build'
+          configurePod: true
+          profile: '1T8GEM'
+          VolthaEtcdPort: '9999'
+          in-band-management: true
+          time: '7'
+
+      # 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: '2.7'
+          branch: 'voltha-2.7'
+          name-extension: '_DT'
+          work-flow: 'DT'
+          test-repo: 'voltha-system-tests'
+          profile: '1T8GEM'
+          pipeline-script: 'voltha-dt-physical-functional-tests.groovy'
+          power-switch: True
+
       # Menlo DEMO-POD - 1 1TCONT 4 4GEMs TechProfile - Manual build and test job
       - 'build_pod_manual':
           build-node: 'menlo-demo-pod'
@@ -407,6 +506,7 @@
       - 'build_voltha_pod_soak_test':
           build-node: 'menlo-soak-pod'
           config-pod: 'onf-soak-pod'
+          disable-job: true
           profile: '1T8GEM'
           branch: 'master'
           release: 'master'
@@ -484,6 +584,7 @@
       - 'build_voltha_pod_release_timer':
           build-node: 'dt-berlin-community-pod'
           config-pod: 'dt-berlin-pod-multi-olt'
+          disable-job: true
           release: '2.6'
           branch: 'voltha-2.6'
           name-extension: '_DT'
@@ -504,6 +605,7 @@
       - 'build_voltha_pod_test':
           build-node: 'dt-berlin-community-pod'
           config-pod: 'dt-berlin-pod-multi-olt'
+          disable-job: true
           release: '2.6'
           branch: 'voltha-2.6'
           name-extension: '_DT'
@@ -513,10 +615,45 @@
           power-switch: True
           pipeline-script: 'voltha-dt-physical-functional-tests.groovy'
 
+      # Berlin pod with olt/onu -  voltha-2.7 timer based job , two OLTs
+      - 'build_voltha_pod_release_timer':
+          build-node: 'dt-berlin-community-pod'
+          config-pod: 'dt-berlin-pod-multi-olt'
+          release: '2.7'
+          branch: 'voltha-2.7'
+          name-extension: '_DT'
+          work-flow: 'DT'
+          num-of-openonu: '1'
+          num-of-onos: '3'
+          num-of-atomix: '3'
+          test-repo: 'voltha-system-tests'
+          Jenkinsfile: 'Jenkinsfile-voltha-build'
+          configurePod: true
+          disable-job: true
+          profile: '1T8GEM'
+          # Update this value accordingly once the job is enabled
+          time: ''
+
+
+      # Berlin POD test job -  voltha-2.7 versions: two OLTs
+      - 'build_voltha_pod_test':
+          build-node: 'dt-berlin-community-pod'
+          config-pod: 'dt-berlin-pod-multi-olt'
+          disable-job: true
+          release: '2.7'
+          branch: 'voltha-2.7'
+          name-extension: '_DT'
+          work-flow: 'DT'
+          test-repo: 'voltha-system-tests'
+          profile: '1T8GEM'
+          power-switch: True
+          pipeline-script: 'voltha-dt-physical-functional-tests.groovy'
+
      # Berlin pod with olt/onu - voltha-2.6 Default tech profile and timer based job
       - 'build_voltha_pod_release_timer':
           build-node: 'dt-berlin-community-pod'
           config-pod: 'dt-berlin-pod'
+          disable-job: true
           release: '2.6'
           branch: 'voltha-2.6'
           num-of-openonu: '1'
@@ -535,12 +672,42 @@
       - 'build_voltha_pod_test':
           build-node: 'dt-berlin-community-pod'
           config-pod: 'dt-berlin-pod'
+          disable-job: true
           release: '2.6'
           branch: 'voltha-2.6'
           test-repo: 'voltha-system-tests'
           profile: 'Default'
           power-switch: True
 
+
+     # Berlin pod with olt/onu - voltha-2.7 Default tech profile and timer based job
+      - 'build_voltha_pod_release_timer':
+          build-node: 'dt-berlin-community-pod'
+          config-pod: 'dt-berlin-pod'
+          release: '2.7'
+          branch: 'voltha-2.7'
+          num-of-openonu: '1'
+          num-of-onos: '3'
+          num-of-atomix: '3'
+          test-repo: 'voltha-system-tests'
+          Jenkinsfile: 'Jenkinsfile-voltha-build'
+          configurePod: true
+          disable-job: true
+          profile: 'Default'
+          # Update this value accordingly once the job is enabled
+          time: ''
+
+
+      # Berlin POD test job - released versions: uses tech profile on voltha branch
+      - 'build_voltha_pod_test':
+          build-node: 'dt-berlin-community-pod'
+          config-pod: 'dt-berlin-pod'
+          release: '2.7'
+          branch: 'voltha-2.7'
+          test-repo: 'voltha-system-tests'
+          profile: 'Default'
+          power-switch: True
+
       # Berlin pod with gpon olt/onu - master 1T8GEM tech profile and timer based job
       - 'build_voltha_pod_release_timer':
           build-node: 'dt-berlin-community-pod'
@@ -591,7 +758,6 @@
           openoltAdapterChart: '/home/community/adtran-2021-01-29/voltha-adapter-adtran-olt'
           time: '7'
 
-
       # Berlin POD adtran test job - master versions: uses 1T8GEM tech profile on voltha branch
       - 'build_voltha_pod_test':
           build-node: 'dt-berlin-community-pod'
@@ -606,10 +772,13 @@
           oltAdapterAppLabel: 'adapter-adtran-olt'
           pipeline-script: 'voltha-dt-physical-functional-tests.groovy'
 
-     # Berlin pod with gpon olt/onu - voltha-2.5 1T8GEM tech profile and timer based job
+
+
+     # Berlin pod with gpon olt/onu - voltha-2.6 1T8GEM tech profile and timer based job
       - 'build_voltha_pod_release_timer':
           build-node: 'dt-berlin-community-pod'
           config-pod: 'dt-berlin-pod-gpon'
+          disable-job: true
           release: '2.6'
           branch: 'voltha-2.6'
           num-of-openonu: '1'
@@ -624,14 +793,47 @@
           time: '13'
 
 
-      # Berlin POD test job - voltha-2.5 versions: uses 1T8GEM tech profile on voltha branch
+      # Berlin POD test job - voltha-2.6 versions: uses 1T8GEM tech profile on voltha branch
+      - 'build_voltha_pod_test':
+          build-node: 'dt-berlin-community-pod'
+          config-pod: 'dt-berlin-pod-gpon'
+          disable-job: true
+          name-extension: '_DT'
+          work-flow: 'DT'
+          release: '2.6'
+          branch: 'voltha-2.6'
+          test-repo: 'voltha-system-tests'
+          profile: '1T8GEM'
+          power-switch: True
+          pipeline-script: 'voltha-dt-physical-functional-tests.groovy'
+
+
+     # Berlin pod with gpon olt/onu - released 1T8GEM tech profile and timer based job
+      - 'build_voltha_pod_release_timer':
+          build-node: 'dt-berlin-community-pod'
+          config-pod: 'dt-berlin-pod-gpon'
+          release: '2.7'
+          branch: 'voltha-2.7'
+          num-of-openonu: '1'
+          num-of-onos: '3'
+          num-of-atomix: '3'
+          name-extension: '_DT'
+          work-flow: 'DT'
+          test-repo: 'voltha-system-tests'
+          Jenkinsfile: 'Jenkinsfile-voltha-build'
+          configurePod: true
+          profile: '1T8GEM'
+          time: '13'
+
+
+      # Berlin POD test job - released versions: uses 1T8GEM tech profile on voltha branch
       - 'build_voltha_pod_test':
           build-node: 'dt-berlin-community-pod'
           config-pod: 'dt-berlin-pod-gpon'
           name-extension: '_DT'
           work-flow: 'DT'
-          release: '2.6'
-          branch: 'voltha-2.6'
+          release: '2.7'
+          branch: 'voltha-2.7'
           test-repo: 'voltha-system-tests'
           profile: '1T8GEM'
           power-switch: True
diff --git a/jjb/pipeline/voltha/master/software-upgrades.groovy b/jjb/pipeline/voltha/master/software-upgrades.groovy
index 7802907..917c078 100644
--- a/jjb/pipeline/voltha/master/software-upgrades.groovy
+++ b/jjb/pipeline/voltha/master/software-upgrades.groovy
@@ -48,6 +48,7 @@
       volthaDeploy([workflow: "att", extraHelmFlags: extraHelmFlags, localCharts: localCharts])
       // start logging
       sh """
+      rm -rf $WORKSPACE/${name} || true
       mkdir -p $WORKSPACE/${name}
       _TAG=kail-${name} kail -n infra -n voltha > $WORKSPACE/${name}/onos-voltha-combined.log &
       """
@@ -58,7 +59,6 @@
       _TAG=voltha-port-forward kubectl port-forward --address 0.0.0.0 -n voltha svc/voltha-voltha-api 55555:55555&
       """
       sh """
-      sshpass -e ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 cfg set org.onosproject.net.driver.impl.DriverRegistryManager requiredDrivers default,voltha
       sshpass -e ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@127.0.0.1 log:set DEBUG org.opencord
       """
   }
@@ -109,6 +109,10 @@
           export ROBOT_MISC_ARGS="-d \$ROBOT_LOGS_DIR -v voltha_comps_under_test:\$VOLTHA_COMPS_UNDER_TEST -e PowerSwitch"
           export TARGET=voltha-comp-upgrade-test
         fi
+        if [[ ${name} == 'onu-software-upgrade' ]]; then
+          export ROBOT_MISC_ARGS="-d \$ROBOT_LOGS_DIR -v onu_image_name:${onuImageName.trim()} -v onu_image_url:${onuImageUrl.trim()} -v onu_image_version:${onuImageVersion.trim()} -v onu_image_crc:${onuImageCrc.trim()} -v onu_image_local_dir:${onuImageLocalDir.trim()} -e PowerSwitch"
+          export TARGET=onu-upgrade-test
+        fi
         export VOLTCONFIG=$HOME/.volt/config-minimal
         export KUBECONFIG=$HOME/.kube/kind-config-voltha-minimal
         # Run the specified tests
@@ -137,8 +141,7 @@
 def get_pods_info(dest) {
   // collect pod details, this is here in case of failure
   sh """
-  rm -rf ${dest} || true
-  mkdir -p ${dest}
+  mkdir -p ${dest} || true
   kubectl get pods --all-namespaces -o wide > ${dest}/pods.txt || true
   kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\n'}" | sort | uniq | tee ${dest}/pod-images.txt || true
   kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.imageID}{'\\n'}" | sort | uniq | tee ${dest}/pod-imagesId.txt || true
@@ -157,7 +160,7 @@
     label "${params.buildNode}"
   }
   options {
-    timeout(time: 30, unit: 'MINUTES')
+    timeout(time: 40, unit: 'MINUTES')
   }
   environment {
     PATH="$PATH:$WORKSPACE/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
@@ -174,10 +177,36 @@
         ])
       }
     }
+    stage('Cleanup') {
+      steps {
+        // remove port-forwarding
+        sh """
+          # remove orphaned port-forward from different namespaces
+          ps aux | grep port-forw | grep -v grep | awk '{print \$2}' | xargs --no-run-if-empty kill -9
+        """
+        helmTeardown(['infra', 'voltha'])
+      }
+    }
+    stage('Install latest voltctl') {
+      steps {
+        sh """
+          # install voltctl
+          HOSTOS="\$(uname -s | tr "[:upper:]" "[:lower:"])"
+          HOSTARCH="\$(uname -m | tr "[:upper:]" "[:lower:"])"
+          if [ "\$HOSTARCH" == "x86_64" ]; then
+              HOSTARCH="amd64"
+          fi
+          VC_VERSION="\$(curl --fail -sSL https://api.github.com/repos/opencord/voltctl/releases/latest | jq -r .tag_name | sed -e 's/^v//g')"
+          curl -Lo $WORKSPACE/bin/voltctl https://github.com/opencord/voltctl/releases/download/v\$VC_VERSION/voltctl-\$VC_VERSION-\$HOSTOS-\$HOSTARCH
+          chmod +x $WORKSPACE/bin/voltctl
+        """
+      }
+    }
     stage('Run Test') {
       steps {
         test_software_upgrade("onos-app-upgrade")
         test_software_upgrade("voltha-component-upgrade")
+        test_software_upgrade("onu-software-upgrade")
       }
     }
   }
@@ -192,6 +221,7 @@
       sh '''
       gzip $WORKSPACE/onos-app-upgrade/onos-voltha-combined.log || true
       gzip $WORKSPACE/voltha-component-upgrade/onos-voltha-combined.log || true
+      gzip $WORKSPACE/onu-software-upgrade/onos-voltha-combined.log || true
       '''
       step([$class: 'RobotPublisher',
          disableArchiveOutput: false,
diff --git a/jjb/software-upgrades.yaml b/jjb/software-upgrades.yaml
index b887912..01ee9a8 100644
--- a/jjb/software-upgrades.yaml
+++ b/jjb/software-upgrades.yaml
@@ -9,13 +9,13 @@
       - 'software-upgrades-test':
           name: 'periodic-software-upgrade-test-bbsim'
           pipeline-script: 'voltha/master/software-upgrades.groovy'
-          onos-image: 'andreacampanella/voltha-onos:olt-group-pkt-req-mcast-fix'
+          onos-image: 'andreacampanella/voltha-onos:olt-required-drivers'
           build-node: 'qct-pod4-node2'
           code-branch: 'master'
           aaa-version: '2.3.0.SNAPSHOT'
           aaa-oar-url: 'https://oss.sonatype.org/content/groups/public/org/opencord/aaa-app/2.3.0-SNAPSHOT/aaa-app-2.3.0-20210322.191830-3.oar'
           olt-version: '4.4.0.SNAPSHOT'
-          olt-oar-url: 'https://oss.sonatype.org/content/groups/public/org/opencord/olt-app/4.4.0-SNAPSHOT/olt-app-4.4.0-20210319.122447-8.oar'
+          olt-oar-url: '10.128.200.1:8000/olt-app-4.4.0-SNAPSHOT.oar'
           dhcpl2relay-version: '2.4.0.SNAPSHOT'
           dhcpl2relay-oar-url: 'https://oss.sonatype.org/content/groups/public/org/opencord/dhcpl2relay-app/2.4.0-SNAPSHOT/dhcpl2relay-app-2.4.0-20210311.091154-2.oar'
           igmpproxy-version: '2.2.0.SNAPSHOT'
@@ -26,10 +26,15 @@
           mcast-oar-url: 'https://oss.sonatype.org/content/groups/public/org/opencord/mcast-app/2.2.0-SNAPSHOT/mcast-app-2.2.0-20210316.083454-5.oar'
           kafka-version: '2.6.0.SNAPSHOT'
           kafka-oar-url: 'https://oss.sonatype.org/content/groups/public/org/opencord/kafka/2.6.0-SNAPSHOT/kafka-2.6.0-20210311.093145-2.oar'
-          adapter-open-olt-image: 'voltha/voltha-openolt-adapter:3.1.6'
+          adapter-open-olt-image: 'voltha/voltha-openolt-adapter:3.2.0'
           adapter-open-onu-image: 'voltha/voltha-openonu-adapter-go:1.2.6'
-          rw-core-image: 'voltha/voltha-rw-core:2.6.3'
+          rw-core-image: 'voltha/voltha-rw-core:2.7.0'
           ofagent-image: 'voltha/voltha-ofagent-go:1.5.2'
+          onu-image-name: 'software-image.img'
+          onu-image-url: 'http://bbsim0:50074/images'
+          onu-image-version: 'v1.0.0'
+          onu-image-crc: '0'
+          onu-image-local-dir: '/tmp'
           time-trigger: "H H/23 * * *"
 
 - job-template:
@@ -181,6 +186,31 @@
           default: '{ofagent-image}'
           description: 'Voltha Ofagent Component Image'
 
+      - string:
+          name: onuImageName
+          default: '{onu-image-name}'
+          description: 'Name of ONU Image to Upgrade'
+
+      - string:
+          name: onuImageUrl
+          default: '{onu-image-url}'
+          description: 'Url of ONU Image to Upgrade'
+
+      - string:
+          name: onuImageVersion
+          default: '{onu-image-version}'
+          description: 'Version of ONU Image to Upgrade'
+
+      - string:
+          name: onuImageCrc
+          default: '{onu-image-crc}'
+          description: 'CRC of ONU Image to Upgrade'
+
+      - string:
+          name: onuImageLocalDir
+          default: '{onu-image-local-dir}'
+          description: 'Local Dir of ONU Image to Upgrade'
+
     project-type: pipeline
     concurrent: true
 
diff --git a/jjb/voltha-e2e.yaml b/jjb/voltha-e2e.yaml
index d2f4b3c..41d86dd 100755
--- a/jjb/voltha-e2e.yaml
+++ b/jjb/voltha-e2e.yaml
@@ -51,7 +51,7 @@
           time-trigger: "H H/23 * * *"
 
       - 'voltha-periodic-test':
-          name: 'periodic-voltha-2.6-multiple-olts-test-bbsim'
+          name: 'periodic-voltha-2.7-multiple-olts-test-bbsim'
           pipeline-script: 'voltha-nightly-tests-bbsim.groovy'
           build-node: 'qct-pod4-node2'
           make-target: functional-multi-olt
@@ -60,7 +60,7 @@
           make-target-alarmtest: bbsim-alarms-kind
           make-target-multipleolt: bbsim-multiolt-kind
           withAlarms: false
-          code-branch: 'voltha-2.6'
+          code-branch: 'voltha-2.7'
           olts: 2
           onus: 2
           pons: 2
@@ -101,16 +101,16 @@
           time-trigger: "H H/23 * * *"
 
       - 'voltha-periodic-test':
-          name: 'periodic-voltha-test-DMI-2.6'
+          name: 'periodic-voltha-test-DMI-2.7'
           pipeline-script: 'voltha-DMI-bbsim-tests.groovy'
           build-node: 'qct-pod4-node2'
           make-target: bbsim-dmi-hw-management-test
           withAlarms: false
-          code-branch: 'voltha-2.6'
+          code-branch: 'voltha-2.7'
           time-trigger: "H H/23 * * *"
 
       - 'voltha-periodic-test':
-          name: 'periodic-voltha-test-bbsim-2.6'
+          name: 'periodic-voltha-test-bbsim-2.7'
           pipeline-script: 'voltha-nightly-tests-bbsim.groovy'
           build-node: 'qct-pod4-node2'
           make-target: functional-single-kind
@@ -118,7 +118,7 @@
           make-target-errortest: bbsim-errorscenarios
           make-target-alarmtest: bbsim-alarms-kind
           withAlarms: true
-          code-branch: 'voltha-2.6'
+          code-branch: 'voltha-2.7'
           onus: 2
           pons: 2
           time-trigger: "H H/23 * * *"
@@ -134,10 +134,10 @@
           time-trigger: "H H/12 * * *"
 
       - 'voltha-periodic-test':
-          name: 'periodic-voltha-etcd-test-2.6'
+          name: 'periodic-voltha-etcd-test-2.7'
           pipeline-script: 'voltha-system-test-bbsim.groovy'
           build-node: 'ubuntu16.04-basebuild-4c-8g'
-          code-branch: 'voltha-2.6'
+          code-branch: 'voltha-2.7'
           make-target: sanity-multi-kind
           onus: 2
           pons: 2
@@ -156,10 +156,10 @@
           time-trigger: "H H/23 * * *"
 
       - 'voltha-periodic-test':
-          name: 'periodic-voltha-sanity-test-multi-runs-2.6'
+          name: 'periodic-voltha-sanity-test-multi-runs-2.7'
           pipeline-script: 'voltha-go-multi-tests.groovy'
           build-node: 'qct-pod4-node2'
-          code-branch: 'voltha-2.6'
+          code-branch: 'voltha-2.7'
           make-target: sanity-kind
           onus: 1
           pons: 1
diff --git a/vars/createKubernetesCluster.groovy b/vars/createKubernetesCluster.groovy
index f640b16..48a0bea 100644
--- a/vars/createKubernetesCluster.groovy
+++ b/vars/createKubernetesCluster.groovy
@@ -41,7 +41,8 @@
       if [ "\$HOSTARCH" == "x86_64" ]; then
           HOSTARCH="amd64"
       fi
-      curl -Lo $WORKSPACE/bin/voltctl https://github.com/opencord/voltctl/releases/download/v1.3.1/voltctl-1.3.1-\$HOSTOS-\$HOSTARCH
+      VC_VERSION="\$(curl --fail -sSL https://api.github.com/repos/opencord/voltctl/releases/latest | jq -r .tag_name | sed -e 's/^v//g')"
+      curl -Lo $WORKSPACE/bin/voltctl https://github.com/opencord/voltctl/releases/download/v\$VC_VERSION/voltctl-\$VC_VERSION-\$HOSTOS-\$HOSTARCH
       chmod +x $WORKSPACE/bin/voltctl
 
       # start the kind cluster