Merge "For compass, the process name is rabbitmq"
authorTrevor Bramwell <tbramwell@linuxfoundation.org>
Fri, 21 Sep 2018 18:44:21 +0000 (18:44 +0000)
committerGerrit Code Review <gerrit@opnfv.org>
Fri, 21 Sep 2018 18:44:21 +0000 (18:44 +0000)
53 files changed:
jjb/apex/apex.yaml
jjb/apex/scenarios.yaml.hidden
jjb/armband/armband-ci-jobs.yaml
jjb/armband/armband-verify-jobs.yaml
jjb/barometer/barometer.yaml
jjb/bottlenecks/bottlenecks-ci-jobs.yaml
jjb/bottlenecks/bottlenecks-run-suite.sh
jjb/compass4nfv/compass-ci-jobs.yaml
jjb/container4nfv/container4nfv-arm64.yaml
jjb/doctor/doctor.yaml
jjb/dovetail/dovetail-run.sh
jjb/fuel/fuel-daily-jobs.yaml
jjb/fuel/fuel-deploy.sh
jjb/fuel/fuel-download-artifact.sh [deleted file]
jjb/fuel/fuel-lab-reconfig.sh [deleted file]
jjb/fuel/fuel-project-jobs.yaml
jjb/fuel/fuel-set-scenario.sh [new file with mode: 0755]
jjb/fuel/fuel-verify-jobs.yaml
jjb/fuel/fuel-weekly-jobs.yaml [deleted file]
jjb/functest/functest-alpine.sh
jjb/functest/functest-daily-jobs.yaml
jjb/functest/functest-docker.yaml
jjb/functest/functest-kubernetes-docker.yaml
jjb/functest/functest-kubernetes-project-jobs.yaml
jjb/functest/functest-project-jobs.yaml
jjb/functest/xtesting-docker.yaml
jjb/functest/xtesting-project-jobs.yaml
jjb/global/releng-defaults.yaml
jjb/global/slave-params.yaml
jjb/openci/create-ane.sh [deleted file]
jjb/openci/create-ape.sh [new file with mode: 0755]
jjb/openci/create-cde.sh
jjb/openci/create-clme.sh
jjb/openci/openci-odl-daily-jobs.yaml
jjb/openci/openci-onap-daily-jobs.yaml
jjb/openci/openci-opnfv-daily-jobs.yaml
jjb/releng/opnfv-docker.yaml
jjb/releng/opnfv-utils.yaml
jjb/releng/releng-ci-jobs.yaml
jjb/releng/releng-release-create-branch.sh
jjb/releng/releng-release-jobs.yaml
jjb/xci/xci-daily-jobs.yaml
jjb/xci/xci-merge-jobs.yaml
jjb/xci/xci-verify-jobs.yaml
jjb/yardstick/yardstick-daily.sh
jjb/yardstick/yardstick-project-jobs.yaml
releases/gambia/armband.yaml [new file with mode: 0644]
releases/gambia/fuel.yaml [new file with mode: 0644]
releases/gambia/functest.yaml [new file with mode: 0644]
releases/gambia/sandbox.yaml [new file with mode: 0644]
releases/hunter/functest.yaml [new file with mode: 0644]
releases/scripts/create_branch.py [deleted file]
releases/scripts/repos.py

index 82f766e..fd0e826 100644 (file)
           <<: *master
       - 'os-odl-sfc_queens-noha':
           <<: *master
+      - 'os-nosdn-calipso-noha':
+          <<: *master
+      - 'os-nosdn-calipso_queens-noha':
+          <<: *master
       - 'os-nosdn-nofeature-noha':
           <<: *euphrates
       - 'os-nosdn-nofeature-ha':
           <<: *euphrates
       - 'os-odl-sfc-ha':
           <<: *euphrates
-      - 'os-nosdn-calipso-noha':
-          <<: *euphrates
 
     platform:
       - 'baremetal'
               kill-phase-on: NEVER
               abort-all-job: true
               git-revision: false
+            - name: 'apex-os-nosdn-calipso-noha-baremetal-master'
+              node-parameters: false
+              current-parameters: false
+              predefined-parameters: |
+                OPNFV_CLEAN=yes
+              kill-phase-on: NEVER
+              abort-all-job: true
+              git-revision: false
+            - name: 'apex-os-nosdn-calipso_queens-noha-baremetal-master'
+              node-parameters: false
+              current-parameters: false
+              predefined-parameters: |
+                OPNFV_CLEAN=yes
+              kill-phase-on: NEVER
+              abort-all-job: true
+              git-revision: false
 
 # euphrates Builder
 - builder:
               kill-phase-on: NEVER
               abort-all-job: true
               git-revision: false
-            - name: 'apex-os-nosdn-calipso-noha-baremetal-euphrates'
-              node-parameters: false
-              current-parameters: false
-              predefined-parameters: |
-                OPNFV_CLEAN=yes
-              kill-phase-on: NEVER
-              abort-all-job: true
-              git-revision: false
 - builder:
     name: 'apex-upload-artifact'
     builders:
index b032613..1e1ba3f 100644 (file)
@@ -18,6 +18,8 @@ master:
   - 'os-odl-sfc-noha'
   - 'os-odl-sfc_queens-ha'
   - 'os-odl-sfc_queens-noha'
+  - 'os-nosdn-calipso-noha'
+  - 'os-nosdn-calipso_queens-noha'
 fraser:
   - 'os-nosdn-nofeature-ha'
   - 'os-odl-bgpvpn-ha'
@@ -39,7 +41,6 @@ euphrates:
   - 'os-nosdn-kvm_ovs_dpdk-ha'
   - 'os-odl-sfc-noha'
   - 'os-odl-sfc-ha'
-  - 'os-nosdn-calipso-noha'
 danube:
   - 'os-nosdn-nofeature-noha'
   - 'os-nosdn-nofeature-ha'
index 959115a..666a0f5 100644 (file)
                     failure-threshold: 'never'
                     unstable-threshold: 'FAILURE'
       # Armband uses Fuel's log collection project job, no need to duplicate
-      - conditional-step:
-          condition-kind: not
-          condition-operand:
-            condition-kind: regex-match
-            regex: 'danube'
-            label: '{stream}'
-          steps:
-            - trigger-builds:
-                - project: 'fuel-collect-logs-{deploy-type}-daily-{stream}'
-                  current-parameters: false
-                  predefined-parameters:
-                    DEPLOY_SCENARIO={scenario}
-                  block: true
-                  same-node: true
-                  block-thresholds:
-                    build-step-failure-threshold: 'never'
-                    failure-threshold: 'never'
-                    unstable-threshold: 'FAILURE'
+      - trigger-builds:
+          - project: 'fuel-collect-logs-{deploy-type}-daily-{stream}'
+            current-parameters: false
+            predefined-parameters:
+              DEPLOY_SCENARIO={scenario}
+            block: true
+            same-node: true
+            block-thresholds:
+              build-step-failure-threshold: 'never'
+              failure-threshold: 'never'
+              unstable-threshold: 'FAILURE'
 
 - job-template:
     name: '{installer}-deploy-{pod}-daily-{stream}'
index 6add907..1718083 100644 (file)
@@ -4,7 +4,6 @@
 
     project: 'armband'
 
-    installer: 'fuel'
     #####################################
     # branch definitions
     #####################################
           gs-pathname: '/{stream}'
           disabled: false
     #####################################
-    # patch verification phases
-    #####################################
-    phase:
-      - 'deploy-virtual':
-          slave-label: 'armband-virtual'
-    #####################################
     # jobs
     #####################################
     jobs:
       - 'armband-verify-{stream}'
-      - 'armband-verify-{phase}-{stream}'
+
 #####################################
 # job templates
 #####################################
 - job-template:
     name: 'armband-verify-{stream}'
 
-    project-type: multijob
-
     disabled: '{obj:disabled}'
 
     concurrent: true
       - logrotate-default
       - throttle:
           enabled: true
-          max-total: 4
+          max-total: 2
           option: 'project'
-      - build-blocker:
-          use-build-blocker: true
-          blocking-jobs:
-            - 'fuel-os-.*?-virtual-daily-.*'
-            - 'armband-verify-.*'
-          block-level: 'NODE'
 
     scm:
       - git-scm-gerrit
       - project-parameter:
           project: '{project}'
           branch: '{branch}'
-      - 'armband-virtual-defaults':
-          installer: '{installer}'
-      - '{installer}-defaults':
-          gs-pathname: '{gs-pathname}'
-      - string:
-          name: DEPLOY_SCENARIO
-          default: 'os-nosdn-nofeature-ha'
+      - 'opnfv-build-ubuntu-arm-defaults'
 
     builders:
       - description-setter:
           description: "Built on $NODE_NAME"
-      - multijob:
-          name: deploy-virtual
-          condition: SUCCESSFUL
-          projects:
-            - name: 'armband-verify-deploy-virtual-{stream}'
-              current-parameters: false
-              predefined-parameters: |
-                BRANCH=$BRANCH
-                GERRIT_REFSPEC=$GERRIT_REFSPEC
-                GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
-                GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
-              node-parameters: true
-              kill-phase-on: FAILURE
-              abort-all-job: true
-
-      - multijob:
-          name: smoke-test
-          condition: SUCCESSFUL
-          projects:
-            # Use Functest job definition from jjb/functest/functest-daily-jobs
-            - name: 'functest-fuel-armband-virtual-suite-{stream}'
-              current-parameters: false
-              predefined-parameters: |
-                FUNCTEST_MODE=tier
-                FUNCTEST_TIER=healthcheck
-                # Should be in sync with fuel-deploy.sh default scenario
-                DEPLOY_SCENARIO=$DEPLOY_SCENARIO
-                BRANCH=$BRANCH
-                GERRIT_REFSPEC=$GERRIT_REFSPEC
-                GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
-                GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
-              node-parameters: true
-              kill-phase-on: NEVER
-              abort-all-job: true
-
-- job-template:
-    name: 'armband-verify-{phase}-{stream}'
-
-    disabled: '{obj:disabled}'
-
-    concurrent: true
-
-    properties:
-      - logrotate-default
-      - throttle:
-          enabled: true
-          max-total: 2
-          max-per-node: 1
-          option: 'project'
-      - build-blocker:
-          use-build-blocker: true
-          blocking-jobs:
-            - 'armband-verify-deploy-.*'
-          block-level: 'NODE'
-
-    scm:
-      - git-scm-gerrit
+      - 'armband-verify-builder-macro'
 
-    wrappers:
-      - ssh-agent-wrapper
-      - timeout:
-          timeout: 360
-          fail: true
-
-    parameters:
-      - project-parameter:
-          project: '{project}'
-          branch: '{branch}'
-      - '{slave-label}-defaults'
-      - 'armband-virtual-defaults':
-          installer: '{installer}'
-      - '{installer}-defaults':
-          gs-pathname: '{gs-pathname}'
-
-    builders:
-      - description-setter:
-          description: "Built on $NODE_NAME"
-      - '{project}-verify-{phase}-macro'
 #####################################
 # builder macros
 #####################################
 - builder:
-    name: 'armband-verify-deploy-virtual-macro'
+    name: 'armband-verify-builder-macro'
     builders:
-      - shell:
-          !include-raw: ../fuel/fuel-deploy.sh
+      - shell: |
+          #!/bin/bash
+          make fuel-patches-import
index 9217620..8afe986 100644 (file)
@@ -32,7 +32,7 @@
       - project-parameter:
           project: '{project}'
           branch: '{branch}'
-      - 'opnfv-build-ubuntu-defaults'
+      - 'ericsson-build4-defaults'
 
     scm:
       - git-scm-gerrit
@@ -89,7 +89,7 @@
       - project-parameter:
           project: '{project}'
           branch: '{branch}'
-      - 'opnfv-build-ubuntu-defaults'
+      - 'ericsson-build4-defaults'
 
     scm:
       - git-scm
index 41b73a2..4c302dd 100644 (file)
@@ -79,6 +79,7 @@
       - 'posca_feature_moon_tenants'
       - 'posca_feature_vnf_scale_out'
       - 'posca_factor_soak_throughputs'
+      - 'kubestone_deployment_capacity'
 
     jobs:
       - 'bottlenecks-{installer}-{suite}-{pod}-daily-{stream}'
index 7a3db00..9b5e8ee 100644 (file)
@@ -24,7 +24,26 @@ OPENRC=/tmp/admin_rc.sh
 OS_CACERT=/tmp/os_cacert
 
 BOTTLENECKS_CONFIG=/tmp
-
+KUBESTONE_TEST_DIR=/home/opnfv/bottlenecks/testsuites/kubestone/testcases
+
+# Pulling Bottlenecks docker and passing environment variables
+echo "INFO: pulling Bottlenecks docker ${DOCKER_TAG}"
+docker pull opnfv/bottlenecks:${DOCKER_TAG} >$redirect
+
+opts="--privileged=true -id"
+envs="-e INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP} \
+      -e NODE_NAME=${NODE_NAME} -e EXTERNAL_NET=${EXTERNAL_NETWORK} \
+      -e BRANCH=${BRANCH} -e GERRIT_REFSPEC_DEBUG=${GERRIT_REFSPEC_DEBUG} \
+      -e BOTTLENECKS_DB_TARGET=${BOTTLENECKS_DB_TARGET} -e PACKAGE_URL=${PACKAGE_URL} \
+      -e DEPLOY_SCENARIO=${DEPLOY_SCENARIO} -e BUILD_TAG=${BUILD_TAG}"
+docker_volume="-v /var/run/docker.sock:/var/run/docker.sock -v /tmp:/tmp"
+
+cmd="docker run ${opts} ${envs} --name bottlenecks-load-master ${docker_volume} opnfv/bottlenecks:${DOCKER_TAG} /bin/bash"
+echo "BOTTLENECKS INFO: running docker run commond: ${cmd}"
+${cmd} >$redirect
+sleep 5
+
+# Run test suite
 if [[ $SUITE_NAME == *posca* ]]; then
     POSCA_SCRIPT=/home/opnfv/bottlenecks/testsuites/posca
     sudo rm -f ${OPENRC}
@@ -116,23 +135,6 @@ if [[ $SUITE_NAME == *posca* ]]; then
         sudo ls -al ${BOTTLENECKS_CONFIG}
     fi
 
-    # Pulling Bottlenecks docker and passing environment variables
-    echo "INFO: pulling Bottlenecks docker ${DOCKER_TAG}"
-    docker pull opnfv/bottlenecks:${DOCKER_TAG} >$redirect
-
-    opts="--privileged=true -id"
-    envs="-e INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP} \
-          -e NODE_NAME=${NODE_NAME} -e EXTERNAL_NET=${EXTERNAL_NETWORK} \
-          -e BRANCH=${BRANCH} -e GERRIT_REFSPEC_DEBUG=${GERRIT_REFSPEC_DEBUG} \
-          -e BOTTLENECKS_DB_TARGET=${BOTTLENECKS_DB_TARGET} -e PACKAGE_URL=${PACKAGE_URL} \
-          -e DEPLOY_SCENARIO=${DEPLOY_SCENARIO} -e BUILD_TAG=${BUILD_TAG}"
-    docker_volume="-v /var/run/docker.sock:/var/run/docker.sock -v /tmp:/tmp"
-
-    cmd="docker run ${opts} ${envs} --name bottlenecks-load-master ${docker_volume} opnfv/bottlenecks:${DOCKER_TAG} /bin/bash"
-    echo "BOTTLENECKS INFO: running docker run commond: ${cmd}"
-    ${cmd} >$redirect
-    sleep 5
-
     # Running test cases through Bottlenecks docker
     if [[ $SUITE_NAME == posca_stress_traffic ]]; then
         TEST_CASE=posca_factor_system_bandwidth
@@ -144,4 +146,11 @@ if [[ $SUITE_NAME == *posca* ]]; then
     testcase_cmd="docker exec bottlenecks-load-master python ${POSCA_SCRIPT}/../run_testsuite.py testcase $TEST_CASE $REPORT"
     echo "BOTTLENECKS INFO: running test case ${TEST_CASE} with report indicator: ${testcase_cmd}"
     ${testcase_cmd} >$redirect
+elif [[ $SUITE_NAME == *kubestone* ]]; then
+    if [[ $SUITE_NAME == kubestone_deployment_capacity ]]; then
+        TEST_CASE=${KUBESTONE_TEST_DIR}/deployment_capacity.yaml
+    fi
+    testcase_cmd="docker exec bottlenecks-load-master python ${KUBESTONE_TEST_DIR}/../stress_test.py -c $TEST_CASE"
+    echo "BOTTLENECKS INFO: running test case ${TEST_CASE} with report indicator: ${testcase_cmd}"
+    ${testcase_cmd} >$redirect
 fi
index 328e9e3..e5775b2 100644 (file)
                     build-step-failure-threshold: 'never'
                     failure-threshold: 'never'
                     unstable-threshold: 'FAILURE'
+      - conditional-step:
+          condition-kind: and
+          condition-operands:
+            - condition-kind: regex-match
+              regex: k8-nosdn-nofeature-ha
+              label: '{scenario}'
+          steps:
+            - trigger-builds:
+                - project: 'bottlenecks-compass-kubestone_deployment_capacity-{pod}-daily-{stream}'
+                  current-parameters: false
+                  predefined-parameters:
+                    DEPLOY_SCENARIO={scenario}
+                  block: true
+                  same-node: true
+                  block-thresholds:
+                    build-step-failure-threshold: 'never'
+                    failure-threshold: 'never'
+                    unstable-threshold: 'FAILURE'
       - conditional-step:
           condition-kind: and
           condition-operands:
index b666674..069a5d2 100644 (file)
               build-step-failure-threshold: 'never'
               failure-threshold: 'never'
               unstable-threshold: 'Failure'
+          - project: functest-compass-arm-virtual-daily-master
+            current-parameters: false
+            same-node: true
+            block: true
+            block-thresholds:
+              build-step-failure-threshold: 'never'
+              failure-threshold: 'never'
+              unstable-threshold: 'Failure'
           - project: container4nfv-k8-multus-nofeature-noha-{pod}-daily-{stream}
             current-parameters: true
             same-node: true
index 4690230..b78bab1 100644 (file)
@@ -39,7 +39,9 @@
 
     jobs:
       - 'doctor-verify-{stream}'
-      - 'doctor-verify-{installer}-{inspector}-{arch}-{stream}'
+      - 'doctor-verify-fault_management-{installer}-{inspector}-{arch}-{stream}'
+      - 'doctor-verify-maintenance-{installer}-{inspector}-{arch}-{stream}'
+      - 'doctor-verify-all-{installer}-{inspector}-{arch}-{stream}'
 
 - job-template:
     name: 'doctor-verify-{stream}'
@@ -68,7 +70,7 @@
           name: 'doctor-verify-sample'
           execution-type: PARALLEL
           projects:
-            - name: 'doctor-verify-apex-sample-x86_64-{stream}'
+            - name: 'doctor-verify-fault_management-apex-sample-x86_64-{stream}'
               predefined-parameters: |
                 PROJECT=$PROJECT
                 GERRIT_BRANCH=$GERRIT_BRANCH
                 GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
               kill-phase-on: FAILURE
               git-revision: true
-            - name: 'doctor-verify-daisy-sample-x86_64-{stream}'
+            - name: 'doctor-verify-fault_management-daisy-sample-x86_64-{stream}'
+              predefined-parameters: |
+                PROJECT=$PROJECT
+                GERRIT_BRANCH=$GERRIT_BRANCH
+                GERRIT_REFSPEC=$GERRIT_REFSPEC
+                GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
+                GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
+              kill-phase-on: FAILURE
+              git-revision: true
+            - name: 'doctor-verify-maintenance-apex-sample-x86_64-{stream}'
               predefined-parameters: |
                 PROJECT=$PROJECT
                 GERRIT_BRANCH=$GERRIT_BRANCH
           name: 'doctor-verify-congress'
           execution-type: PARALLEL
           projects:
-            - name: 'doctor-verify-apex-congress-x86_64-{stream}'
+            - name: 'doctor-verify-fault_management-apex-congress-x86_64-{stream}'
               predefined-parameters: |
                 PROJECT=$PROJECT
                 GERRIT_BRANCH=$GERRIT_BRANCH
                 GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
               kill-phase-on: FAILURE
               git-revision: true
+      - multijob:
+          name: 'doctor-verify-sample-all'
+          execution-type: PARALLEL
+          # This would be for running all test cases with sample inspector
+      - multijob:
+          name: 'doctor-verify-congress-all'
+          execution-type: PARALLEL
+          # This would be for running all test cases with congress inspector
 
 - job-template:
-    name: 'doctor-verify-{installer}-{inspector}-{arch}-{stream}'
+    name: 'doctor-verify-fault_management-{installer}-{inspector}-{arch}-{stream}'
     disabled: '{obj:disabled}'
     node: 'doctor-{installer}-{arch}'
     wrappers:
       - 'doctor-slave-parameter'
       - 'doctor-parameter':
           inspector: '{inspector}'
+          test_case: 'fault_management'
+    scm:
+      - git-scm-gerrit
+    builders:
+      - 'doctor-verify-installer-inspector-builders-macro'
+    publishers:
+      - 'doctor-verify-publishers-macro'
+
+- job-template:
+    name: 'doctor-verify-maintenance-{installer}-{inspector}-{arch}-{stream}'
+    disabled: '{obj:disabled}'
+    node: 'nokia-pod1'
+    wrappers:
+      - ssh-agent-wrapper
+      - build-timeout:
+          timeout: 40
+    parameters:
+      - project-parameter:
+          project: '{project}'
+          branch: '{branch}'
+      - '{installer}-defaults'
+      - 'doctor-slave-parameter'
+      - 'doctor-parameter':
+          inspector: '{inspector}'
+          test_case: 'maintenance'
+    scm:
+      - git-scm-gerrit
+    builders:
+      - 'doctor-verify-installer-inspector-builders-macro'
+    publishers:
+      - 'doctor-verify-publishers-macro'
+
+- job-template:
+    name: 'doctor-verify-all-{installer}-{inspector}-{arch}-{stream}'
+    disabled: '{obj:disabled}'
+    node: 'nokia-pod1'
+    wrappers:
+      - ssh-agent-wrapper
+      - build-timeout:
+          timeout: 50
+    parameters:
+      - project-parameter:
+          project: '{project}'
+          branch: '{branch}'
+      - '{installer}-defaults'
+      - 'doctor-slave-parameter'
+      - 'doctor-parameter':
+          inspector: '{inspector}'
+          test_case: 'all'
     scm:
       - git-scm-gerrit
     builders:
           name: INSPECTOR_TYPE
           default: '{inspector}'
           description: 'inspector component'
+      - string:
+          name: TEST_CASE
+          default: '{test_case}'
+          description: 'test case: all, fault_management or maintenance'
+
 
 # -------------------------------
 # builder macros
index 799f157..065d201 100755 (executable)
@@ -51,11 +51,6 @@ elif [[ ${INSTALLER_TYPE} == 'joid' ]]; then
     # replace the default one by the customized one provided by jenkins config
 fi
 
-# Set iptables rule to allow forwarding return traffic for container
-if ! sudo iptables -C FORWARD -j RETURN 2> ${redirect} || ! sudo iptables -L FORWARD | awk 'NR==3' | grep RETURN 2> ${redirect}; then
-    sudo iptables -I FORWARD -j RETURN
-fi
-
 releng_repo=${WORKSPACE}/releng
 [ -d ${releng_repo} ] && sudo rm -rf ${releng_repo}
 git clone https://gerrit.opnfv.org/gerrit/releng ${releng_repo} >/dev/null
index 07cdb73..73d33d6 100644 (file)
       branch: 'stable/{stream}'
       disabled: false
       gs-pathname: '/{stream}'
-    danube: &danube
-      stream: danube
-      branch: 'stable/{stream}'
-      disabled: false
-      gs-pathname: '/{stream}'
     # -------------------------------
     # POD, INSTALLER, AND BRANCH MAPPING
     # -------------------------------
           auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
       - 'os-odl-nofeature-ha':
           auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
-      - 'os-onos-sfc-ha':
-          auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
-      - 'os-onos-nofeature-ha':
-          auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
       - 'os-ovn-nofeature-ha':
           auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
-      - 'os-nosdn-kvm-ha':
-          auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
       - 'os-nosdn-ovs-ha':
           auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
-      - 'os-nosdn-kvm_ovs-ha':
-          auto-trigger-name: 'daily-trigger-disabled'
-      - 'os-nosdn-kvm_ovs_dpdk-ha':
-          auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
-      - 'os-nosdn-kvm_ovs_dpdk_bar-ha':
-          auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
       - 'os-nosdn-vpp-ha':
           auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
       # NOHA scenarios
           auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
       - 'os-odl-nofeature-noha':
           auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
-      - 'os-onos-sfc-noha':
-          auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
-      - 'os-onos-nofeature-noha':
-          auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
       - 'os-ovn-nofeature-noha':
           auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
       - 'os-odl-ovs-noha':
           auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
-      - 'os-nosdn-kvm-noha':
-          auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
       - 'os-nosdn-ovs-noha':
           auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
-      - 'os-nosdn-kvm_ovs_dpdk-noha':
-          auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
-      - 'os-nosdn-kvm_ovs_dpdk_bar-noha':
-          auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
       - 'os-nosdn-vpp-noha':
           auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
-      # danube scenario for Dovetail only
-      - 'os-odl_l2-bgpvpn-ha':
-          auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
 
     exclude:
-      - scenario: os-odl_l2-bgpvpn-ha
-        stream: master
-      - scenario: os-odl_l2-bgpvpn-ha
-        stream: fraser
-      - scenario: os-ovn-nofeature-noha
-        stream: danube
-      - scenario: os-ovn-nofeature-ha
-        stream: danube
       - scenario: os-odl-ovs-noha
         stream: fraser
       - scenario: os-nosdn-vpp-ha
         stream: fraser
       - scenario: os-nosdn-vpp-noha
         stream: fraser
-      - scenario: os-nosdn-vpp-ha
-        stream: danube
-      - scenario: os-nosdn-vpp-noha
-        stream: danube
 
     jobs:
       - 'fuel-{scenario}-{pod}-daily-{stream}'
           use-build-blocker: true
           blocking-jobs:
             - 'fuel-os-.*?-{pod}-daily-.*'
-            - 'fuel-os-.*?-{pod}-weekly-.*'
             - 'fuel-verify-.*'
           block-level: 'NODE'
 
                     build-step-failure-threshold: 'never'
                     failure-threshold: 'never'
                     unstable-threshold: 'FAILURE'
-      - conditional-step:
-          condition-kind: not
-          condition-operand:
-            condition-kind: regex-match
-            regex: 'danube'
-            label: '{stream}'
-          steps:
-            - trigger-builds:
-                - project: 'fuel-collect-logs-{pod}-daily-{stream}'
-                  current-parameters: false
-                  predefined-parameters:
-                    DEPLOY_SCENARIO={scenario}
-                  block: true
-                  same-node: true
-                  block-thresholds:
-                    build-step-failure-threshold: 'never'
-                    failure-threshold: 'never'
-                    unstable-threshold: 'FAILURE'
+      - trigger-builds:
+          - project: 'fuel-collect-logs-{pod}-daily-{stream}'
+            current-parameters: false
+            predefined-parameters:
+              DEPLOY_SCENARIO={scenario}
+            block: true
+            same-node: true
+            block-thresholds:
+              build-step-failure-threshold: 'never'
+              failure-threshold: 'never'
+              unstable-threshold: 'FAILURE'
 
     publishers:
       - email-fuel-ptl
           use-build-blocker: true
           blocking-jobs:
             - 'fuel-deploy-{pod}-daily-.*'
-            - 'fuel-deploy-generic-daily-.*'
-            - 'fuel-deploy-{pod}-weekly-.*'
-            - 'fuel-deploy-generic-weekly-.*'
           block-level: 'NODE'
 
     parameters:
       - description-setter:
           description: "Built on $NODE_NAME"
       - track-begin-timestamp
-      - shell:
-          !include-raw-escape: ./fuel-download-artifact.sh
       - shell:
           !include-raw-escape: ./fuel-deploy.sh
 
     name: 'fuel-os-nosdn-ovs-ha-baremetal-daily-master-trigger'
     triggers:
       - timed: '5 5 * * *'
-- trigger:
-    name: 'fuel-os-onos-sfc-ha-baremetal-daily-master-trigger'
-    triggers:
-      - timed: ''  # '5 5 * * *'
-- trigger:
-    name: 'fuel-os-onos-nofeature-ha-baremetal-daily-master-trigger'
-    triggers:
-      - timed: ''  # '5 8 * * *'
 - trigger:
     name: 'fuel-os-ovn-nofeature-ha-baremetal-daily-master-trigger'
     triggers:
       - timed: ''
-- trigger:
-    name: 'fuel-os-nosdn-kvm-ha-baremetal-daily-master-trigger'
-    triggers:
-      - timed: ''  # '5 17 * * *'
-- trigger:
-    name: 'fuel-os-nosdn-kvm_ovs_dpdk-ha-baremetal-daily-master-trigger'
-    triggers:
-      - timed: ''  # '30 12 * * *'
-- trigger:
-    name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-ha-baremetal-daily-master-trigger'
-    triggers:
-      - timed: ''  # '30 8 * * *'
 - trigger:
     name: 'fuel-os-nosdn-vpp-ha-baremetal-daily-master-trigger'
     triggers:
     name: 'fuel-os-odl-nofeature-noha-baremetal-daily-master-trigger'
     triggers:
       - timed: ''
-- trigger:
-    name: 'fuel-os-onos-sfc-noha-baremetal-daily-master-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'fuel-os-onos-nofeature-noha-baremetal-daily-master-trigger'
-    triggers:
-      - timed: ''
 - trigger:
     name: 'fuel-os-ovn-nofeature-noha-baremetal-daily-master-trigger'
     triggers:
     name: 'fuel-os-odl-ovs-noha-baremetal-daily-master-trigger'
     triggers:
       - timed: ''
-- trigger:
-    name: 'fuel-os-nosdn-kvm-noha-baremetal-daily-master-trigger'
-    triggers:
-      - timed: ''
 - trigger:
     name: 'fuel-os-nosdn-ovs-noha-baremetal-daily-master-trigger'
     triggers:
       - timed: ''
-- trigger:
-    name: 'fuel-os-nosdn-kvm_ovs_dpdk-noha-baremetal-daily-master-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-noha-baremetal-daily-master-trigger'
-    triggers:
-      - timed: ''
 - trigger:
     name: 'fuel-os-nosdn-vpp-noha-baremetal-daily-master-trigger'
     triggers:
     name: 'fuel-os-odl-nofeature-ha-baremetal-daily-fraser-trigger'
     triggers:
       - timed: ''  # '0 2 * * *'
-- trigger:
-    name: 'fuel-os-onos-sfc-ha-baremetal-daily-fraser-trigger'
-    triggers:
-      - timed: ''  # '0 5 * * *'
 - trigger:
     name: 'fuel-os-ovn-nofeature-ha-baremetal-daily-fraser-trigger'
     triggers:
       - timed: ''
-- trigger:
-    name: 'fuel-os-onos-nofeature-ha-baremetal-daily-fraser-trigger'
-    triggers:
-      - timed: ''  # '0 8 * * *'
-- trigger:
-    name: 'fuel-os-nosdn-kvm-ha-baremetal-daily-fraser-trigger'
-    triggers:
-      - timed: ''  # '0 17 * * *'
 - trigger:
     name: 'fuel-os-nosdn-ovs-ha-baremetal-daily-fraser-trigger'
     triggers:
       - timed: ''  # '0 20 * * *'
-- trigger:
-    name: 'fuel-os-nosdn-kvm_ovs_dpdk-ha-baremetal-daily-fraser-trigger'
-    triggers:
-      - timed: ''  # '0 12 * * *'
-- trigger:
-    name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-ha-baremetal-daily-fraser-trigger'
-    triggers:
-      - timed: ''  # '0 8 * * *'
 # NOHA Scenarios
 - trigger:
     name: 'fuel-os-nosdn-nofeature-noha-baremetal-daily-fraser-trigger'
     name: 'fuel-os-odl-nofeature-noha-baremetal-daily-fraser-trigger'
     triggers:
       - timed: ''
-- trigger:
-    name: 'fuel-os-onos-sfc-noha-baremetal-daily-fraser-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'fuel-os-onos-nofeature-noha-baremetal-daily-fraser-trigger'
-    triggers:
-      - timed: ''
 - trigger:
     name: 'fuel-os-ovn-nofeature-noha-baremetal-daily-fraser-trigger'
     triggers:
       - timed: ''
-- trigger:
-    name: 'fuel-os-nosdn-kvm-noha-baremetal-daily-fraser-trigger'
-    triggers:
-      - timed: ''
 - trigger:
     name: 'fuel-os-nosdn-ovs-noha-baremetal-daily-fraser-trigger'
     triggers:
       - timed: ''
-- trigger:
-    name: 'fuel-os-nosdn-kvm_ovs_dpdk-noha-baremetal-daily-fraser-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-noha-baremetal-daily-fraser-trigger'
-    triggers:
-      - timed: ''
 # ----------------------------------------------
 # Triggers for job running on fuel-virtual against master branch
 # ----------------------------------------------
     name: 'fuel-os-odl-nofeature-ha-virtual-daily-master-trigger'
     triggers:
       - timed: ''
-- trigger:
-    name: 'fuel-os-onos-sfc-ha-virtual-daily-master-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'fuel-os-onos-nofeature-ha-virtual-daily-master-trigger'
-    triggers:
-      - timed: ''
 - trigger:
     name: 'fuel-os-ovn-nofeature-ha-virtual-daily-master-trigger'
     triggers:
       - timed: ''
-- trigger:
-    name: 'fuel-os-nosdn-kvm-ha-virtual-daily-master-trigger'
-    triggers:
-      - timed: ''
 - trigger:
     name: 'fuel-os-nosdn-ovs-ha-virtual-daily-master-trigger'
     triggers:
       - timed: ''
-- trigger:
-    name: 'fuel-os-nosdn-kvm_ovs_dpdk-ha-virtual-daily-master-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-ha-virtual-daily-master-trigger'
-    triggers:
-      - timed: ''
 - trigger:
     name: 'fuel-os-nosdn-vpp-ha-virtual-daily-master-trigger'
     triggers:
     name: 'fuel-os-odl-nofeature-noha-virtual-daily-master-trigger'
     triggers:
       - timed: '5 18 * * *'
-- trigger:
-    name: 'fuel-os-onos-sfc-noha-virtual-daily-master-trigger'
-    triggers:
-      - timed: ''  # '35 20 * * *'
-- trigger:
-    name: 'fuel-os-onos-nofeature-noha-virtual-daily-master-trigger'
-    triggers:
-      - timed: ''  # '5 23 * * *'
 - trigger:
     name: 'fuel-os-ovn-nofeature-noha-virtual-daily-master-trigger'
     triggers:
     name: 'fuel-os-odl-ovs-noha-virtual-daily-master-trigger'
     triggers:
       - timed: '5 2 * * *'
-- trigger:
-    name: 'fuel-os-nosdn-kvm-noha-virtual-daily-master-trigger'
-    triggers:
-      - timed: ''  # '35 6 * * *'
 - trigger:
     name: 'fuel-os-nosdn-ovs-noha-virtual-daily-master-trigger'
     triggers:
       - timed: '5 9 * * *'
-- trigger:
-    name: 'fuel-os-nosdn-kvm_ovs_dpdk-noha-virtual-daily-master-trigger'
-    triggers:
-      - timed: ''  # '30 16 * * *'
-- trigger:
-    name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-noha-virtual-daily-master-trigger'
-    triggers:
-      - timed: ''  # '30 20 * * *'
 - trigger:
     name: 'fuel-os-nosdn-vpp-noha-virtual-daily-master-trigger'
     triggers:
     name: 'fuel-os-odl-nofeature-ha-virtual-daily-fraser-trigger'
     triggers:
       - timed: ''
-- trigger:
-    name: 'fuel-os-onos-sfc-ha-virtual-daily-fraser-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'fuel-os-onos-nofeature-ha-virtual-daily-fraser-trigger'
-    triggers:
-      - timed: ''
 - trigger:
     name: 'fuel-os-ovn-nofeature-ha-virtual-daily-fraser-trigger'
     triggers:
       - timed: ''
-- trigger:
-    name: 'fuel-os-nosdn-kvm-ha-virtual-daily-fraser-trigger'
-    triggers:
-      - timed: ''
 - trigger:
     name: 'fuel-os-nosdn-ovs-ha-virtual-daily-fraser-trigger'
     triggers:
       - timed: ''
-- trigger:
-    name: 'fuel-os-nosdn-kvm_ovs_dpdk-ha-virtual-daily-fraser-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-ha-virtual-daily-fraser-trigger'
-    triggers:
-      - timed: ''
 # NOHA Scenarios
 - trigger:
     name: 'fuel-os-nosdn-nofeature-noha-virtual-daily-fraser-trigger'
     name: 'fuel-os-ovn-nofeature-noha-virtual-daily-fraser-trigger'
     triggers:
       - timed: '5 23 * * *'
-- trigger:
-    name: 'fuel-os-onos-sfc-noha-virtual-daily-fraser-trigger'
-    triggers:
-      - timed: ''  # '30 20 * * *'
-- trigger:
-    name: 'fuel-os-onos-nofeature-noha-virtual-daily-fraser-trigger'
-    triggers:
-      - timed: ''  # '0 23 * * *'
-- trigger:
-    name: 'fuel-os-nosdn-kvm-noha-virtual-daily-fraser-trigger'
-    triggers:
-      - timed: ''  # '30 6 * * *'
 - trigger:
     name: 'fuel-os-nosdn-ovs-noha-virtual-daily-fraser-trigger'
     triggers:
       - timed: ''  # '0 9 * * *'
-- trigger:
-    name: 'fuel-os-nosdn-kvm_ovs_dpdk-noha-virtual-daily-fraser-trigger'
-    triggers:
-      - timed: ''  # '0 16 * * *'
-- trigger:
-    name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-noha-virtual-daily-fraser-trigger'
-    triggers:
-      - timed: ''  # '0 20 * * *'
 # ----------------------------------------------
 # ZTE POD1 Triggers running against master branch
 # ----------------------------------------------
     name: 'fuel-os-odl-nofeature-ha-zte-pod1-daily-master-trigger'
     triggers:
       - timed: ''
-- trigger:
-    name: 'fuel-os-onos-sfc-ha-zte-pod1-daily-master-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'fuel-os-onos-nofeature-ha-zte-pod1-daily-master-trigger'
-    triggers:
-      - timed: ''
 - trigger:
     name: 'fuel-os-ovn-nofeature-ha-zte-pod1-daily-master-trigger'
     triggers:
       - timed: ''
-- trigger:
-    name: 'fuel-os-nosdn-kvm-ha-zte-pod1-daily-master-trigger'
-    triggers:
-      - timed: ''
 - trigger:
     name: 'fuel-os-nosdn-ovs-ha-zte-pod1-daily-master-trigger'
     triggers:
       - timed: ''
-- trigger:
-    name: 'fuel-os-nosdn-kvm_ovs_dpdk-ha-zte-pod1-daily-master-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-ha-zte-pod1-daily-master-trigger'
-    triggers:
-      - timed: ''
 - trigger:
     name: 'fuel-os-nosdn-vpp-ha-zte-pod1-daily-master-trigger'
     triggers:
     name: 'fuel-os-odl-nofeature-noha-zte-pod1-daily-master-trigger'
     triggers:
       - timed: ''
-- trigger:
-    name: 'fuel-os-onos-sfc-noha-zte-pod1-daily-master-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'fuel-os-onos-nofeature-noha-zte-pod1-daily-master-trigger'
-    triggers:
-      - timed: ''
 - trigger:
     name: 'fuel-os-ovn-nofeature-noha-zte-pod1-daily-master-trigger'
     triggers:
     name: 'fuel-os-odl-ovs-noha-zte-pod1-daily-master-trigger'
     triggers:
       - timed: ''
-- trigger:
-    name: 'fuel-os-nosdn-kvm-noha-zte-pod1-daily-master-trigger'
-    triggers:
-      - timed: ''
 - trigger:
     name: 'fuel-os-nosdn-ovs-noha-zte-pod1-daily-master-trigger'
     triggers:
       - timed: ''
-- trigger:
-    name: 'fuel-os-nosdn-kvm_ovs_dpdk-noha-zte-pod1-daily-master-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-noha-zte-pod1-daily-master-trigger'
-    triggers:
-      - timed: ''
 - trigger:
     name: 'fuel-os-nosdn-vpp-noha-zte-pod1-daily-master-trigger'
     triggers:
index a4b40f4..1a5d6a4 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/bash
 # SPDX-license-identifier: Apache-2.0
 ##############################################################################
-# Copyright (c) 2017 Ericsson AB, Mirantis Inc., Enea Software AB and others.
+# Copyright (c) 2018 Ericsson AB, Mirantis Inc., Enea Software AB and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Apache License, Version 2.0
 # which accompanies this distribution, and is available at
@@ -12,44 +12,18 @@ set -o pipefail
 
 export TERM="vt220"
 
-if [[ "$BRANCH" =~ 'danube' ]]; then
-    # source the file so we get OPNFV vars
-    # shellcheck disable=SC1091
-    source latest.properties
-
-    # echo the info about artifact that is used during the deployment
-    echo "Using ${OPNFV_ARTIFACT_URL/*\/} for deployment"
-
-    # for Danube deployments (no artifact for current master or newer branches)
-    # checkout the commit that was used for building the downloaded artifact
-    # to make sure the ISO and deployment mechanism uses same versions
-    echo "Checking out ${OPNFV_GIT_SHA1}"
-    git checkout "${OPNFV_GIT_SHA1}" --quiet
-
-    # releng wants us to use nothing else but opnfv.iso for now. We comply.
-    ISO_FILE_ARG="-i file://${WORKSPACE}/opnfv.iso"
-fi
-
-# shellcheck disable=SC2153
-if [[ "${JOB_NAME}" =~ 'verify' ]]; then
-    # set simplest scenario for virtual deploys to run for verify
-    DEPLOY_SCENARIO="os-nosdn-nofeature-noha"
-fi
-
 # set deployment parameters
 export TMPDIR=${HOME}/tmpdir
 # shellcheck disable=SC2153
 LAB_NAME=${NODE_NAME/-*}
 # shellcheck disable=SC2153
 POD_NAME=${NODE_NAME/*-}
-# Armband might override LAB_CONFIG_URL, all others use the default
-LAB_CONFIG_URL=${LAB_CONFIG_URL:-'ssh://jenkins-ericsson@gerrit.opnfv.org:29418/securedlab'}
 
 # Fuel requires deploy script to be ran with sudo, Armband does not
 SUDO='sudo -E'
 if [ "${PROJECT}" = 'fuel' ]; then
     # Fuel currently supports ericsson, intel, lf and zte labs
-    if [[ ! "${LAB_NAME}" =~ (ericsson|intel|lf|zte) ]]; then
+    if [[ ! "${LAB_NAME}" =~ (arm|enea|ericsson|intel|lf|unh|zte) ]]; then
         echo "Unsupported/unidentified lab ${LAB_NAME}. Cannot continue!"
         exit 1
     fi
@@ -66,29 +40,20 @@ echo "Using configuration for ${LAB_NAME}"
 
 # create TMPDIR if it doesn't exist, change permissions
 mkdir -p "${TMPDIR}"
-chmod a+x "${HOME}" "${TMPDIR}"
+sudo chmod a+x "${HOME}" "${TMPDIR}"
 
 cd "${WORKSPACE}" || exit 1
-if [[ "$BRANCH" =~ (danube|euphrates) ]]; then
-    if [[ "${LAB_CONFIG_URL}" =~ ^(git|ssh):// ]]; then
-        echo "Cloning securedlab repo ${BRANCH}"
-        LOCAL_CFG="${TMPDIR}/securedlab"
-        rm -rf "${LOCAL_CFG}"
-        git clone --quiet --branch "${BRANCH}" "${LAB_CONFIG_URL}" "${LOCAL_CFG}"
-        LAB_CONFIG_ARG="-b file://${LOCAL_CFG}"
-        BRIDGE_ARG="-B ${BRIDGE:-pxebr}"
-    else
-        LAB_CONFIG_ARG="-b ${LAB_CONFIG_URL}"
-    fi
-fi
 
 # log file name
 FUEL_LOG_FILENAME="${JOB_NAME}_${BUILD_NUMBER}.log.tar.gz"
 
+# Limited scope for vPOD verify jobs running on armband-virtual
+[[ ! "${JOB_NAME}" =~ verify-deploy-virtual-arm64 ]] || EXTRA_ARGS='-e'
+
 # construct the command
-DEPLOY_COMMAND="${SUDO} ${WORKSPACE}/ci/deploy.sh ${LAB_CONFIG_ARG:-} \
-    -l ${LAB_NAME} -p ${POD_NAME} -s ${DEPLOY_SCENARIO} ${ISO_FILE_ARG:-} \
-    -S ${TMPDIR} ${BRIDGE_ARG:-} \
+DEPLOY_COMMAND="${SUDO} ${WORKSPACE}/ci/deploy.sh \
+    -l ${LAB_NAME} -p ${POD_NAME} -s ${DEPLOY_SCENARIO} \
+    -S ${TMPDIR} ${EXTRA_ARGS:-} \
     -L ${WORKSPACE}/${FUEL_LOG_FILENAME}"
 
 # log info to console
@@ -97,7 +62,6 @@ echo "--------------------------------------------------------"
 echo "Scenario: ${DEPLOY_SCENARIO}"
 echo "Lab: ${LAB_NAME}"
 echo "POD: ${POD_NAME}"
-[[ "${BRANCH}" =~ 'danube' ]] && echo "ISO: ${OPNFV_ARTIFACT_URL/*\/}"
 echo
 echo "Starting the deployment using ${INSTALLER_TYPE}. This could take some time..."
 echo "--------------------------------------------------------"
@@ -111,22 +75,13 @@ echo
 ${DEPLOY_COMMAND}
 exit_code=$?
 
-# Temporary workaround for ericsson-virtual* PODs functest integration
-# See https://jira.opnfv.org/browse/FUNCTEST-985
-# Set iptables rule to allow forwarding return traffic for container
-redirect=/dev/stdout
-if ! sudo iptables -C FORWARD -j RETURN 2> ${redirect} || \
-   ! sudo iptables -L FORWARD | awk 'NR==3' | grep RETURN 2> ${redirect}; then
-     sudo iptables -I FORWARD -j RETURN
-fi
-
 echo
 echo "--------------------------------------------------------"
 echo "Deployment is done!"
 
 # upload logs for baremetal deployments
 # work with virtual deployments is still going on, so skip that for now
-if [[ "${JOB_NAME}" =~ (baremetal-daily|baremetal-weekly) ]]; then
+if [[ "${JOB_NAME}" =~ baremetal-daily ]]; then
     echo "Uploading deployment logs"
     gsutil cp "${WORKSPACE}/${FUEL_LOG_FILENAME}" \
         "gs://${GS_URL}/logs/${FUEL_LOG_FILENAME}" > /dev/null 2>&1
diff --git a/jjb/fuel/fuel-download-artifact.sh b/jjb/fuel/fuel-download-artifact.sh
deleted file mode 100755 (executable)
index 02ca103..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/bin/bash
-# SPDX-license-identifier: Apache-2.0
-##############################################################################
-# Copyright (c) 2016 Ericsson AB and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
-set -o errexit
-set -o pipefail
-
-# disable Fuel ISO download for master branch
-[[ ! "$BRANCH" =~ (danube) ]] && exit 0
-
-# use proxy url to replace the normal URL, or googleusercontent.com will be blocked randomly
-[[ "$NODE_NAME" =~ (zte) ]] && GS_URL=${GS_BASE_PROXY%%/*}/$GS_URL
-
-# get the latest.properties file in order to get info regarding latest artifact
-echo "Downloading http://$GS_URL/latest.properties"
-curl -L -s -o $WORKSPACE/latest.properties http://$GS_URL/latest.properties
-
-# check if we got the file
-[[ -f $WORKSPACE/latest.properties ]] || exit 1
-
-# source the file so we get artifact metadata
-source $WORKSPACE/latest.properties
-
-# echo the info about artifact that is used during the deployment
-OPNFV_ARTIFACT=${OPNFV_ARTIFACT_URL/*\/}
-echo "Using $OPNFV_ARTIFACT for deployment"
-
-# check if we already have the ISO to avoid redownload
-ISOSTORE="/iso_mount/opnfv_ci/${BRANCH##*/}"
-if [[ -f "$ISOSTORE/$OPNFV_ARTIFACT" ]]; then
-    echo "ISO exists locally. Skipping the download and using the file from ISO store"
-    ln -s $ISOSTORE/$OPNFV_ARTIFACT $WORKSPACE/opnfv.iso
-    echo "--------------------------------------------------------"
-    echo
-    ls -al $WORKSPACE/opnfv.iso
-    echo
-    echo "--------------------------------------------------------"
-    echo "Done!"
-    exit 0
-fi
-
-[[ "$NODE_NAME" =~ (zte) ]] && OPNFV_ARTIFACT_URL=${GS_BASE_PROXY%%/*}/$OPNFV_ARTIFACT_URL
-
-# log info to console
-echo "Downloading the $INSTALLER_TYPE artifact using URL http://$OPNFV_ARTIFACT_URL"
-echo "This could take some time..."
-echo "--------------------------------------------------------"
-echo
-
-# download the file
-curl -L -s -o $WORKSPACE/opnfv.iso http://$OPNFV_ARTIFACT_URL > gsutil.iso.log 2>&1
-
-# list the file
-ls -al $WORKSPACE/opnfv.iso
-
-echo
-echo "--------------------------------------------------------"
-echo "Done!"
diff --git a/jjb/fuel/fuel-lab-reconfig.sh b/jjb/fuel/fuel-lab-reconfig.sh
deleted file mode 100755 (executable)
index 4b42a39..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/bin/bash
-# SPDX-license-identifier: Apache-2.0
-##############################################################################
-# Copyright (c) 2016 Ericsson AB and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
-set -o errexit
-set -o nounset
-set -o pipefail
-
-# check to see if ucs login info file exists
-if [ -e ~/.ssh/ucs_creds ];then
-    source ~/.ssh/ucs_creds
-else
-    echo "Unable to find UCS credentials for LF lab reconfiguration...Exiting"
-    exit 1
-fi
-
-# clone releng
-echo "Cloning releng repo..."
-if ! GIT_SSL_NO_VERIFY=true git clone https://gerrit.opnfv.org/gerrit/releng; then
-    echo "Unable to clone releng repo...Exiting"
-    exit 1
-fi
-
-# log info to console
-echo "Starting the lab reconfiguration for $INSTALLER_TYPE..."
-echo "--------------------------------------------------------"
-echo
-
-# create venv
-$WORKSPACE/releng/utils/lab-reconfiguration/create_venv.sh
-
-# disable nounset because 'activate' script contains unbound variable(s)
-set +o nounset
-# enter venv
-source $WORKSPACE/releng/utils/lab-reconfiguration/venv/bin/activate
-# set nounset back again
-set -o nounset
-
-# verify we are in venv
-if [[ ! $(which python | grep venv) ]]; then
-    echo "Unable to activate venv...Exiting"
-    exit 1
-fi
-
-python $WORKSPACE/releng/utils/lab-reconfiguration/reconfigUcsNet.py -i $ucs_host -u $ucs_user -p $ucs_password -f $WORKSPACE/releng/utils/lab-reconfiguration/fuel.yaml
-
-# while undergoing reboot
-sleep 30
-
-# check to see if slave is back up
-ping_counter=0
-ping_flag=0
-while [ "$ping_counter" -lt 20 ]; do
-    if [[ $(ping -c 5 172.30.10.72) ]]; then
-        ping_flag=1
-        break
-    fi
-    ((ping_counter++))
-    sleep 10
-done
-
-if [ "$ping_flag" -eq 1 ]; then
-    echo "Slave is pingable, now wait 180 seconds for services to start"
-    sleep 180
-else
-    echo "Slave did not come back up after reboot: please check lf-pod2"
-    exit 1
-fi
-
-set +o nounset
-deactivate
-
-echo
-echo "--------------------------------------------------------"
-echo "Done!"
index fc49f63..7d7e459 100644 (file)
           gs-pathname: '/{stream}'
           disabled: false
 
-    jobs:
-      - 'fuel-deploy-generic-daily-{stream}'
-
-########################
-# job templates
-########################
-- job-template:
-    name: 'fuel-deploy-generic-daily-{stream}'
-
-    concurrent: true
-
-    disabled: '{obj:disabled}'
+    project-name: '{project}'
+    project-pattern: '{project}'
+    rtd-build-url: https://readthedocs.org/api/v2/webhook/opnfv-fuel/47205/
+    rtd-token: 38f40bf6c08fd4bccb930871bc29b08404cf98b0
 
-    properties:
-      - logrotate-default
-      - throttle:
-          enabled: true
-          max-per-node: 1
-          option: 'project'
-      - build-blocker:
-          use-build-blocker: true
-          blocking-jobs:
-            - 'fuel-os-.*?-daily-.*'
-            - 'fuel-deploy-generic-daily-.*'
-          block-level: 'NODE'
-
-    parameters:
-      - project-parameter:
-          project: '{project}'
-          branch: '{branch}'
-      - '{installer}-defaults':
-          gs-pathname: '{gs-pathname}'
-      - string:
-          name: GIT_BASE
-          default: https://gerrit.opnfv.org/gerrit/$PROJECT
-          description: 'Git URL to use on this Jenkins Slave'
-      - string:
-          name: DEPLOY_SCENARIO
-          default: 'os-odl-nofeature-ha'
-      - node:
-          name: SLAVE_NAME
-          description: 'Slave name on Jenkins'
-          allowed-slaves:
-            - ericsson-pod2
-            - lf-pod2
-            - ericsson-pod1
-          default-slaves:
-            - ericsson-pod2
-
-    scm:
-      - git-scm
-
-    wrappers:
-      - build-name:
-          name: '$BUILD_NUMBER - POD: $NODE_NAME Scenario: $DEPLOY_SCENARIO'
-
-    builders:
-      - shell:
-          !include-raw-escape: ./fuel-deploy.sh
+    jobs:
+      - '{project-name}-rtd-jobs'
diff --git a/jjb/fuel/fuel-set-scenario.sh b/jjb/fuel/fuel-set-scenario.sh
new file mode 100755 (executable)
index 0000000..4c8ed73
--- /dev/null
@@ -0,0 +1,54 @@
+#!/bin/bash
+# SPDX-license-identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2018 SUSE, Mirantis Inc., Enea Software AB and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+set -o pipefail
+set -x
+
+#----------------------------------------------------------------------
+# This script is used by CI and executed by Jenkins jobs.
+# You are not supposed to use this script manually if you don't know
+# what you are doing.
+#----------------------------------------------------------------------
+
+# This function allows developers to specify the impacted scenario by
+# requesting a RE-check via a gerrit change comment under a specific format.
+#
+# Patterns to be searched in change comment:
+#   recheck: <scenario-name>
+#   reverify: <scenario-name>
+# Examples:
+#   recheck: os-odl-ovs-noha
+#   reverify: os-nosdn-nofeature-ha
+
+function set_scenario() {
+    # process gerrit event comment text (if present)
+    DEPLOY_SCENARIO=$(echo "${GERRIT_EVENT_COMMENT_TEXT}" | \
+                      grep -Po '(?!:(recheck|reverify):\s*)([-\w]+ha)')
+    if [ -z "${DEPLOY_SCENARIO}" ]; then
+        if [[ "$JOB_NAME" =~ baremetal ]]; then
+            DEPLOY_SCENARIO='os-nosdn-nofeature-ha'
+        else
+            DEPLOY_SCENARIO='os-nosdn-nofeature-noha'
+        fi
+    fi
+    # save the scenario names into java properties file
+    # so they can be injected to downstream jobs via envInject
+    echo "Recording the scenario '${DEPLOY_SCENARIO}' for downstream jobs"
+    echo "DEPLOY_SCENARIO=${DEPLOY_SCENARIO}" > "$WORK_DIRECTORY/scenario.properties"
+}
+
+# ensure GERRIT vars are set
+[ -n "${GERRIT_CHANGE_NUMBER}" ] || exit 1
+GERRIT_EVENT_COMMENT_TEXT="${GERRIT_EVENT_COMMENT_TEXT:-''}"
+
+# this directory is where the temporary properties file will be stored
+WORK_DIRECTORY=/tmp/$GERRIT_CHANGE_NUMBER
+/bin/rm -rf "$WORK_DIRECTORY" && mkdir -p "$WORK_DIRECTORY"
+
+set_scenario
index 8eb5ab0..58d7ce6 100644 (file)
           gs-pathname: '/{stream}'
           disabled: false
     #####################################
+    # cluster architectures
+    #####################################
+    arch_tag:
+      - 'amd64':
+          slave-label: 'fuel'
+          functest-suite-label: 'fuel'
+      - 'arm64':
+          slave-label: 'armband'
+          functest-suite-label: 'fuel-armband'
+    #####################################
+    # cluster types
+    #####################################
+    type:
+      - 'virtual'
+      - 'baremetal'
+    #####################################
     # patch verification phases
     #####################################
     phase:
-      - 'deploy-virtual':
-          slave-label: 'fuel-virtual'
+      - 'docker-build'
+      - 'deploy'
     #####################################
     # jobs
     #####################################
     jobs:
-      - 'fuel-verify-{stream}'
-      - 'fuel-verify-{phase}-{stream}'
+      - 'fuel-verify-{type}-{arch_tag}-{stream}'
+      - 'fuel-verify-{phase}-{type}-{arch_tag}-{stream}'
 #####################################
 # job templates
 #####################################
 - job-template:
-    name: 'fuel-verify-{stream}'
+    name: 'fuel-verify-{type}-{arch_tag}-{stream}'
 
     project-type: multijob
 
@@ -50,7 +66,7 @@
       - build-blocker:
           use-build-blocker: true
           blocking-jobs:
-            - 'fuel-os-.*?-virtual-daily-.*'
+            - 'fuel-os-.*?-daily-.*'
             - 'fuel-verify-.*'
           block-level: 'NODE'
 
           fail: true
 
     triggers:
-      - gerrit:
-          server-name: 'gerrit.opnfv.org'
-          trigger-on:
-            - patchset-created-event:
-                exclude-drafts: 'false'
-                exclude-trivial-rebase: 'false'
-                exclude-no-code-change: 'false'
-            - draft-published-event
-            - comment-added-contains-event:
-                comment-contains-value: 'recheck'
-            - comment-added-contains-event:
-                comment-contains-value: 'reverify'
-          projects:
-            - project-compare-type: 'ANT'
-              project-pattern: '{project}'
-              branches:
-                - branch-compare-type: 'ANT'
-                  branch-pattern: '**/{branch}'
-              file-paths:
-                - compare-type: ANT
-                  pattern: 'ci/**'
-                - compare-type: ANT
-                  pattern: 'mcp/**'
-              disable-strict-forbidden-file-verification: 'true'
-              forbidden-file-paths:
-                - compare-type: ANT
-                  pattern: 'docs/**'
-          readable-message: true
+      - 'fuel-verify-{type}-{arch_tag}-trigger':
+          project: '{project}'
+          branch: '{branch}'
 
     parameters:
       - project-parameter:
           project: '{project}'
           branch: '{branch}'
-      - 'fuel-virtual-defaults':
+      - '{slave-label}-{type}-defaults':
           installer: '{installer}'
       - '{installer}-defaults':
           gs-pathname: '{gs-pathname}'
-      - string:
-          name: DEPLOY_SCENARIO
-          default: 'os-nosdn-nofeature-ha'
 
     builders:
+      - 'fuel-verify-set-scenario-macro'
+      - inject:
+          properties-file: "/tmp/$GERRIT_CHANGE_NUMBER/scenario.properties"
       - description-setter:
-          description: "Built on $NODE_NAME"
+          description: "Scenario: $DEPLOY_SCENARIO | Node: $NODE_NAME"
+      - multijob:
+          name: docker-build
+          condition: SUCCESSFUL
+          projects:
+            - name: 'fuel-verify-docker-build-{type}-{arch_tag}-{stream}'
+              current-parameters: false
+              predefined-parameters: |
+                BRANCH=$BRANCH
+                GERRIT_REFSPEC=$GERRIT_REFSPEC
+                GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
+                GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
+              node-parameters: true
+              kill-phase-on: FAILURE
+              abort-all-job: true
+
       - multijob:
-          name: deploy-virtual
+          name: deploy
           condition: SUCCESSFUL
           projects:
-            - name: 'fuel-verify-deploy-virtual-{stream}'
+            - name: 'fuel-verify-deploy-{type}-{arch_tag}-{stream}'
               current-parameters: false
               predefined-parameters: |
+                MCP_DOCKER_TAG={arch_tag}-verify
+                DEPLOY_SCENARIO=$DEPLOY_SCENARIO
                 BRANCH=$BRANCH
                 GERRIT_REFSPEC=$GERRIT_REFSPEC
                 GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
           condition: SUCCESSFUL
           projects:
             # Use Functest job definition from jjb/functest/functest-daily-jobs
-            - name: 'functest-fuel-virtual-suite-{stream}'
+            - name: 'functest-{functest-suite-label}-{type}-suite-{stream}'
               current-parameters: false
               predefined-parameters: |
                 FUNCTEST_MODE=tier
                 GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                 GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
               node-parameters: true
+              enable-condition: "def m = '$NODE_NAME' !=~ 'arm-virtual'"
               kill-phase-on: NEVER
               abort-all-job: true
 
 - job-template:
-    name: 'fuel-verify-{phase}-{stream}'
+    name: 'fuel-verify-{phase}-{type}-{arch_tag}-{stream}'
 
     disabled: '{obj:disabled}'
 
       - build-blocker:
           use-build-blocker: true
           blocking-jobs:
+            - 'fuel-verify-docker-build-.*'
             - 'fuel-verify-deploy-.*'
           block-level: 'NODE'
 
       - project-parameter:
           project: '{project}'
           branch: '{branch}'
-      - '{slave-label}-defaults'
-      - 'fuel-virtual-defaults':
+      - '{slave-label}-{type}-defaults':
           installer: '{installer}'
       - '{installer}-defaults':
           gs-pathname: '{gs-pathname}'
       - description-setter:
           description: "Built on $NODE_NAME"
       - '{project}-verify-{phase}-macro'
+########################
+# trigger macros
+########################
+- trigger:
+    name: 'fuel-verify-virtual-amd64-trigger'
+    triggers:
+      - gerrit: &fuel_verify_virtual_amd64_trigger
+          server-name: 'gerrit.opnfv.org'
+          trigger-on:
+            - patchset-created-event:
+                exclude-drafts: 'false'
+                exclude-trivial-rebase: 'false'
+                exclude-no-code-change: 'false'
+            - draft-published-event
+            - comment-added-contains-event:
+                comment-contains-value: '(recheck|reverify)(\s|:\s*[-\w]+-noha)'
+          projects:
+            - project-compare-type: 'ANT'
+              project-pattern: '{project}'
+              branches:
+                - branch-compare-type: 'ANT'
+                  branch-pattern: '**/{branch}'
+              file-paths:
+                - compare-type: ANT
+                  pattern: 'ci/**'
+                - compare-type: ANT
+                  pattern: 'mcp/**'
+              disable-strict-forbidden-file-verification: 'true'
+              forbidden-file-paths:
+                - compare-type: ANT
+                  pattern: 'docs/**'
+          readable-message: true
+- trigger:
+    name: 'fuel-verify-virtual-arm64-trigger'
+    triggers:
+      - gerrit:
+          <<: *fuel_verify_virtual_amd64_trigger
+- trigger:
+    name: 'fuel-verify-baremetal-amd64-trigger'
+    triggers:
+      - gerrit: &fuel_verify_baremetal_amd64_trigger
+          <<: *fuel_verify_virtual_amd64_trigger
+          trigger-on:
+            - comment-added-contains-event:
+                comment-contains-value: '(recheck|reverify):\s*[-\w]+-ha'
+- trigger:
+    name: 'fuel-verify-baremetal-arm64-trigger'
+    triggers:
+      - gerrit:
+          <<: *fuel_verify_baremetal_amd64_trigger
+          skip-vote:
+            successful: true
+            failed: true
+            unstable: true
+            notbuilt: true
 #####################################
 # builder macros
 #####################################
 - builder:
-    name: 'fuel-verify-deploy-virtual-macro'
+    name: 'fuel-verify-set-scenario-macro'
+    builders:
+      - shell:
+          !include-raw: ./fuel-set-scenario.sh
+- builder:
+    name: 'fuel-verify-deploy-macro'
     builders:
       - shell:
           !include-raw: ./fuel-deploy.sh
+- builder:
+    name: 'fuel-verify-docker-build-macro'
+    builders:
+      - shell: |
+          #!/bin/bash -ex
+          sudo ./ci/build.sh 'verify' ''
diff --git a/jjb/fuel/fuel-weekly-jobs.yaml b/jjb/fuel/fuel-weekly-jobs.yaml
deleted file mode 100644 (file)
index c6b9217..0000000
+++ /dev/null
@@ -1,189 +0,0 @@
----
-# jenkins job templates for Fuel
-- project:
-
-    name: fuel-weekly
-
-    project: fuel
-
-    installer: fuel
-
-    # -------------------------------
-    # BRANCH ANCHORS
-    # -------------------------------
-    master: &master
-      stream: master
-      branch: '{stream}'
-      disabled: false
-      gs-pathname: ''
-    fraser: &fraser
-      stream: fraser
-      branch: 'stable/{stream}'
-      disabled: false
-      gs-pathname: '/{stream}'
-    # -------------------------------
-    # POD, INSTALLER, AND BRANCH MAPPING
-    # -------------------------------
-    #        CI PODs
-    # -------------------------------
-    pod:
-      - baremetal:
-          slave-label: fuel-baremetal
-          <<: *master
-      - virtual:
-          slave-label: fuel-virtual
-          <<: *master
-      - baremetal:
-          slave-label: fuel-baremetal
-          <<: *fraser
-      - virtual:
-          slave-label: fuel-virtual
-          <<: *fraser
-    # -------------------------------
-    #       scenarios
-    # -------------------------------
-    scenario:
-      # HA scenarios
-      - 'os-nosdn-nofeature-ha':
-          auto-trigger-name: 'weekly-trigger-disabled'
-
-    jobs:
-      - 'fuel-{scenario}-{pod}-weekly-{stream}'
-      - 'fuel-deploy-{pod}-weekly-{stream}'
-
-########################
-# job templates
-########################
-- job-template:
-    name: 'fuel-{scenario}-{pod}-weekly-{stream}'
-
-    disabled: '{obj:disabled}'
-
-    concurrent: false
-
-    properties:
-      - logrotate-default
-      - throttle:
-          enabled: true
-          max-total: 4
-          max-per-node: 1
-          option: 'project'
-      - build-blocker:
-          use-build-blocker: true
-          blocking-jobs:
-            - 'fuel-os-.*?-{pod}-daily-.*'
-            - 'fuel-os-.*?-{pod}-weekly-.*'
-            - 'fuel-verify-.*'
-          block-level: 'NODE'
-
-    wrappers:
-      - build-name:
-          name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
-
-    triggers:
-      - '{auto-trigger-name}'
-
-    parameters:
-      - project-parameter:
-          project: '{project}'
-          branch: '{branch}'
-      - '{installer}-defaults':
-          gs-pathname: '{gs-pathname}'
-      - '{slave-label}-defaults':
-          installer: '{installer}'
-      - string:
-          name: DEPLOY_SCENARIO
-          default: '{scenario}'
-
-    builders:
-      - description-setter:
-          description: "Built on $NODE_NAME"
-      - trigger-builds:
-          - project: 'fuel-deploy-{pod}-weekly-{stream}'
-            current-parameters: false
-            predefined-parameters:
-              DEPLOY_SCENARIO={scenario}
-            same-node: true
-            block: true
-      - trigger-builds:
-          - project: 'functest-fuel-{pod}-weekly-{stream}'
-            current-parameters: false
-            predefined-parameters:
-              DEPLOY_SCENARIO={scenario}
-            same-node: true
-            block: true
-            block-thresholds:
-              build-step-failure-threshold: 'never'
-              failure-threshold: 'never'
-              unstable-threshold: 'FAILURE'
-
-    publishers:
-      - email-fuel-ptl
-      - email-jenkins-admins-on-failure
-
-- job-template:
-    name: 'fuel-deploy-{pod}-weekly-{stream}'
-
-    disabled: '{obj:disabled}'
-
-    concurrent: true
-
-    properties:
-      - logrotate-default
-      - throttle:
-          enabled: true
-          max-total: 4
-          max-per-node: 1
-          option: 'project'
-      - build-blocker:
-          use-build-blocker: true
-          blocking-jobs:
-            - 'fuel-deploy-{pod}-daily-.*'
-            - 'fuel-deploy-generic-daily-.*'
-            - 'fuel-deploy-{pod}-weekly-.*'
-            - 'fuel-deploy-generic-weekly-.*'
-          block-level: 'NODE'
-
-    parameters:
-      - project-parameter:
-          project: '{project}'
-          branch: '{branch}'
-      - '{installer}-defaults':
-          gs-pathname: '{gs-pathname}'
-      - '{slave-label}-defaults':
-          installer: '{installer}'
-      - testapi-parameter
-      - string:
-          name: DEPLOY_SCENARIO
-          default: 'os-odl-nofeature-ha'
-
-    scm:
-      - git-scm
-
-    wrappers:
-      - build-name:
-          name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
-
-    builders:
-      - description-setter:
-          description: "Built on $NODE_NAME"
-      - track-begin-timestamp
-      - shell:
-          !include-raw-escape: ./fuel-deploy.sh
-
-    publishers:
-      - email-fuel-ptl
-      - email-jenkins-admins-on-failure
-      - report-provision-result
-
-########################
-# trigger macros
-########################
-# ----------------------------------------------
-# Triggers for job running on fuel-baremetal against master branch
-# ----------------------------------------------
-# HA Scenarios
-- trigger:
-    name: 'fuel-os-nosdn-nofeature-ha-baremetal-weekly-master-trigger'
-    triggers:
-      - timed: ''
index 744a7de..4e23d44 100755 (executable)
@@ -61,15 +61,15 @@ run_test() {
     case ${test_name} in
         connection_check|tenantnetwork1|tenantnetwork2|vmready1|vmready2|singlevm1|singlevm2|vping_ssh|vping_userdata|cinder_test|odl|api_check|snaps_health_check)
             FUNCTEST_IMAGE=${REPO}/functest-healthcheck:${DOCKER_TAG} ;;
-        tempest_smoke|rally_sanity|refstack_defcore|patrole|snaps_smoke|neutron_trunk|barbican)
+        tempest_smoke_serial|tempest_smoke|neutron-tempest-plugin-api|rally_sanity|refstack_defcore|patrole|snaps_smoke|neutron_trunk|networking-bgpvpn|networking-sfc|barbican)
             FUNCTEST_IMAGE=${REPO}/functest-smoke:${DOCKER_TAG} ;;
         shaker|vmtp)
             FUNCTEST_IMAGE=${REPO}/functest-benchmarking:${DOCKER_TAG} ;;
-        tempest_full|rally_full)
+        tempest_full_parallel|tempest_full|tempest_scenario|rally_full)
             FUNCTEST_IMAGE=${REPO}/functest-components:${DOCKER_TAG} ;;
-        cloudify_ims|vyos_vrouter|juju_epc)
+        cloudify|cloudify_ims|heat_ims|vyos_vrouter|juju_epc)
             FUNCTEST_IMAGE=${REPO}/functest-vnf:${DOCKER_TAG} ;;
-        doctor-notification|bgpvpn|functest-odl-sfc|barometercollectd|fds)
+        doctor-notification|bgpvpn|functest-odl-sfc|barometercollectd|fds|vgpu|stor4nfv_os)
             FUNCTEST_IMAGE=${REPO}/functest-features:${DOCKER_TAG} ;;
         *)
             echo "Unkown test case $test_name"
@@ -168,18 +168,24 @@ elif [ ${FUNCTEST_MODE} == 'tier' ]; then
     tiers=(${FUNCTEST_TIER})
     run_tiers ${tiers}
 else
+    tests=(tempest_full tempest_scenario)
     if [ ${DEPLOY_TYPE} == 'baremetal' ] && [ "${HOST_ARCH}" != "aarch64" ]; then
         if [[ ${BRANCH} == "stable/fraser" ]]; then
             tiers=(healthcheck smoke features vnf parser)
+            tests=(tempest_full_parallel)
         else
             tiers=(healthcheck smoke benchmarking features vnf)
         fi
     else
         if [[ ${BRANCH} == "stable/fraser" ]]; then
             tiers=(healthcheck smoke features parser)
+            tests=(tempest_full_parallel)
         else
             tiers=(healthcheck smoke benchmarking features)
         fi
     fi
     run_tiers ${tiers}
+    for test in "${tests[@]}"; do
+        run_test "$test"
+    done
 fi
index 763d1d4..daed74e 100644 (file)
       stream: fraser
       branch: 'stable/{stream}'
       gs-pathname: '/{stream}'
+    gambia: &gambia
+      stream: gambia
+      branch: 'stable/{stream}'
+      gs-pathname: '/{stream}'
+    hunter: &hunter
+      stream: hunter
+      branch: 'stable/{stream}'
+      gs-pathname: '/{stream}'
     # -------------------------------
     # POD, INSTALLER, AND BRANCH MAPPING
     # -------------------------------
           slave-label: compass-virtual
           installer: compass
           <<: *master
+      - arm-virtual:
+          slave-label: compass-arm-virtual
+          installer: compass
+          <<: *master
       - baremetal:
           slave-label: compass-baremetal
           installer: compass
           slave-label: compass-virtual
           installer: compass
           <<: *fraser
+      - arm-virtual:
+          slave-label: compass-arm-virtual
+          installer: compass
+          <<: *fraser
       # apex CI PODs
       - virtual:
           slave-label: apex-virtual-master
index fc2fd3c..14134fa 100644 (file)
       - master:
           branch: '{stream}'
           disabled: false
+      - hunter:
+          branch: 'stable/{stream}'
+          disabled: false
+      - gambia:
+          branch: 'stable/{stream}'
+          disabled: false
       - fraser:
           branch: 'stable/{stream}'
           disabled: false
     exclude:
       - stream: 'master'
         image: 'parser'
+      - stream: 'hunter'
+        image: 'parser'
+      - stream: 'gambia'
+        image: 'parser'
       - stream: 'fraser'
         image: 'tempest'
       - stream: 'fraser'
index 5fbb3be..3836103 100644 (file)
       - master:
           branch: '{stream}'
           disabled: false
+      - hunter:
+          branch: 'stable/{stream}'
+          disabled: false
+      - gambia:
+          branch: 'stable/{stream}'
+          disabled: false
       - fraser:
           branch: 'stable/{stream}'
           disabled: false
index 7f8dd8d..46b77ce 100644 (file)
           branch: '{stream}'
           gs-pathname: ''
           disabled: false
+      - hunter: &hunter
+          branch: 'stable/{stream}'
+          gs-pathname: '/{stream}'
+          disabled: false
+      - gambia: &gambia
+          branch: 'stable/{stream}'
+          gs-pathname: '/{stream}'
+          disabled: false
       - fraser: &fraser
           branch: 'stable/{stream}'
           gs-pathname: '/{stream}'
index 9a12305..b7220a8 100644 (file)
           branch: '{stream}'
           gs-pathname: ''
           disabled: false
+      - hunter:
+          branch: 'stable/{stream}'
+          gs-pathname: ''
+          disabled: false
+      - gambia:
+          branch: 'stable/{stream}'
+          gs-pathname: ''
+          disabled: false
       - fraser: &fraser
           branch: 'stable/{stream}'
           gs-pathname: '/{stream}'
index 251c395..84bcb21 100644 (file)
       - master:
           branch: '{stream}'
           disabled: false
+      - hunter:
+          branch: 'stable/{stream}'
+          disabled: false
+      - gambia:
+          branch: 'stable/{stream}'
+          disabled: false
       - fraser:
           branch: 'stable/{stream}'
           disabled: false
index e109387..239ae9f 100644 (file)
           branch: '{stream}'
           gs-pathname: ''
           disabled: false
+      - hunter: &hunter
+          branch: 'stable/{stream}'
+          gs-pathname: '/{stream}'
+          disabled: false
+      - gambia: &gambia
+          branch: 'stable/{stream}'
+          gs-pathname: '/{stream}'
+          disabled: false
       - fraser: &fraser
           branch: 'stable/{stream}'
           gs-pathname: '/{stream}'
index 2e94767..ce008ca 100644 (file)
 
     node: master
 
+    # Defaults for global-jjb jobs
+    build-timeout: 60
+    build-node: 'opnfv-build'
+    gerrit-server-name: 'gerrit.opnfv.org'
+    jenkins-ssh-credential: 'd42411ac011ad6f3dd2e1fa34eaa5d87f910eb2e'
+    jjb-version: '2.0.3'
+    lftools-version: '<1.0.0'
+
     properties:
       - logrotate-default
 
index 0219be5..e83a102 100644 (file)
           name: GIT_BASE
           default: https://gerrit.opnfv.org/gerrit/$PROJECT
           description: 'Git URL to use on this Jenkins Slave'
-      - string:
-          name: LAB_CONFIG_URL
-          default: ssh://jenkins-enea@gerrit.opnfv.org:29418/securedlab
-          description: 'Base URI to the configuration directory'
 
 - parameter:
     name: 'auto-baremetal-defaults'
           default: https://gerrit.opnfv.org/gerrit/$PROJECT
           description: 'Git URL to use on this Jenkins Slave'
 
+- parameter:
+    name: 'compass-arm-virtual-defaults'
+    parameters:
+      - label:
+          name: SLAVE_LABEL
+          default: 'compass-arm-virtual'
+      - string:
+          name: GIT_BASE
+          default: https://gerrit.opnfv.org/gerrit/$PROJECT
+          description: 'Git URL to use on this Jenkins Slave'
+
 - parameter:
     name: 'compass-virtual-master-defaults'
     parameters:
           name: GIT_BASE
           default: https://gerrit.opnfv.org/gerrit/$PROJECT
           description: 'Git URL to use on this Jenkins Slave'
-      - string:
-          name: LAB_CONFIG_URL
-          default: ssh://jenkins-enea@gerrit.opnfv.org:29418/securedlab
-          description: 'Base URI to the configuration directory'
 
 - parameter:
     name: 'joid-virtual-defaults'
           default: https://gerrit.opnfv.org/gerrit/$PROJECT
           description: 'Git URL to use on this Jenkins Slave'
 
+- parameter:
+    name: 'ericsson-build4-defaults'
+    parameters:
+      - label:
+          name: SLAVE_LABEL
+          default: 'ericsson-build4'
+          description: 'Slave label on Jenkins'
+      - string:
+          name: GIT_BASE
+          default: https://gerrit.opnfv.org/gerrit/$PROJECT
+          description: 'Git URL to use on this Jenkins Slave'
+      - string:
+          name: BUILD_DIRECTORY
+          default: $WORKSPACE/build_output
+          description: "Directory where the build artifact will be located upon the completion of the build."
+
 - parameter:
     name: 'huawei-build-defaults'
     parameters:
diff --git a/jjb/openci/create-ane.sh b/jjb/openci/create-ane.sh
deleted file mode 100755 (executable)
index 8a4da8f..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash
-# SPDX-license-identifier: Apache-2.0
-##############################################################################
-# Copyright (c) 2018 Ericsson AB and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
-set -o errexit
-set -o nounset
-set -o pipefail
-
-# This script creates ArtifactPublishedEvent
-# The JMS Messaging Plugin doesn't handle the newlines well so the eventBody is
-# constructed on a single line. This is something that needs to be fixed properly
-
-cat << EOF > $WORKSPACE/event.properties
-type=$PUBLISH_EVENT_TYPE
-origin=$PUBLISH_EVENT_ORIGIN
-eventBody="{ 'type': '$PUBLISH_EVENT_TYPE', 'id': '$(uuidgen)', 'time': '$(date -u +%Y-%m-%d_%H:%M:%SUTC)', 'origin': '$PUBLISH_EVENT_ORIGIN', 'buildUrl': '$BUILD_URL', 'branch': 'master', 'artifactLocation': '$ARTIFACT_LOCATION', 'confidenceLevel': { $CONFIDENCE_LEVEL } }"
-EOF
-echo "Constructed $PUBLISH_EVENT_TYPE"
-echo "--------------------------------------------"
-cat $WORKSPACE/event.properties
-echo "--------------------------------------------"
diff --git a/jjb/openci/create-ape.sh b/jjb/openci/create-ape.sh
new file mode 100755 (executable)
index 0000000..7c9b46c
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/bash
+# SPDX-license-identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2018 Ericsson AB and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+set -o errexit
+set -o nounset
+set -o pipefail
+
+# workaround for https://github.com/pypa/virtualenv/issues/1029
+export PS1=${PS1:-}
+
+# This script creates ArtifactPublishedEvent
+
+git clone https://gitlab.openci.io/openci/prototypes.git
+cd prototypes/federated-cicd
+virtualenv openci_publish
+cd openci_publish
+source bin/activate
+python setup.py install
+
+# generate event body
+cat <<EOF > ./json_body.txt
+{
+    "type": "$PUBLISH_EVENT_TYPE",
+    "id": "$(uuidgen)",
+    "time": "$(date -u +%Y-%m-%d_%H:%M:%SUTC)",
+    "buildUrl": "$BUILD_URL",
+    "branch": "master",
+    "origin": "$PUBLISH_EVENT_ORIGIN",
+    "artifactLocation": "$ARTIFACT_LOCATION",
+    "confidenceLevel": "$CONFIDENCE_LEVEL"
+}
+EOF
+
+echo "Constructed $PUBLISH_EVENT_TYPE"
+echo "--------------------------------------------"
+cat  ./json_body.txt
+echo "--------------------------------------------"
+
+python openci_publish -H 129.192.69.55 -U ${ACTIVEMQ_USER} -p ${ACTIVEMQ_PASSWORD} -n openci.prototype -B ./json_body.txt
+
+deactivate
index 410db50..9780119 100755 (executable)
@@ -11,17 +11,37 @@ set -o errexit
 set -o nounset
 set -o pipefail
 
+export PS1=${PS1:-}
+
 # This script creates CompositionDefinedEvent
-# The JMS Messaging Plugin doesn't handle the newlines well so the eventBody is
-# constructed on a single line. This is something that needs to be fixed properly
 
-cat << EOF > $WORKSPACE/event.properties
-type=$PUBLISH_EVENT_TYPE
-origin=$PUBLISH_EVENT_ORIGIN
-scenario=$DEPLOY_SCENARIO
-eventBody="{ 'type': '$PUBLISH_EVENT_TYPE', 'id': '$(uuidgen)', 'time': '$(date -u +%Y-%m-%d_%H:%M:%SUTC)', 'origin': '$PUBLISH_EVENT_ORIGIN', 'buildUrl': '$BUILD_URL', 'branch': 'master', 'compositionName': '$DEPLOY_SCENARIO', 'compositionMetadataUrl': '$SCENARIO_METADATA_LOCATION' }"
+git clone https://gitlab.openci.io/openci/prototypes.git
+cd prototypes/federated-cicd
+virtualenv openci_publish
+cd openci_publish
+source bin/activate
+python setup.py install
+
+# generate event body
+cat <<EOF > ./json_body.txt
+{
+    "type": "$PUBLISH_EVENT_TYPE",
+    "id": "$(uuidgen)",
+    "time": "$(date -u +%Y-%m-%d_%H:%M:%SUTC)",
+    "buildUrl": "$BUILD_URL",
+    "branch": "master",
+    "origin": "$PUBLISH_EVENT_ORIGIN",
+    "scenario": "$DEPLOY_SCENARIO",
+    "compositionName": "$DEPLOY_SCENARIO",
+    "compositionMetadataUrl": "$SCENARIO_METADATA_LOCATION"
+}
 EOF
+
 echo "Constructed $PUBLISH_EVENT_TYPE"
 echo "--------------------------------------------"
-cat $WORKSPACE/event.properties
+cat  ./json_body.txt
 echo "--------------------------------------------"
+
+python openci_publish -H 129.192.69.55 -U ${ACTIVEMQ_USER} -p ${ACTIVEMQ_PASSWORD} -n openci.prototype -B ./json_body.txt
+
+deactivate
index 5e8ee10..2ece019 100755 (executable)
@@ -11,17 +11,38 @@ set -o errexit
 set -o nounset
 set -o pipefail
 
+export PS1=${PS1:-}
+
 # This script creates ConfidenceLevelModifiedEvent
-# The JMS Messaging Plugin doesn't handle the newlines well so the eventBody is
-# constructed on a single line. This is something that needs to be fixed properly
 
-cat << EOF > $WORKSPACE/event.properties
-type=$PUBLISH_EVENT_TYPE
-origin=$PUBLISH_EVENT_ORIGIN
-scenario=$DEPLOY_SCENARIO
-eventBody="{ 'type': '$PUBLISH_EVENT_TYPE', 'id': '$(uuidgen)', 'time': '$(date -u +%Y-%m-%d_%H:%M:%SUTC)', 'origin': '$PUBLISH_EVENT_ORIGIN', 'buildUrl': '$BUILD_URL', 'branch': 'master', 'compositionName': '$DEPLOY_SCENARIO', 'compositionMetadataUrl': '$SCENARIO_METADATA_LOCATION', 'confidenceLevel': { $CONFIDENCE_LEVEL } }"
+git clone https://gitlab.openci.io/openci/prototypes.git
+cd prototypes/federated-cicd
+virtualenv openci_publish
+cd openci_publish
+source bin/activate
+python setup.py install
+
+# generate event body
+cat <<EOF > ./json_body.txt
+{
+    "type": "$PUBLISH_EVENT_TYPE",
+    "id": "$(uuidgen)",
+    "time": "$(date -u +%Y-%m-%d_%H:%M:%SUTC)",
+    "buildUrl": "$BUILD_URL",
+    "branch": "master",
+    "origin": "$PUBLISH_EVENT_ORIGIN",
+    "scenario": "$DEPLOY_SCENARIO",
+    "compositionName": "$DEPLOY_SCENARIO",
+    "compositionMetadataUrl": "$SCENARIO_METADATA_LOCATION",
+    "confidenceLevel": "$CONFIDENCE_LEVEL"
+}
 EOF
+
 echo "Constructed $PUBLISH_EVENT_TYPE"
 echo "--------------------------------------------"
-cat $WORKSPACE/event.properties
+cat ./json_body.txt
 echo "--------------------------------------------"
+
+python openci_publish -H 129.192.69.55 -U ${ACTIVEMQ_USER} -p ${ACTIVEMQ_PASSWORD} -n openci.prototype -B ./json_body.txt
+
+deactivate
index d80fead..bdaca57 100644 (file)
 
     builders:
       - shell:
-          !include-raw-escape: ./create-ane.sh
-      - inject:
-          properties-file: "$WORKSPACE/event.properties"
-
-    publishers:
-      - jms-messaging:
-          provider-name: openci.activemq
-          msg-type: Custom
-          msg-props: |
-            type=$type
-            origin=$origin
-          msg-content:
-            $eventBody
+          !include-raw-escape: ./create-ape.sh
 
 # This job gets triggered by a ConfidenceLevelModifiedEvent published
 # by OPNFV jobs so ODL can promote the autorelease artifact even further.
     triggers:
       - jms-messaging:
           provider-name: openci.activemq
-          selector: CI_TYPE = 'custom'
-          checks:
-            - field: origin
-              expected-value: 'OPNFV'
-            - field: type
-              expected-value: 'ConfidenceLevelModifiedEvent'
-            - field: scenario
-              expected-value: 'os-odl-nofeature'
+          selector: |
+            JMSType = 'ConfidenceLevelModifiedEvent' and JMSOrigin = 'OPNFV' and JMSScenario = 'os-odl-nofeature-ha'
 
     builders:
       - shell: |
index 28c3e69..88589d8 100644 (file)
 
     builders:
       - shell:
-          !include-raw-escape: ./create-ane.sh
-      - inject:
-          properties-file: "$WORKSPACE/event.properties"
-
-    publishers:
-      - jms-messaging:
-          provider-name: openci.activemq
-          msg-type: Custom
-          msg-props: |
-            type=$type
-            origin=$origin
-          msg-content:
-            $eventBody
+          !include-raw-escape: ./create-ape.sh
 
 # This job gets triggered by a ConfidenceLevelModifiedEvent published
 # by OPNFV jobs so ONAP can promote the autorelease artifact even further.
     triggers:
       - jms-messaging:
           provider-name: openci.activemq
-          selector: CI_TYPE = 'custom'
-          checks:
-            - field: origin
-              expected-value: 'OPNFV'
-            - field: type
-              expected-value: 'ConfidenceLevelModifiedEvent'
-            - field: scenario
-              expected-value: 'k8-nosdn-onap'
+          selector: |
+            JMSType = 'ConfidenceLevelModifiedEvent' and JMSOrigin = 'OPNFV' and JMSScenario = 'k8-nosdn-onap-ha'
 
     builders:
       - shell: |
index cb15014..7f48fcc 100644 (file)
           name: SCENARIO_METADATA_LOCATION
           default: https://url/to/scenario/metadata/on/opnfv/artifact/repo/$BUILD_NUMBER
           description: 'The location of the scenario metadata'
-      - 'opnfv-build-defaults'
+      - 'ericsson-build4-defaults'
+
+    wrappers:
+      - credentials-binding:
+          - username-password-separated:
+              credential-id: openci-connect-activemq
+              username: ACTIVEMQ_USER
+              password: ACTIVEMQ_PASSWORD
+      - workspace-cleanup
 
     triggers:
       - jms-messaging:
           provider-name: openci.activemq
-          selector: CI_TYPE = 'custom'
-          checks:
-            - field: origin
-              expected-value: '{origin}'
-            - field: type
-              expected-value: 'ArtifactPublishedEvent'
+          selector: JMSType = 'ArtifactPublishedEvent' and JMSOrigin = 'ODL'
 
     builders:
       - shell: |
           echo "----------------------------------"
       - shell:
           !include-raw-escape: ./create-cde.sh
-      - inject:
-          properties-file: "$WORKSPACE/event.properties"
-
-    publishers:
-      - jms-messaging:
-          provider-name: openci.activemq
-          msg-type: Custom
-          msg-props: |
-            type=$type
-            origin=$origin
-            scenario=$scenario
-          msg-content:
-            $eventBody
 
 - job-template:
     name: 'openci-opnfv-{scenario}-test-daily-{stream}'
           name: CONFIDENCE_LEVEL
           default: "'opnfvdaily': 'SUCCESS'"
           description: 'The confidence level the published artifact gained'
-      - 'opnfv-build-defaults'
+      - 'ericsson-build4-defaults'
+
+    wrappers:
+      - credentials-binding:
+          - username-password-separated:
+              credential-id: openci-connect-activemq
+              username: ACTIVEMQ_USER
+              password: ACTIVEMQ_PASSWORD
+      - workspace-cleanup
 
     triggers:
       - jms-messaging:
           provider-name: openci.activemq
-          selector: CI_TYPE = 'custom'
-          checks:
-            - field: origin
-              expected-value: 'OPNFV'
-            - field: type
-              expected-value: 'CompositionDefinedEvent'
-            - field: scenario
-              expected-value: '{scenario}'
+          selector: JMSType = 'CompositionDefinedEvent' and JMSOrigin = 'OPNFV' and JMSScenario = '{scenario}'
 
     builders:
       - shell: |
           echo "----------------------------------"
       - shell:
           !include-raw-escape: ./create-clme.sh
-      - inject:
-          properties-file: "$WORKSPACE/event.properties"
-
-    publishers:
-      - jms-messaging:
-          provider-name: openci.activemq
-          msg-type: Custom
-          msg-props: |
-            type=$type
-            origin=$origin
-            scenario=$scenario
-          msg-content:
-            $eventBody
index c31860a..47c3ce4 100644 (file)
     storperf-receivers: &storperf-receivers
       receivers: >
           mark.beierl@emc.com
+    yardstick-receivers: &yardstick-receivers
+      receivers: >
+          limingjiang@huawei.com
+          rexlee8776@gmail.com
+          emma.l.foley@intel.com
     other-receivers: &other-receivers
       receivers: ''
 
       - 'yardstick':
           project: 'yardstick'
           <<: *master
-          <<: *other-receivers
+          <<: *yardstick-receivers
+      - 'yardstick-image-k8s':
+          project: 'yardstick'
+          dockerdir: 'docker/k8s'
+          <<: *master
+          <<: *yardstick-receivers
+
       # projects with jobs for euphrates
       - 'barometer-collectd':
           project: 'barometer'
           dockerfile: 'Dockerfile'
           <<: *fraser
           <<: *other-receivers
+      - 'dovetail':
+          project: 'dovetail'
+          <<: *fraser
+          <<: *other-receivers
     # yamllint enable rule:key-duplicates
     jobs:
       - "{dockerrepo}-docker-build-push-{stream}"
index 1d50eb4..71013f4 100644 (file)
           default-slaves:
             - lf-build1
             - lf-build2
+            - ericsson-build3
             - ericsson-build4
           allowed-multiselect: true
           ignore-offline-nodes: true
       - timed: '@midnight'
 
     builders:
+      - description-setter:
+          description: '$NODE_NAME'
       - install-ansible
       - run-ansible-build-server-playbook
 
index 49abd7d..17fb6e4 100644 (file)
@@ -5,11 +5,6 @@
     project-name: 'releng'
 
     build-timeout: 60
-    build-node: 'lf-build1'
-    gerrit-server-name: 'gerrit.opnfv.org'
-    jenkins-ssh-credential: 'd42411ac011ad6f3dd2e1fa34eaa5d87f910eb2e'
-    jjb-version: '2.0.3'
-    lftools-version: '<1.0.0'
 
     rtd-build-url: 'https://readthedocs.org/api/v2/webhook/opnfv-releng/38594/'
     rtd-token: '291c6a0109493b4457e566d06141212452c65784'
index 92be0e6..663ff19 100644 (file)
@@ -26,7 +26,20 @@ STREAM=${STREAM:-'nostream'}
 RELEASE_FILES=$(git diff HEAD^1 --name-only -- "releases/$STREAM")
 
 for release_file in $RELEASE_FILES; do
-    python releases/scripts/create_branch.py -f $release_file
+
+    while read -r repo branch ref; do
+
+        echo "$repo" "$branch" "$ref"
+        branches="$(git ls-remote "https://gerrit.opnfv.org/gerrit/$repo.git" "refs/heads/$branch")"
+
+        if ! [ -z "$branches" ]; then
+            echo "refs/heads/$branch already exists at $ref ($branches)"
+        else
+            ssh -n -f -p 29418 gerrit.opnfv.org gerrit create-branch "$repo" "$branch" "$ref"
+        fi
+
+    done < <(python releases/scripts/repos.py -b -f "$release_file")
+
     python releases/scripts/create_jobs.py -f $release_file
     NEW_FILES=$(git status --porcelain --untracked=no | cut -c4-)
     if [ -n "$NEW_FILES" ]; then
index c24cdb9..3136d78 100644 (file)
@@ -14,6 +14,8 @@
 
     stream:
       - fraser
+      - gambia
+      - hunter
 
     jobs:
       - 'releng-release-{stream}-verify'
       - shell: !include-raw-escape:
           - releng-release-create-venv.sh
           - releng-release-tagging.sh
-          - releng-release-create-branch.sh
+          - releng-release-create-branch.sh
 
     publishers:
       - email-jenkins-admins-on-failure
index a67ff05..fcd4465 100644 (file)
     # -------------------------------
     scenario:
       - 'os-nosdn-nofeature-noha':
-          auto-trigger-name: 'daily-trigger-disabled'
           deploy-scenario: 'os-nosdn-nofeature'
           installer-type: 'osa'
           xci-flavor: 'mini'
       - 'os-nosdn-osm-noha':
-          auto-trigger-name: 'daily-trigger-disabled'
           deploy-scenario: 'os-nosdn-osm'
           installer-type: 'osa'
           xci-flavor: 'mini'
       - 'os-odl-nofeature-noha':
-          auto-trigger-name: 'daily-trigger-disabled'
           deploy-scenario: 'os-odl-nofeature'
           installer-type: 'osa'
           xci-flavor: 'mini'
       - 'os-odl-bgpvpn-noha':
-          auto-trigger-name: 'daily-trigger-disabled'
           deploy-scenario: 'os-odl-bgpvpn'
           installer-type: 'osa'
           xci-flavor: 'mini'
       - 'os-odl-sfc-noha':
-          auto-trigger-name: 'daily-trigger-disabled'
           deploy-scenario: 'os-odl-sfc'
           installer-type: 'osa'
           xci-flavor: 'mini'
       - 'k8-nosdn-nofeature-noha':
-          auto-trigger-name: 'daily-trigger-disabled'
           deploy-scenario: 'k8-nosdn-nofeature'
           installer-type: 'kubespray'
           xci-flavor: 'mini'
       - 'k8-canal-nofeature-noha':
-          auto-trigger-name: 'daily-trigger-disabled'
           deploy-scenario: 'k8-canal-nofeature'
           installer-type: 'kubespray'
           xci-flavor: 'mini'
       - 'k8-calico-nofeature-noha':
-          auto-trigger-name: 'daily-trigger-disabled'
           deploy-scenario: 'k8-calico-nofeature'
           installer-type: 'kubespray'
           xci-flavor: 'mini'
       - 'k8-contiv-nofeature-noha':
-          auto-trigger-name: 'daily-trigger-disabled'
           deploy-scenario: 'k8-contiv-nofeature'
           installer-type: 'kubespray'
           xci-flavor: 'mini'
       - 'k8-flannel-nofeature-noha':
-          auto-trigger-name: 'daily-trigger-disabled'
           deploy-scenario: 'k8-flannel-nofeature'
           installer-type: 'kubespray'
           xci-flavor: 'mini'
       - 'k8-nosdn-istio-noha':
-          auto-trigger-name: 'daily-trigger-disabled'
           deploy-scenario: 'k8-nosdn-istio'
           installer-type: 'kubespray'
           xci-flavor: 'mini'
           block-level: 'NODE'
       - logrotate-default
 
+    triggers:
+      - timed: '@midnight'
+
     parameters:
       - string:
           name: DEPLOY_SCENARIO
       - string:
           name: XCI_DISTRO
           default: '{distro}'
+      - string:
+          name: FUNCTEST_VERSION
+          default: 'hunter'
       - string:
           name: FUNCTEST_MODE
           default: 'tier'
       - string:
           name: FUNCTEST_SUITE_NAME
-          default: 'healthcheck'
+          default: 'smoke'
       - string:
           name: CI_LOOP
           default: 'daily'
           default: https://gerrit.opnfv.org/gerrit/$PROJECT
           description: 'Git URL to use on this Jenkins Slave'
 
-    triggers:
-      - '{auto-trigger-name}'
-
     wrappers:
       - ssh-agent-wrapper
       - build-timeout:
               XCI_FLAVOR=$XCI_FLAVOR
               CI_LOOP=$CI_LOOP
               XCI_DISTRO=$XCI_DISTRO
+              FUNCTEST_VERSION=$FUNCTEST_VERSION
+              FUNCTEST_MODE=$FUNCTEST_MODE
+              FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME
             same-node: true
             block: true
       - trigger-builds:
               XCI_FLAVOR=$XCI_FLAVOR
               CI_LOOP=$CI_LOOP
               XCI_DISTRO=$XCI_DISTRO
+              FUNCTEST_VERSION=$FUNCTEST_VERSION
               FUNCTEST_MODE=$FUNCTEST_MODE
               FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME
             same-node: true
       - label:
           name: SLAVE_LABEL
           default: '{slave-label}'
+      - string:
+          name: FUNCTEST_VERSION
+          default: 'hunter'
       - string:
           name: FUNCTEST_MODE
           default: 'tier'
       - string:
           name: FUNCTEST_SUITE_NAME
-          default: 'healthcheck'
+          default: 'smoke'
       - string:
           name: CI_LOOP
           default: 'daily'
               echo "Removing $vm"
               sudo virsh destroy $vm > /dev/null 2>&1 || true
               sudo virsh undefine $vm > /dev/null 2>&1 || true
+              sudo killall -r vbmc > /dev/null 2>&1 || true
+              sudo rm -rf /root/.vbmc > /dev/null 2>&1 || true
           done
           echo "---------------------------------------------------------------------------------"
 
     builders:
       - shell: |
           #!/bin/bash
-          set -o errexit
           set -o pipefail
 
           ssh root@192.168.122.2 "/root/run-functest.sh"
+          functest_exit=$?
+
+          case ${DEPLOY_SCENARIO[0]} in
+              os-*)
+                  FUNCTEST_LOG=/root/functest-results/functest.log
+                  ;;
+              k8-*)
+                  FUNCTEST_LOG=/root/functest-results/functest-kubernetes.log
+                  ;;
+              *)
+                  echo "Unable to determine the installer. Exiting!"
+                  exit $functest_exit
+                  ;;
+          esac
+
+          echo "Functest log"
+          echo "---------------------------------------------------------------------------------"
+          ssh root@192.168.122.2 "cat $FUNCTEST_LOG"
+          echo "---------------------------------------------------------------------------------"
+          exit ${functest_exit}
 - builder:
     name: 'xci-daily-yardstick-macro'
     builders:
index 0cf1ab9..a499ec9 100644 (file)
       - string:
           name: CI_LOOP
           default: 'merge'
+      - string:
+          name: FUNCTEST_VERSION
+          default: 'hunter'
       - string:
           name: FUNCTEST_MODE
           default: 'tier'
                 GERRIT_REFSPEC=$GERRIT_REFSPEC
                 GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                 GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
+                FUNCTEST_VERSION=$FUNCTEST_VERSION
+                FUNCTEST_MODE=$FUNCTEST_MODE
+                FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME
               node-parameters: true
               kill-phase-on: '{kill-phase-on}'
               abort-all-job: '{abort-all-job}'
                 GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                 GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                 CI_LOOP=$CI_LOOP
+                FUNCTEST_VERSION=$FUNCTEST_VERSION
                 FUNCTEST_MODE=$FUNCTEST_MODE
                 FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME
               node-parameters: true
       - string:
           name: CI_LOOP
           default: 'merge'
+      - string:
+          name: FUNCTEST_VERSION
+          default: 'hunter'
       - string:
           name: FUNCTEST_MODE
           default: 'tier'
index cc6de48..47ae4f8 100644 (file)
       - string:
           name: CI_LOOP
           default: 'verify'
+      - string:
+          name: FUNCTEST_VERSION
+          default: 'hunter'
       - string:
           name: FUNCTEST_MODE
           default: 'tier'
           description: 'Git URL to use on this Jenkins Slave'
 
     builders:
+      - 'xci-verify-clean-vm-macro'
       - 'xci-verify-set-scenario-macro'
       - inject:
           properties-file: "/tmp/$GERRIT_CHANGE_NUMBER/$DISTRO/scenario.properties"
                 GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                 GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                 CI_LOOP=$CI_LOOP
+                FUNCTEST_VERSION=$FUNCTEST_VERSION
+                FUNCTEST_MODE=$FUNCTEST_MODE
+                FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME
               node-parameters: true
               kill-phase-on: FAILURE
               abort-all-job: true
                 GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                 GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                 CI_LOOP=$CI_LOOP
+                FUNCTEST_VERSION=$FUNCTEST_VERSION
                 FUNCTEST_MODE=$FUNCTEST_MODE
                 FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME
               node-parameters: true
             - role: BOTH
               build-on:
                 - ABORTED
-                - FAILURE
                 - NOT_BUILT
                 - SUCCESS
                 - UNSTABLE
       - string:
           name: CI_LOOP
           default: 'verify'
+      - string:
+          name: FUNCTEST_VERSION
+          default: 'hunter'
       - string:
           name: FUNCTEST_MODE
           default: 'tier'
 # -------------------------------
 # builder macros
 # -------------------------------
+- builder:
+    name: 'xci-verify-clean-vm-macro'
+    builders:
+      - shell:
+          !include-raw: ./xci-cleanup.sh
+
 - builder:
     name: 'xci-verify-set-scenario-macro'
     builders:
index 783c64e..58d590c 100755 (executable)
@@ -41,10 +41,6 @@ elif [[ ${INSTALLER_TYPE} == 'fuel' ]]; then
     cacert_file_vol="-v ${HOME}/os_cacert:/etc/ssl/certs/mcp_os_cacert"
     sshkey="-v ${SSH_KEY}:/root/.ssh/mcp.rsa"
 fi
-# Set iptables rule to allow forwarding return traffic for container
-if ! sudo iptables -C FORWARD -j RETURN 2> ${redirect} || ! sudo iptables -L FORWARD | awk 'NR==3' | grep RETURN 2> ${redirect}; then
-    sudo iptables -I FORWARD -j RETURN
-fi
 
 opts="--privileged=true --rm"
 envs="-e INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP} \
index 56e825e..f5fffb6 100644 (file)
@@ -35,7 +35,7 @@
       - project-parameter:
           project: '{project}'
           branch: '{branch}'
-      - 'opnfv-build-ubuntu-defaults'
+      - 'ericsson-build4-defaults'
 
     scm:
       - git-scm-gerrit
@@ -83,7 +83,7 @@
       - project-parameter:
           project: '{project}'
           branch: '{branch}'
-      - 'opnfv-build-ubuntu-defaults'
+      - 'ericsson-build4-defaults'
       - string:
           name: GS_URL
           default: '$GS_BASE{gs-pathname}'
diff --git a/releases/gambia/armband.yaml b/releases/gambia/armband.yaml
new file mode 100644 (file)
index 0000000..0790de1
--- /dev/null
@@ -0,0 +1,17 @@
+# SPDX-License-Identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2018 The Linux Foundation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+---
+project: armband
+project-type: installer
+release-model: stable
+
+branches:
+  - name: stable/gambia
+    location:
+      armband: a880b5c0fe55397b73f0fcf8f8c87d523327099d
diff --git a/releases/gambia/fuel.yaml b/releases/gambia/fuel.yaml
new file mode 100644 (file)
index 0000000..8c86010
--- /dev/null
@@ -0,0 +1,17 @@
+# SPDX-License-Identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2018 The Linux Foundation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+---
+project: fuel
+project-type: installer
+release-model: stable
+
+branches:
+  - name: stable/gambia
+    location:
+      fuel: 90a442136b0aff8380388ac0a94831d0904e3cb8
diff --git a/releases/gambia/functest.yaml b/releases/gambia/functest.yaml
new file mode 100644 (file)
index 0000000..f21aec0
--- /dev/null
@@ -0,0 +1,15 @@
+---
+project: functest
+project-type: testing
+release-model: stable
+
+branches:
+  - name: stable/gambia
+    location:
+      functest: d5fce8c12bc73c1b1547df2750563c271a3ab3f6
+  - name: stable/gambia
+    location:
+      functest-kubernetes: ca3c9cf6f57c87aee8c6f0b93f70d84e3df736de
+  - name: stable/gambia
+    location:
+      functest-xtesting: a09ece9bbe9cda52487cf5b443619fec1b3e09ca
diff --git a/releases/gambia/sandbox.yaml b/releases/gambia/sandbox.yaml
new file mode 100644 (file)
index 0000000..16f2df2
--- /dev/null
@@ -0,0 +1,9 @@
+---
+project: sandbox
+project-type: infra
+release-model: stable
+
+branches:
+  - name: stable/gambia
+    location:
+      sandbox: c2012f5b642f17e6024db631b833414114a329d5
diff --git a/releases/hunter/functest.yaml b/releases/hunter/functest.yaml
new file mode 100644 (file)
index 0000000..5fcc5c9
--- /dev/null
@@ -0,0 +1,15 @@
+---
+project: functest
+project-type: testing
+release-model: stable
+
+branches:
+  - name: stable/hunter
+    location:
+      functest: d5fce8c12bc73c1b1547df2750563c271a3ab3f6
+  - name: stable/hunter
+    location:
+      functest-kubernetes: ca3c9cf6f57c87aee8c6f0b93f70d84e3df736de
+  - name: stable/hunter
+    location:
+      functest-xtesting: a09ece9bbe9cda52487cf5b443619fec1b3e09ca
diff --git a/releases/scripts/create_branch.py b/releases/scripts/create_branch.py
deleted file mode 100644 (file)
index fa3c92d..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-#!/usr/bin/env python2
-# SPDX-License-Identifier: Apache-2.0
-##############################################################################
-# Copyright (c) 2018 The Linux Foundation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
-"""
-Create Gerrit Branchs
-"""
-
-import argparse
-
-try:
-    import ConfigParser
-except ImportError:
-    import configparser as ConfigParser
-
-import logging
-import os
-import yaml
-
-from requests.compat import quote
-from requests.exceptions import RequestException
-
-from pygerrit2.rest import GerritRestAPI
-from pygerrit2.rest.auth import HTTPDigestAuthFromNetrc, HTTPBasicAuthFromNetrc
-
-
-logging.basicConfig(level=logging.INFO)
-
-
-def quote_branch(arguments):
-    """
-    Quote is used here to escape the '/' in branch name. By
-    default '/' is listed in 'safe' characters which aren't escaped.
-    quote is not used in the data of the PUT request, as quoting for
-    arguments is handled by the request library
-    """
-    new_args = arguments.copy()
-    new_args['branch'] = quote(new_args['branch'], '')
-    return new_args
-
-
-def create_branch(api, arguments):
-    """
-    Create a branch using the Gerrit REST API
-    """
-    logger = logging.getLogger(__file__)
-
-    branch_data = """
-    {
-      "ref": "%(branch)s"
-      "revision": "%(commit)s"
-    }""" % arguments
-
-    # First verify the commit exists, otherwise the branch will be
-    # created at HEAD
-    try:
-        request = api.get("/projects/%(project)s/commits/%(commit)s" %
-                          arguments)
-        logger.debug(request)
-        logger.debug("Commit exists: %(commit)s", arguments)
-    except RequestException as err:
-        if hasattr(err, 'response') and err.response.status_code in [404]:
-            logger.warn("Commit %(commit)s for %(project)s does"
-                        " not exist. Not creating branch.", arguments)
-            logger.warn(err)
-        else:
-            logger.error("Error: %s", str(err))
-        # Skip trying to create the branch
-        return
-
-    # Try to create the branch and let us know if it already exist.
-    try:
-        request = api.put("/projects/%(project)s/branches/%(branch)s" %
-                          quote_branch(arguments), branch_data)
-        logger.info("Branch %(branch)s for %(project)s successfully created",
-                    arguments)
-    except RequestException as err:
-        if hasattr(err, 'response') and err.response.status_code in [412, 409]:
-            logger.info("Branch %(branch)s already created for %(project)s",
-                        arguments)
-            logger.info(err)
-        else:
-            logger.error("Error: %s", str(err))
-
-
-def main():
-    """Given a yamlfile that follows the release syntax, create branches
-    in Gerrit listed under branches"""
-
-    config = ConfigParser.ConfigParser()
-    config.read(os.path.join(os.path.abspath(os.path.dirname(__file__)),
-                'defaults.cfg'))
-    config.read([os.path.expanduser('~/releases.cfg'), 'releases.cfg'])
-
-    gerrit_url = config.get('gerrit', 'url')
-
-    parser = argparse.ArgumentParser()
-    parser.add_argument('--file', '-f',
-                        type=argparse.FileType('r'),
-                        required=True)
-    parser.add_argument('--basicauth', '-b', action='store_true')
-    args = parser.parse_args()
-
-    GerritAuth = HTTPDigestAuthFromNetrc
-    if args.basicauth:
-        GerritAuth = HTTPBasicAuthFromNetrc
-
-    try:
-        auth = GerritAuth(url=gerrit_url)
-    except ValueError as err:
-        logging.error("%s for %s", err, gerrit_url)
-        quit(1)
-    restapi = GerritRestAPI(url=gerrit_url, auth=auth)
-
-    project = yaml.safe_load(args.file)
-
-    create_branches(restapi, project)
-
-
-def create_branches(restapi, project):
-    """Create branches for a specific project defined in the release
-    file"""
-
-    branches = []
-    for branch in project['branches']:
-        repo, ref = next(iter(branch['location'].items()))
-        branches.append({
-            'project': repo,
-            'branch': branch['name'],
-            'commit': ref
-        })
-
-    for branch in branches:
-        create_branch(restapi, branch)
-
-
-if __name__ == "__main__":
-    main()
index 47ce42d..91c4e93 100644 (file)
@@ -63,20 +63,28 @@ def main():
                         type=str,
                         help="Only print"
                              "SHAs for the specified release")
+    parser.add_argument('--branches', '-b',
+                        action='store_true',
+                        default=False,
+                        help="Print Branch info")
+
     args = parser.parse_args()
 
     project = yaml.safe_load(args.file)
 
-    list_repos(project, args)
+    if args.branches:
+        list_branches(project, args)
+    else:
+        list_repos(project, args)
 
 
 def list_repos(project, args):
     """List repositories in the project file"""
 
     lookup = project.get('releases', [])
+
     if 'releases' not in project:
         exit(0)
-
     repos = set()
     for item in lookup:
         repo, ref = next(iter(item['location'].items()))
@@ -90,5 +98,24 @@ def list_repos(project, args):
         print(repo)
 
 
+def list_branches(project, args):
+    """List branches in the project file"""
+
+    lookup = project.get('branches', [])
+
+    if 'branches' not in project:
+        exit(0)
+    repos = set()
+    for item in lookup:
+        repo, ref = next(iter(item['location'].items()))
+        if args.names:
+            repos.add(Repo(repo))
+        elif args.release and item['name'] == args.release:
+            repos.add(Repo(repo, ref))
+        elif not args.release:
+            repos.add(Repo(repo, item['name'], ref))
+    for repo in repos:
+        print(repo)
+
 if __name__ == "__main__":
     main()