diff options
31 files changed, 290 insertions, 244 deletions
@@ -1,31 +0,0 @@ -Project: Release Engineering (Releng) -Project Creation Date: July 14, 2015 -Project Category: Integration & Testing -Lifecycle State: Incubation -Primary Contact: Fatih Degirmenci -Project Lead: Fatih Degirmenci -Jira Project Name: Release Engineering -Jira Project Prefix: RELENG -Mailing list tag: [releng] -IRC: Server:freenode.net Channel:#opnfv-octopus -Repository: releng -Other Repositories: releng-xci, releng-testresults - -Committers: -Fatih Degirmenci (Ericsson, fatih.degirmenci@ericsson.com) -Aric Gardner (Linux Foundation, agardner@linuxfoundation.org) -Tim Rozet (Red Hat, trozet@redhat.com) -Morgan Richomme (Orange, morgan.richomme@orange.com) -Jose Lausuch (Ericsson, jose.lausuch@ericsson.com) -Ryota Mibu (NEC, r-mibu@cq.jp.nec.com) -Mei Mei (Huawei, meimei@huawei.com) -Trevor Bramwell (Linux Foundation, tbramwell@linuxfoundation.org) -Serena Feng (ZTE, feng.xiaowei@zte.com.cn) -Yolanda Robla Mota (Red Hat, yroblamo@redhat.com) -Markos Chandras (SUSE, mchandras@suse.de) -Luke Hinds (Red Hat, lhinds@redhat.com) - -Link to TSC approval of the project: http://ircbot.wl.linuxfoundation.org/meetings/opnfv-meeting/2015/opnfv-meeting.2015-07-14-14.00.html -Link to TSC voting for removal of Victor Laza as committer: http://meetbot.opnfv.org/meetings/opnfv-meeting/2016/opnfv-meeting.2016-02-16-14.59.html -Link to nomination and acceptance of Mei Mei as committer: http://lists.opnfv.org/pipermail/opnfv-tsc/2016-March/002228.html -Links to nomination and accceptance of Trevor Bramwell as committer: http://lists.opnfv.org/pipermail/opnfv-tech-discuss/2016-July/011659.html and http://lists.opnfv.org/pipermail/opnfv-tech-discuss/2016-July/011714.html diff --git a/docs/infra/jenkins/jjb-usage.rst b/docs/infra/jenkins/jjb-usage.rst index 671278121..d467dbe8a 100644 --- a/docs/infra/jenkins/jjb-usage.rst +++ b/docs/infra/jenkins/jjb-usage.rst @@ -10,7 +10,7 @@ Creating/Configuring/Verifying Jenkins Jobs Clone and setup the repo:: - git clone ssh://YOU@gerrit.opnfv.org:29418/releng + git clone --recursive ssh://YOU@gerrit.opnfv.org:29418/releng cd releng git review -s @@ -29,13 +29,13 @@ Make changes:: Test with tox:: - tox -v -ejjb + tox -e jjb .. note:: You can also test the jobs under a single jjb directory by specifying the directory. For example to test only the releng jobs, you could run: - tox -v -e jjb -- jjb/releng + tox -e jjb -- jjb/global:jjb/global-jjb:jjb/releng Submit the change to gerrit:: diff --git a/jjb-sandbox/releng/releng-sandbox-jobs.yml b/jjb-sandbox/releng/releng-sandbox-jobs.yml deleted file mode 100644 index df8b1d56a..000000000 --- a/jjb-sandbox/releng/releng-sandbox-jobs.yml +++ /dev/null @@ -1,61 +0,0 @@ ---- -- project: - name: 'releng-sandbox-jobs' - jobs: - - 'releng-deploy-sandbox' - - project: 'releng' - node: 'releng-sandbox' - -- job-template: - name: 'releng-deploy-sandbox' - node: '{node}' - - parameters: - - project-parameter: - project: '{project}' - branch: 'master' - scm: - - git-scm-gerrit - - triggers: - - gerrit: - 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: 'redeploy' - custom-url: '$BUILD_URL deploying to $JENKINS_URL' - silent-start: true - skip-vote: - successful: true - failed: true - unstable: true - notbuilt: true - projects: - - project-compare-type: 'ANT' - project-pattern: 'releng' - branches: - - branch-compare-type: 'ANT' - branch-pattern: '**/master' - file-paths: - - compare-type: ANT - pattern: jjb-sandbox/** - - wrappers: '' - - builders: - - shell: - !include-raw-escape: verify-sandbox-jobs.sh - # yamllint disable rule:line-length - - shell: | - #!/bin/bash - jenkins-jobs update --delete-old -r jjb/releng-defaults.yaml:jjb/releng-macros.yaml:jjb/opnfv/installer-params.yml:jjb/opnfv/slave-params.yml:jjb-sandbox - # yamllint enable - publishers: - - archive-artifacts: - artifacts: 'job_output/*' - - email-jenkins-admins-on-failure diff --git a/jjb-sandbox/releng/verify-sandbox-jobs.sh b/jjb-sandbox/releng/verify-sandbox-jobs.sh deleted file mode 100755 index 599016106..000000000 --- a/jjb-sandbox/releng/verify-sandbox-jobs.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash -# SPDX-license-identifier: Apache-2.0 -############################################################################## -# Copyright (c) 2016 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 -############################################################################## -#test for non-ascii characters, these can pass the test and end up breaking things in production -for x in $(find . -name *\.yml); do - - if LC_ALL=C grep -q '[^[:print:][:space:]]' "$x"; then - echo "file "$x" contains non-ascii characters" - exit 1 - fi - -done - -jenkins-jobs test -r jjb/releng-defaults.yaml:jjb/releng-macros.yaml:jjb/opnfv/installer-params.yml:jjb/opnfv/slave-params.yml:jjb-sandbox \ - -o job_output diff --git a/jjb/apex/apex-deploy.sh b/jjb/apex/apex-deploy.sh index dfaf2a8b5..f5c6ab108 100755 --- a/jjb/apex/apex-deploy.sh +++ b/jjb/apex/apex-deploy.sh @@ -156,16 +156,6 @@ fi # start deployment sudo ${DEPLOY_CMD} -d ${DEPLOY_FILE} -n ${NETWORK_FILE} --debug -if [[ "$PROMOTE" == 'True' ]]; then - echo "CSIT job: setting host route for floating ip routing" - # csit route to allow docker container to reach floating ips - UNDERCLOUD=$(sudo virsh domifaddr undercloud | grep -Eo "[0-9\.]+{3}[0-9]+") - if sudo route | grep 192.168.37.128 > /dev/null; then - sudo route del -net 192.168.37.128 netmask 255.255.255.128 - fi - sudo route add -net 192.168.37.128 netmask 255.255.255.128 gw ${UNDERCLOUD} -fi - echo echo "--------------------------------------------------------" echo "Done!" diff --git a/jjb/apex/apex-snapshot-create.sh b/jjb/apex/apex-snapshot-create.sh index 7e38d56b4..b73931470 100644 --- a/jjb/apex/apex-snapshot-create.sh +++ b/jjb/apex/apex-snapshot-create.sh @@ -91,10 +91,16 @@ echo "Snapshot saved as apex-${SNAP_TYPE}-snap-${DATE}.tar.gz" # update opnfv properties file if [ "$SNAP_TYPE" == 'csit' ]; then - curl -O -L http://$GS_URL/snapshot.properties - sed -i '/^OPNFV_SNAP_URL=/{h;s#=.*#='${GS_URL}'/apex-csit-snap-'${DATE}'.tar.gz#};${x;/^$/{s##OPNFV_SNAP_URL='${GS_URL}'/apex-csit-snap-'${DATE}'.tar.gz#;H};x}' snapshot.properties snap_sha=$(sha512sum apex-csit-snap-${DATE}.tar.gz | cut -d' ' -f1) - sed -i '/^OPNFV_SNAP_SHA512SUM=/{h;s/=.*/='${snap_sha}'/};${x;/^$/{s//OPNFV_SNAP_SHA512SUM='${snap_sha}'/;H};x}' snapshot.properties + if curl --fail -O -L http://$GS_URL/snapshot.properties; then + sed -i '/^OPNFV_SNAP_URL=/{h;s#=.*#='${GS_URL}'/apex-csit-snap-'${DATE}'.tar.gz#};${x;/^$/{s##OPNFV_SNAP_URL='${GS_URL}'/apex-csit-snap-'${DATE}'.tar.gz#;H};x}' snapshot.properties + sed -i '/^OPNFV_SNAP_SHA512SUM=/{h;s/=.*/='${snap_sha}'/};${x;/^$/{s//OPNFV_SNAP_SHA512SUM='${snap_sha}'/;H};x}' snapshot.properties + else + cat << EOF > snapshot.properties +OPNFV_SNAP_URL=${GS_URL}/apex-csit-snap-${DATE}.tar.gz +OPNFV_SNAP_SHA512SUM=${snap_sha} +EOF + fi echo "OPNFV_SNAP_URL=$GS_URL/apex-csit-snap-${DATE}.tar.gz" echo "OPNFV_SNAP_SHA512SUM=$(sha512sum apex-csit-snap-${DATE}.tar.gz | cut -d' ' -f1)" echo "Updated properties file: " diff --git a/jjb/apex/apex-upload-artifact.sh b/jjb/apex/apex-upload-artifact.sh index 8743368fb..5c777a824 100755 --- a/jjb/apex/apex-upload-artifact.sh +++ b/jjb/apex/apex-upload-artifact.sh @@ -24,7 +24,9 @@ importkey () { git clone https://gerrit.opnfv.org/gerrit/releng $WORKSPACE/releng/ &> /dev/null #this is where we import the siging key if [ -f $WORKSPACE/releng/utils/gpg_import_key.sh ]; then - source $WORKSPACE/releng/utils/gpg_import_key.sh + if ! $WORKSPACE/releng/utils/gpg_import_key.sh; then + echo "WARNING: Failed to run gpg key import" + fi fi } @@ -75,13 +77,16 @@ uploadrpm () { uploadsnap () { # Uploads snapshot artifact and updated properties file echo "Uploading snapshot artifacts" + # snapshot dir is the same node in the create job workspace + # only 1 promotion job can run at a time on a slave + snapshot_dir="${WORKSPACE}/../apex-create-snapshot" if [ -z "$SNAP_TYPE" ]; then echo "ERROR: SNAP_TYPE not provided...exiting" exit 1 fi - gsutil cp $WORKSPACE/apex-${SNAP_TYPE}-snap-`date +%Y-%m-%d`.tar.gz gs://$GS_URL/ > gsutil.iso.log + gsutil cp ${snapshot_dir}/apex-${SNAP_TYPE}-snap-`date +%Y-%m-%d`.tar.gz gs://$GS_URL/ > gsutil.iso.log if [ "$SNAP_TYPE" == 'csit' ]; then - gsutil cp $WORKSPACE/snapshot.properties gs://$GS_URL/snapshot.properties > gsutil.latest.log + gsutil cp ${snapshot_dir}/snapshot.properties gs://$GS_URL/snapshot.properties > gsutil.latest.log fi echo "Upload complete for Snapshot" } diff --git a/jjb/apex/apex-verify-jobs.yaml b/jjb/apex/apex-verify-jobs.yaml index 8140d9ef5..0837a76e4 100644 --- a/jjb/apex/apex-verify-jobs.yaml +++ b/jjb/apex/apex-verify-jobs.yaml @@ -10,12 +10,12 @@ - master: &master branch: '{stream}' gs-pathname: '' - verify-scenario: 'os-odl-nofeature-ha' + verify-scenario: 'os-nosdn-nofeature-ha' disabled: false - fraser: &fraser branch: 'stable/{stream}' gs-pathname: '/{stream}' - verify-scenario: 'os-odl-nofeature-ha' + verify-scenario: 'os-nosdn-nofeature-ha' disabled: false - danube: &danube branch: 'stable/{stream}' @@ -243,8 +243,8 @@ GERRIT_REFSPEC=$GERRIT_REFSPEC GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE - FUNCTEST_SUITE_NAME=healthcheck - FUNCTEST_MODE=tier + FUNCTEST_SUITE_NAME=tempest_smoke_serial + FUNCTEST_MODE=testcase node-parameters: false kill-phase-on: FAILURE abort-all-job: true @@ -343,6 +343,14 @@ kill-phase-on: FAILURE abort-all-job: true git-revision: true + - shell: | + if echo $DEPLOY_SCENARIO | grep queens &> /dev/null; then + echo 'REPO=opnfv' > functest_repo + else + echo 'REPO=ollivier' > functest_repo + fi + - inject: + properties-file: functest_repo - multijob: name: functest-smoke condition: ALWAYS @@ -351,14 +359,16 @@ current-parameters: false predefined-parameters: | DEPLOY_SCENARIO=$DEPLOY_SCENARIO - FUNCTEST_MODE=tier - FUNCTEST_TIER=healthcheck + FUNCTEST_SUITE_NAME=tempest_smoke_serial + FUNCTEST_MODE=testcase + REPO=$REPO GERRIT_BRANCH=$GERRIT_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 + enable-condition: "def m = '$DEPLOY_SCENARIO' != k8s-nosdn-nofeature-noha" abort-all-job: true git-revision: false - multijob: diff --git a/jjb/apex/apex.yaml b/jjb/apex/apex.yaml index bb5b53d6d..65e558820 100644 --- a/jjb/apex/apex.yaml +++ b/jjb/apex/apex.yaml @@ -8,7 +8,7 @@ - 'apex-virtual-{stream}' - 'apex-deploy-{platform}-{stream}' - 'apex-daily-{stream}' - - 'apex-csit-promote-daily-{stream}-{os_version}' + - 'apex-csit-promote-daily-{stream}-os-{os_version}' - 'apex-fdio-promote-daily-{stream}' - 'apex-{scenario}-baremetal-{scenario_stream}' - 'apex-testsuite-{scenario}-baremetal-{scenario_stream}' @@ -144,10 +144,18 @@ <<: *danube - 'os-ovn-nofeature-noha': <<: *danube + - 'os-nosdn-nofeature-noha': + <<: *master + - 'os-nosdn-nofeature-ha': + <<: *master - 'os-odl-nofeature-noha': <<: *master - 'os-odl-nofeature-ha': <<: *master + - 'os-nosdn-queens-noha': + <<: *master + - 'os-nosdn-queens-ha': + <<: *master - 'os-odl-queens-noha': <<: *master - 'os-odl-queens-ha': @@ -420,6 +428,14 @@ kill-phase-on: FAILURE abort-all-job: true git-revision: true + - shell: | + if echo $DEPLOY_SCENARIO | grep queens &> /dev/null; then + echo 'REPO=opnfv' > functest_repo + else + echo 'REPO=ollivier' > functest_repo + fi + - inject: + properties-file: functest_repo - multijob: name: functest-smoke condition: ALWAYS @@ -430,6 +446,7 @@ DEPLOY_SCENARIO=$DEPLOY_SCENARIO FUNCTEST_MODE=$FUNCTEST_MODE FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME + REPO=$REPO GERRIT_BRANCH=$GERRIT_BRANCH GERRIT_REFSPEC=$GERRIT_REFSPEC GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER @@ -623,8 +640,7 @@ predefined-parameters: DEPLOY_SCENARIO=$DEPLOY_SCENARIO kill-phase-on: NEVER - enable-condition: "def m = '$DEPLOY_SCENARIO' ==~ /os-(nosdn-nofeature|odl-bgpvpn)-ha/ - && $BUILD_NUMBER % 2 == 1" + enable-condition: "def m = '$DEPLOY_SCENARIO' ==~ /os-(nosdn-nofeature|odl-bgpvpn)-ha/" abort-all-job: false git-revision: false - multijob: @@ -637,8 +653,7 @@ predefined-parameters: DEPLOY_SCENARIO=$DEPLOY_SCENARIO kill-phase-on: NEVER - enable-condition: "def m = '$DEPLOY_SCENARIO' ==~ /os-(nosdn-nofeature|odl-bgpvpn)-ha/ - && $BUILD_NUMBER % 2 == 0" + enable-condition: "def m = '$DEPLOY_SCENARIO' ==~ /os-(nosdn-nofeature|odl-bgpvpn)-ha/" abort-all-job: false git-revision: false - multijob: @@ -737,13 +752,11 @@ - job-template: name: 'apex-create-snapshot' - # Job template for clean - # - # Required Variables: - # stream: branch with - in place of / (eg. stable) - disabled: false + parameters: + - '{project}-defaults' + builders: - shell: !include-raw-escape: ./apex-snapshot-create.sh @@ -752,13 +765,11 @@ - job-template: name: 'apex-upload-snapshot' - # Job template for clean - # - # Required Variables: - # stream: branch with - in place of / (eg. stable) - disabled: false + parameters: + - '{project}-defaults' + builders: - inject: properties-content: ARTIFACT_TYPE=snapshot @@ -766,7 +777,7 @@ # CSIT promote - job-template: - name: 'apex-csit-promote-daily-{stream}-{os_version}' + name: 'apex-csit-promote-daily-{stream}-os-{os_version}' # Job template for promoting CSIT Snapshots # @@ -832,7 +843,7 @@ condition: SUCCESSFUL projects: - name: 'apex-create-snapshot' - current-parameters: false + current-parameters: true predefined-parameters: | SNAP_TYPE=csit node-parameters: true @@ -844,7 +855,7 @@ condition: SUCCESSFUL projects: - name: 'apex-upload-snapshot' - current-parameters: false + current-parameters: true predefined-parameters: | SNAP_TYPE=csit node-parameters: true @@ -1493,6 +1504,22 @@ name: Baremetal Deploy and Test Phase condition: SUCCESSFUL projects: + - name: 'apex-os-nosdn-nofeature-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-nofeature-ha-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-odl-nofeature-noha-baremetal-master' node-parameters: false current-parameters: false @@ -1509,6 +1536,22 @@ kill-phase-on: NEVER abort-all-job: true git-revision: false + - name: 'apex-os-nosdn-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 + - name: 'apex-os-nosdn-queens-ha-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-odl-queens-noha-baremetal-master' node-parameters: false current-parameters: false diff --git a/jjb/apex/apex.yaml.j2 b/jjb/apex/apex.yaml.j2 index 3397f1ed2..f1208d27e 100644 --- a/jjb/apex/apex.yaml.j2 +++ b/jjb/apex/apex.yaml.j2 @@ -8,7 +8,7 @@ - 'apex-virtual-{stream}' - 'apex-deploy-{platform}-{stream}' - 'apex-daily-{stream}' - - 'apex-csit-promote-daily-{stream}-{os_version}' + - 'apex-csit-promote-daily-{stream}-os-{os_version}' - 'apex-fdio-promote-daily-{stream}' - 'apex-{scenario}-baremetal-{scenario_stream}' - 'apex-testsuite-{scenario}-baremetal-{scenario_stream}' @@ -300,6 +300,14 @@ kill-phase-on: FAILURE abort-all-job: true git-revision: true + - shell: | + if echo $DEPLOY_SCENARIO | grep queens &> /dev/null; then + echo 'REPO=opnfv' > functest_repo + else + echo 'REPO=ollivier' > functest_repo + fi + - inject: + properties-file: functest_repo - multijob: name: functest-smoke condition: ALWAYS @@ -310,6 +318,7 @@ DEPLOY_SCENARIO=$DEPLOY_SCENARIO FUNCTEST_MODE=$FUNCTEST_MODE FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME + REPO=$REPO GERRIT_BRANCH=$GERRIT_BRANCH GERRIT_REFSPEC=$GERRIT_REFSPEC GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER @@ -503,8 +512,7 @@ predefined-parameters: DEPLOY_SCENARIO=$DEPLOY_SCENARIO kill-phase-on: NEVER - enable-condition: "def m = '$DEPLOY_SCENARIO' ==~ /os-(nosdn-nofeature|odl-bgpvpn)-ha/ - && $BUILD_NUMBER % 2 == 1" + enable-condition: "def m = '$DEPLOY_SCENARIO' ==~ /os-(nosdn-nofeature|odl-bgpvpn)-ha/" abort-all-job: false git-revision: false - multijob: @@ -517,8 +525,7 @@ predefined-parameters: DEPLOY_SCENARIO=$DEPLOY_SCENARIO kill-phase-on: NEVER - enable-condition: "def m = '$DEPLOY_SCENARIO' ==~ /os-(nosdn-nofeature|odl-bgpvpn)-ha/ - && $BUILD_NUMBER % 2 == 0" + enable-condition: "def m = '$DEPLOY_SCENARIO' ==~ /os-(nosdn-nofeature|odl-bgpvpn)-ha/" abort-all-job: false git-revision: false - multijob: @@ -617,13 +624,11 @@ - job-template: name: 'apex-create-snapshot' - # Job template for clean - # - # Required Variables: - # stream: branch with - in place of / (eg. stable) - disabled: false + parameters: + - '{project}-defaults' + builders: - shell: !include-raw-escape: ./apex-snapshot-create.sh @@ -632,13 +637,11 @@ - job-template: name: 'apex-upload-snapshot' - # Job template for clean - # - # Required Variables: - # stream: branch with - in place of / (eg. stable) - disabled: false + parameters: + - '{project}-defaults' + builders: - inject: properties-content: ARTIFACT_TYPE=snapshot @@ -646,7 +649,7 @@ # CSIT promote - job-template: - name: 'apex-csit-promote-daily-{stream}-{os_version}' + name: 'apex-csit-promote-daily-{stream}-os-{os_version}' # Job template for promoting CSIT Snapshots # @@ -712,7 +715,7 @@ condition: SUCCESSFUL projects: - name: 'apex-create-snapshot' - current-parameters: false + current-parameters: true predefined-parameters: | SNAP_TYPE=csit node-parameters: true @@ -724,7 +727,7 @@ condition: SUCCESSFUL projects: - name: 'apex-upload-snapshot' - current-parameters: false + current-parameters: true predefined-parameters: | SNAP_TYPE=csit node-parameters: true diff --git a/jjb/apex/scenarios.yaml.hidden b/jjb/apex/scenarios.yaml.hidden index 8375f6163..71a6c3dbe 100644 --- a/jjb/apex/scenarios.yaml.hidden +++ b/jjb/apex/scenarios.yaml.hidden @@ -1,6 +1,10 @@ master: + - 'os-nosdn-nofeature-noha' + - 'os-nosdn-nofeature-ha' - 'os-odl-nofeature-noha' - 'os-odl-nofeature-ha' + - 'os-nosdn-queens-noha' + - 'os-nosdn-queens-ha' - 'os-odl-queens-noha' - 'os-odl-queens-ha' fraser: diff --git a/jjb/armband/armband-ci-jobs.yaml b/jjb/armband/armband-ci-jobs.yaml index fe2bbcc63..140f84b03 100644 --- a/jjb/armband/armband-ci-jobs.yaml +++ b/jjb/armband/armband-ci-jobs.yaml @@ -252,6 +252,9 @@ - string: name: DEPLOY_SCENARIO default: 'os-odl-nofeature-ha' + - string: + name: PROJECT + default: '{project}' scm: - git-scm diff --git a/jjb/auto/auto.yaml b/jjb/auto/auto.yaml index a454fc4e8..0cfe88f93 100644 --- a/jjb/auto/auto.yaml +++ b/jjb/auto/auto.yaml @@ -101,8 +101,9 @@ - trigger-builds: - project: '{installer}-deploy-{pod}-daily-{stream}' current-parameters: false - predefined-parameters: - DEPLOY_SCENARIO='os-nosdn-nofeature-ha' + predefined-parameters: | + DEPLOY_SCENARIO=os-nosdn-nofeature-ha + PROJECT=armband same-node: true block: true diff --git a/jjb/compass4nfv/compass-ci-jobs.yaml b/jjb/compass4nfv/compass-ci-jobs.yaml index 8eeaabfaa..298173e85 100644 --- a/jjb/compass4nfv/compass-ci-jobs.yaml +++ b/jjb/compass4nfv/compass-ci-jobs.yaml @@ -222,12 +222,6 @@ - condition-kind: regex-match regex: os-(nosdn|odl_l3)-nofeature-ha label: '{scenario}' - - condition-kind: day-of-week - day-selector: select-days - days: - MON: true - TUES: true - use-build-time: true steps: - trigger-builds: - project: 'dovetail-compass-{pod}-default-{stream}' @@ -247,12 +241,6 @@ - condition-kind: regex-match regex: os-(nosdn|odl_l3)-nofeature-ha label: '{scenario}' - - condition-kind: day-of-week - day-selector: select-days - days: - THURS: true - FRI: true - use-build-time: true steps: - trigger-builds: - project: 'dovetail-compass-{pod}-proposed_tests-{stream}' diff --git a/jjb/doctor/doctor.yaml b/jjb/doctor/doctor.yaml index 3985356c1..1c12563a8 100644 --- a/jjb/doctor/doctor.yaml +++ b/jjb/doctor/doctor.yaml @@ -124,7 +124,9 @@ - 'doctor-parameter': docker-tag: '{docker-tag}' scenario: '{scenario}' - - 'doctor-functest-parameter' + - 'doctor-functest-parameter': + gs-pathname: '{gs-pathname}' + inspector: '{inspector}' scm: - git-scm-gerrit builders: diff --git a/jjb/dovetail/dovetail-run.sh b/jjb/dovetail/dovetail-run.sh index df681dd59..2a9c73c2f 100755 --- a/jjb/dovetail/dovetail-run.sh +++ b/jjb/dovetail/dovetail-run.sh @@ -60,6 +60,10 @@ releng_repo=${WORKSPACE}/releng [ -d ${releng_repo} ] && sudo rm -rf ${releng_repo} git clone https://gerrit.opnfv.org/gerrit/releng ${releng_repo} >/dev/null +pharos_repo=${WORKSPACE}/pharos +[ -d ${pharos_repo} ] && sudo rm -rf ${pharos_repo} +git clone https://git.opnfv.org/pharos ${pharos_repo} >/dev/null + if [[ ${INSTALLER_TYPE} != 'joid' ]]; then echo "SUT branch is $SUT_BRANCH" echo "dovetail branch is $BRANCH" @@ -93,10 +97,14 @@ if [[ ! "${SUT_BRANCH}" =~ "danube" && ${INSTALLER_TYPE} == "fuel" ]]; then fi cat $OPENRC +# These packages are used for parsing yaml files and decrypting ipmi user and password. +sudo pip install shyaml +sudo yum install -y rubygems || sudo apt-get install -y ruby +sudo gem install hiera-eyaml + if [[ ! "${SUT_BRANCH}" =~ "danube" && ${INSTALLER_TYPE} == "compass" ]]; then compass_repo=${WORKSPACE}/compass4nfv/ git clone https://github.com/opnfv/compass4nfv.git ${compass_repo} >/dev/null - sudo pip install shyaml scenario_file=${compass_repo}/deploy/conf/hardware_environment/$NODE_NAME/os-nosdn-nofeature-ha.yml ipmiIp=$(cat ${scenario_file} | shyaml get-value hosts.0.ipmiIp) ipmiPass=$(cat ${scenario_file} | shyaml get-value hosts.0.ipmiPass) @@ -120,11 +128,26 @@ if [[ ! "${SUT_BRANCH}" =~ "danube" && ${INSTALLER_TYPE} == 'fuel' && ${DEPLOY_T fuel_ctl_ssh_options="${ssh_options} -i ${SSH_KEY}" ssh_user="ubuntu" fuel_ctl_ip=$(ssh 2>/dev/null ${fuel_ctl_ssh_options} "${ssh_user}@${INSTALLER_IP}" \ - "sudo salt --out yaml 'ctl*' pillar.get _param:openstack_control_address | \ - awk '{print \$2; exit}'") &> /dev/null + "sudo salt 'cfg*' pillar.get _param:openstack_control_address --out text| \ + cut -f2 -d' '") + ipmi_index=$(ssh 2>/dev/null ${fuel_ctl_ssh_options} "${ssh_user}@${INSTALLER_IP}" \ + "sudo salt 'ctl*' network.ip_addrs cidr=${fuel_ctl_ip} --out text | grep ${fuel_ctl_ip} | cut -c 5") + organization="$(cut -d'-' -f1 <<< "${NODE_NAME}")" + pod_name="$(cut -d'-' -f2 <<< "${NODE_NAME}")" + pdf_file=${pharos_repo}/labs/${organization}/${pod_name}.yaml + ipmiIp=$(cat ${pdf_file} | shyaml get-value nodes.$[ipmi_index-1].remote_management.address) + ipmiIp="$(cut -d'/' -f1 <<< "${ipmiIp}")" + ipmiPass=$(cat ${pdf_file} | shyaml get-value nodes.$[ipmi_index-1].remote_management.pass) + ipmiUser=$(cat ${pdf_file} | shyaml get-value nodes.$[ipmi_index-1].remote_management.user) + [[ $ipmiUser == ENC* ]] && ipmiUser=$(eyaml decrypt -s ${ipmiUser//[[:blank:]]/}) + [[ $ipmiPass == ENC* ]] && ipmiPass=$(eyaml decrypt -s ${ipmiPass//[[:blank:]]/}) + cat << EOF >${DOVETAIL_CONFIG}/pod.yaml nodes: -- {ip: ${fuel_ctl_ip}, name: node1, key_filename: /home/opnfv/userconfig/pre_config/id_rsa, role: controller, user: ${ssh_user}} +- {ip: ${INSTALLER_IP}, name: node0, key_filename: /home/opnfv/userconfig/pre_config/id_rsa, + role: Jumpserver, user: ${ssh_user}} +- {ip: ${fuel_ctl_ip}, name: node1, key_filename: /home/opnfv/userconfig/pre_config/id_rsa, + role: controller, user: ${ssh_user}, ipmi_ip: ${ipmiIp}, ipmi_user: ${ipmiUser}, ipmi_password: ${ipmiPass}} EOF fi @@ -169,10 +192,14 @@ fi if [ -f ${DOVETAIL_CONFIG}/pod.yaml ]; then sudo chmod 666 ${DOVETAIL_CONFIG}/pod.yaml echo "Adapt process info for $INSTALLER_TYPE ..." - attack_process='rabbitmq' + if [ "$INSTALLER_TYPE" == "apex" ]; then + attack_process='rabbitmq_server' + else + attack_process='rabbitmq' + fi cat << EOF >> ${DOVETAIL_CONFIG}/pod.yaml process_info: -- {testcase_name: dovetail.ha.tc010, attack_process: ${attack_process}} +- {testcase_name: dovetail.ha.rabbitmq, attack_process: ${attack_process}} EOF echo "file ${DOVETAIL_CONFIG}/pod.yaml:" diff --git a/jjb/functest/functest-alpine.sh b/jjb/functest/functest-alpine.sh index 1df9a554c..cf63bb5a4 100755 --- a/jjb/functest/functest-alpine.sh +++ b/jjb/functest/functest-alpine.sh @@ -4,15 +4,16 @@ set -e set +u set +o pipefail +REPO=${REPO:-opnfv} CI_LOOP=${CI_LOOP:-daily} TEST_DB_URL=http://testresults.opnfv.org/test/api/v1/results ENERGY_RECORDER_API_URL=http://energy.opnfv.fr/resources check_os_deployment() { - FUNCTEST_IMAGE=opnfv/functest-healthcheck:${DOCKER_TAG} + FUNCTEST_IMAGE=${REPO}/functest-healthcheck:${DOCKER_TAG} echo "Functest: Pulling Functest Docker image ${FUNCTEST_IMAGE} ..." docker pull ${FUNCTEST_IMAGE}>/dev/null - cmd="docker run --rm --privileged=true ${volumes} ${FUNCTEST_IMAGE} check_deployment" + cmd="docker run --rm ${volumes} ${FUNCTEST_IMAGE} check_deployment" echo "Checking deployment, CMD: ${cmd}" eval ${cmd} ret_value=$? @@ -34,10 +35,10 @@ run_tiers() { echo 0 > ${ret_val_file} for tier in ${tiers[@]}; do - FUNCTEST_IMAGE=opnfv/functest-${tier}:${DOCKER_TAG} + FUNCTEST_IMAGE=${REPO}/functest-${tier}:${DOCKER_TAG} echo "Functest: Pulling Functest Docker image ${FUNCTEST_IMAGE} ..." docker pull ${FUNCTEST_IMAGE}>/dev/null - cmd="docker run --rm --privileged=true ${envs} ${volumes} ${TESTCASE_OPTIONS} ${FUNCTEST_IMAGE} /bin/bash -c '${cmd_opt}'" + cmd="docker run --rm ${envs} ${volumes} ${TESTCASE_OPTIONS} ${FUNCTEST_IMAGE} /bin/bash -c '${cmd_opt}'" echo "Running Functest tier '${tier}'. CMD: ${cmd}" eval ${cmd} ret_value=$? @@ -59,17 +60,17 @@ run_test() { # Determine which Functest image should be used for the test case case ${test_name} in connection_check|api_check|snaps_health_check) - FUNCTEST_IMAGE=opnfv/functest-healthcheck:${DOCKER_TAG} ;; - vping_ssh|vping_userdata|tempest_smoke_serial|rally_sanity|refstack_defcore|odl|odl_netvirt|snaps_smoke) - FUNCTEST_IMAGE=opnfv/functest-smoke:${DOCKER_TAG} ;; + FUNCTEST_IMAGE=${REPO}/functest-healthcheck:${DOCKER_TAG} ;; + vping_ssh|vping_userdata|cinder_test|tempest_smoke_serial|rally_sanity|refstack_defcore|patrole|odl|snaps_smoke|neutron_trunk) + FUNCTEST_IMAGE=${REPO}/functest-smoke:${DOCKER_TAG} ;; tempest_full_parallel|rally_full) - FUNCTEST_IMAGE=opnfv/functest-components:${DOCKER_TAG} ;; - cloudify_ims|orchestra_openims|orchestra_clearwaterims|vyos_vrouter) - FUNCTEST_IMAGE=opnfv/functest-vnf:${DOCKER_TAG} ;; - promise|doctor-notification|bgpvpn|functest-odl-sfc|domino-multinode|barometercollectd|fds) - FUNCTEST_IMAGE=opnfv/functest-features:${DOCKER_TAG} ;; + FUNCTEST_IMAGE=${REPO}/functest-components:${DOCKER_TAG} ;; + cloudify_ims|vyos_vrouter|juju_epc) + FUNCTEST_IMAGE=${REPO}/functest-vnf:${DOCKER_TAG} ;; + doctor-notification|bgpvpn|functest-odl-sfc|barometercollectd|fds) + FUNCTEST_IMAGE=${REPO}/functest-features:${DOCKER_TAG} ;; parser-basics) - FUNCTEST_IMAGE=opnfv/functest-parser:${DOCKER_TAG} ;; + FUNCTEST_IMAGE=${REPO}/functest-parser:${DOCKER_TAG} ;; *) echo "Unkown test case $test_name" exit 1 @@ -77,7 +78,7 @@ run_test() { esac echo "Functest: Pulling Functest Docker image ${FUNCTEST_IMAGE} ..." docker pull ${FUNCTEST_IMAGE}>/dev/null - cmd="docker run --rm --privileged=true ${envs} ${volumes} ${TESTCASE_OPTIONS} ${FUNCTEST_IMAGE} /bin/bash -c '${cmd_opt}'" + cmd="docker run --rm ${envs} ${volumes} ${TESTCASE_OPTIONS} ${FUNCTEST_IMAGE} /bin/bash -c '${cmd_opt}'" echo "Running Functest test case '${test_name}'. CMD: ${cmd}" eval ${cmd} ret_value=$? @@ -108,11 +109,6 @@ fi rc_file_vol="-v ${rc_file}:${FUNCTEST_DIR}/conf/env_file" -# 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 - echo "Functest: Start Docker and prepare environment" echo "Functest: Download images that will be used by test cases" @@ -173,9 +169,17 @@ elif [ ${FUNCTEST_MODE} == 'tier' ]; then run_tiers ${tiers} else if [ ${DEPLOY_TYPE} == 'baremetal' ] && [ "${HOST_ARCH}" != "aarch64" ]; then - tiers=(healthcheck smoke features vnf parser) + if [[ ${BRANCH} == "stable/fraser" ]]; then + tiers=(healthcheck smoke features vnf parser) + else + tiers=(healthcheck smoke features vnf) + fi else - tiers=(healthcheck smoke features parser) + if [[ ${BRANCH} == "stable/fraser" ]]; then + tiers=(healthcheck smoke features parser) + else + tiers=(healthcheck smoke features) + fi fi run_tiers ${tiers} fi diff --git a/jjb/functest/functest-daily-jobs.yaml b/jjb/functest/functest-daily-jobs.yaml index 4fc67e7f8..0300b99b2 100644 --- a/jjb/functest/functest-daily-jobs.yaml +++ b/jjb/functest/functest-daily-jobs.yaml @@ -237,7 +237,7 @@ - 'functest-{testsuite}-parameter' - string: name: DEPLOY_SCENARIO - default: 'os-odl_l2-nofeature-ha' + default: 'os-nosdn-nofeature-noha' - string: name: CLEAN_DOCKER_IMAGES default: 'false' @@ -281,25 +281,27 @@ - 'connection_check' - 'api_check' - 'snaps_health_check' - - 'vping_userdata' - 'vping_ssh' + - 'vping_userdata' + - 'cinder_test' - 'tempest_smoke_serial' - 'rally_sanity' + - 'refstack_defcore' + - 'patrole' - 'odl' - - 'odl_netvirt' - 'snaps_smoke' - - 'refstack_defcore' - - 'promise' - - 'doctor' + - 'neutron_trunk' + - 'doctor-notification' - 'bgpvpn' - - 'parser' - - 'security_scan' + - 'functest-odl-sfc' + - 'barometercollectd' + - 'fds' - 'tempest_full_parallel' - 'rally_full' - 'cloudify_ims' - - 'cloudify_vrouter' - - 'orchestra_openims' - - 'orchestra_clearwaterims' + - 'vyos_vrouter' + - 'juju_epc' + - 'parser' default: 'connection_check' - choice: name: FUNCTEST_TIER @@ -309,6 +311,7 @@ - 'features' - 'components' - 'vnf' + - 'parser' default: 'healthcheck' - string: name: TESTCASE_OPTIONS @@ -338,6 +341,10 @@ name: RC_FILE_PATH default: '' description: "Path to the OS credentials file if given" + - string: + name: REPO + default: "opnfv" + description: "Repository name for functest images" ######################## # trigger macros ######################## diff --git a/jjb/functest/functest-docker.yaml b/jjb/functest/functest-docker.yaml index 50c7c3816..74738f280 100644 --- a/jjb/functest/functest-docker.yaml +++ b/jjb/functest/functest-docker.yaml @@ -25,6 +25,7 @@ # yamllint disable rule:key-duplicates image: - 'core' + - 'tempest' - 'healthcheck' - 'features' - 'components' @@ -32,6 +33,12 @@ - 'smoke' - 'vnf' + exclude: + - stream: 'master' + image: 'parser' + - stream: 'fraser' + image: 'tempest' + # settings for jobs run in multijob phases build-job-settings: &build-job-settings current-parameters: false @@ -107,6 +114,20 @@ - name: 'functest-core-docker-manifest-{stream}' <<: *manifest-job-settings - multijob: + name: 'build functest-tempest images' + execution-type: PARALLEL + projects: + - name: 'functest-tempest-docker-build-amd64-{stream}' + <<: *build-job-settings + - name: 'functest-tempest-docker-build-arm64-{stream}' + <<: *build-job-settings + - multijob: + name: 'publish functest-tempest manifests' + execution-type: PARALLEL + projects: + - name: 'functest-tempest-docker-manifest-{stream}' + <<: *manifest-job-settings + - multijob: name: 'build all functest images' condition: SUCCESSFUL execution-type: PARALLEL diff --git a/jjb/releng/compass4nfv-docker.yaml b/jjb/releng/compass4nfv-docker.yaml index 7bfda552d..2a5453658 100644 --- a/jjb/releng/compass4nfv-docker.yaml +++ b/jjb/releng/compass4nfv-docker.yaml @@ -43,7 +43,6 @@ PUSH_IMAGE=$PUSH_IMAGE COMMIT_ID=$COMMIT_ID GERRIT_REFNAME=$GERRIT_REFNAME - DOCKERFILE=$DOCKERFILE kill-phase-on: FAILURE abort-all-jobs: false diff --git a/jjb/releng/opnfv-docker.yaml b/jjb/releng/opnfv-docker.yaml index b7d1ce66f..c73bae371 100644 --- a/jjb/releng/opnfv-docker.yaml +++ b/jjb/releng/opnfv-docker.yaml @@ -165,6 +165,36 @@ <<: *master <<: *other-receivers # projects with jobs for euphrates + - 'barometer-collectd': + project: 'barometer' + dockerdir: 'docker/barometer-collectd' + <<: *fraser + <<: *other-receivers + - 'barometer-grafana': + project: 'barometer' + dockerdir: 'docker/barometer-grafana' + <<: *fraser + <<: *other-receivers + - 'barometer-influxdb': + project: 'barometer' + dockerdir: 'docker/barometer-influxdb' + <<: *fraser + <<: *other-receivers + - 'barometer-kafka': + project: 'barometer' + dockerdir: 'docker/barometer-kafka' + <<: *fraser + <<: *other-receivers + - 'barometer-ves': + project: 'barometer' + dockerdir: 'docker/barometer-ves' + <<: *fraser + <<: *other-receivers + - 'barometer-snmp': + project: 'barometer' + dockerdir: 'docker/barometer-snmp' + <<: *fraser + <<: *other-receivers - 'bottlenecks': project: 'bottlenecks' <<: *euphrates diff --git a/jjb/releng/opnfv-repo-archiver.sh b/jjb/releng/opnfv-repo-archiver.sh index 6fa0aef50..b7ff3baa0 100644 --- a/jjb/releng/opnfv-repo-archiver.sh +++ b/jjb/releng/opnfv-repo-archiver.sh @@ -29,7 +29,7 @@ for PROJECT in "${PROJECT_LIST[@]}"; do git clone "https://gerrit.opnfv.org/gerrit/$PROJECT.git" $CLONE_PATH/$PROJECT else pushd "$CLONE_PATH/$PROJECT" &>/dev/null - git pull -f + git pull -f origin master popd &> /dev/null fi diff --git a/jjb/releng/releng-ci-jobs.yaml b/jjb/releng/releng-ci-jobs.yaml index f9a2bc232..790bd7eb4 100644 --- a/jjb/releng/releng-ci-jobs.yaml +++ b/jjb/releng/releng-ci-jobs.yaml @@ -11,5 +11,9 @@ 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' + jobs: - '{project-name}-ci-jobs' + - '{project-name}-rtd-jobs' diff --git a/jjb/xci/xci-verify-jobs.yaml b/jjb/xci/xci-verify-jobs.yaml index 2230cd56d..baff0c99e 100644 --- a/jjb/xci/xci-verify-jobs.yaml +++ b/jjb/xci/xci-verify-jobs.yaml @@ -20,7 +20,7 @@ unstable: false notbuilt: false - centos: - disabled: false + disabled: true successful: true failed: true unstable: true diff --git a/jjb/yardstick/yardstick-daily-jobs.yaml b/jjb/yardstick/yardstick-daily-jobs.yaml index 4df3f520d..c5a35086f 100644 --- a/jjb/yardstick/yardstick-daily-jobs.yaml +++ b/jjb/yardstick/yardstick-daily-jobs.yaml @@ -288,7 +288,7 @@ publishers: - email: - recipients: jean.gaoliang@huawei.com limingjiang@huawei.com ross.b.brattain@intel.com + recipients: jean.gaoliang@huawei.com limingjiang@huawei.com - email-jenkins-admins-on-failure ######################## @@ -15,9 +15,9 @@ setenv= [testenv:jjb] deps = - jenkins-job-builder==1.6.1 + jenkins-job-builder==2.0.3 commands= - jenkins-jobs test -o job_output -r jjb/global:{posargs:"jjb/"} + jenkins-jobs test -o job_output -r {posargs:"jjb/"} [testenv:docs] deps = -r{toxinidir}/docs/requirements.txt diff --git a/utils/build-server-ansible/vars/CentOS.yml b/utils/build-server-ansible/vars/CentOS.yml index 528388f27..7a2c1d1d5 100644 --- a/utils/build-server-ansible/vars/CentOS.yml +++ b/utils/build-server-ansible/vars/CentOS.yml @@ -46,6 +46,7 @@ - sysstat - xmlstarlet - facter + - jq - name: install the 'Development tools' package group yum: diff --git a/utils/build-server-ansible/vars/Ubuntu.yml b/utils/build-server-ansible/vars/Ubuntu.yml index e91c48569..f50255868 100644 --- a/utils/build-server-ansible/vars/Ubuntu.yml +++ b/utils/build-server-ansible/vars/Ubuntu.yml @@ -59,6 +59,7 @@ - sysstat - xmlstarlet - facter + - jq - name: Add Docker apt key. apt_key: diff --git a/utils/fetch_os_creds.sh b/utils/fetch_os_creds.sh index 4bc585885..b40b75b75 100755 --- a/utils/fetch_os_creds.sh +++ b/utils/fetch_os_creds.sh @@ -164,7 +164,13 @@ elif [ "$installer_type" == "apex" ]; then if [ -f /root/.ssh/id_rsa ]; then chmod 600 /root/.ssh/id_rsa fi - sudo scp $ssh_options root@$installer_ip:/home/stack/overcloudrc.v3 $dest_path + + if [ "${BRANCH}" == "stable/fraser" ]; then + rc_file=overcloudrc.v3 + else + rc_file=overcloudrc + fi + sudo scp $ssh_options root@$installer_ip:/home/stack/${rc_file} $dest_path elif [ "$installer_type" == "compass" ]; then if [ "${BRANCH}" == "stable/danube" ]; then diff --git a/utils/gpg_import_key.sh b/utils/gpg_import_key.sh index f45e40919..94ffbaab5 100755 --- a/utils/gpg_import_key.sh +++ b/utils/gpg_import_key.sh @@ -51,10 +51,14 @@ else if [ -z "$NODE_NAME" ]; then echo "Cannot find node name" exit 0 - else echo "Importing key for '$NODE_NAME'"; - gsutil cp gs://opnfv-signing-keys/"$NODE_NAME"-subkey . - gpg2 --import "$NODE_NAME"-subkey - rm -f "$NODE_NAME"-subkey - fi + elif gsutil ls gs://opnfv-signing-keys | grep $NODE_NAME; then + echo "Importing key for '$NODE_NAME'" + gsutil cp gs://opnfv-signing-keys/"$NODE_NAME"-subkey . + gpg2 --import "$NODE_NAME"-subkey + rm -f "$NODE_NAME"-subkey + else + echo "No keys found locally or remotely for host, skipping import" + exit 0 + fi fi diff --git a/utils/push-test-logs.sh b/utils/push-test-logs.sh index a87e399dd..9debb45b7 100644 --- a/utils/push-test-logs.sh +++ b/utils/push-test-logs.sh @@ -21,14 +21,14 @@ dir_result="${HOME}/opnfv/$project/results/${branch}" # src: https://wiki.opnfv.org/display/INF/Hardware+Infrastructure # + intel-pod12 (vsperf) node_list=(\ -'lf-pod1' 'lf-pod2' 'intel-pod2' 'intel-pod12' \ +'lf-pod1' 'lf-pod2' \ 'lf-virtual2' 'lf-virtual3' \ -'intel-pod5' 'intel-pod6' 'intel-pod7' 'intel-pod8' 'intel-pod18' \ +'intel-pod12' 'intel-pod18' \ 'ericsson-pod1' 'ericsson-pod2' \ 'ericsson-virtual1' 'ericsson-virtual2' 'ericsson-virtual3' \ -'ericsson-virtual4' 'ericsson-virtual5' 'ericsson-virtual12' \ -'arm-pod1' 'arm-pod5' 'arm-pod6' \ -'huawei-pod1' 'huawei-pod2' 'huawei-pod3' 'huawei-pod4' 'huawei-pod5' \ +'ericsson-virtual4' 'ericsson-virtual5' \ +'arm-pod5' 'arm-pod6' \ +'huawei-pod1' 'huawei-pod2' 'huawei-pod3' 'huawei-pod4' \ 'huawei-pod6' 'huawei-pod7' 'huawei-pod12' \ 'huawei-virtual1' 'huawei-virtual2' 'huawei-virtual3' 'huawei-virtual4' \ 'huawei-virtual5' 'huawei-virtual8' 'huawei-virtual9' \ |