Merge "Fix minor yamllint violation for jjb/bottlenecks"
authorAric Gardner <agardner@linuxfoundation.org>
Tue, 3 Oct 2017 19:44:22 +0000 (19:44 +0000)
committerGerrit Code Review <gerrit@opnfv.org>
Tue, 3 Oct 2017 19:44:22 +0000 (19:44 +0000)
88 files changed:
jjb/3rd_party_ci/odl-netvirt.yml
jjb/apex/apex-build.sh
jjb/apex/apex-download-artifact.sh
jjb/apex/apex-iso-verify.sh
jjb/apex/apex-project-jobs.yml
jjb/apex/apex.yml
jjb/apex/apex.yml.j2
jjb/apex/scenarios.yaml.hidden
jjb/armband/armband-ci-jobs.yml
jjb/armband/armband-verify-jobs.yml
jjb/calipso/calipso.yml
jjb/ci_gate_security/anteater-report-to-gerrit.sh
jjb/ci_gate_security/anteater-security-audit.sh
jjb/ci_gate_security/opnfv-ci-gate-security.yml
jjb/compass4nfv/compass-ci-jobs.yml
jjb/compass4nfv/compass-deploy.sh
jjb/compass4nfv/compass-project-jobs.yml
jjb/compass4nfv/compass-verify-jobs.yml
jjb/daisy4nfv/daisy-daily-jobs.yml
jjb/daisy4nfv/daisy4nfv-merge-jobs.yml
jjb/doctor/doctor.yml
jjb/domino/domino.yml
jjb/dovetail/dovetail-ci-jobs.yml
jjb/dovetail/dovetail-run.sh
jjb/fuel/fuel-daily-jobs.yml
jjb/fuel/fuel-deploy.sh
jjb/fuel/fuel-project-jobs.yml
jjb/fuel/fuel-verify-jobs.yml
jjb/fuel/fuel-weekly-jobs.yml
jjb/functest/functest-alpine.sh
jjb/functest/functest-daily-jobs.yml
jjb/functest/functest-loop.sh
jjb/functest/functest-project-jobs.yml
jjb/functest/functest-suite.sh
jjb/functest/functest-weekly-jobs.yml
jjb/functest/set-functest-env.sh
jjb/global/slave-params.yml
jjb/ipv6/ipv6.yml
jjb/joid/joid-daily-jobs.yml
jjb/kvmfornfv/kvmfornfv.yml
jjb/moon/moon.yml
jjb/opera/opera-daily-jobs.yml
jjb/orchestra/orchestra-daily-jobs.yml
jjb/ovn4nfv/ovn4nfv-daily-jobs.yml
jjb/qtip/qtip-experimental-jobs.yml
jjb/qtip/qtip-validate-jobs.yml
jjb/qtip/qtip-verify-jobs.yml
jjb/releng/opnfv-docker-arm.yml
jjb/releng/opnfv-docker.sh
jjb/releng/opnfv-docker.yml
jjb/releng/verify-releng.sh
jjb/securedlab/check-jinja2.sh [deleted file]
jjb/securedlab/check-jinja2.yml
jjb/sfc/sfc-project-jobs.yml
jjb/storperf/storperf-daily-jobs.yml
jjb/storperf/storperf-verify-jobs.yml
jjb/storperf/storperf.yml
jjb/vswitchperf/vswitchperf.yml
jjb/xci/osa-periodic-jobs.yml
jjb/xci/xci-daily-jobs.yml
jjb/xci/xci-verify-jobs.yml
jjb/yardstick/yardstick-daily.sh
modules/opnfv/utils/ovs_logger.py
utils/fetch_os_creds.sh
utils/test/opts/one_click_deploy.py [new file with mode: 0644]
utils/test/opts/watchdog.sh [moved from utils/test/testapi/tools/watchdog/docker_watch.sh with 92% similarity]
utils/test/reporting/docker/Dockerfile
utils/test/reporting/docker/nginx.conf
utils/test/reporting/docker/reporting.sh
utils/test/reporting/html/euphrates.html [new file with mode: 0644]
utils/test/reporting/html/functest-euphrates.html [new file with mode: 0644]
utils/test/reporting/html/index.html
utils/test/reporting/img/euphrates.jpg
utils/test/reporting/img/misc-npc-letterblock-m-800px.png [new file with mode: 0644]
utils/test/reporting/reporting/bottlenecks/reporting-status.py
utils/test/reporting/reporting/functest/reporting-status.py
utils/test/reporting/reporting/functest/reporting-vims.py
utils/test/reporting/reporting/functest/template/index-vims-tmpl.html
utils/test/reporting/reporting/functest/testCase.py
utils/test/reporting/reporting/qtip/reporting-status.py
utils/test/reporting/reporting/qtip/template/index-status-tmpl.html
utils/test/reporting/reporting/reporting.yaml
utils/test/reporting/reporting/yardstick/scenarios.py
utils/test/reporting/reporting/yardstick/template/index-status-tmpl.html
utils/test/testapi/deployment/deploy.py [deleted file]
utils/test/testapi/deployment/docker-compose.yml.template [deleted file]
utils/test/testapi/opnfv_testapi/tests/unit/resources/test_result.py
utils/test/testapi/opts/deploy.py [new file with mode: 0644]

index 01017f3..863eb94 100644 (file)
             - name: 'functest-netvirt-virtual-suite-master'
               predefined-parameters: |
                 DEPLOY_SCENARIO=os-odl_l3-nofeature-ha
+                FUNCTEST_MODE=testcase
                 FUNCTEST_SUITE_NAME=odl_netvirt
                 RC_FILE_PATH=$HOME/cloner-info/overcloudrc
               node-parameters: true
index 23ce810..cf59998 100755 (executable)
@@ -46,6 +46,12 @@ echo "Cache Directory Contents:"
 echo "-------------------------"
 ls -al $CACHE_DIRECTORY
 
+if [[ "$BUILD_ARGS" =~ '--iso' ]]; then
+  mkdir -p /tmp/apex-iso/
+  rm -f /tmp/apex-iso/*.iso
+  cp -f $BUILD_DIRECTORY/../.build/release/OPNFV-CentOS-7-x86_64-$OPNFV_ARTIFACT_VERSION.iso /tmp/apex-iso/
+fi
+
 if ! echo $ARTIFACT_VERSION | grep "dev" 1> /dev/null; then
   echo "Writing opnfv.properties file"
   # save information regarding artifact into file
index a11fb65..68baf59 100755 (executable)
@@ -39,7 +39,13 @@ else
   VERSION_EXTENSION=$(echo $(basename $RPM_LIST) | grep -Eo '[0-9]+\.[0-9]+-([0-9]{8}|[a-z]+-[0-9]\.[0-9]+)')
   # build RPM List which already includes base Apex RPM
   RPM_LIST+=" opnfv-apex-undercloud-${VERSION_EXTENSION}.noarch.rpm"
-  RPM_LIST+=" python34-opnfv-apex-${VERSION_EXTENSION}.noarch.rpm"
+
+  # add back legacy support for danube
+  if [ "$BRANCH" == 'stable/danube' ]; then
+    RPM_LIST+=" opnfv-apex-common-${VERSION_EXTENSION}.noarch.rpm"
+  else
+    RPM_LIST+=" python34-opnfv-apex-${VERSION_EXTENSION}.noarch.rpm"
+  fi
 
   # remove old / install new RPMs
   if rpm -q opnfv-apex > /dev/null; then
index f102421..4faeb60 100755 (executable)
@@ -8,7 +8,14 @@ echo "Starting the Apex iso verify."
 echo "--------------------------------------------------------"
 echo
 
-source $BUILD_DIRECTORY/../opnfv.properties
+# Must be RPMs/ISO
+echo "Downloading latest properties file"
+
+# get the properties file in order to get info regarding artifacts
+curl --fail -s -o opnfv.properties http://$GS_URL/latest.properties
+
+# source the file so we get OPNFV vars
+source opnfv.properties
 
 if ! rpm -q virt-install > /dev/null; then
   sudo yum -y install virt-install
@@ -35,9 +42,9 @@ sudo rm -f /var/log/libvirt/qemu/apex-iso-verify-console.log
 sudo virt-install -n apex-iso-verify -r 4096 --vcpus 4 --os-variant=rhel7 \
  --accelerate -v --noautoconsole \
  --disk path=/var/lib/libvirt/images/apex-iso-verify.qcow2,size=30,format=qcow2 \
- -l $BUILD_DIRECTORY/release/OPNFV-CentOS-7-x86_64-$OPNFV_ARTIFACT_VERSION.iso \
+ -l /tmp/apex-iso/OPNFV-CentOS-7-x86_64-$OPNFV_ARTIFACT_VERSION.iso \
  --extra-args 'console=ttyS0 console=ttyS0,115200n8 serial inst.ks=file:/iso-verify.ks inst.stage2=hd:LABEL=OPNFV\x20CentOS\x207\x20x86_64:/' \
- --initrd-inject $BUILD_DIRECTORY/../ci/iso-verify.ks \
+ --initrd-inject ci/iso-verify.ks \
  --serial file,path=/var/log/libvirt/qemu/apex-iso-verify-console.log
 
 echo "Waiting for install to finish..."
index 973ad91..5807286 100644 (file)
@@ -9,7 +9,11 @@
           gs-pathname: ''
           concurrent-builds: 3
           disabled: false
-
+      - euphrates: &euphrates
+          branch: 'stable/euphrates'
+          gs-pathname: '/euphrates'
+          concurrent-builds: 3
+          disabled: true
       - danube: &danube
           branch: 'stable/danube'
           gs-pathname: '/danube'
@@ -29,7 +33,7 @@
     # Required Variables:
     #     stream:    branch with - in place of / (eg. stable)
     #     branch:    branch (eg. stable)
-    node: 'apex-build-{stream}'
+    node: 'apex-build-master'
 
     disabled: false
 
@@ -78,7 +82,7 @@
     # Required Variables:
     #     stream:    branch with - in place of / (eg. stable)
     #     branch:    branch (eg. stable)
-    node: 'apex-virtual-{stream}'
+    node: 'apex-virtual-master'
 
     disabled: false
 
index ededa7e..0b49bfb 100644 (file)
@@ -6,6 +6,7 @@
         - 'apex-verify-gate-{stream}'
         - 'apex-verify-unit-tests-{stream}'
         - 'apex-runner-cperf-{stream}'
+        - 'apex-virtual-{stream}'
         - 'apex-deploy-{platform}-{stream}'
         - 'apex-daily-{stream}'
         - 'apex-csit-promote-daily-{stream}'
             baremetal-slave: 'apex-baremetal-master'
             verify-scenario: 'os-odl-nofeature-ha'
             scenario_stream: 'master'
+            disable_daily: true
         - euphrates: &euphrates
             branch: 'stable/euphrates'
-            gs-pathname: ''
+            gs-pathname: '/euphrates'
             build-slave: 'apex-build-master'
             virtual-slave: 'apex-virtual-master'
             baremetal-slave: 'apex-baremetal-master'
             verify-scenario: 'os-odl-nofeature-ha'
             scenario_stream: 'euphrates'
+            disable_daily: false
         - danube: &danube
             branch: 'stable/danube'
             gs-pathname: '/danube'
@@ -44,6 +47,7 @@
             verify-scenario: 'os-odl_l3-nofeature-ha'
             scenario_stream: 'danube'
             disabled: true
+            disable_daily: true
 
     scenario:
         - 'os-nosdn-nofeature-noha':
               <<: *master
         - 'os-odl-sfc-ha':
               <<: *master
-        - 'os-odl-fdio-dvr-noha':
+        - 'os-odl-fdio_dvr-noha':
               <<: *master
-        - 'os-odl-fdio-dvr-ha':
+        - 'os-odl-fdio_dvr-ha':
               <<: *master
         - 'os-nosdn-nofeature-noha':
               <<: *euphrates
               <<: *euphrates
         - 'os-odl-sfc-ha':
               <<: *euphrates
-        - 'os-odl-fdio-dvr-noha':
+        - 'os-odl-fdio_dvr-noha':
+              <<: *euphrates
+        - 'os-odl-fdio_dvr-ha':
               <<: *euphrates
-        - 'os-odl-fdio-dvr-ha':
+        - 'os-nosdn-calipso-noha':
               <<: *euphrates
 
     platform:
 
     properties:
         - logrotate-default
-        - build-blocker:
-            use-build-blocker: true
-            block-level: 'NODE'
-            blocking-jobs:
-                - 'apex-verify.*'
         - throttle:
-            max-per-node: 1
+            max-per-node: 3
             max-total: 10
             option: 'project'
 
             name: deploy-virtual
             condition: SUCCESSFUL
             projects:
-                - name: 'apex-deploy-virtual-{stream}'
+                - name: 'apex-virtual-{stream}'
                   current-parameters: false
                   predefined-parameters: |
                     ARTIFACT_VERSION=$ARTIFACT_VERSION
                   kill-phase-on: FAILURE
                   abort-all-job: true
                   git-revision: true
-        - multijob:
-            name: functest-smoke
-            condition: SUCCESSFUL
-            projects:
-              - name: 'functest-apex-virtual-suite-{stream}'
-                current-parameters: false
-                predefined-parameters: |
-                  DEPLOY_SCENARIO={verify-scenario}
-                  FUNCTEST_SUITE_NAME=healthcheck
-                  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
-                abort-all-job: true
-                git-revision: false
 
 # Verify Scenario Gate
 - job-template:
             block-level: 'NODE'
             blocking-jobs:
                 - 'apex-verify.*'
+                - 'apex-virtual.*'
         - throttle:
             max-per-node: 1
             max-total: 10
                 current-parameters: false
                 predefined-parameters: |
                   DEPLOY_SCENARIO=$DEPLOY_SCENARIO
-                  FUNCTEST_SUITE_NAME=healthcheck
+                  FUNCTEST_MODE=tier
+                  FUNCTEST_TIER=healthcheck
                   GERRIT_BRANCH=$GERRIT_BRANCH
                   GERRIT_REFSPEC=$GERRIT_REFSPEC
                   GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
         - 'clean-workspace'
 
 
+# Virtual Deploy and Test
+- job-template:
+    name: 'apex-virtual-{stream}'
+
+    project-type: 'multijob'
+
+    disabled: false
+
+    scm:
+        - git-scm-gerrit
+
+    parameters:
+        - '{project}-defaults'
+        - '{project}-virtual-{stream}-defaults'
+        - project-parameter:
+            project: '{project}'
+            branch: '{branch}'
+        - apex-parameter:
+            gs-pathname: '{gs-pathname}'
+        - string:
+            name: DEPLOY_SCENARIO
+            default: '{verify-scenario}'
+            description: "Scenario to deploy with."
+        - string:
+            name: ARTIFACT_VERSION
+            default: dev
+            description: "Used for overriding the ARTIFACT_VERSION"
+    properties:
+        - logrotate-default
+        - build-blocker:
+            use-build-blocker: true
+            block-level: 'NODE'
+            blocking-jobs:
+                - 'apex-runner.*'
+                - 'apex-.*-promote.*'
+                - 'apex-run.*'
+                - 'apex-virtual-.*'
+                - 'apex-verify-gate-.*'
+        - throttle:
+            max-per-node: 1
+            max-total: 10
+            option: 'project'
+    builders:
+        - description-setter:
+            description: "Deployed on $NODE_NAME - Scenario: $DEPLOY_SCENARIO"
+        - multijob:
+            name: deploy-virtual
+            condition: SUCCESSFUL
+            projects:
+                - name: 'apex-deploy-virtual-{stream}'
+                  current-parameters: false
+                  predefined-parameters: |
+                    ARTIFACT_VERSION=$ARTIFACT_VERSION
+                    DEPLOY_SCENARIO=$DEPLOY_SCENARIO
+                    OPNFV_CLEAN=yes
+                    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: FAILURE
+                  abort-all-job: true
+                  git-revision: true
+        - multijob:
+            name: functest-smoke
+            condition: SUCCESSFUL
+            projects:
+              - name: 'functest-apex-virtual-suite-{stream}'
+                current-parameters: false
+                predefined-parameters: |
+                  DEPLOY_SCENARIO=$DEPLOY_SCENARIO
+                  FUNCTEST_SUITE_NAME=healthcheck
+                  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
+                abort-all-job: true
+                git-revision: false
+
 # Baremetal Deploy and Test
 - job-template:
     name: 'apex-{scenario}-baremetal-{scenario_stream}'
 
     node: '{baremetal-slave}'
 
-    disabled: false
+    disabled: '{obj:disable_daily}'
 
     scm:
         - git-scm
 
     properties:
         - logrotate-default
+        - build-blocker:
+            use-build-blocker: true
+            block-level: 'NODE'
+            blocking-jobs:
+                - 'apex-daily.*'
 
     triggers:
         - 'apex-{stream}'
                 - 'apex-run.*'
 
     triggers:
-        - timed: '0 12 * * *'
+        - timed: '0 1 * * *'
 
     builders:
         - description-setter:
                   abort-all-job: true
                   git-revision: false
 
-                - name: 'apex-os-odl-fdio-dvr-noha-baremetal-master'
+                - name: 'apex-os-odl-fdio_dvr-noha-baremetal-master'
                   node-parameters: false
                   current-parameters: false
                   predefined-parameters: |
                   abort-all-job: true
                   git-revision: false
 
-                - name: 'apex-os-odl-fdio-dvr-ha-baremetal-master'
+                - name: 'apex-os-odl-fdio_dvr-ha-baremetal-master'
                   node-parameters: false
                   current-parameters: false
                   predefined-parameters: |
                   abort-all-job: true
                   git-revision: false
 
-                - name: 'apex-os-odl-fdio-dvr-noha-baremetal-euphrates'
+                - name: 'apex-os-odl-fdio_dvr-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
+
+                - name: 'apex-os-odl-fdio_dvr-ha-baremetal-euphrates'
                   node-parameters: false
                   current-parameters: false
                   predefined-parameters: |
                   abort-all-job: true
                   git-revision: false
 
-                - name: 'apex-os-odl-fdio-dvr-ha-baremetal-euphrates'
+                - name: 'apex-os-nosdn-calipso-noha-baremetal-euphrates'
                   node-parameters: false
                   current-parameters: false
                   predefined-parameters: |
index cd27c2c..6bebf3b 100644 (file)
@@ -6,6 +6,7 @@
         - 'apex-verify-gate-{stream}'
         - 'apex-verify-unit-tests-{stream}'
         - 'apex-runner-cperf-{stream}'
+        - 'apex-virtual-{stream}'
         - 'apex-deploy-{platform}-{stream}'
         - 'apex-daily-{stream}'
         - 'apex-csit-promote-daily-{stream}'
             baremetal-slave: 'apex-baremetal-master'
             verify-scenario: 'os-odl-nofeature-ha'
             scenario_stream: 'master'
+            disable_daily: true
         - euphrates: &euphrates
             branch: 'stable/euphrates'
-            gs-pathname: ''
+            gs-pathname: '/euphrates'
             build-slave: 'apex-build-master'
             virtual-slave: 'apex-virtual-master'
             baremetal-slave: 'apex-baremetal-master'
             verify-scenario: 'os-odl-nofeature-ha'
             scenario_stream: 'euphrates'
+            disable_daily: false
         - danube: &danube
             branch: 'stable/danube'
             gs-pathname: '/danube'
@@ -44,6 +47,7 @@
             verify-scenario: 'os-odl_l3-nofeature-ha'
             scenario_stream: 'danube'
             disabled: true
+            disable_daily: true
 
     scenario:
         {%- for stream in scenarios %}
 
     properties:
         - logrotate-default
-        - build-blocker:
-            use-build-blocker: true
-            block-level: 'NODE'
-            blocking-jobs:
-                - 'apex-verify.*'
         - throttle:
-            max-per-node: 1
+            max-per-node: 3
             max-total: 10
             option: 'project'
 
             name: deploy-virtual
             condition: SUCCESSFUL
             projects:
-                - name: 'apex-deploy-virtual-{stream}'
+                - name: 'apex-virtual-{stream}'
                   current-parameters: false
                   predefined-parameters: |
                     ARTIFACT_VERSION=$ARTIFACT_VERSION
                   kill-phase-on: FAILURE
                   abort-all-job: true
                   git-revision: true
-        - multijob:
-            name: functest-smoke
-            condition: SUCCESSFUL
-            projects:
-              - name: 'functest-apex-virtual-suite-{stream}'
-                current-parameters: false
-                predefined-parameters: |
-                  DEPLOY_SCENARIO={verify-scenario}
-                  FUNCTEST_SUITE_NAME=healthcheck
-                  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
-                abort-all-job: true
-                git-revision: false
 
 # Verify Scenario Gate
 - job-template:
             block-level: 'NODE'
             blocking-jobs:
                 - 'apex-verify.*'
+                - 'apex-virtual.*'
         - throttle:
             max-per-node: 1
             max-total: 10
                 current-parameters: false
                 predefined-parameters: |
                   DEPLOY_SCENARIO=$DEPLOY_SCENARIO
-                  FUNCTEST_SUITE_NAME=healthcheck
+                  FUNCTEST_MODE=tier
+                  FUNCTEST_TIER=healthcheck
                   GERRIT_BRANCH=$GERRIT_BRANCH
                   GERRIT_REFSPEC=$GERRIT_REFSPEC
                   GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
         - 'clean-workspace'
 
 
+# Virtual Deploy and Test
+- job-template:
+    name: 'apex-virtual-{stream}'
+
+    project-type: 'multijob'
+
+    disabled: false
+
+    scm:
+        - git-scm-gerrit
+
+    parameters:
+        - '{project}-defaults'
+        - '{project}-virtual-{stream}-defaults'
+        - project-parameter:
+            project: '{project}'
+            branch: '{branch}'
+        - apex-parameter:
+            gs-pathname: '{gs-pathname}'
+        - string:
+            name: DEPLOY_SCENARIO
+            default: '{verify-scenario}'
+            description: "Scenario to deploy with."
+        - string:
+            name: ARTIFACT_VERSION
+            default: dev
+            description: "Used for overriding the ARTIFACT_VERSION"
+    properties:
+        - logrotate-default
+        - build-blocker:
+            use-build-blocker: true
+            block-level: 'NODE'
+            blocking-jobs:
+                - 'apex-runner.*'
+                - 'apex-.*-promote.*'
+                - 'apex-run.*'
+                - 'apex-virtual-.*'
+                - 'apex-verify-gate-.*'
+        - throttle:
+            max-per-node: 1
+            max-total: 10
+            option: 'project'
+    builders:
+        - description-setter:
+            description: "Deployed on $NODE_NAME - Scenario: $DEPLOY_SCENARIO"
+        - multijob:
+            name: deploy-virtual
+            condition: SUCCESSFUL
+            projects:
+                - name: 'apex-deploy-virtual-{stream}'
+                  current-parameters: false
+                  predefined-parameters: |
+                    ARTIFACT_VERSION=$ARTIFACT_VERSION
+                    DEPLOY_SCENARIO=$DEPLOY_SCENARIO
+                    OPNFV_CLEAN=yes
+                    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: FAILURE
+                  abort-all-job: true
+                  git-revision: true
+        - multijob:
+            name: functest-smoke
+            condition: SUCCESSFUL
+            projects:
+              - name: 'functest-apex-virtual-suite-{stream}'
+                current-parameters: false
+                predefined-parameters: |
+                  DEPLOY_SCENARIO=$DEPLOY_SCENARIO
+                  FUNCTEST_SUITE_NAME=healthcheck
+                  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
+                abort-all-job: true
+                git-revision: false
+
 # Baremetal Deploy and Test
 - job-template:
     name: 'apex-{scenario}-baremetal-{scenario_stream}'
 
     node: '{baremetal-slave}'
 
-    disabled: false
+    disabled: '{obj:disable_daily}'
 
     scm:
         - git-scm
 
     properties:
         - logrotate-default
+        - build-blocker:
+            use-build-blocker: true
+            block-level: 'NODE'
+            blocking-jobs:
+                - 'apex-daily.*'
 
     triggers:
         - 'apex-{stream}'
                 - 'apex-run.*'
 
     triggers:
-        - timed: '0 12 * * *'
+        - timed: '0 1 * * *'
 
     builders:
         - description-setter:
index e7fe923..3b6b485 100644 (file)
@@ -18,8 +18,8 @@ master:
   - 'os-nosdn-kvm_ovs_dpdk-ha'
   - 'os-odl-sfc-noha'
   - 'os-odl-sfc-ha'
-  - 'os-odl-fdio-dvr-noha'
-  - 'os-odl-fdio-dvr-ha'
+  - 'os-odl-fdio_dvr-noha'
+  - 'os-odl-fdio_dvr-ha'
 euphrates:
   - 'os-nosdn-nofeature-noha'
   - 'os-nosdn-nofeature-ha'
@@ -40,8 +40,9 @@ euphrates:
   - 'os-nosdn-kvm_ovs_dpdk-ha'
   - 'os-odl-sfc-noha'
   - 'os-odl-sfc-ha'
-  - 'os-odl-fdio-dvr-noha'
-  - 'os-odl-fdio-dvr-ha'
+  - 'os-odl-fdio_dvr-noha'
+  - 'os-odl-fdio_dvr-ha'
+  - 'os-nosdn-calipso-noha'
 danube:
   - 'os-nosdn-nofeature-noha'
   - 'os-nosdn-nofeature-ha'
index 276f688..0154c7a 100644 (file)
@@ -1,65 +1,66 @@
+---
 # jenkins job templates for Armband
 - project:
     name: 'armband-ci'
     project: 'armband'
 
-#--------------------------------
-# BRANCH ANCHORS
-#--------------------------------
+    # -------------------------------
+    # BRANCH ANCHORS
+    # -------------------------------
     master: &master
-        stream: master
-        branch: '{stream}'
-        gs-pathname: ''
-        disabled: false
+      stream: master
+      branch: '{stream}'
+      gs-pathname: ''
+      disabled: false
     euphrates: &euphrates
-        stream: euphrates
-        branch: 'stable/{stream}'
-        gs-pathname: '/{stream}'
-        disabled: true
-#--------------------------------
-# POD, INSTALLER, AND BRANCH MAPPING
-#--------------------------------
-# CI POD's
-#--------------------------------
-#        euphrates
-#--------------------------------
+      stream: euphrates
+      branch: 'stable/{stream}'
+      gs-pathname: '/{stream}'
+      disabled: false
+    # -------------------------------
+    # POD, INSTALLER, AND BRANCH MAPPING
+    # -------------------------------
+    # CI POD's
+    # -------------------------------
+    #        euphrates
+    # -------------------------------
     pod:
-        - armband-baremetal:
-            slave-label: armband-baremetal
-            installer: fuel
-            <<: *euphrates
-        - armband-virtual:
-            slave-label: armband-virtual
-            installer: fuel
-            <<: *euphrates
-#--------------------------------
-#        master
-#--------------------------------
-        - armband-baremetal:
-            slave-label: armband-baremetal
-            installer: fuel
-            <<: *master
-        - armband-virtual:
-            slave-label: armband-virtual
-            installer: fuel
-            <<: *master
-#--------------------------------
-#       scenarios
-#--------------------------------
+      - armband-baremetal:
+          slave-label: armband-baremetal
+          installer: fuel
+          <<: *euphrates
+      - armband-virtual:
+          slave-label: armband-virtual
+          installer: fuel
+          <<: *euphrates
+      # -------------------------------
+      #        master
+      # -------------------------------
+      - armband-baremetal:
+          slave-label: armband-baremetal
+          installer: fuel
+          <<: *master
+      - armband-virtual:
+          slave-label: armband-virtual
+          installer: fuel
+          <<: *master
+    # -------------------------------
+    #       scenarios
+    # -------------------------------
     scenario:
-        # HA scenarios
-        - 'os-nosdn-nofeature-ha':
-            auto-trigger-name: '{installer}-{scenario}-{pod}-{stream}-trigger'
-        - 'os-odl-nofeature-ha':
-            auto-trigger-name: '{installer}-{scenario}-{pod}-{stream}-trigger'
+      # HA scenarios
+      - 'os-nosdn-nofeature-ha':
+          auto-trigger-name: '{installer}-{scenario}-{pod}-{stream}-trigger'
+      - 'os-odl-nofeature-ha':
+          auto-trigger-name: '{installer}-{scenario}-{pod}-{stream}-trigger'
 
-        # NOHA scenarios
-        - 'os-nosdn-nofeature-noha':
-            auto-trigger-name: '{installer}-{scenario}-{pod}-{stream}-trigger'
+      # NOHA scenarios
+      - 'os-nosdn-nofeature-noha':
+          auto-trigger-name: '{installer}-{scenario}-{pod}-{stream}-trigger'
 
     jobs:
-        - '{installer}-{scenario}-{pod}-daily-{stream}'
-        - '{installer}-deploy-{pod}-daily-{stream}'
+      - '{installer}-{scenario}-{pod}-daily-{stream}'
+      - '{installer}-deploy-{pod}-daily-{stream}'
 
 ########################
 # job templates
     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:
-                - '{installer}-os-.*?-{pod}-daily-.*'
-                - 'armband-verify-.*'
-            block-level: 'NODE'
+      - logrotate-default
+      - throttle:
+          enabled: true
+          max-total: 4
+          max-per-node: 1
+          option: 'project'
+      - build-blocker:
+          use-build-blocker: true
+          blocking-jobs:
+            - '{installer}-os-.*?-{pod}-daily-.*'
+            - 'armband-verify-.*'
+          block-level: 'NODE'
 
     wrappers:
-        - build-name:
-            name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
+      - build-name:
+          name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
 
     triggers:
-        - '{auto-trigger-name}'
+      - '{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}'
+      - project-parameter:
+          project: '{project}'
+          branch: '{branch}'
+      - '{installer}-defaults':
+          gs-pathname: '{gs-pathname}'
+      - '{slave-label}-defaults':
+          installer: '{installer}'
+      - string:
+          name: DEPLOY_SCENARIO
+          default: '{scenario}'
 
     builders:
-        - trigger-builds:
-            - project: '{installer}-deploy-{pod}-daily-{stream}'
-              current-parameters: false
-              predefined-parameters:
-                DEPLOY_SCENARIO={scenario}
-              same-node: true
-              block: true
-        - trigger-builds:
-            - project: 'functest-{installer}-{pod}-arm-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: 'yardstick-{installer}-{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'
-        # 1.dovetail only master, based on D release
-        # 2.here the stream means the SUT stream, dovetail stream is defined in its own job
-        # 3.only proposed_tests testsuite here(refstack, ha, ipv6, bgpvpn)
-        # 4.not used for release criteria or compliance,
-        #   only to debug the dovetail tool bugs with arm pods
-        # 5.only run against scenario os-(nosdn|odl)-(nofeature-bgpvpn)-ha
-        - conditional-step:
-            condition-kind: regex-match
-            regex: os-(nosdn|odl)-(nofeature|bgpvpn)-ha
-            label: '{scenario}'
-            steps:
-                - trigger-builds:
-                    - project: 'dovetail-{installer}-{pod}-proposed_tests-{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: '{installer}-deploy-{pod}-daily-{stream}'
+            current-parameters: false
+            predefined-parameters:
+              DEPLOY_SCENARIO={scenario}
+            same-node: true
+            block: true
+      - trigger-builds:
+          - project: 'functest-{installer}-{pod}-arm-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: 'yardstick-{installer}-{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'
+      # 1.dovetail only master, based on D release
+      # 2.here the stream means the SUT stream,
+      #   dovetail stream is defined in its own job
+      # 3.only proposed_tests testsuite here(refstack, ha, ipv6, bgpvpn)
+      # 4.not used for release criteria or compliance,
+      #   only to debug the dovetail tool bugs with arm pods
+      # 5.only run against scenario os-(nosdn|odl)-(nofeature-bgpvpn)-ha
+      - conditional-step:
+          condition-kind: regex-match
+          regex: os-(nosdn|odl)-(nofeature|bgpvpn)-ha
+          label: '{scenario}'
+          steps:
+            - trigger-builds:
+                - project: 'dovetail-{installer}-{pod}-proposed_tests-master'
+                  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}'
     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:
-                - '{installer}-deploy-{pod}-daily-{stream}'
-                - '{installer}-deploy-generic-daily-.*'
-            block-level: 'NODE'
+      - logrotate-default
+      - throttle:
+          enabled: true
+          max-total: 4
+          max-per-node: 1
+          option: 'project'
+      - build-blocker:
+          use-build-blocker: true
+          blocking-jobs:
+            - '{installer}-deploy-{pod}-daily-{stream}'
+            - '{installer}-deploy-generic-daily-.*'
+          block-level: 'NODE'
 
     parameters:
-        - project-parameter:
-            project: '{project}'
-            branch: '{branch}'
-        - '{installer}-defaults':
-            gs-pathname: '{gs-pathname}'
-        - '{slave-label}-defaults':
-            installer: '{installer}'
-        - string:
-            name: DEPLOY_SCENARIO
-            default: 'os-odl-nofeature-ha'
+      - project-parameter:
+          project: '{project}'
+          branch: '{branch}'
+      - '{installer}-defaults':
+          gs-pathname: '{gs-pathname}'
+      - '{slave-label}-defaults':
+          installer: '{installer}'
+      - string:
+          name: DEPLOY_SCENARIO
+          default: 'os-odl-nofeature-ha'
 
     scm:
-        - git-scm
+      - git-scm
 
     wrappers:
-        - build-name:
-            name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
+      - build-name:
+          name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
 
     builders:
-        - shell:
-            !include-raw-escape: ../fuel/fuel-deploy.sh
+      - shell:
+          !include-raw-escape: ../fuel/fuel-deploy.sh
 
     publishers:
-        - email:
-            recipients: armband@enea.com
-        - email-jenkins-admins-on-failure
+      - email:
+          recipients: armband@enea.com
+      - email-jenkins-admins-on-failure
 
 ########################
 # trigger macros
 ########################
 # CI PODs
-#-----------------------------------------------------------------
+# ----------------------------------------------------------------
 # Enea Armband CI Baremetal Triggers running against master branch
-#-----------------------------------------------------------------
+# ----------------------------------------------------------------
 - trigger:
     name: 'fuel-os-nosdn-nofeature-ha-armband-baremetal-master-trigger'
     triggers:
-        - timed: '0 1 * * *'
+      - timed: '0 16 * * 2,4,6'
 - trigger:
     name: 'fuel-os-nosdn-nofeature-noha-armband-baremetal-master-trigger'
     triggers:
-        - timed: ''
+      - timed: ''
 - trigger:
     name: 'fuel-os-odl-nofeature-ha-armband-baremetal-master-trigger'
     triggers:
-        - timed: '0 16 * * *'
-#----------------------------------------------------------------------
+      - timed: '0 16 * * 1,3,5,7'
+# ---------------------------------------------------------------------
 # Enea Armband CI Baremetal Triggers running against euphrates branch
-#----------------------------------------------------------------------
+# ---------------------------------------------------------------------
 - trigger:
     name: 'fuel-os-nosdn-nofeature-ha-armband-baremetal-euphrates-trigger'
     triggers:
-        - timed: ''
+      - timed: '0 1 * * 2,4,6'
 - trigger:
     name: 'fuel-os-nosdn-nofeature-noha-armband-baremetal-euphrates-trigger'
     triggers:
-        - timed: ''
+      - timed: ''
 - trigger:
     name: 'fuel-os-odl-nofeature-ha-armband-baremetal-euphrates-trigger'
     triggers:
-        - timed: ''
-#---------------------------------------------------------------
+      - timed: '0 1 * * 1,3,5,7'
+# --------------------------------------------------------------
 # Enea Armband CI Virtual Triggers running against master branch
-#---------------------------------------------------------------
+# --------------------------------------------------------------
 - trigger:
     name: 'fuel-os-nosdn-nofeature-ha-armband-virtual-master-trigger'
     triggers:
-        - timed: ''
+      - timed: ''
 - trigger:
     name: 'fuel-os-nosdn-nofeature-noha-armband-virtual-master-trigger'
     triggers:
-        - timed: ''
+      - timed: ''
 - trigger:
     name: 'fuel-os-odl-nofeature-ha-armband-virtual-master-trigger'
     triggers:
-        - timed: ''
-#--------------------------------------------------------------------
+      - timed: ''
+# -------------------------------------------------------------------
 # Enea Armband CI Virtual Triggers running against euphrates branch
-#--------------------------------------------------------------------
+# -------------------------------------------------------------------
 - trigger:
     name: 'fuel-os-nosdn-nofeature-ha-armband-virtual-euphrates-trigger'
     triggers:
-        - timed: ''
+      - timed: ''
 - trigger:
     name: 'fuel-os-nosdn-nofeature-noha-armband-virtual-euphrates-trigger'
     triggers:
-        - timed: ''
+      - timed: ''
 - trigger:
     name: 'fuel-os-odl-nofeature-ha-armband-virtual-euphrates-trigger'
     triggers:
-        - timed: ''
+      - timed: ''
index c43dc7f..04ade72 100644 (file)
@@ -1,37 +1,38 @@
+---
 - project:
     name: 'armband-verify-jobs'
 
     project: 'armband'
 
     installer: 'fuel'
-#####################################
-# branch definitions
-#####################################
+    #####################################
+    # branch definitions
+    #####################################
     stream:
-        - master:
-            branch: '{stream}'
-            gs-pathname: ''
-            disabled: false
-        - euphrates:
-            branch: 'stable/{stream}'
-            gs-pathname: '/{stream}'
-            disabled: true
-#####################################
-# patch verification phases
-#####################################
+      - master:
+          branch: '{stream}'
+          gs-pathname: ''
+          disabled: false
+      - euphrates:
+          branch: 'stable/{stream}'
+          gs-pathname: '/{stream}'
+          disabled: false
+    #####################################
+    # patch verification phases
+    #####################################
     phase:
-        - 'basic':
-            slave-label: 'armband-virtual'
-        - 'deploy-virtual':
-            slave-label: 'armband-virtual'
-        - 'smoke-test':
-            slave-label: 'armband-virtual'
-#####################################
-# jobs
-#####################################
+      - 'basic':
+          slave-label: 'armband-virtual'
+      - 'deploy-virtual':
+          slave-label: 'armband-virtual'
+      - 'smoke-test':
+          slave-label: 'armband-virtual'
+    #####################################
+    # jobs
+    #####################################
     jobs:
-        - 'armband-verify-{stream}'
-        - 'armband-verify-{phase}-{stream}'
+      - 'armband-verify-{stream}'
+      - 'armband-verify-{phase}-{stream}'
 #####################################
 # job templates
 #####################################
     concurrent: true
 
     properties:
-        - logrotate-default
-        - throttle:
-            enabled: true
-            max-total: 4
-            option: 'project'
-        - build-blocker:
-            use-build-blocker: true
-            blocking-jobs:
-                - 'fuel-os-.*?-virtual-daily-.*'
-            block-level: 'NODE'
+      - logrotate-default
+      - throttle:
+          enabled: true
+          max-total: 4
+          option: 'project'
+      - build-blocker:
+          use-build-blocker: true
+          blocking-jobs:
+            - 'fuel-os-.*?-virtual-daily-.*'
+          block-level: 'NODE'
 
     scm:
-        - git-scm-gerrit
+      - git-scm-gerrit
 
     wrappers:
-        - ssh-agent-wrapper
-        - timeout:
-            timeout: 360
-            fail: true
+      - ssh-agent-wrapper
+      - timeout:
+          timeout: 360
+          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: 'patches/**'
-                disable-strict-forbidden-file-verification: 'true'
-                forbidden-file-paths:
-                  - compare-type: ANT
-                    pattern: 'docs/**'
-            readable-message: true
+      - 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: 'patches/**'
+              disable-strict-forbidden-file-verification: 'true'
+              forbidden-file-paths:
+                - compare-type: ANT
+                  pattern: 'docs/**'
+          readable-message: true
 
     parameters:
-        - project-parameter:
-            project: '{project}'
-            branch: '{branch}'
-        - 'armband-virtual-defaults':
-            installer: '{installer}'
-        - '{installer}-defaults':
-            gs-pathname: '{gs-pathname}'
+      - project-parameter:
+          project: '{project}'
+          branch: '{branch}'
+      - 'armband-virtual-defaults':
+          installer: '{installer}'
+      - '{installer}-defaults':
+          gs-pathname: '{gs-pathname}'
 
     builders:
-        - description-setter:
-            description: "Built on $NODE_NAME"
-        - multijob:
-            name: basic
-            condition: SUCCESSFUL
-            projects:
-                - name: 'armband-verify-basic-{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: false
-                  kill-phase-on: FAILURE
-                  abort-all-job: true
-        - 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: false
-                  kill-phase-on: FAILURE
-                  abort-all-job: true
-        - multijob:
-            name: smoke-test
-            condition: SUCCESSFUL
-            projects:
-                - name: 'armband-verify-smoke-test-{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: false
-                  kill-phase-on: FAILURE
-                  abort-all-job: true
+      - description-setter:
+          description: "Built on $NODE_NAME"
+      - multijob:
+          name: basic
+          condition: SUCCESSFUL
+          projects:
+            - name: 'armband-verify-basic-{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: false
+              kill-phase-on: FAILURE
+              abort-all-job: true
+      - 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: false
+              kill-phase-on: FAILURE
+              abort-all-job: true
+      - multijob:
+          name: smoke-test
+          condition: SUCCESSFUL
+          projects:
+            - name: 'armband-verify-smoke-test-{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: false
+              kill-phase-on: FAILURE
+              abort-all-job: true
 
 - job-template:
     name: 'armband-verify-{phase}-{stream}'
     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-.*'
-                - 'armband-verify-test-.*'
-            block-level: 'NODE'
+      - 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-.*'
+            - 'armband-verify-test-.*'
+          block-level: 'NODE'
 
     scm:
-        - git-scm-gerrit
+      - git-scm-gerrit
 
     wrappers:
-        - ssh-agent-wrapper
-        - timeout:
-            timeout: 360
-            fail: true
+      - 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}'
+      - 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'
+      - description-setter:
+          description: "Built on $NODE_NAME"
+      - '{project}-verify-{phase}-macro'
 #####################################
 # builder macros
 #####################################
 - builder:
     name: 'armband-verify-basic-macro'
     builders:
-        - shell: |
-            #!/bin/bash
+      - shell: |
+          #!/bin/bash
 
-            echo "Not activated!"
+          echo "Not activated!"
 
 - builder:
     name: 'armband-verify-deploy-virtual-macro'
     builders:
-        - shell:
-            !include-raw: ../fuel/fuel-deploy.sh
+      - shell:
+          !include-raw: ../fuel/fuel-deploy.sh
 
 - builder:
     name: 'armband-verify-smoke-test-macro'
     builders:
-        - shell: |
-            #!/bin/bash
+      - shell: |
+          #!/bin/bash
 
-            echo "Not activated!"
+          echo "Not activated!"
index c282efa..ede4002 100644 (file)
@@ -23,7 +23,7 @@
         - project-parameter:
             project: '{project}'
             branch: '{branch}'
-        - 'opnfv-build-defaults'
+        - 'opnfv-build-centos-defaults'
 
 
     scm:
index a749d1d..de1fdd7 100644 (file)
@@ -13,7 +13,7 @@ if [[ -e securityaudit.log ]] ; then
         EXITSTATUS=1
     fi
 
-    awk -F"ERROR - " '{print $2}' securityaudit.log | sed -e "s/\"/\\\\\"/g;s/\'/\\\\/g"> shortlog
+    grep 'ERROR' securityaudit.log | awk -F"ERROR - " '{ print $2 }' | tr -d "\'\"" > shortlog
 
     ssh -p 29418 gerrit.opnfv.org \
         "gerrit review -p $GERRIT_PROJECT \
index 35f9354..8a170b0 100644 (file)
@@ -2,6 +2,8 @@
 cd $WORKSPACE
 REPORTDIR='.reports'
 mkdir -p $REPORTDIR
+# Ensure any user can read the reports directory
+chmod 777 $REPORTDIR
 echo "Generating patchset file to list changed files"
 git diff HEAD^1 --name-only | sed "s#^#/home/opnfv/anteater/$PROJECT/#" > $WORKSPACE/patchset
 echo "Changed files are"
index 3317953..e09339a 100644 (file)
@@ -50,7 +50,7 @@
     parameters:
       - label:
           name: SLAVE_LABEL
-          default: 'ericsson-build3'
+          default: 'opnfv-build'
           description: 'Slave label on Jenkins'
       - project-parameter:
           project: $GERRIT_PROJECT
index aaa5b57..b107c65 100644 (file)
         ppa-pathname: '/{stream}'
         disabled: false
         openstack-version: ocata
+    euphrates: &euphrates
+        stream: euphrates
+        branch: 'stable/{stream}'
+        disabled: false
+        gs-pathname: '/{stream}'
+        ppa-pathname: '/{stream}'
+        openstack-version: ocata
     danube: &danube
         stream: danube
         branch: 'stable/{stream}'
         - baremetal:
             slave-label: compass-baremetal-branch
             os-version: 'xenial'
-            <<: *danube
+            <<: *euphrates
         - virtual:
             slave-label: compass-virtual-branch
             os-version: 'xenial'
-            <<: *danube
+            <<: *euphrates
 #--------------------------------
 #        master
 #--------------------------------
             slave-label: 'intel-pod8'
             os-version: 'centos7'
             <<: *master
+#--------------------------------
+#       danube for dovetail
+#--------------------------------
+        - huawei-pod7:
+            slave-label: 'huawei-pod7'
+            os-version: 'xenial'
+            <<: *danube
 
     scenario:
         - 'os-nosdn-nofeature-ha':
@@ -81,7 +95,7 @@
         - 'os-odl-sfc-ha':
             disabled: false
             auto-trigger-name: 'compass-{scenario}-{pod}-{stream}-trigger'
-        - 'os-nosdn-dpdk-ha':
+        - 'os-nosdn-ovs_dpdk-ha':
             disabled: false
             auto-trigger-name: 'compass-{scenario}-{pod}-{stream}-trigger'
         - 'k8-nosdn-nofeature-ha':
         - 'os-odl-sfc-noha':
             disabled: false
             auto-trigger-name: 'compass-{scenario}-{pod}-{stream}-trigger'
-        - 'os-nosdn-dpdk-noha':
+        - 'os-nosdn-ovs_dpdk-noha':
             disabled: false
             auto-trigger-name: 'compass-{scenario}-{pod}-{stream}-trigger'
 
                         build-step-failure-threshold: 'never'
                         failure-threshold: 'never'
                         unstable-threshold: 'FAILURE'
+        - conditional-step:
+            condition-kind: and
+            condition-operands:
+                - condition-kind: regex-match
+                  regex: os-nosdn-nofeature-ha
+                  label: '{scenario}'
+            steps:
+                - trigger-builds:
+                    - project: 'bottlenecks-compass-posca_stress_ping-{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'
 
 - job-template:
     name: 'compass-deploy-{pod}-daily-{stream}'
                     !include-raw-escape: ./compass-deploy.sh
         - conditional-step:
             condition-kind: regex-match
-            regex: danube
+            regex: (danube|euphrates)
             label: '{stream}'
             steps:
                 - shell:
                 - shell:
                     !include-raw-escape: ./compass-deploy.sh
 
-
 ########################
 # parameter macros
 ########################
     triggers:
         - timed: ''
 - trigger:
-    name: 'compass-os-nosdn-dpdk-ha-baremetal-centos-master-trigger'
+    name: 'compass-os-nosdn-ovs_dpdk-ha-baremetal-centos-master-trigger'
     triggers:
         - timed: ''
 - trigger:
     triggers:
         - timed: ''
 - trigger:
-    name: 'compass-os-nosdn-dpdk-noha-baremetal-centos-master-trigger'
+    name: 'compass-os-nosdn-ovs_dpdk-noha-baremetal-centos-master-trigger'
+    triggers:
+        - timed: ''
+
+#---------------------------
+# ha-huawei-pod7-danube
+#---------------------------
+- trigger:
+    name: 'compass-os-nosdn-nofeature-ha-huawei-pod7-danube-trigger'
+    triggers:
+        - timed: '0 19 * * *'
+- trigger:
+    name: 'compass-os-nosdn-openo-ha-huawei-pod7-danube-trigger'
+    triggers:
+        - timed: ''
+- trigger:
+    name: 'compass-os-odl_l2-nofeature-ha-huawei-pod7-danube-trigger'
+    triggers:
+        - timed: '0 21 * * *'
+- trigger:
+    name: 'compass-os-odl_l3-nofeature-ha-huawei-pod7-danube-trigger'
+    triggers:
+        - timed: '0 15 * * *'
+- trigger:
+    name: 'compass-os-onos-nofeature-ha-huawei-pod7-danube-trigger'
+    triggers:
+        - timed: ''
+- trigger:
+    name: 'compass-os-ocl-nofeature-ha-huawei-pod7-danube-trigger'
+    triggers:
+        - timed: ''
+- trigger:
+    name: 'compass-os-onos-sfc-ha-huawei-pod7-danube-trigger'
+    triggers:
+        - timed: ''
+- trigger:
+    name: 'compass-os-odl_l2-moon-ha-huawei-pod7-danube-trigger'
+    triggers:
+        - timed: ''
+- trigger:
+    name: 'compass-os-nosdn-kvm-ha-huawei-pod7-danube-trigger'
+    triggers:
+        - timed: ''
+- trigger:
+    name: 'compass-os-nosdn-ovs_dpdk-ha-huawei-pod7-danube-trigger'
+    triggers:
+        - timed: ''
+- trigger:
+    name: 'compass-os-odl-sfc-ha-huawei-pod7-danube-trigger'
+    triggers:
+        - timed: ''
+- trigger:
+    name: 'compass-k8-nosdn-nofeature-ha-huawei-pod7-danube-trigger'
     triggers:
         - timed: ''
 
+#-----------------------------
+# noha-huawei-pod7-danube
+#-----------------------------
+- trigger:
+    name: 'compass-os-nosdn-nofeature-noha-huawei-pod7-danube-trigger'
+    triggers:
+        - timed: ''
+- trigger:
+    name: 'compass-os-odl_l3-nofeature-noha-huawei-pod7-danube-trigger'
+    triggers:
+        - timed: ''
+- trigger:
+    name: 'compass-os-odl_l2-moon-noha-huawei-pod7-danube-trigger'
+    triggers:
+        - timed: ''
+- trigger:
+    name: 'compass-os-nosdn-kvm-noha-huawei-pod7-danube-trigger'
+    triggers:
+        - timed: ''
+- trigger:
+    name: 'compass-os-odl-sfc-noha-huawei-pod7-danube-trigger'
+    triggers:
+        - timed: ''
+- trigger:
+    name: 'compass-os-nosdn-ovs_dpdk-noha-huawei-pod7-danube-trigger'
+    triggers:
+        - timed: ''
 #--------------------
 # ha-baremetal-master
 #--------------------
     triggers:
         - timed: '0 14 * * *'
 - trigger:
-    name: 'compass-os-nosdn-dpdk-ha-baremetal-master-trigger'
+    name: 'compass-os-nosdn-ovs_dpdk-ha-baremetal-master-trigger'
     triggers:
         - timed: '0 16 * * *'
 - trigger:
     triggers:
         - timed: ''
 - trigger:
-    name: 'compass-os-nosdn-dpdk-noha-baremetal-master-trigger'
+    name: 'compass-os-nosdn-ovs_dpdk-noha-baremetal-master-trigger'
     triggers:
         - timed: ''
 
 #--------------------
-# ha-baremetal-danube
+# ha-baremetal-euphrates
 #--------------------
 - trigger:
-    name: 'compass-os-nosdn-nofeature-ha-baremetal-danube-trigger'
+    name: 'compass-os-nosdn-nofeature-ha-baremetal-euphrates-trigger'
     triggers:
-        - timed: '0 9 * * *'
+        - timed: '0 1 * * *'
 - trigger:
-    name: 'compass-os-nosdn-openo-ha-baremetal-danube-trigger'
+    name: 'compass-os-nosdn-openo-ha-baremetal-euphrates-trigger'
     triggers:
-        - timed: '0 13 * * *'
+        - timed: ''
 - trigger:
-    name: 'compass-os-odl_l2-nofeature-ha-baremetal-danube-trigger'
+    name: 'compass-os-odl_l2-nofeature-ha-baremetal-euphrates-trigger'
     triggers:
-        - timed: '0 17 * * *'
+        - timed: ''
 - trigger:
-    name: 'compass-os-odl_l3-nofeature-ha-baremetal-danube-trigger'
+    name: 'compass-os-odl_l3-nofeature-ha-baremetal-euphrates-trigger'
     triggers:
         - timed: '0 21 * * *'
 - trigger:
-    name: 'compass-os-onos-nofeature-ha-baremetal-danube-trigger'
+    name: 'compass-os-onos-nofeature-ha-baremetal-euphrates-trigger'
     triggers:
-        - timed: '0 1 * * *'
+        - timed: ''
 - trigger:
-    name: 'compass-os-ocl-nofeature-ha-baremetal-danube-trigger'
+    name: 'compass-os-ocl-nofeature-ha-baremetal-euphrates-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'compass-os-onos-sfc-ha-baremetal-danube-trigger'
+    name: 'compass-os-onos-sfc-ha-baremetal-euphrates-trigger'
     triggers:
-        - timed: '0 5 * * *'
+        - timed: ''
 - trigger:
-    name: 'compass-os-odl_l2-moon-ha-baremetal-danube-trigger'
+    name: 'compass-os-odl_l2-moon-ha-baremetal-euphrates-trigger'
     triggers:
-        - timed: ''
+        - timed: '0 5 * * *'
 - trigger:
-    name: 'compass-os-nosdn-kvm-ha-baremetal-danube-trigger'
+    name: 'compass-os-nosdn-kvm-ha-baremetal-euphrates-trigger'
     triggers:
-        - timed: ''
+        - timed: '0 13 * * *'
 - trigger:
-    name: 'compass-os-nosdn-dpdk-ha-baremetal-danube-trigger'
+    name: 'compass-os-nosdn-ovs_dpdk-ha-baremetal-euphrates-trigger'
     triggers:
-        - timed: ''
+        - timed: '0 9 * * *'
 - trigger:
-    name: 'compass-k8-nosdn-nofeature-ha-baremetal-danube-trigger'
+    name: 'compass-k8-nosdn-nofeature-ha-baremetal-euphrates-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'compass-os-odl-sfc-ha-baremetal-danube-trigger'
+    name: 'compass-os-odl-sfc-ha-baremetal-euphrates-trigger'
     triggers:
-        - timed: ''
+        - timed: '0 17 * * *'
 
 #----------------------
-# noha-baremetal-danube
+# noha-baremetal-euphrates
 #----------------------
 - trigger:
-    name: 'compass-os-nosdn-kvm-noha-baremetal-danube-trigger'
+    name: 'compass-os-nosdn-kvm-noha-baremetal-euphrates-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'compass-os-nosdn-nofeature-noha-baremetal-danube-trigger'
+    name: 'compass-os-nosdn-nofeature-noha-baremetal-euphrates-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'compass-os-odl_l3-nofeature-noha-baremetal-danube-trigger'
+    name: 'compass-os-odl_l3-nofeature-noha-baremetal-euphrates-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'compass-os-odl_l2-moon-noha-baremetal-danube-trigger'
+    name: 'compass-os-odl_l2-moon-noha-baremetal-euphrates-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'compass-os-odl-sfc-noha-baremetal-danube-trigger'
+    name: 'compass-os-odl-sfc-noha-baremetal-euphrates-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'compass-os-nosdn-dpdk-noha-baremetal-danube-trigger'
+    name: 'compass-os-nosdn-ovs_dpdk-noha-baremetal-euphrates-trigger'
     triggers:
         - timed: ''
 
 - trigger:
     name: 'compass-os-odl_l2-moon-ha-virtual-master-trigger'
     triggers:
-        - timed: '0 12 * * *'
+        - timed: '30 12 * * *'
 - trigger:
     name: 'compass-os-nosdn-kvm-ha-virtual-master-trigger'
     triggers:
         - timed: '0 13 * * *'
 - trigger:
-    name: 'compass-os-nosdn-dpdk-ha-virtual-master-trigger'
+    name: 'compass-os-nosdn-ovs_dpdk-ha-virtual-master-trigger'
     triggers:
         - timed: '0 17 * * *'
 - trigger:
 - trigger:
     name: 'compass-os-nosdn-kvm-noha-virtual-master-trigger'
     triggers:
-        - timed: '0 13 * * *'
+        - timed: '30 13 * * *'
 - trigger:
     name: 'compass-os-nosdn-nofeature-noha-virtual-master-trigger'
     triggers:
     triggers:
         - timed: '0 20 * * *'
 - trigger:
-    name: 'compass-os-nosdn-dpdk-noha-virtual-master-trigger'
+    name: 'compass-os-nosdn-ovs_dpdk-noha-virtual-master-trigger'
     triggers:
         - timed: '0 11 * * *'
 
 #------------------
-# ha-virtual-danube
+# ha-virtual-euphrates
 #------------------
 - trigger:
-    name: 'compass-os-nosdn-nofeature-ha-virtual-danube-trigger'
+    name: 'compass-os-nosdn-nofeature-ha-virtual-euphrates-trigger'
     triggers:
-        - timed: '0 21 * * *'
+        - timed: '0 23 * * *'
 - trigger:
-    name: 'compass-os-nosdn-openo-ha-virtual-danube-trigger'
+    name: 'compass-os-nosdn-openo-ha-virtual-euphrates-trigger'
     triggers:
-        - timed: '0 22 * * *'
+        - timed: ''
 - trigger:
-    name: 'compass-os-odl_l2-nofeature-ha-virtual-danube-trigger'
+    name: 'compass-os-odl_l2-nofeature-ha-virtual-euphrates-trigger'
     triggers:
-        - timed: '0 20 * * *'
+        - timed: ''
 - trigger:
-    name: 'compass-os-odl_l3-nofeature-ha-virtual-danube-trigger'
+    name: 'compass-os-odl_l3-nofeature-ha-virtual-euphrates-trigger'
     triggers:
-        - timed: '0 19 * * *'
+        - timed: '0 22 * * *'
 - trigger:
-    name: 'compass-os-onos-nofeature-ha-virtual-danube-trigger'
+    name: 'compass-os-onos-nofeature-ha-virtual-euphrates-trigger'
     triggers:
-        - timed: '0 18 * * *'
+        - timed: ''
 - trigger:
-    name: 'compass-os-ocl-nofeature-ha-virtual-danube-trigger'
+    name: 'compass-os-ocl-nofeature-ha-virtual-euphrates-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'compass-os-onos-sfc-ha-virtual-danube-trigger'
+    name: 'compass-os-onos-sfc-ha-virtual-euphrates-trigger'
     triggers:
-        - timed: '0 15 * * *'
+        - timed: ''
 - trigger:
-    name: 'compass-os-odl_l2-moon-ha-virtual-danube-trigger'
+    name: 'compass-os-odl_l2-moon-ha-virtual-euphrates-trigger'
     triggers:
-        - timed: '0 14 * * *'
+        - timed: '0 20 * * *'
 - trigger:
-    name: 'compass-os-nosdn-kvm-ha-virtual-danube-trigger'
+    name: 'compass-os-nosdn-kvm-ha-virtual-euphrates-trigger'
     triggers:
-        - timed: ''
+        - timed: '0 16 * * *'
 - trigger:
-    name: 'compass-os-nosdn-dpdk-ha-virtual-danube-trigger'
+    name: 'compass-os-nosdn-ovs_dpdk-ha-virtual-euphrates-trigger'
     triggers:
-        - timed: ''
+        - timed: '0 14 * * *'
 - trigger:
-    name: 'compass-os-odl-sfc-ha-virtual-danube-trigger'
+    name: 'compass-os-odl-sfc-ha-virtual-euphrates-trigger'
     triggers:
-        - timed: ''
+        - timed: '0 18 * * *'
 - trigger:
-    name: 'compass-k8-nosdn-nofeature-ha-virtual-danube-trigger'
+    name: 'compass-k8-nosdn-nofeature-ha-virtual-euphrates-trigger'
     triggers:
-        - timed: ''
+        - timed: '0 13 * * *'
 
 #--------------------
-# noha-virtual-danube
+# noha-virtual-euphrates
 #--------------------
 - trigger:
-    name: 'compass-os-nosdn-kvm-noha-virtual-danube-trigger'
+    name: 'compass-os-nosdn-kvm-noha-virtual-euphrates-trigger'
     triggers:
-        - timed: ''
+        - timed: '0 15 * * *'
 - trigger:
-    name: 'compass-os-nosdn-nofeature-noha-virtual-danube-trigger'
+    name: 'compass-os-nosdn-nofeature-noha-virtual-euphrates-trigger'
     triggers:
-        - timed: ''
+        - timed: '0 17 * * *'
 - trigger:
-    name: 'compass-os-odl_l3-nofeature-noha-virtual-danube-trigger'
+    name: 'compass-os-odl_l3-nofeature-noha-virtual-euphrates-trigger'
     triggers:
-        - timed: ''
+        - timed: '0 23 * * *'
 - trigger:
-    name: 'compass-os-odl_l2-moon-noha-virtual-danube-trigger'
+    name: 'compass-os-odl_l2-moon-noha-virtual-euphrates-trigger'
     triggers:
-        - timed: ''
+        - timed: '0 21 * * *'
 - trigger:
-    name: 'compass-os-odl-sfc-noha-virtual-danube-trigger'
+    name: 'compass-os-odl-sfc-noha-virtual-euphrates-trigger'
     triggers:
-        - timed: ''
+        - timed: '0 19 * * *'
 - trigger:
-    name: 'compass-os-nosdn-dpdk-noha-virtual-danube-trigger'
+    name: 'compass-os-nosdn-ovs_dpdk-noha-virtual-euphrates-trigger'
     triggers:
-        - timed: ''
+        - timed: '0 12 * * *'
index 9d4ae51..ad069a5 100644 (file)
@@ -39,7 +39,7 @@ elif [[ "${DEPLOY_SCENARIO}" =~ "-onos" ]]; then
     export NETWORK_CONF_FILE=network_onos.yml
 elif [[ "${DEPLOY_SCENARIO}" =~ "-openo" ]]; then
     export NETWORK_CONF_FILE=network_openo.yml
-elif [[ "${DEPLOY_SCENARIO}" =~ "-dpdk" ]]; then
+elif [[ "${DEPLOY_SCENARIO}" =~ "-ovs_dpdk" ]]; then
     export NETWORK_CONF_FILE=network_dpdk.yml
 else
     export NETWORK_CONF_FILE=network.yml
index e612ef6..fe91705 100644 (file)
             gs-pathname: '/{stream}'
             ppa-pathname: '/{stream}'
             disabled: false
+        - euphrates:
+            branch: 'stable/{stream}'
+            gs-pathname: '/{stream}'
+            ppa-pathname: '/{stream}'
+            disabled: false
 
     jobs:
         - '{installer}-build-daily-{stream}'
index ee91e02..f4fe8f6 100644 (file)
                 - name: 'functest-compass-virtual-suite-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    FUNCTEST_SUITE_NAME=healthcheck
+                    FUNCTEST_MODE=tier
+                    FUNCTEST_TIER=healthcheck
                     DEPLOY_SCENARIO=os-nosdn-nofeature-ha
                   node-parameters: true
                   kill-phase-on: NEVER
                 - name: 'functest-compass-virtual-suite-{stream}'
                   current-parameters: false
                   predefined-parameters: |
+                    FUNCTEST_MODE=testcase
                     FUNCTEST_SUITE_NAME=vping_ssh
                     DEPLOY_SCENARIO=os-nosdn-nofeature-ha
                   node-parameters: true
index a9249ea..237861d 100644 (file)
 #        CI PODs
 #--------------------------------
     pod:
+#        - baremetal:
+#            slave-label: daisy-baremetal
+#            <<: *master
+        - virtual:
+            slave-label: daisy-virtual
+            <<: *master
         - baremetal:
             slave-label: daisy-baremetal
-            <<: *master
+            <<: *euphrates
         - virtual:
             slave-label: daisy-virtual
-            <<: *master
+            <<: *euphrates
 #--------------------------------
 #        None-CI PODs
 #--------------------------------
+        - baremetal:
+            slave-label: zte-pod3
+            <<: *master
 
 #--------------------------------
 #       scenarios
     name: 'daisy-os-nosdn-nofeature-ha-baremetal-daily-euphrates-trigger'
     triggers:
         - timed: '0 0 * * *'
+# Basic NOHA Scenarios
+- trigger:
+    name: 'daisy-os-nosdn-nofeature-noha-baremetal-daily-euphrates-trigger'
+    triggers:
+        - timed: ''
 # ODL Scenarios
 - trigger:
     name: 'daisy-os-odl-nofeature-ha-baremetal-daily-euphrates-trigger'
     name: 'daisy-os-nosdn-nofeature-ha-virtual-daily-euphrates-trigger'
     triggers:
         - timed: '0 0 * * *'
+# Basic NOHA Scenarios
+- trigger:
+    name: 'daisy-os-nosdn-nofeature-noha-virtual-daily-euphrates-trigger'
+    triggers:
+        - timed: ''
 # ODL Scenarios
 - trigger:
     name: 'daisy-os-odl-nofeature-ha-virtual-daily-euphrates-trigger'
index 23c6c7b..5bfac1f 100644 (file)
@@ -21,7 +21,7 @@
         - euphrates:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
-            disabled: true
+            disabled: false
 #####################################
 # patch merge phases
 #####################################
index 7205cde..6a04c5f 100644 (file)
@@ -1,51 +1,52 @@
+---
 - project:
     name: doctor
 
     project: '{name}'
 
     stream:
-        - master:
-            branch: '{stream}'
-            gs-pathname: ''
-            docker-tag: 'latest'
-            disabled: false
-        - danube:
-            branch: 'stable/{stream}'
-            gs-pathname: '/{stream}'
-            docker-tag: 'stable'
-            disabled: false
+      - master:
+          branch: '{stream}'
+          gs-pathname: ''
+          docker-tag: 'latest'
+          disabled: false
+      - euphrates:
+          branch: 'stable/{stream}'
+          gs-pathname: '/{stream}'
+          docker-tag: 'stable'
+          disabled: false
 
     installer:
-        - apex:
-            slave-label: 'doctor-apex-verify'
-        - fuel:
-            slave-label: 'doctor-fuel-verify'
-        #- joid:
-        #    slave-label: 'ool-virtual3'
-        #    pod: 'ool-virtual3'
+      - apex:
+          slave-label: 'doctor-apex-verify'
+      - fuel:
+          slave-label: 'doctor-fuel-verify'
+    - joid:
+        slave-label: 'ool-virtual3'
+        pod: 'ool-virtual3'
 
     inspector:
-        - 'sample'
-        - 'congress'
+      - 'sample'
+      - 'congress'
 
     task:
-        - verify:
-            auto-trigger-name: 'doctor-verify'
-            is-python: false
-        - python-verify:
-            auto-trigger-name: 'doctor-verify'
-            is-python: true
+      - verify:
+          auto-trigger-name: 'doctor-verify'
+          is-python: false
+      - python-verify:
+          auto-trigger-name: 'doctor-verify'
+          is-python: true
 
     pod:
-        - armband-baremetal:
-            slave-label: '{pod}'
-        - armband-virtual:
-            slave-label: '{pod}'
+      - armband-baremetal:
+          slave-label: '{pod}'
+      - armband-virtual:
+          slave-label: '{pod}'
 
     jobs:
-        - 'doctor-verify-{stream}'
-        - 'doctor-{task}-{installer}-{inspector}-{pod}-{stream}'
-        - 'doctor-{task}-{installer}-{inspector}-{stream}'
+      - 'doctor-verify-{stream}'
+      - 'doctor-{task}-{installer}-{inspector}-{pod}-{stream}'
+      - 'doctor-{task}-{installer}-{inspector}-{stream}'
 
 - job-template:
     name: 'doctor-verify-{stream}'
     disabled: '{obj:disabled}'
 
     parameters:
-        - project-parameter:
-            project: '{project}'
-            branch: '{branch}'
-        - 'opnfv-build-ubuntu-defaults'
+      - project-parameter:
+          project: '{project}'
+          branch: '{branch}'
+      - 'opnfv-build-ubuntu-defaults'
 
     scm:
-        - git-scm-gerrit
+      - git-scm-gerrit
 
     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: 'doctor_tests/**'
+      - 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: 'doctor_tests/**'
 
     builders:
-        - shell: "[ -e tests/run.sh ] && bash -n ./tests/run.sh"
+      - shell: "[ -e tests/run.sh ] && bash -n ./tests/run.sh"
 
 - job-template:
     name: 'doctor-{task}-{installer}-{inspector}-{pod}-{stream}'
     disabled: '{obj:disabled}'
 
     parameters:
-        - project-parameter:
-            project: '{project}'
-            branch: '{branch}'
-        - 'opnfv-build-ubuntu-defaults'
+      - project-parameter:
+          project: '{project}'
+          branch: '{branch}'
+      - 'opnfv-build-ubuntu-defaults'
 
     scm:
-        - git-scm-gerrit
+      - git-scm-gerrit
 
 
     triggers:
-        - '{auto-trigger-name}':
-            project: '{project}'
-            branch: '{branch}'
-            files: 'doctor_tests/**'
+      - '{auto-trigger-name}':
+          project: '{project}'
+          branch: '{branch}'
+          files: 'doctor_tests/**'
 
     builders:
-        - shell: "[ -e tests/run.sh ] && bash -n ./tests/run.sh"
+      - shell: "[ -e tests/run.sh ] && bash -n ./tests/run.sh"
 
 
 - job-template:
     node: '{slave-label}'
 
     parameters:
-        - project-parameter:
-            project: '{project}'
-            branch: '{branch}'
-        - string:
-            name: OS_CREDS
-            default: /home/jenkins/openstack.creds
-            description: 'OpenStack credentials'
-        - '{slave-label}-defaults'
-        - '{installer}-defaults'
-        - string:
-            name: DOCKER_TAG
-            default: '{docker-tag}'
-            description: 'Tag to pull docker image'
-        - string:
-            name: CLEAN_DOCKER_IMAGES
-            default: 'false'
-            description: 'Remove downloaded docker images (opnfv/functest:*)'
-        - string:
-            name: DEPLOY_SCENARIO
-            default: 'os-nosdn-nofeature-ha'
-            description: 'Scenario to deploy and test'
-        # functest-suite-parameter
-        - string:
-            name: FUNCTEST_SUITE_NAME
-            default: 'doctor-notification'
-        - string:
-            name: TESTCASE_OPTIONS
-            default: '-e INSPECTOR_TYPE={inspector} -e PYTHON_ENABLE={is-python} -v $WORKSPACE:/home/opnfv/repos/doctor'
-            description: 'Addtional parameters specific to test case(s)'
-        # functest-parameter
-        - string:
-            name: GS_PATHNAME
-            default: '{gs-pathname}'
-            description: "Version directory where the opnfv documents will be stored in gs repository"
-        - string:
-            name: FUNCTEST_REPO_DIR
-            default: "/home/opnfv/repos/functest"
-            description: "Directory where the Functest repository is cloned"
-        - string:
-            name: PUSH_RESULTS_TO_DB
-            default: "true"
-            description: "Push the results of all the tests to the resultDB"
-        - string:
-            name: CI_DEBUG
-            default: 'true'
-            description: "Show debug output information"
+      - project-parameter:
+          project: '{project}'
+          branch: '{branch}'
+      - string:
+          name: OS_CREDS
+          default: /home/jenkins/openstack.creds
+          description: 'OpenStack credentials'
+      - '{slave-label}-defaults'
+      - '{installer}-defaults'
+      - string:
+          name: DOCKER_TAG
+          default: '{docker-tag}'
+          description: 'Tag to pull docker image'
+      - string:
+          name: CLEAN_DOCKER_IMAGES
+          default: 'false'
+          description: 'Remove downloaded docker images (opnfv/functest:*)'
+      - string:
+          name: DEPLOY_SCENARIO
+          default: 'os-nosdn-nofeature-ha'
+          description: 'Scenario to deploy and test'
+      # functest-suite-parameter
+      - string:
+          name: FUNCTEST_MODE
+          default: 'testcase'
+      - string:
+          name: FUNCTEST_SUITE_NAME
+          default: 'doctor-notification'
+      - string:
+          name: TESTCASE_OPTIONS
+          default: '-e INSPECTOR_TYPE={inspector} -e PYTHON_ENABLE={is-python} -v $WORKSPACE:/home/opnfv/repos/doctor'
+          description: 'Addtional parameters specific to test case(s)'
+      # functest-parameter
+      - string:
+          name: GS_PATHNAME
+          default: '{gs-pathname}'
+          description: "Version directory where the opnfv documents will be stored in gs repository"
+      - string:
+          name: FUNCTEST_REPO_DIR
+          default: "/home/opnfv/repos/functest"
+          description: "Directory where the Functest repository is cloned"
+      - string:
+          name: PUSH_RESULTS_TO_DB
+          default: "true"
+          description: "Push the results of all the tests to the resultDB"
+      - string:
+          name: CI_DEBUG
+          default: 'true'
+          description: "Show debug output information"
 
     scm:
-        - git-scm-gerrit
+      - git-scm-gerrit
 
     triggers:
-        - '{auto-trigger-name}':
-            project: '{project}'
-            branch: '{branch}'
-            files: 'doctor_tests/**'
+      - '{auto-trigger-name}':
+          project: '{project}'
+          branch: '{branch}'
+          files: 'doctor_tests/**'
 
     builders:
-        - 'clean-workspace-log'
-        - shell: |
-            # NOTE: Create symbolic link, so that we can archive file outside
-            #       of $WORKSPACE .
-            # NOTE: We are printing all logs under 'tests/' during test run,
-            #       so this symbolic link should not be in 'tests/'. Otherwise,
-            #       we'll have the same log twice in jenkins console log.
-            ln -sfn $HOME/opnfv/functest/results/{stream} functest_results
-            # NOTE: Get functest script in $WORKSPACE. This functest script is
-            #       needed to perform VM image download in set-functest-env.sh
-            #       from E release cycle.
-            mkdir -p functest/ci
-            wget https://git.opnfv.org/functest/plain/functest/ci/download_images.sh -O functest/ci/download_images.sh
-        - 'functest-suite-builder'
-        - shell: |
-            functest_log="$HOME/opnfv/functest/results/{stream}/$FUNCTEST_SUITE_NAME.log"
-            # NOTE: checking the test result, as the previous job could return
-            #       0 regardless the result of doctor test scenario.
-            grep -e 'doctor test successfully' $functest_log || exit 1
+      - 'clean-workspace-log'
+      - shell: |
+          # NOTE: Create symbolic link, so that we can archive file outside
+          #       of $WORKSPACE .
+          # NOTE: We are printing all logs under 'tests/' during test run,
+          #       so this symbolic link should not be in 'tests/'. Otherwise,
+          #       we'll have the same log twice in jenkins console log.
+          ln -sfn $HOME/opnfv/functest/results/{stream} functest_results
+          # NOTE: Get functest script in $WORKSPACE. This functest script is
+          #       needed to perform VM image download in set-functest-env.sh
+          #       from E release cycle.
+          mkdir -p functest/ci
+          wget https://git.opnfv.org/functest/plain/functest/ci/download_images.sh -O functest/ci/download_images.sh
+      - 'functest-suite-builder'
+      - shell: |
+          functest_log="$HOME/opnfv/functest/results/{stream}/$FUNCTEST_SUITE_NAME.log"
+          # NOTE: checking the test result, as the previous job could return
+          #       0 regardless the result of doctor test scenario.
+          grep -e 'doctor test successfully' $functest_log || exit 1
 
     publishers:
-        - archive:
-            artifacts: 'doctor_tests/*.log'
-        - archive:
-            artifacts: 'functest_results/$FUNCTEST_SUITE_NAME.log'
-        - email-jenkins-admins-on-failure
+      - archive:
+          artifacts: 'doctor_tests/*.log'
+      - archive:
+          artifacts: 'functest_results/$FUNCTEST_SUITE_NAME.log'
+      - email-jenkins-admins-on-failure
 
 
 #####################################
 - trigger:
     name: 'doctor-verify'
     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: '{files}'
-            skip-vote:
-                successful: true
-                failed: true
-                unstable: true
-                notbuilt: true
+      - 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: '{files}'
+          skip-vote:
+            successful: true
+            failed: true
+            unstable: true
+            notbuilt: true
index 80b9b69..7fc818c 100644 (file)
@@ -12,7 +12,7 @@
           branch: '{stream}'
           gs-pathname: ''
           disabled: false
-      - danube:
+      - euphrates:
           branch: 'stable/{stream}'
           gs-pathname: '/{stream}'
           disabled: false
index 938fdf9..94f38b1 100644 (file)
@@ -25,7 +25,7 @@
         branch: 'stable/{stream}'
         dovetail-branch: master
         gs-pathname: '/{stream}'
-        docker-tag: 'cvp.0.6.0'
+        docker-tag: 'cvp.0.7.0'
 
 #-----------------------------------
 # POD, PLATFORM, AND BRANCH MAPPING
         - huawei-pod4:
             slave-label: huawei-pod4
             SUT: apex
-            auto-trigger-name: 'apex-huawei-pod4-{testsuite}-danube-trigger'
+            auto-trigger-name: 'daily-trigger-disabled'
+            <<: *danube
+        - huawei-pod7:
+            slave-label: huawei-pod7
+            SUT: compass
+            auto-trigger-name: 'daily-trigger-disabled'
             <<: *danube
 #--------------------------------
     testsuite:
     builders:
         - shell:
             !include-raw: ./dovetail-cleanup.sh
-
-#--------------------------
-# trigger macros
-#--------------------------
-- trigger:
-    name: 'apex-huawei-pod4-proposed_tests-danube-trigger'
-    triggers:
-        - timed: '0 1 * * *'
-- trigger:
-    name: 'apex-huawei-pod4-compliance_set-danube-trigger'
-    triggers:
-        - timed: ''
index 9c4e205..2cbb947 100755 (executable)
@@ -152,8 +152,10 @@ dovetail_home_volume="-v ${DOVETAIL_HOME}:${DOVETAIL_HOME}"
 echo "Dovetail: Pulling image opnfv/dovetail:${DOCKER_TAG}"
 docker pull opnfv/dovetail:$DOCKER_TAG >$redirect
 
+env4bgpvpn="-e INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP}"
+
 cmd="docker run ${opts} -e DOVETAIL_HOME=${DOVETAIL_HOME} ${docker_volume} ${dovetail_home_volume} \
-     ${sshkey} opnfv/dovetail:${DOCKER_TAG} /bin/bash"
+     ${sshkey} ${env4bgpvpn} opnfv/dovetail:${DOCKER_TAG} /bin/bash"
 echo "Dovetail: running docker run command: ${cmd}"
 ${cmd} >${redirect}
 sleep 5
@@ -186,14 +188,6 @@ cat << EOF >$tempest_conf_file
 compute:
     min_compute_nodes: 2
     volume_device_name: ${volume_device}
-    min_microversion: 2.2
-    max_microversion: latest
-
-compute-feature-enabled:
-    live_migration: True
-    block_migration_for_live_migration: True
-    block_migrate_cinder_iscsi: True
-    attach_encrypted_volume: True
 
 EOF
 
index 4bdfa5b..323cf74 100644 (file)
@@ -18,7 +18,7 @@
     euphrates: &euphrates
         stream: euphrates
         branch: 'stable/{stream}'
-        disabled: true
+        disabled: false
         gs-pathname: '/{stream}'
     danube: &danube
         stream: danube
             label: '{scenario}'
             steps:
                 - trigger-builds:
-                    - project: 'dovetail-fuel-{pod}-proposed_tests-{stream}'
+                    - project: 'dovetail-fuel-{pod}-proposed_tests-master'
                       current-parameters: false
                       predefined-parameters:
                         DEPLOY_SCENARIO={scenario}
 - trigger:
     name: 'fuel-os-nosdn-nofeature-ha-baremetal-daily-euphrates-trigger'
     triggers:
-        - timed: '' # '0 20 * * *'
+        - timed: '0 20 * * *'
 - trigger:
     name: 'fuel-os-odl-nofeature-ha-baremetal-daily-euphrates-trigger'
     triggers:
-        - timed: '' # '0 2 * * *'
+        - timed: '0 2 * * *'
 - trigger:
     name: 'fuel-os-onos-sfc-ha-baremetal-daily-euphrates-trigger'
     triggers:
 - trigger:
     name: 'fuel-os-nosdn-ovs-ha-baremetal-daily-euphrates-trigger'
     triggers:
-        - timed: '' # '0 20 * * *'
+        - timed: '0 20 * * *'
 - trigger:
     name: 'fuel-os-nosdn-kvm_ovs_dpdk-ha-baremetal-daily-euphrates-trigger'
     triggers:
 - trigger:
     name: 'fuel-os-nosdn-nofeature-noha-virtual-daily-euphrates-trigger'
     triggers:
-        - timed: '' # '0 13 * * *'
+        - timed: '0 13 * * *'
 - trigger:
     name: 'fuel-os-odl-nofeature-noha-virtual-daily-euphrates-trigger'
     triggers:
-        - timed: '' # '0 18 * * *'
+        - timed: '0 18 * * *'
 - trigger:
     name: 'fuel-os-onos-sfc-noha-virtual-daily-euphrates-trigger'
     triggers:
 - trigger:
     name: 'fuel-os-nosdn-ovs-noha-virtual-daily-euphrates-trigger'
     triggers:
-        - timed: '' # '0 9 * * *'
+        - timed: '0 9 * * *'
 - trigger:
     name: 'fuel-os-nosdn-kvm_ovs_dpdk-noha-virtual-daily-euphrates-trigger'
     triggers:
 - trigger:
     name: 'fuel-os-nosdn-nofeature-ha-zte-pod1-daily-master-trigger'
     triggers:
-        - timed: ''
+        - timed: '0 10 * * *'
 - trigger:
     name: 'fuel-os-odl-nofeature-ha-zte-pod1-daily-master-trigger'
     triggers:
 - trigger:
     name: 'fuel-os-nosdn-nofeature-ha-zte-pod1-daily-danube-trigger'
     triggers:
-        - timed: '0 2 * * 6'
+        - timed: ''
 - trigger:
     name: 'fuel-os-odl_l2-bgpvpn-ha-zte-pod1-daily-danube-trigger'
     triggers:
-        - timed: '0 2 * * 1,3,5'
+        - timed: ''
 - trigger:
     name: 'fuel-os-odl-nofeature-ha-zte-pod1-daily-danube-trigger'
     triggers:
index 6525c7c..be45604 100755 (executable)
@@ -72,11 +72,13 @@ chmod a+x "${HOME}" "${TMPDIR}"
 cd "${WORKSPACE}" || exit 1
 if [[ "${LAB_CONFIG_URL}" =~ ^(git|ssh):// ]]; then
     echo "Cloning securedlab repo ${BRANCH}"
-    git clone --quiet --branch "${BRANCH}" "${LAB_CONFIG_URL}" lab-config
-    LAB_CONFIG_URL=file://${WORKSPACE}/lab-config
+    LOCAL_CFG="${TMPDIR}/securedlab"
+    rm -rf "${LOCAL_CFG}"
+    git clone --quiet --branch "${BRANCH}" "${LAB_CONFIG_URL}" "${LOCAL_CFG}"
+    LAB_CONFIG_URL="file://${LOCAL_CFG}"
 
     # Source local_env if present, which contains POD-specific config
-    local_env="${WORKSPACE}/lab-config/labs/${LAB_NAME}/${POD_NAME}/fuel/config/local_env"
+    local_env="${LOCAL_CFG}/labs/${LAB_NAME}/${POD_NAME}/fuel/config/local_env"
     if [ -e "${local_env}" ]; then
         echo "-- Sourcing local environment file"
         source "${local_env}"
@@ -101,7 +103,7 @@ echo "--------------------------------------------------------"
 echo "Scenario: ${DEPLOY_SCENARIO}"
 echo "Lab: ${LAB_NAME}"
 echo "POD: ${POD_NAME}"
-[[ "${BRANCH}" != 'master' ]] && echo "ISO: ${OPNFV_ARTIFACT_URL/*\/}"
+[[ "${BRANCH}" =~ 'danube' ]] && echo "ISO: ${OPNFV_ARTIFACT_URL/*\/}"
 echo
 echo "Starting the deployment using ${INSTALLER_TYPE}. This could take some time..."
 echo "--------------------------------------------------------"
index cfcbf36..09342b5 100644 (file)
@@ -16,7 +16,7 @@
         - euphrates:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
-            disabled: true
+            disabled: false
 
     jobs:
         - 'fuel-deploy-generic-daily-{stream}'
index 45197fc..d605e30 100644 (file)
@@ -15,7 +15,7 @@
         - euphrates:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
-            disabled: true
+            disabled: false
 #####################################
 # patch verification phases
 #####################################
index e1563ea..c8a8c17 100644 (file)
@@ -18,7 +18,7 @@
     euphrates: &euphrates
         stream: euphrates
         branch: 'stable/{stream}'
-        disabled: true
+        disabled: false
         gs-pathname: '/{stream}'
 #--------------------------------
 # POD, INSTALLER, AND BRANCH MAPPING
index 35311c3..f5f39b8 100755 (executable)
@@ -4,18 +4,81 @@ set -e
 set +u
 set +o pipefail
 
+run_tiers() {
+    tiers=$1
+    cmd_opt="prepare_env start && run_tests -r -t all"
+    [[ $BUILD_TAG =~ "suite" ]] && cmd_opt="prepare_env start && run_tests -t all"
+    ret_val_file="${HOME}/opnfv/functest/results/${BRANCH##*/}/return_value"
+    echo 0 > ${ret_val_file}
+
+    for tier in ${tiers[@]}; do
+        FUNCTEST_IMAGE=opnfv/functest-${tier}:${DOCKER_TAG}
+        echo "Functest: Pulling Functest Docker image ${FUNCTEST_IMAGE} ..."
+        docker pull ${FUNCTEST_IMAGE}>/dev/null
+        cmd="docker run --privileged=true ${envs} ${volumes} ${FUNCTEST_IMAGE} /bin/bash -c '${cmd_opt}'"
+        echo "Running Functest tier '${tier}'. CMD: ${cmd}"
+        eval ${cmd}
+        ret_value=$?
+        if [ ${ret_value} != 0 ]; then
+            echo ${ret_value} > ${ret_val_file}
+            if [ ${tier} == 'healthcheck' ]; then
+                echo "Healthcheck tier failed. Exiting Functest..."
+                break
+            fi
+        fi
+    done
+}
+
+run_test() {
+    test_name=$1
+    cmd_opt="prepare_env start && run_tests -r -t ${test_name}"
+    [[ $BUILD_TAG =~ "suite" ]] && cmd_opt="prepare_env start && run_tests -t ${test_name}"
+    ret_val_file="${HOME}/opnfv/functest/results/${BRANCH##*/}/return_value"
+    echo 0 > ${ret_val_file}
+    # 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|fds|snaps_smoke)
+            FUNCTEST_IMAGE=opnfv/functest-smoke:${DOCKER_TAG} ;;
+        tempest_full_parallel|tempest_custom|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)
+            FUNCTEST_IMAGE=opnfv/functest-features:${DOCKER_TAG} ;;
+        parser-basics)
+            FUNCTEST_IMAGE=opnfv/functest-parser:${DOCKER_TAG} ;;
+        *)
+            echo "Unkown test case $test_name"
+            exit 1
+            ;;
+    esac
+    echo "Functest: Pulling Functest Docker image ${FUNCTEST_IMAGE} ..."
+    docker pull ${FUNCTEST_IMAGE}>/dev/null
+    cmd="docker run --privileged=true ${envs} ${volumes} ${FUNCTEST_IMAGE} /bin/bash -c '${cmd_opt}'"
+    echo "Running Functest test case '${test_name}'. CMD: ${cmd}"
+    eval ${cmd}
+    ret_value=$?
+    if [ ${ret_value} != 0 ]; then
+      echo ${ret_value} > ${ret_val_file}
+    fi
+}
+
+
 [[ $CI_DEBUG == true ]] && redirect="/dev/stdout" || redirect="/dev/null"
 FUNCTEST_DIR=/home/opnfv/functest
 DEPLOY_TYPE=baremetal
 [[ $BUILD_TAG =~ "virtual" ]] && DEPLOY_TYPE=virt
 HOST_ARCH=$(uname -m)
+DOCKER_TAG=${DOCKER_TAG:-latest}
 
 # Prepare OpenStack credentials volume
 rc_file=${HOME}/opnfv-openrc.sh
 
 if [[ ${INSTALLER_TYPE} == 'joid' ]]; then
     rc_file=$LAB_CONFIG/admin-openrc
-elif [[ ${INSTALLER_TYPE} == 'compass' && ${BRANCH} == 'master' ]]; then
+elif [[ ${INSTALLER_TYPE} == 'compass' ]]; then
     cacert_file_vol="-v ${HOME}/os_cacert:${FUNCTEST_DIR}/conf/os_cacert"
     echo "export OS_CACERT=${FUNCTEST_DIR}/conf/os_cacert" >> ${HOME}/opnfv-openrc.sh
 elif [[ ${INSTALLER_TYPE} == 'fuel' && ${DEPLOY_TYPE} == 'baremetal' ]]; then
@@ -54,37 +117,36 @@ envs="-e INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP} \
     -e NODE_NAME=${NODE_NAME} -e DEPLOY_SCENARIO=${DEPLOY_SCENARIO} \
     -e BUILD_TAG=${BUILD_TAG} -e DEPLOY_TYPE=${DEPLOY_TYPE}"
 
-if [[ ${INSTALLER_TYPE} == 'compass' && ${DEPLOY_SCENARIO} == *'os-nosdn-openo-ha'* ]]; then
-    ssh_options="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
-    openo_msb_port=${openo_msb_port:-80}
-    openo_msb_endpoint="$(sshpass -p'root' ssh 2>/dev/null $ssh_options root@${installer_ip} \
-    'mysql -ucompass -pcompass -Dcompass -e "select package_config from cluster;" \
-    | sed s/,/\\n/g | grep openo_ip | cut -d \" -f 4'):$openo_msb_port"
+ssh_options="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
 
-    envs=${env}" -e OPENO_MSB_ENDPOINT=${openo_msb_endpoint}"
+
+if [ "${INSTALLER_TYPE}" == 'fuel' ]; then
+    COMPUTE_ARCH=$(ssh -l ubuntu ${INSTALLER_IP} -i ${SSH_KEY} ${ssh_options} \
+        "sudo salt 'cmp*' grains.get cpuarch --out yaml | awk '{print \$2; exit}'")
+    envs="${envs} -e POD_ARCH=${COMPUTE_ARCH}"
 fi
 
 volumes="${images_vol} ${results_vol} ${sshkey_vol} ${rc_file_vol} ${cacert_file_vol}"
 
 set +e
 
-if [ ${FUNCTEST_SUITE_NAME} == 'healthcheck' ]; then
-    tiers=(healthcheck)
-else
-    if [ ${DEPLOY_TYPE} == 'baremetal' ]; then
-        tiers=(healthcheck smoke features vnf)
+
+if [[ ${DEPLOY_SCENARIO} =~ ^os-.* ]]; then
+    if [ ${FUNCTEST_MODE} == 'testcase' ]; then
+        echo "FUNCTEST_MODE=testcase, FUNCTEST_SUITE_NAME=${FUNCTEST_SUITE_NAME}"
+        run_test ${FUNCTEST_SUITE_NAME}
+    elif [ ${FUNCTEST_MODE} == 'tier' ]; then
+        echo "FUNCTEST_MODE=tier, FUNCTEST_TIER=${FUNCTEST_TIER}"
+        tiers=(${FUNCTEST_TIER})
+        run_tiers ${tiers}
     else
-        tiers=(healthcheck smoke features)
+        if [ ${DEPLOY_TYPE} == 'baremetal' ]; then
+            tiers=(healthcheck smoke features vnf parser)
+        else
+            tiers=(healthcheck smoke features)
+        fi
+        run_tiers ${tiers}
     fi
+else
+    echo "k8 deployment has not been supported by functest yet"
 fi
-
-cmd_opt='prepare_env start && run_tests -r -t all'
-
-for tier in ${tiers[@]}; do
-    FUNCTEST_IMAGE=opnfv/functest-${tier}
-    echo "Functest: Pulling Functest Docker image ${FUNCTEST_IMAGE} ..."
-    docker pull ${FUNCTEST_IMAGE}>/dev/null
-    cmd="docker run --privileged=true ${envs} ${volumes} ${FUNCTEST_IMAGE} /bin/bash -c '${cmd_opt}'"
-    echo "Running Functest tier '${tier}'. CMD: ${cmd}"
-    eval ${cmd}
-done
index 23c6e49..04a2936 100644 (file)
@@ -14,8 +14,8 @@
         branch: '{stream}'
         gs-pathname: ''
         docker-tag: 'latest'
-    danube: &danube
-        stream: danube
+    euphrates: &euphrates
+        stream: euphrates
         branch: 'stable/{stream}'
         gs-pathname: '/{stream}'
         docker-tag: 'stable'
         - baremetal:
             slave-label: fuel-baremetal
             installer: fuel
-            <<: *danube
+            <<: *euphrates
         - virtual:
             slave-label: fuel-virtual
             installer: fuel
-            <<: *danube
+            <<: *euphrates
 # joid CI PODs
         - baremetal:
             slave-label: joid-baremetal
         - baremetal:
             slave-label: joid-baremetal
             installer: joid
-            <<: *danube
+            <<: *euphrates
         - virtual:
             slave-label: joid-virtual
             installer: joid
-            <<: *danube
+            <<: *euphrates
 # compass CI PODs
         - baremetal:
             slave-label: compass-baremetal
         - baremetal:
             slave-label: compass-baremetal
             installer: compass
-            <<: *danube
+            <<: *euphrates
         - virtual:
             slave-label: compass-virtual
             installer: compass
-            <<: *danube
+            <<: *euphrates
 # apex CI PODs
         - virtual:
             slave-label: apex-virtual-master
             installer: apex
             <<: *master
         - virtual:
-            slave-label: apex-virtual-danube
+            slave-label: apex-virtual-euphrates
             installer: apex
-            <<: *danube
+            <<: *euphrates
         - baremetal:
-            slave-label: apex-baremetal-danube
+            slave-label: apex-baremetal-euphrates
             installer: apex
-            <<: *danube
+            <<: *euphrates
 # armband CI PODs
         - armband-baremetal:
             slave-label: armband-baremetal
         - armband-baremetal:
             slave-label: armband-baremetal
             installer: fuel
-            <<: *danube
+            <<: *euphrates
         - armband-virtual:
             slave-label: armband-virtual
             installer: fuel
-            <<: *danube
+            <<: *euphrates
 # daisy CI PODs
         - baremetal:
             slave-label: daisy-baremetal
             slave-label: daisy-virtual
             installer: daisy
             <<: *master
+        - baremetal:
+            slave-label: daisy-baremetal
+            installer: daisy
+            <<: *euphrates
+        - virtual:
+            slave-label: daisy-virtual
+            installer: daisy
+            <<: *euphrates
 # netvirt 3rd party ci
         - virtual:
             slave-label: odl-netvirt-virtual
         - zte-pod1:
             slave-label: '{pod}'
             installer: fuel
-            <<: *danube
+            <<: *euphrates
         - zte-pod2:
             slave-label: '{pod}'
-            installer: fuel
+            installer: daisy
             <<: *master
+        - zte-pod2:
+            slave-label: '{pod}'
+            installer: daisy
+            <<: *euphrates
         - zte-pod3:
             slave-label: '{pod}'
-            installer: fuel
+            installer: daisy
             <<: *master
         - zte-pod3:
             slave-label: '{pod}'
-            installer: fuel
-            <<: *danube
+            installer: daisy
+            <<: *euphrates
 # PODs for verify jobs triggered by each patch upload
 #        - ool-virtual1:
 #            slave-label: '{pod}'
 
     wrappers:
         - build-name:
-            name: '$BUILD_NUMBER Suite: $FUNCTEST_SUITE_NAME Scenario: $DEPLOY_SCENARIO'
+            name: '$BUILD_NUMBER Suite: $FUNCTEST_MODE Scenario: $DEPLOY_SCENARIO'
         - timeout:
             timeout: '{job-timeout}'
             abort: true
     name: functest-daily-parameter
     parameters:
         - string:
-            name: FUNCTEST_SUITE_NAME
+            name: FUNCTEST_MODE
             default: 'daily'
             description: "Daily suite name to run"
 - parameter:
     name: functest-arm-daily-parameter
     parameters:
         - string:
-            name: FUNCTEST_SUITE_NAME
+            name: FUNCTEST_MODE
             default: 'arm-daily'
             description: "Daily suite name (Aarch64) to run"
 - parameter:
     name: functest-suite-parameter
     parameters:
+        - choice:
+            name: FUNCTEST_MODE
+            choices:
+                - 'tier'
+                - 'testcase'
+            default: 'tier'
+            description: "Test case or Tier to be run"
         - choice:
             name: FUNCTEST_SUITE_NAME
             choices:
                 - 'rally_sanity'
                 - 'odl'
                 - 'odl_netvirt'
-                - 'onos'
                 - 'snaps_smoke'
                 - 'refstack_defcore'
                 - 'promise'
                 - 'cloudify_vrouter'
                 - 'orchestra_openims'
                 - 'orchestra_clearwaterims'
+            default: 'connection_check'
+        - choice:
+            name: FUNCTEST_TIER
+            choices:
+                - 'healthcheck'
+                - 'smoke'
+                - 'features'
+                - 'components'
+                - 'vnf'
+            default: 'healthcheck'
         - string:
             name: TESTCASE_OPTIONS
             default: ''
         - 'functest-cleanup'
         - 'functest-daily'
         - 'functest-store-results'
+        - 'functest-exit'
 
 - builder:
     name: functest-arm-daily-builder
     name: functest-suite-builder
     builders:
         - 'functest-cleanup'
-        - 'set-functest-env'
+        - 'set-functest-env-alpine'
         - 'functest-suite'
         - 'functest-store-results'
         - 'functest-exit'
         - 'set-functest-env-alpine'
         - 'functest-daily'
         - 'functest-store-results'
+        - 'functest-exit'
 
 - builder:
     name: functest-daily
     name: functest-suite
     builders:
         - shell:
-            !include-raw: ./functest-suite.sh
+            !include-raw:
+                - ./functest-alpine.sh
 
 - builder:
     name: set-functest-env
index 00a5f13..a590d9f 100755 (executable)
@@ -2,11 +2,7 @@
 set +e
 
 [[ "$PUSH_RESULTS_TO_DB" == "true" ]] && flags+="-r"
-if [ "$BRANCH" == 'master' ]; then
-    cmd="run_tests -t all ${flags}"
-else
-    cmd="python ${FUNCTEST_REPO_DIR}/functest/ci/run_tests.py -t all ${flags}"
-fi
+cmd="run_tests -t all ${flags}"
 
 container_id=$(docker ps -a | grep opnfv/functest | awk '{print $1}' | head -1)
 docker exec $container_id $cmd
index c25e4ab..329db5b 100644 (file)
             branch: '{stream}'
             gs-pathname: ''
             disabled: false
-        - danube:
+        - euphrates:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
-            disabled: true
+            disabled: false
 
     phase:
         - 'unit-tests-and-docs':
index 9b7f135..469a577 100755 (executable)
@@ -10,11 +10,7 @@ global_ret_val=0
 
 tests=($(echo $FUNCTEST_SUITE_NAME | tr "," "\n"))
 for test in ${tests[@]}; do
-    if [ "$BRANCH" == 'master' ]; then
-        cmd="run_tests -t $test"
-    else
-        cmd="python /home/opnfv/repos/functest/functest/ci/run_tests.py -t $test"
-    fi
+    cmd="run_tests -t $test"
     docker exec $container_id $cmd
     let global_ret_val+=$?
 done
index 59d24cc..fe331e0 100644 (file)
         gs-pathname: ''
         docker-tag: 'latest'
         disabled: false
-    danube: &danube
-        stream: danube
+    euphrates: &euphrates
+        stream: euphrates
         branch: 'stable/{stream}'
         gs-pathname: '/{stream}'
         docker-tag: 'stable'
-        disabled: true
+        disabled: false
 #--------------------------------
 # POD, INSTALLER, AND BRANCH MAPPING
 #--------------------------------
         - baremetal:
             slave-label: fuel-baremetal
             installer: fuel
-            <<: *danube
+            <<: *euphrates
         - virtual:
             slave-label: fuel-virtual
             installer: fuel
-            <<: *danube
+            <<: *euphrates
 #--------------------------------
     jobs:
         - 'functest-{installer}-{pod}-weekly-{stream}'
index bb79dac..b116a85 100755 (executable)
@@ -106,12 +106,6 @@ if [ $(docker ps | grep "${FUNCTEST_IMAGE}:${DOCKER_TAG}" | wc -l) == 0 ]; then
     exit 1
 fi
 
-if [ "$BRANCH" == 'master' ]; then
-    cmd="prepare_env start"
-else
-    cmd="python ${FUNCTEST_REPO_DIR}/functest/ci/prepare_env.py start"
-fi
-
-
+cmd="prepare_env start"
 echo "Executing command inside the docker: ${cmd}"
 docker exec ${container_id} ${cmd}
index 2018dd5..8739a78 100644 (file)
       - string:
           name: BRIDGE
           default: 'br7'
-          description: 'pxe bridge for booting of Fuel master'
+          description: 'pxe bridge for booting of Daisy master'
 
 - parameter:
     name: 'zte-pod3-defaults'
           name: GIT_BASE
           default: https://gerrit.opnfv.org/gerrit/$PROJECT
           description: 'Git URL to use on this Jenkins Slave'
+      - string:
+          name: INSTALLER_IP
+          default: '10.20.0.2'
+          description: 'IP of the installer'
       - string:
           name: BRIDGE
           default: 'br0'
-          description: 'pxe bridge for booting of Fuel master'
+          description: 'pxe bridge for booting of Daisy master'
 
 - parameter:
     name: zte-pod4-defaults
index cc143bf..f51c497 100644 (file)
@@ -16,7 +16,7 @@
           branch: '{stream}'
           gs-pathname: ''
           disabled: false
-      - danube:
+      - euphrates:
           branch: 'stable/{stream}'
           gs-pathname: '/{stream}'
           disabled: false
index ac04962..b28efc3 100644 (file)
     # -------------------------------
     # BRANCH ANCHORS
     # -------------------------------
-    master: &master
-      stream: master
-      branch: '{stream}'
-      disabled: false
-      gs-pathname: ''
+    euphrates: &euphrates
+        stream: euphrates
+        branch: 'stable/{stream}'
+        disabled: false
+        gs-pathname: '/{stream}'
     # -------------------------------
     # POD, INSTALLER, AND BRANCH MAPPING
     # -------------------------------
     pod:
       - baremetal:
           slave-label: joid-baremetal
-          <<: *master
-      - virtual:
-          slave-label: joid-virtual
-          <<: *master
-      # -------------------------------
-      #        None-CI PODs
-      # -------------------------------
-      - orange-pod1:
-          slave-label: orange-pod1
-          <<: *master
-      - cengn-pod1:
-          slave-label: cengn-pod1
-          <<: *master
+          <<: *euphrates
+
     # -------------------------------
     # scenarios
     # -------------------------------
           auto-trigger-name: 'joid-{scenario}-{pod}-{stream}-trigger'
       - 'os-odl_l2-nofeature-ha':
           auto-trigger-name: 'daily-trigger-disabled'
-      - 'os-onos-nofeature-ha':
-          auto-trigger-name: 'daily-trigger-disabled'
       - 'os-odl_l2-nofeature-noha':
           auto-trigger-name: 'daily-trigger-disabled'
-      - 'os-onos-nofeature-noha':
-          auto-trigger-name: 'daily-trigger-disabled'
-      - 'os-onos-sfc-ha':
-          auto-trigger-name: 'daily-trigger-disabled'
       - 'os-ocl-nofeature-ha':
-          auto-trigger-name: 'daily-trigger-disabled'
+          auto-trigger-name: 'joid-{scenario}-{pod}-{stream}-trigger'
       - 'os-ocl-nofeature-noha':
-          auto-trigger-name: 'daily-trigger-disabled'
+          auto-trigger-name: 'joid-{scenario}-{pod}-{stream}-trigger'
       - 'k8-nosdn-nofeature-noha':
           auto-trigger-name: 'daily-trigger-disabled'
       - 'k8-nosdn-lb-noha':
               build-step-failure-threshold: 'never'
               failure-threshold: 'never'
               unstable-threshold: 'FAILURE'
-# 1.dovetail only master by now, not sync with A/B/C branches
+# 1.dovetail only euphrates by now, not sync with A/B/C branches
 # 2.here the stream means the SUT stream, dovetail stream is defined in
 #   its own job
 # 3.only debug testsuite here(includes basic testcase,
 ########################
 # trigger macros
 ########################
-# os-nosdn-nofeature-ha trigger - branch: master
+# os-nosdn-nofeature-ha trigger - branch: euphrates
 - trigger:
-    name: 'joid-os-nosdn-nofeature-ha-baremetal-master-trigger'
+    name: 'joid-os-nosdn-nofeature-ha-baremetal-euphrates-trigger'
     triggers:
       - timed: '5 2 * * *'
+# os-odl_l2-nofeature-ha trigger - branch: euphrates
 - trigger:
-    name: 'joid-os-nosdn-nofeature-ha-virtual-master-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'joid-os-nosdn-nofeature-ha-orange-pod1-master-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'joid-os-nosdn-nofeature-ha-cengn-pod1-master-trigger'
-    triggers:
-      - timed: ''
-# os-odl_l2-nofeature-ha trigger - branch: master
-- trigger:
-    name: 'joid-os-odl_l2-nofeature-ha-baremetal-master-trigger'
+    name: 'joid-os-odl_l2-nofeature-ha-baremetal-euphrates-trigger'
     triggers:
       - timed: '5 7 * * *'
+# os-nosdn-lxd-noha trigger - branch: euphrates
 - trigger:
-    name: 'joid-os-odl_l2-nofeature-ha-virtual-master-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'joid-os-odl_l2-nofeature-ha-orange-pod1-master-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'joid-os-odl_l2-nofeature-ha-cengn-pod1-master-trigger'
-    triggers:
-      - timed: ''
-# os-onos-nofeature-ha trigger - branch: master
-- trigger:
-    name: 'joid-os-onos-nofeature-ha-baremetal-master-trigger'
-    triggers:
-      - timed: '5 12 * * *'
-- trigger:
-    name: 'joid-os-onos-nofeature-ha-virtual-master-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'joid-os-onos-nofeature-ha-orange-pod1-master-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'joid-os-onos-nofeature-ha-cengn-pod1-master-trigger'
-    triggers:
-      - timed: ''
-# os-onos-sfc-ha trigger - branch: master
-- trigger:
-    name: 'joid-os-onos-sfc-ha-baremetal-master-trigger'
-    triggers:
-      - timed: '5 17 * * *'
-- trigger:
-    name: 'joid-os-onos-sfc-ha-virtual-master-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'joid-os-onos-sfc-ha-orange-pod1-master-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'joid-os-onos-sfc-ha-cengn-pod1-master-trigger'
-    triggers:
-      - timed: ''
-# os-nosdn-lxd-noha trigger - branch: master
-- trigger:
-    name: 'joid-os-nosdn-lxd-noha-baremetal-master-trigger'
+    name: 'joid-os-nosdn-lxd-noha-baremetal-euphrates-trigger'
     triggers:
       - timed: '5 22 * * *'
+# os-nosdn-lxd-ha trigger - branch: euphrates
 - trigger:
-    name: 'joid-os-nosdn-lxd-noha-virtual-master-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'joid-os-nosdn-lxd-noha-orange-pod1-master-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'joid-os-nosdn-lxd-noha-cengn-pod1-master-trigger'
-    triggers:
-      - timed: ''
-# os-nosdn-lxd-ha trigger - branch: master
-- trigger:
-    name: 'joid-os-nosdn-lxd-ha-baremetal-master-trigger'
+    name: 'joid-os-nosdn-lxd-ha-baremetal-euphrates-trigger'
     triggers:
       - timed: '5 10 * * *'
+# os-nosdn-nofeature-noha trigger - branch: euphrates
 - trigger:
-    name: 'joid-os-nosdn-lxd-ha-virtual-master-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'joid-os-nosdn-lxd-ha-orange-pod1-master-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'joid-os-nosdn-lxd-ha-cengn-pod1-master-trigger'
-    triggers:
-      - timed: ''
-# os-nosdn-nofeature-noha trigger - branch: master
-- trigger:
-    name: 'joid-os-nosdn-nofeature-noha-baremetal-master-trigger'
+    name: 'joid-os-nosdn-nofeature-noha-baremetal-euphrates-trigger'
     triggers:
       - timed: '5 4 * * *'
+# k8-nosdn-nofeature-noha trigger - branch: euphrates
 - trigger:
-    name: 'joid-os-nosdn-nofeature-noha-virtual-master-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'joid-os-nosdn-nofeature-noha-orange-pod1-master-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'joid-os-nosdn-nofeature-noha-cengn-pod1-master-trigger'
-    triggers:
-      - timed: ''
-# k8-nosdn-nofeature-noha trigger - branch: master
-- trigger:
-    name: 'joid-k8-nosdn-nofeature-noha-baremetal-master-trigger'
+    name: 'joid-k8-nosdn-nofeature-noha-baremetal-euphrates-trigger'
     triggers:
       - timed: '5 15 * * *'
+# k8-nosdn-lb-noha trigger - branch: euphrates
 - trigger:
-    name: 'joid-k8-nosdn-nofeature-noha-virtual-master-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'joid-k8-nosdn-nofeature-noha-orange-pod1-master-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'joid-k8-nosdn-nofeature-noha-cengn-pod1-master-trigger'
-    triggers:
-      - timed: ''
-# k8-nosdn-lb-noha trigger - branch: master
-- trigger:
-    name: 'joid-k8-nosdn-lb-noha-baremetal-master-trigger'
+    name: 'joid-k8-nosdn-lb-noha-baremetal-euphrates-trigger'
     triggers:
       - timed: '5 20 * * *'
+# k8-ovn-lb-noha trigger - branch: euphrates
 - trigger:
-    name: 'joid-k8-nosdn-lb-noha-virtual-master-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'joid-k8-nosdn-lb-noha-orange-pod1-master-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'joid-k8-nosdn-lb-noha-cengn-pod1-master-trigger'
-    triggers:
-      - timed: ''
-# k8-ovn-lb-noha trigger - branch: master
-- trigger:
-    name: 'joid-k8-ovn-lb-noha-baremetal-master-trigger'
+    name: 'joid-k8-ovn-lb-noha-baremetal-euphrates-trigger'
     triggers:
       - timed: '5 17 * * *'
+# os-nosdn-openbaton-ha trigger - branch: euphrates
 - trigger:
-    name: 'joid-k8-ovn-lb-noha-virtual-master-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'joid-k8-ovn-lb-noha-orange-pod1-master-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'joid-k8-ovn-lb-noha-cengn-pod1-master-trigger'
-    triggers:
-      - timed: ''
-
-# os-nosdn-openbaton-ha trigger - branch: master
-- trigger:
-    name: 'joid-os-nosdn-openbaton-ha-baremetal-master-trigger'
+    name: 'joid-os-nosdn-openbaton-ha-baremetal-euphrates-trigger'
     triggers:
       - timed: '5 25 * * *'
+# os-ocl-nofeature-ha trigger - branch: euphrates
 - trigger:
-    name: 'joid-os-nosdn-openbaton-ha-virtual-master-trigger'
-    triggers:
-      - timed: ''
-- trigger:
-    name: 'joid-os-nosdn-openbaton-ha-orange-pod1-master-trigger'
+    name: 'joid-os-ocl-nofeature-ha-baremetal-euphrates-trigger'
     triggers:
-      - timed: ''
+      - timed: '5 13 * * *'
+# os-ocl-nofeature-ha trigger - branch: euphrates
 - trigger:
-    name: 'joid-os-nosdn-openbaton-ha-cengn-pod1-master-trigger'
+    name: 'joid-os-ocl-nofeature-noha-baremetal-euphrates-trigger'
     triggers:
-      - timed: ''
+      - timed: '5 17 * * *'
index 5aafb09..0198179 100644 (file)
@@ -8,19 +8,19 @@
       - master:
           branch: '{stream}'
           gs-pathname: ''
-          disabled: false
-      - danube:
+      - euphrates:
           branch: 'stable/{stream}'
           gs-pathname: '/{stream}'
-          disabled: true
     #####################################
     # patch verification phases
     #####################################
     phase:
       - 'build':
           slave-label: 'opnfv-build-ubuntu'
+          disabled: false
       - 'test':
           slave-label: 'intel-pod10'
+          disabled: false
     #####################################
     # patch verification phases
     #####################################
index 573b098..aa4aa40 100644 (file)
@@ -11,6 +11,9 @@
       - master:
           branch: '{stream}'
           gs-pathname: ''
+      - euphrates:
+          branch: 'stable/{stream}'
+          gs-pathname: '/{stream}'
 
 - job-template:
     name: 'moon-verify-{stream}'
index d0dd052..5d7526b 100644 (file)
@@ -92,6 +92,7 @@
               current-parameters: false
               predefined-parameters: |
                 DEPLOY_SCENARIO=os-nosdn-openo-ha
+                FUNCTEST_MODE=testcase
                 FUNCTEST_SUITE_NAME=opera_vims
               node-parameters: true
               kill-phase-on: NEVER
index 74c997c..7c2deae 100644 (file)
@@ -93,6 +93,7 @@
               current-parameters: false
               predefined-parameters: |
                 DEPLOY_SCENARIO=os-nosdn-openbaton-ha
+                FUNCTEST_MODE=testcase
                 FUNCTEST_SUITE_NAME=orchestra_ims
               node-parameters: true
               kill-phase-on: NEVER
index a4c5865..ca4cfee 100644 (file)
@@ -81,6 +81,7 @@
               current-parameters: false
               predefined-parameters: |
                 DEPLOY_SCENARIO=os-ovn-nofeature-ha
+                FUNCTEST_MODE=testcase
                 FUNCTEST_SUITE_NAME=ovn4nfv_test_suite
               node-parameters: true
               kill-phase-on: NEVER
index 23e441a..4c336d1 100644 (file)
           branch: '{stream}'
           gs-pathname: ''
           disabled: false
+      - euphrates:
+          branch: 'stable/{stream}'
+          gs-pathname: '/{stream}'
+          disabled: false
 
 ################################
 ## job templates
index b63782b..cd77d0a 100644 (file)
       branch: '{stream}'
       gs-pathname: ''
       docker-tag: latest
+    euphrates: &euphrates
+      stream: euphrates
+      branch: 'stable/{stream}'
+      gs-pathname: '{stream}'
+      docker-tag: 'stable'
 
     # -------------------------------
     # JOB VARIABLES
           installer: apex
           pod: zte-pod4
           <<: *master
+      - compute:
+          installer: apex
+          pod: zte-pod4
+          <<: *euphrates
+      - storage:
+          installer: apex
+          pod: zte-pod4
+          <<: *euphrates
 
     # -------------------------------
     # JOB LIST
@@ -40,6 +53,7 @@
 - job-template:
     name: 'qtip-{qpi}-{installer}-{stream}'
     disabled: false
+
     parameters:
       - project-parameter:
           project: '{project}'
       - string:
           name: TEST_SUITE
           default: '{qpi}'
+      - string:
+          name: TESTAPI_URL
+          default: 'http://testresults.opnfv.org/test/api/v1'
+      - string:
+          name: OPNFV_RELEASE
+          default: '{stream}'
     scm:
       - git-scm
 
+    wrappers:
+      - timeout:
+          elastic-percentage: 150
+          elastic-default-timeout: 30
+          abort: true
+          type: elastic
+      - timestamps
+
     triggers:
       - 'qtip-daily'
 
index 26a9706..047d7f2 100644 (file)
@@ -8,14 +8,14 @@
     project: qtip
     jobs:
       - 'qtip-verify-{stream}'
-      - 'qtip-review-notebook-{stream}'
-      - 'qtip-merge-{stream}'
+      - 'qtip-verify-notebook-{stream}'
+      - 'qtip-merged-notebook-{stream}'
     stream:
       - master:
           branch: '{stream}'
           gs-pathname: ''
           disabled: false
-      - danube:
+      - euphrates:
           branch: 'stable/{stream}'
           gs-pathname: '/{stream}'
           disabled: false
@@ -69,7 +69,7 @@
 
 # upload juypter notebook to artifacts for review
 - job-template:
-    name: 'qtip-review-notebook-{stream}'
+    name: 'qtip-verify-notebook-{stream}'
 
     disabled: '{obj:disabled}'
 
               disable-strict-forbidden-file-verification: 'true'
               file-paths:
                 - compare-type: ANT
-                  pattern: 'examples/**'
+                  pattern: '**/*.ipynb'
 
     builders:
       - upload-under-review-notebooks-to-opnfv-artifacts
       - report-build-result-to-gerrit
 
 - job-template:
-    name: 'qtip-merge-{stream}'
+    name: 'qtip-merged-notebook-{stream}'
 
     disabled: '{obj:disabled}'
 
                   branch-pattern: '**/{branch}'
               file-paths:
                 - compare-type: ANT
-                  pattern: examples/**
+                  pattern: '**/*ipynb'
 
     builders:
       - remove-old-docs-from-opnfv-artifacts
           export PATH=$PATH:/usr/local/bin/
 
           [[ $GERRIT_CHANGE_NUMBER =~ .+ ]]
-          [[ -d examples ]] || exit 0
 
           echo
           echo "###########################"
           gs_path="$gs_base/$GERRIT_CHANGE_NUMBER"
           local_path="upload/$GERRIT_CHANGE_NUMBER"
 
-          mkdir -p upload
-          cp -r examples "$local_path"
+          mkdir -p $local_path
+
+          git diff HEAD~1 --name-only | grep -E ".+\.ipynb$" | xargs -I '{}' cp '{}' $local_path
           gsutil -m cp -r "$local_path" "gs://$gs_base/"
 
           echo "Document link(s):" >> gerrit_comment.txt
index 21d5698..7f2574e 100644 (file)
         stream: master
         branch: '{stream}'
         disabled: false
-    danube: &danube
-        stream: danube
+    euphrates: &euphrates
+        stream: euphrates
         branch: 'stable/{stream}'
         disabled: false
     functest-arm-receivers: &functest-arm-receivers
         receivers: >
             cristina.pauna@enea.com
             alexandru.avadanii@enea.com
+            delia.popescu@enea.com
     dovetail-arm-receivers: &dovetail-arm-receivers
         receivers: >
             cristina.pauna@enea.com
@@ -34,6 +35,7 @@
             alexandru.avadanii@enea.com
             alexandru.nemes@enea.com
             catalina.focsa@enea.com
+            delia.popescu@enea.com
     other-receivers: &other-receivers
         receivers: ''
 
             project: 'yardstick'
             <<: *master
             <<: *yardstick-arm-receivers
-        # projects with jobs for stable
+        # projects with jobs for stable/euphrates
+        - 'functest':
+            project: 'functest'
+            <<: *euphrates
+            <<: *functest-arm-receivers
+        - 'dovetail':
+            project: 'dovetail'
+            <<: *euphrates
+            <<: *dovetail-arm-receivers
+        - 'storperf-master':
+            project: 'storperf'
+            dockerdir: 'docker/storperf-master'
+            dockerfile: 'Dockerfile'
+            docker_repo_name: 'opnfv/storperf-master'
+            arch_tag: 'aarch64'
+            <<: *euphrates
+            <<: *storperf-arm-receivers
+        - 'storperf-graphite':
+            project: 'storperf'
+            dockerdir: 'docker/storperf-graphite'
+            dockerfile: 'Dockerfile'
+            docker_repo_name: 'opnfv/storperf-graphite'
+            arch_tag: 'aarch64'
+            <<: *euphrates
+            <<: *storperf-arm-receivers
+        - 'storperf-httpfrontend':
+            project: 'storperf'
+            dockerdir: 'docker/storperf-httpfrontend'
+            dockerfile: 'Dockerfile'
+            docker_repo_name: 'opnfv/storperf-httpfrontend'
+            arch_tag: 'aarch64'
+            <<: *euphrates
+            <<: *storperf-arm-receivers
+        - 'storperf-reporting':
+            project: 'storperf'
+            dockerdir: 'docker/storperf-reporting'
+            dockerfile: 'Dockerfile'
+            docker_repo_name: 'opnfv/storperf-reporting'
+            arch_tag: 'aarch64'
+            <<: *euphrates
+            <<: *storperf-arm-receivers
+        - 'storperf-swaggerui':
+            project: 'storperf'
+            dockerdir: 'docker/storperf-swaggerui'
+            dockerfile: 'Dockerfile'
+            docker_repo_name: 'opnfv/storperf-swaggerui'
+            arch_tag: 'aarch64'
+            <<: *euphrates
+            <<: *storperf-arm-receivers
+        - 'yardstick':
+            project: 'yardstick'
+            <<: *euphrates
+            <<: *yardstick-arm-receivers
 
     jobs:
         - '{dockerrepo}-docker-build-arm-push-{stream}'
             default: "{arch_tag}"
             description: "If set, this value will be added to the docker image tag"
 
+    properties:
+        - throttle:
+            max-per-node: 1
+            option: 'project'
+
     scm:
         - git-scm
 
index b03505e..298d2af 100644 (file)
@@ -18,8 +18,8 @@ echo "--------------------------------------------------------"
 echo
 
 count=30 # docker build jobs might take up to ~30 min
-while [[ -n `ps -ef|grep 'docker build'|grep -v grep` ]]; do
-    echo "Build in progress. Waiting..."
+while [[ -n `ps -ef| grep 'docker build' | grep $DOCKER_REPO_NAME | grep -v grep` ]]; do
+    echo "Build or cleanup of $DOCKER_REPO_NAME in progress. Waiting..."
     sleep 60
     count=$(( $count - 1 ))
     if [ $count -eq 0 ]; then
index 6495915..1a3db3a 100644 (file)
         stream: danube
         branch: 'stable/{stream}'
         disabled: false
+    euphrates: &euphrates
+        stream: euphrates
+        branch: 'stable/{stream}'
+        disabled: false
     functest-receivers: &functest-receivers
         receivers: >
-            jose.lausuch@ericsson.com morgan.richomme@orange.com
+            jalausuch@suse.com morgan.richomme@orange.com
             cedric.ollivier@orange.com feng.xiaowei@zte.com.cn
-            yaohelan@huawei.com helanyao@gmail.com
-            juha.kosonen@nokia.com
+            juha.kosonen@nokia.com wangwulin@huawei.com
     storperf-receivers: &storperf-receivers
         receivers: >
             mark.beierl@emc.com
             project: 'yardstick'
             <<: *master
             <<: *other-receivers
-        # projects with jobs for stable
+        # projects with jobs for Danube
+        - 'qtip':
+            project: 'qtip'
+            <<: *euphrates
+            <<: *other-receivers
+        - 'yardstick':
+            project: 'yardstick'
+            <<: *euphrates
+            <<: *other-receivers
+        # projects with jobs for euphrates
         - 'bottlenecks':
             project: 'bottlenecks'
-            <<: *danube
+            <<: *euphrates
             <<: *other-receivers
         - 'functest':
             project: 'functest'
-            <<: *danube
+            <<: *euphrates
             <<: *functest-receivers
-        - 'qtip':
-            project: 'qtip'
-            <<: *danube
-            <<: *other-receivers
-        - 'storperf':
+        - 'storperf-master':
             project: 'storperf'
-            <<: *danube
-            <<: *other-receivers
-        - 'yardstick':
-            project: 'yardstick'
-            <<: *danube
+            dockerdir: 'docker/storperf-master'
+            arch_tag: 'x86_64'
+            <<: *euphrates
+            <<: *storperf-receivers
+        - 'storperf-graphite':
+            project: 'storperf'
+            dockerdir: 'docker/storperf-graphite'
+            arch_tag: 'x86_64'
+            <<: *euphrates
+            <<: *storperf-receivers
+        - 'storperf-httpfrontend':
+            project: 'storperf'
+            dockerdir: 'docker/storperf-httpfrontend'
+            arch_tag: 'x86_64'
+            <<: *euphrates
+            <<: *storperf-receivers
+        - 'storperf-reporting':
+            project: 'storperf'
+            dockerdir: 'docker/storperf-reporting'
+            arch_tag: 'x86_64'
+            <<: *euphrates
+            <<: *storperf-receivers
+        - 'storperf-swaggerui':
+            project: 'storperf'
+            dockerdir: 'docker/storperf-swaggerui'
+            arch_tag: 'x86_64'
+            <<: *euphrates
+            <<: *storperf-receivers
+        - 'nfvbench':
+            project: 'nfvbench'
+            <<: *euphrates
             <<: *other-receivers
 
     jobs:
             default: "{arch_tag}"
             description: "If set, this value will be added to the docker image tag as a prefix"
 
+    properties:
+        - throttle:
+            max-per-node: 1
+            option: 'project'
+
     scm:
         - git-scm
 
index 682a8be..a6eaa0f 100755 (executable)
@@ -8,7 +8,7 @@
 # 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 -or -name *\.yaml); do
+for x in $(find . -name *\.yml -or -name *\.yaml -or -name *\.sh); do
 
   if LC_ALL=C grep -q '[^[:print:][:space:]]' "$x"; then
     echo "file "$x" contains non-ascii characters"
diff --git a/jjb/securedlab/check-jinja2.sh b/jjb/securedlab/check-jinja2.sh
deleted file mode 100755 (executable)
index 4c1927d..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-set +x
-set -o errexit
-for lab_configs in $(find labs/ -name 'pod*.yaml'); do
-        while IFS= read -r jinja_templates; do
-          echo "./utils/generate_config.py -y $lab_configs -j $jinja_templates"
-          ./utils/generate_config.py -y $lab_configs -j $jinja_templates
-        done < <(find installers/ -name '*.j2')
-done
index 430ced5..155be17 100644 (file)
@@ -1,5 +1,6 @@
+---
 ########################
-# Job configuration to validate jninja2 files
+# Job configuration to validate jinja2 files
 ########################
 - project:
 
@@ -8,15 +9,15 @@
     project: 'securedlab'
 
     jobs:
-        - 'validate-jinja2-templates-{stream}'
+      - 'validate-jinja2-templates-{stream}'
 
     stream:
-        - master:
-            branch: '{stream}'
-            disabled: false
-        - danube:
-            branch: 'stable/{stream}'
-            disabled: false
+      - master:
+          branch: '{stream}'
+          disabled: false
+      - euphrates:
+          branch: 'stable/{stream}'
+          disabled: false
 
 ########################
 # job templates
     concurrent: true
 
     parameters:
-        - project-parameter:
-            project: $GERRIT_PROJECT
-            branch: '{branch}'
-        - node:
-            name: SLAVE_NAME
-            description: Slave to execute jnija template test
-            default-slaves:
-                - lf-build1
-            allowed-multiselect: true
-            ignore-offline-nodes: true
+      - project-parameter:
+          project: $GERRIT_PROJECT
+          branch: '{branch}'
+      - node:
+          name: SLAVE_NAME
+          description: Slave to execute jnija template test
+          default-slaves:
+            - lf-build1
+          allowed-multiselect: true
+          ignore-offline-nodes: true
 
     scm:
-        - git-scm-gerrit
+      - git-scm-gerrit
 
     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: 'REG_EXP'
-                project-pattern: '{project}'
-                branches:
-                  - branch-compare-type: 'ANT'
-                    branch-pattern: '**/{branch}'
-                file-paths:
-                  - compare-type: ANT
-                    pattern: 'utils/generate_config.yml'
-                  - compare-type: ANT
-                    pattern: '**/*.jinja2'
-                  - compare-type: ANT
-                    pattern: '**/*.yaml'
-            skip-vote:
-                successful: true
-                failed: true
-                unstable: true
-                notbuilt: true
+      - 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: 'REG_EXP'
+              project-pattern: '{project}'
+              branches:
+                - branch-compare-type: 'ANT'
+                  branch-pattern: '**/{branch}'
+              file-paths:
+                - compare-type: ANT
+                  pattern: '**/*.yaml'
+                - compare-type: ANT
+                  pattern: 'check-jinja2.sh'
+          skip-vote:
+            successful: true
+            failed: true
+            unstable: true
+            notbuilt: true
 
     builders:
-        - check-jinja
+      - check-jinja
 
 - builder:
     name: check-jinja
     builders:
-        - shell:
-            !include-raw-escape: ./check-jinja2.sh
+      - shell: |
+          $WORKSPACE/check-jinja2.sh
index 379fe79..bf60ff5 100644 (file)
             branch: '{stream}'
             gs-pathname: ''
             disabled: false
-        - danube:
+        - euphrates:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
-            disabled: true
+            disabled: false
 
 - job-template:
     name: 'sfc-verify-{stream}'
@@ -67,4 +67,4 @@
     name: sfc-unit-tests
     builders:
         - shell: |
-            cd $WORKSPACE && yamllint $(git ls-tree -r HEAD --name-only  | egrep 'yml$|yaml$')
+            cd $WORKSPACE && yamllint $(git ls-tree -r HEAD --name-only  | egrep 'yml$|yaml$' | egrep -v 'scenarios')
index e849e29..bf04712 100644 (file)
         branch: '{stream}'
         gs-pathname: ''
         docker-tag: 'latest'
+    euphrates: &euphrates
+        stream: euphrates
+        branch: 'stable/{stream}'
+        gs-pathname: '/{stream}'
+        disabled: false
+        docker-tag: 'stable'
 #--------------------------------
 # POD, INSTALLER, AND BRANCH MAPPING
 #--------------------------------
             slave-label: apex-baremetal-master
             installer: apex
             <<: *master
+        - baremetal:
+            slave-label: apex-baremetal-master
+            installer: apex
+            <<: *euphrates
 ## armband CI PODs
 #        - armband-baremetal:
 #            slave-label: armband-baremetal
index f99ceea..0b01fd1 100644 (file)
             gs-pathname: ''
             disabled: false
             docker-tag: 'latest'
+        - euphrates:
+            branch: 'stable/{stream}'
+            gs-pathname: '/{stream}'
+            disabled: false
+            docker-tag: 'stable'
 #--------------------------------
 # patch verification phases
 #--------------------------------
             zoom-coverage-chart: "true"
             targets:
                 - files:
-                    healthy: 10
-                    unhealthy: 20
-                    failing: 30
+                    healthy: 60
+                    unhealthy: 50
+                    failing: 40
                 - method:
-                    healthy: 50
-                    unhealthy: 40
-                    failing: 30
+                    healthy: 60
+                    unhealthy: 50
+                    failing: 40
         - email-jenkins-admins-on-failure
 - publisher:
     name: 'storperf-verify-build-x86_64-publishers-macro'
index 307becf..caae853 100644 (file)
@@ -12,7 +12,7 @@
             gs-pathname: ''
             disabled: false
             docker-tag: 'latest'
-        - danube:
+        - euphrates:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
             disabled: false
index d05f4c1..bab8b24 100644 (file)
@@ -16,7 +16,7 @@
           gs-pathname: ''
           disabled: false
           slave-label: 'opnfv-build-ubuntu'
-      - danube:
+      - euphrates:
           branch: 'stable/{stream}'
           gs-pathname: '/{stream}'
           disabled: false
index 86910ac..048825e 100644 (file)
                   predefined-parameters: |
                     DISTRO={distro}
                     DEPLOY_SCENARIO=os-nosdn-nofeature-noha
-                    FUNCTEST_SUITE_NAME=healthcheck
+                    FUNCTEST_MODE=tier
+                    FUNCTEST_TIER=healthcheck
                   node-parameters: true
                   kill-phase-on: NEVER
                   abort-all-job: false
         - string:
             name: OPNFV_RELENG_DEV_PATH
             default: $WORKSPACE/releng-xci
+        - string:
+            name: FUNCTEST_MODE
+            default: 'tier'
         - string:
             name: FUNCTEST_SUITE_NAME
             default: 'healthcheck'
index 64659da..7d95429 100644 (file)
         - string:
             name: INSTALLER_TYPE
             default: 'osa'
+        - string:
+            name: FUNCTEST_MODE
+            default: 'daily'
         - string:
             name: FUNCTEST_SUITE_NAME
             default: 'daily'
index 324bfd1..17519ac 100644 (file)
 # distros
 #--------------------------------
     distro:
-        - 'xenial':
+        - ubuntu:
             disabled: false
-        - 'centos7':
-            disabled: true
-        - 'suse':
-            disabled: true
+            successful: false
+            failed: false
+            unstable: false
+            notbuilt: false
+        - centos:
+            disabled: false
+            successful: true
+            failed: true
+            unstable: true
+            notbuilt: true
+        - opensuse:
+            disabled: false
+            successful: false
+            failed: false
+            unstable: false
+            notbuilt: false
 #--------------------------------
 # type
 #--------------------------------
@@ -34,7 +46,7 @@
 #--------------------------------
     jobs:
         - 'xci-verify-{distro}-{type}-{stream}'
-        - 'xci-verify-{phase}-{type}-{stream}'
+        - 'xci-verify-{distro}-{phase}-{type}-{stream}'
 #--------------------------------
 # job templates
 #--------------------------------
         - build-blocker:
             use-build-blocker: true
             blocking-jobs:
-                - 'xci-verify-.*'
-                - 'bifrost-verify-.*'
-                - 'bifrost-periodic-.*'
-                - 'osa-verify-.*'
-                - 'osa-periodic-.*'
+                - 'xci-verify-{distro}-.*'
+                - 'bifrost-verify-{distro}-.*'
+                - 'bifrost-periodic-{distro}-.*'
+                - 'osa-verify-{distro}-.*'
+                - 'osa-periodic-{distro}-.*'
             block-level: 'NODE'
+        - throttle:
+            max-per-node: 2
+            max-total: 10
+            categories:
+                - xci-verify-virtual
+            option: category
 
     wrappers:
         - ssh-agent-wrapper
                   - compare-type: ANT
                     pattern: 'docs/**'
             readable-message: true
+            skip-vote:
+                successful: '{obj:successful}'
+                failed: '{obj:failed}'
+                unstable: '{obj:unstable}'
+                notbuilt: '{obj:notbuilt}'
 
     parameters:
         - project-parameter:
             branch: '{branch}'
         - label:
             name: SLAVE_LABEL
-            default: 'xci-virtual-{distro}'
+            default: 'xci-virtual'
         - string:
             name: CLEAN_DIB_IMAGES
             default: 'true'
             name: deploy
             condition: SUCCESSFUL
             projects:
-                - name: 'xci-verify-deploy-{type}-{stream}'
+                - name: 'xci-verify-{distro}-deploy-{type}-{stream}'
                   current-parameters: true
                   predefined-parameters: |
                     DISTRO={distro}
                     DEPLOY_SCENARIO=os-nosdn-nofeature-noha
                     CLEAN_DIB_IMAGES=$CLEAN_DIB_IMAGES
+                    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: FAILURE
                   abort-all-job: true
             name: healthcheck
             condition: SUCCESSFUL
             projects:
-                - name: 'xci-verify-healthcheck-{type}-{stream}'
+                - name: 'xci-verify-{distro}-healthcheck-{type}-{stream}'
                   current-parameters: true
                   predefined-parameters: |
                     DISTRO={distro}
                     DEPLOY_SCENARIO=os-nosdn-nofeature-noha
                     CLEAN_DIB_IMAGES=$CLEAN_DIB_IMAGES
-                    FUNCTEST_SUITE_NAME=healthcheck
+                    FUNCTEST_MODE=tier
+                    FUNCTEST_TIER=healthcheck
+                    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
                   abort-all-job: true
 
 - job-template:
-    name: 'xci-verify-{phase}-{type}-{stream}'
+    name: 'xci-verify-{distro}-{phase}-{type}-{stream}'
 
     disabled: false
 
         - build-blocker:
             use-build-blocker: true
             blocking-jobs:
-                - 'xci-verify-deploy-.*'
-                - 'xci-verify-healthcheck-.*'
                 - 'bifrost-verify-.*'
                 - 'bifrost-periodic-.*'
                 - 'osa-verify-.*'
             block-level: 'NODE'
 
     parameters:
+        - string:
+            name: PROJECT
+            default: 'releng-xci'
         - string:
             name: DISTRO
-            default: 'xenial'
+            default: 'ubuntu'
         - string:
             name: DEPLOY_SCENARIO
             default: 'os-nosdn-nofeature-noha'
+        - string:
+            name: FUNCTEST_MODE
+            default: 'tier'
         - string:
             name: FUNCTEST_SUITE_NAME
             default: 'healthcheck'
                 exit 0
             fi
 
-            # for some reason, the PATH is not set correctly
-            # setting PATH for ansible stuff
-            export PATH=/home/jenkins/.local/bin:$PATH
+            cd $WORKSPACE
 
-            cd $WORKSPACE/xci
+            # The start-new-vm.sh script will copy the entire releng-xci directory
+            # so lets prepare the test script now so it can be copied by the script.
+            # Please do not move it elsewhere or you would have to move it to the VM
+            # yourself.
+            cat > xci_test.sh<<EOF
+            #!/bin/bash
+            export DISTRO=$DISTRO
+            export DEPLOY_SCENARIO=$DEPLOY_SCENARIO
+            export FUNCTEST_MODE=$FUNCTEST_MODE
+            export FUNCTEST_SUITE_NAME=$FUNCTEST_SUITE_NAME
+            export XCI_FLAVOR=$XCI_FLAVOR
+            export CLEAN_DIB_IMAGES=$CLEAN_DIB_IMAGES
+            export OPNFV_RELENG_DEV_PATH=/home/devuser/releng-xci/
+            export INSTALLER_TYPE=$INSTALLER_TYPE
+            export GIT_BASE=$GIT_BASE
+            export JENKINS_HOME=$JENKINS_HOME
+
+            cd xci
             ./xci-deploy.sh
+            EOF
+            chmod a+x xci_test.sh
+
+            ./xci/scripts/vm/start-new-vm.sh $DISTRO
+        - shell: |
+            #!/bin/bash
+
+            # skip the deployment if the patch doesn't impact the deployment
+            if [[ "$GERRIT_TOPIC" =~ 'skip-verify' ]]; then
+                echo "Skipping the deployment!"
+                exit 0
+            fi
+
+            ssh ${DISTRO}_xci_vm "cd releng-xci && ./xci_test.sh"
 
 
 - builder:
             fi
 
             echo "Hello World!"
+        - shell: |
+            #!/bin/bash
+
+            # skip the deployment if the patch doesn't impact the deployment
+            if [[ "$GERRIT_TOPIC" =~ 'skip-verify' ]]; then
+                echo "Skipping the deployment!"
+                exit 0
+            fi
+
+            sudo virsh destroy ${DISTRO}_xci_vm
+            sudo virsh undefine ${DISTRO}_xci_vm
 
 # this will be enabled once the xci is prepared
 #- builder:
index 8b3980f..8841e09 100755 (executable)
@@ -28,10 +28,13 @@ if [[ ${INSTALLER_TYPE} == 'joid' ]]; then
         # If dev lab, credentials may not be the default ones, just provide a path to put them into docker
         # replace the default one by the customized one provided by jenkins config
     fi
-elif [[ ${INSTALLER_TYPE} == 'compass' && ${BRANCH} == 'master' ]]; then
+elif [[ ${INSTALLER_TYPE} == 'compass' ]]; then
     cacert_file_vol="-v ${HOME}/os_cacert:/etc/yardstick/os_cacert"
     echo "export OS_CACERT=/etc/yardstick/os_cacert" >> ${HOME}/opnfv-openrc.sh
     rc_file_vol="-v ${HOME}/opnfv-openrc.sh:/etc/yardstick/openstack.creds"
+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"
 else
     rc_file_vol="-v ${HOME}/opnfv-openrc.sh:/etc/yardstick/openstack.creds"
 fi
@@ -47,6 +50,10 @@ envs="-e INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP} \
     -e YARDSTICK_BRANCH=${BRANCH} -e BRANCH=${BRANCH} \
     -e DEPLOY_SCENARIO=${DEPLOY_SCENARIO}"
 
+if [[ "${INSTALLER_TYPE}" == 'fuel' ]]; then
+    envs+=" -e SSH_KEY=/root/.ssh/mcp.rsa"
+fi
+
 # Pull the image with correct tag
 DOCKER_REPO='opnfv/yardstick'
 if [ "$(uname -m)" = 'aarch64' ]; then
index 7777a9a..eb070e3 100644 (file)
@@ -27,11 +27,10 @@ class OVSLogger(object):
         if not os.path.exists(dirpath):
             os.makedirs(dirpath)
 
-    def __ssh_host(self, ssh_conn, host_prefix='10.20.0'):
+    def __ssh_host(self, ssh_conn):
         try:
-            _, stdout, _ = ssh_conn.exec_command('hostname -I')
-            hosts = stdout.readline().strip().split(' ')
-            found_host = [h for h in hosts if h.startswith(host_prefix)][0]
+            _, stdout, _ = ssh_conn.exec_command('hostname')
+            found_host = stdout.readline()
             return found_host
         except Exception as e:
             logger.error(e)
@@ -98,10 +97,18 @@ class OVSLogger(object):
 
     def dump_ovs_logs(self, controller_clients, compute_clients,
                       related_error=None, timestamp=None):
+        """
+        delete controller_clients argument because
+        that was producing an error in XCI installer.
+
+        For more information see:
+        TODO: https://jira.opnfv.org/browse/RELENG-314
+        """
+        del controller_clients
         if timestamp is None:
             timestamp = time.strftime("%Y%m%d-%H%M%S")
-
-        clients = controller_clients + compute_clients
+        # clients = controller_clients + compute_clients
+        clients = compute_clients
         for client in clients:
             self.ofctl_dump_flows(client, timestamp=timestamp)
             self.vsctl_show(client, timestamp=timestamp)
index 0873a68..ac75950 100755 (executable)
@@ -167,11 +167,7 @@ elif [ "$installer_type" == "apex" ]; then
     sudo scp $ssh_options root@$installer_ip:/home/stack/overcloudrc.v3 $dest_path
 
 elif [ "$installer_type" == "compass" ]; then
-    if [ "${BRANCH}" == "master" ]; then
-        sudo docker cp compass-tasks:/opt/openrc $dest_path &> /dev/null
-        sudo chown $(whoami):$(whoami) $dest_path
-        sudo docker cp compass-tasks:/opt/os_cacert $os_cacert
-    else
+    if [ "${BRANCH}" == "stable/danube" ]; then
         verify_connectivity $installer_ip
         controller_ip=$(sshpass -p'root' ssh 2>/dev/null $ssh_options root@${installer_ip} \
             'mysql -ucompass -pcompass -Dcompass -e"select *  from cluster;"' \
@@ -201,6 +197,10 @@ elif [ "$installer_type" == "compass" ]; then
         fi
         info "public_ip: $public_ip"
         swap_to_public $public_ip
+    else
+        sudo docker cp compass-tasks:/opt/openrc $dest_path &> /dev/null
+        sudo chown $(whoami):$(whoami) $dest_path
+        sudo docker cp compass-tasks:/opt/os_cacert $os_cacert
     fi
 
 elif [ "$installer_type" == "joid" ]; then
diff --git a/utils/test/opts/one_click_deploy.py b/utils/test/opts/one_click_deploy.py
new file mode 100644 (file)
index 0000000..0748270
--- /dev/null
@@ -0,0 +1,67 @@
+import argparse
+import os
+
+from jinja2 import Environment
+
+DOCKER_COMPOSE_FILE = './docker-compose.yml'
+DOCKER_COMPOSE_TEMPLATE = """
+version: '2'
+services:
+  mongo:
+    image: mongo:3.2.1
+    container_name: opnfv-mongo
+  testapi:
+    image: opnfv/testapi:latest
+    container_name: opnfv-testapi
+    environment:
+      - mongodb_url=mongodb://mongo:27017/
+      - base_url={{ vars.base_url }}
+    ports:
+      - "{{ vars.testapi_port }}:8000"
+    links:
+      - mongo
+  reporting:
+    image: opnfv/reporting:latest
+    container_name: opnfv-reporting
+    ports:
+      - "{{ vars.reporting_port }}:8000"
+"""
+
+
+def render_docker_compose(testapi_port, reporting_port, testapi_base_url):
+    vars = {
+        "testapi_port": testapi_port,
+        "reporting_port": reporting_port,
+        "base_url": testapi_base_url,
+    }
+    yml = Environment().from_string(DOCKER_COMPOSE_TEMPLATE).render(vars=vars)
+    with open(DOCKER_COMPOSE_FILE, 'w') as f:
+        f.write(yml)
+        f.close()
+
+
+def main(args):
+    render_docker_compose(args.testapi_port,
+                          args.reporting_port,
+                          args.testapi_base_url)
+    os.system('docker-compose -f {} up -d'.format(DOCKER_COMPOSE_FILE))
+
+
+if __name__ == '__main__':
+    parser = argparse.ArgumentParser(description='Backup MongoDBs')
+    parser.add_argument('-tp', '--testapi-port',
+                        type=int,
+                        required=False,
+                        default=8082,
+                        help='testapi exposed port')
+    parser.add_argument('-tl', '--testapi-base-url',
+                        type=str,
+                        required=True,
+                        help='testapi exposed base-url')
+    parser.add_argument('-rp', '--reporting-port',
+                        type=int,
+                        required=False,
+                        default=8084,
+                        help='reporting exposed port')
+
+    main(parser.parse_args())
similarity index 92%
rename from utils/test/testapi/tools/watchdog/docker_watch.sh
rename to utils/test/opts/watchdog.sh
index f1d8946..51868d7 100644 (file)
@@ -27,7 +27,7 @@ declare -A urls=( ["testapi"]="http://testresults.opnfv.org/test/" \
 ### Functions related to checking.
 
 function is_deploying() {
-    xml=$(curl -m10 "https://build.opnfv.org/ci/job/${1}-automate-master/lastBuild/api/xml?depth=1")
+    xml=$(curl -m10 "https://build.opnfv.org/ci/job/${1}-automate-docker-deploy-master/lastBuild/api/xml?depth=1")
     building=$(grep -oPm1 "(?<=<building>)[^<]+" <<< "$xml")
     if [[ $building == "false" ]]
     then
@@ -64,12 +64,11 @@ function check_modules() {
     failed_modules=()
     for module in "${modules[@]}"
     do
-        if is_deploying $module; then
-            continue
-        fi
         if ! check_connectivity $module "${urls[$module]}"; then
-            echo -e "$module failed"
-            failed_modules+=($module)
+            if ! is_deploying $module; then
+                echo -e "$module failed"
+                failed_modules+=($module)
+            fi
         fi
     done
     if [ ! -z "$failed_modules" ]; then
@@ -114,13 +113,11 @@ function start_containers_fix() {
 
 function start_container_fix() {
     echo -e "Starting a container $module"
-    sudo docker stop $module
-    sudo docker start $module
+    sudo docker restart $module
     sleep 5
     if ! check_connectivity $module "${urls[$module]}"; then
         echo -e "Starting an old container $module_old"
-        sudo docker stop $module
-        sudo docker start $module"_old"
+        sudo docker restart $module"_old"
         sleep 5
     fi
 }
index f235790..07440ad 100644 (file)
@@ -22,7 +22,7 @@ ARG BRANCH=master
 
 ENV HOME /home/opnfv
 ENV working_dir ${HOME}/releng/utils/test/reporting
-ENV CONFIG_REPORTING_YAML ${working_dir}/reporting.yaml
+ENV CONFIG_REPORTING_YAML ${working_dir}/reporting/reporting.yaml
 
 WORKDIR ${HOME}
 # Packaged dependencies
index 95baf0e..66bd7e4 100644 (file)
@@ -15,7 +15,7 @@ server {
     }
 
     location /api/ {
-        http_pass http://backends/;
+        proxy_pass http://backends/;
     }
 
     location /display/ {
index 6cc7a7c..2cb438d 100755 (executable)
@@ -3,7 +3,7 @@
 export PYTHONPATH="${PYTHONPATH}:./reporting"
 export CONFIG_REPORTING_YAML=./reporting/reporting.yaml
 
-declare -a versions=(danube master)
+declare -a versions=(euphrates danube master)
 declare -a projects=(functest storperf yardstick qtip vsperf bottlenecks)
 
 project=$1
@@ -59,8 +59,6 @@ if [ -z "$1" ]; then
     report_project $i $i "status"
     sleep 5
   done
-  report_project "QTIP" "qtip" "status"
-
 
   echo "Functest reporting vIMS..."
   report_project "functest" "functest" "vims"
diff --git a/utils/test/reporting/html/euphrates.html b/utils/test/reporting/html/euphrates.html
new file mode 100644 (file)
index 0000000..ff7061b
--- /dev/null
@@ -0,0 +1,141 @@
+<!DOCTYPE HTML>
+<!--
+       Phantom by HTML5 UP
+       html5up.net | @ajlkn
+       Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
+-->
+<html>
+       <head>
+               <title>Phantom by HTML5 UP</title>
+               <meta charset="utf-8" />
+               <meta name="viewport" content="width=device-width, initial-scale=1" />
+               <!--[if lte IE 8]><script src="3rd_party/js/ie/html5shiv.js"></script><![endif]-->
+               <link rel="stylesheet" href="3rd_party/css/main.css" />
+               <!--[if lte IE 9]><link rel="stylesheet" href="3rd_party/css/ie9.css" /><![endif]-->
+               <!--[if lte IE 8]><link rel="stylesheet" href="3rd_party/css/ie8.css" /><![endif]-->
+       </head>
+       <body>
+               <!-- Wrapper -->
+                       <div id="wrapper">
+
+                               <!-- Header -->
+                                       <header id="header">
+                                               <div class="inner">
+
+                                                       <!-- Logo -->
+                                                               <a href="index.html" class="logo">
+                                                                       <span class="symbol"><img src="img/logo.svg" alt="" /></span><span class="title">Phantom</span>
+                                                               </a>
+
+                                               </div>
+                                       </header>
+
+                               <!-- Menu -->
+                               <!-- Main -->
+                                       <div id="main">
+                                               <div class="inner">
+                                                       <header>
+                                                               <h1>Euphrates reporting</h1>
+                                                       </header>
+                                                       <section class="tiles">
+                                                               <article class="style3">
+                                                                       <span class="image">
+                                                                               <img src="img/projectIcon_functest_250x250.png" alt="" />
+                                                                       </span>
+                                                                       <a href="functest-euphrates.html">
+                                                                               <h2>Functest</h2>
+                                                                               <div class="content">
+                                                                                       <p>Functional testing</p>
+                                                                               </div>
+                                                                       </a>
+                                                               </article>
+                                                               <article class="style2">
+                                                                       <span class="image">
+                                                                               <img src="img/projectIcon_yardstick_250x250.png" alt="" />
+                                                                       </span>
+                                                                       <a href="euphrates/yardstick/status-apex.html">
+                                                                               <h2>Yardstick</h2>
+                                                                               <div class="content">
+                                                                                       <p>Qualification and performance testing</p>
+                                                                               </div>
+                                                                       </a>
+                                                               </article>
+                                                               <article class="style4">
+                                                                       <span class="image">
+                                                                               <img src="img/projectIcon_storperf_250x250.png" alt="" />
+                                                                       </span>
+                                                                       <a href="euphrates/storperf/status-apex.html">
+                                                                               <h2>Storperf</h2>
+                                                                               <div class="content">
+                                                                                       <p>Storage testing</p>
+                                                                               </div>
+                                                                       </a>
+                                                               </article>
+                                                               <article class="style5">
+                                                                       <span class="image">
+                                                                               <img src="img/projectIcon_vsperf_250x250.png" alt="" />
+                                                                       </span>
+                                                                       <a href="euphrates/vsperf/status-apex.html">
+                                                                               <h2>Vsperf</h2>
+                                                                               <div class="content">
+                                                                                       <p>Virtual switch testing</p>
+                                                                               </div>
+                                                                       </a>
+                                                               </article>
+                                                               <article class="style1">
+                                                                       <span class="image">
+                                                                               <img src="img/projectIcon_qtip_250x250.png" alt="" />
+                                                                       </span>
+                                                                       <a href="euphrates/qtip/status-apex.html">
+                                                                               <h2>Qtip</h2>
+                                                                               <div class="content">
+                                                                                       <p>Benchmark as a service</p>
+                                                                               </div>
+                                                                       </a>
+                                                               </article>
+                                                               <article class="style6">
+                                                                       <span class="image">
+                                                                               <img src="img/projectIcon_bottlenecks_250x250.png" alt="" />
+                                                                       </span>
+                                                                       <a href="euphrates/bottlenecks/status-apex.html">
+                                                                               <h2>Bottlenecks</h2>
+                                                                               <div class="content">
+                                                                                       <p>Bottleneck finder</p>
+                                                                               </div>
+                                                                       </a>
+                                                               </article>
+                                                       </section>
+                                               </div>
+                                       </div>
+
+                               <!-- Footer -->
+                                       <footer id="footer">
+                                               <div class="inner">
+                                                       <section>
+                                                               <h2>OPNFV Testing Working group</h2>
+                                                       </section>
+                                                       <section>
+                                                               <h2>Follow</h2>
+                                                               <ul class="icons">
+                                                                       <li><a href="https://twitter.com/opnfv" class="icon style2 fa-twitter"><span class="label">Twitter</span></a></li>
+                                                                       <li><a href="http://git.opnfv.org" class="icon style2 fa-github"><span class="label">GitHub</span></a></li>
+                                                                       <li><a href="mailto:test-wg@list.opnfv.org" class="icon style2 fa-envelope-o"><span class="label">Email</span></a></li>
+                                                               </ul>
+                                                       </section>
+                                                       <ul class="copyright">
+                                                               <li>&copy; Untitled. All rights reserved</li><li>Design: <a href="http://html5up.net">HTML5 UP</a></li>
+                                                       </ul>
+                                               </div>
+                                       </footer>
+
+                       </div>
+
+               <!-- Scripts -->
+                       <script src="3rd_party/js/jquery.min.js"></script>
+                       <script src="3rd_party/js/skel.min.js"></script>
+                       <script src="3rd_party/js/util.js"></script>
+                       <!--[if lte IE 8]><script src="3rd_party/js/ie/respond.min.js"></script><![endif]-->
+                       <script src="3rd_party/js/main.js"></script>
+
+       </body>
+</html>
diff --git a/utils/test/reporting/html/functest-euphrates.html b/utils/test/reporting/html/functest-euphrates.html
new file mode 100644 (file)
index 0000000..c203e61
--- /dev/null
@@ -0,0 +1,109 @@
+<!DOCTYPE HTML>
+<!--
+       Phantom by HTML5 UP
+       html5up.net | @ajlkn
+       Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
+-->
+<html>
+       <head>
+               <title>Phantom by HTML5 UP</title>
+               <meta charset="utf-8" />
+               <meta name="viewport" content="width=device-width, initial-scale=1" />
+               <!--[if lte IE 8]><script src="3rd_party/js/ie/html5shiv.js"></script><![endif]-->
+               <link rel="stylesheet" href="3rd_party/css/main.css" />
+               <!--[if lte IE 9]><link rel="stylesheet" href="3rd_party/css/ie9.css" /><![endif]-->
+               <!--[if lte IE 8]><link rel="stylesheet" href="3rd_party/css/ie8.css" /><![endif]-->
+       </head>
+       <body>
+               <!-- Wrapper -->
+                       <div id="wrapper">
+
+                               <!-- Header -->
+                                       <header id="header">
+                                               <div class="inner">
+
+                                                       <!-- Logo -->
+                                                               <a href="index.html" class="logo">
+                                                                       <span class="symbol"><img src="img/logo.svg" alt="" /></span><span class="title">Phantom</span>
+                                                               </a>
+
+                                               </div>
+                                       </header>
+
+                               <!-- Menu -->
+
+                               <!-- Main -->
+                                       <div id="main">
+                                               <div class="inner">
+                                                       <header>
+                                                               <h1>Functest reporting</h1>
+                                                       </header>
+                                                       <section class="tiles">
+                                                               <article class="style5">
+                                                                       <span class="image">
+                                                                               <img src="img/pic05.jpg" alt="" />
+                                                                       </span>
+                                                                       <a href="euphrates/functest/status-apex.html">
+                                                                               <h2>Status</h2>
+                                                                               <div class="content">
+                                                                                       <p>Scenario status</p>
+                                                                               </div>
+                                                                       </a>
+                                                               </article>
+                                                               <article class="style2">
+                                                                       <span class="image">
+                                                                               <img src="img/pic02.jpg" alt="" />
+                                                                       </span>
+                                                                       <a href="euphrates/functest/vims-apex.html">
+                                                                               <h2>vIMS</h2>
+                                                                               <div class="content">
+                                                                                       <p>Virtual IMS</p>
+                                                                               </div>
+                                                                       </a>
+                                                               </article>
+                                                               <article class="style3">
+                                                                       <span class="image">
+                                                                               <img src="img/pic03.jpg" alt="" />
+                                                                       </span>
+                                                                       <a href="euphrates/functest/tempest-apex.html">
+                                                                               <h2>Tempest</h2>
+                                                                               <div class="content">
+                                                                                       <p>Tempest OpenStack suite</p>
+                                                                               </div>
+                                                                       </a>
+                                                               </article>
+                                                       </section>
+                                               </div>
+                                       </div>
+
+                               <!-- Footer -->
+                                       <footer id="footer">
+                                               <div class="inner">
+                                                       <section>
+                                                               <h2>OPNFV Testing Working group</h2>
+                                                       </section>
+                                                       <section>
+                                                               <h2>Follow</h2>
+                                                               <ul class="icons">
+                                                                       <li><a href="https://twitter.com/opnfv" class="icon style2 fa-twitter"><span class="label">Twitter</span></a></li>
+                                                                       <li><a href="http://git.opnfv.org" class="icon style2 fa-github"><span class="label">GitHub</span></a></li>
+                                                                       <li><a href="mailto:test-wg@list.opnfv.org" class="icon style2 fa-envelope-o"><span class="label">Email</span></a></li>
+                                                               </ul>
+                                                       </section>
+                                                       <ul class="copyright">
+                                                               <li>&copy; Untitled. All rights reserved</li><li>Design: <a href="http://html5up.net">HTML5 UP</a></li>
+                                                       </ul>
+                                               </div>
+                                       </footer>
+
+                       </div>
+
+               <!-- Scripts -->
+                       <script src="3rd_party/js/jquery.min.js"></script>
+                       <script src="3rd_party/js/skel.min.js"></script>
+                       <script src="3rd_party/js/util.js"></script>
+                       <!--[if lte IE 8]><script src="3rd_party/js/ie/respond.min.js"></script><![endif]-->
+                       <script src="3rd_party/js/main.js"></script>
+
+       </body>
+</html>
index c6627ff..2789045 100644 (file)
                                                </div>
                                        </header>
 
-                               <!-- Menu -->
-                               <!---   <nav id="menu">
-                                               <h2>Menu</h2>
-                                               <ul>
-                                                       <li><a href="index.html">Home</a></li>
-                                                       <li><a href="colorado.html">Colorado</a></li>
-                                                       <li><a href="danube.html">Danube</a></li>
-                                               </ul>
-                                       </nav>
-                --->
-                               <!-- Main -->
                                        <div id="main">
                                                <div class="inner">
                                                        <header>
@@ -61,7 +50,7 @@
                                                                        <a href="colorado.html">
                                                                                <h2>Colorado</h2>
                                                                                <div class="content">
-                                                                                       <p>Colorado 1.0 released on the 22nd of September</p>
+                                                                                       <p>Colorado 1.0 (22/09/2016)</p>
                                                                                </div>
                                                                        </a>
                                                                </article>
                                                                        <a href="danube.html">
                                                                                <h2>Danube</h2>
                                                                                <div class="content">
-                                                                                       <p>Danube 1.0 planned on the 22nd of March</p>
+                                                                                       <p>Danube 1.0 (22/03/2017)</p>
                                                                                </div>
                                                                        </a>
                                                                </article>
-                                                               <article class="style6">
+                                                               <article class="style4">
                                                                        <span class="image">
                                                                                <img src="img/euphrates.jpg" alt="" />
                                                                        </span>
-                                                                       <a href="master.html">
+                                                                       <a href="euphrates.html">
                                                                                <h2>Euphrates</h2>
+                                                                               <div class="content">
+                                                                                       <p>Euphreates (ETA 10/2017)</p>
+                                                                               </div>
+                                                                       </a>
+                                                               </article>
+                                                               <article class="style6">
+                                                                       <span class="image">
+                                                                               <img src="img/misc-npc-letterblock-m-800px.png" alt="" />
+                                                                       </span>
+                                                                       <a href="master.html">
+                                                                               <h2>Master</h2>
                                                                                <div class="content">
                                                                                        <p>Master</p>
                                                                                </div>
index 3625b50..3eb490d 100644 (file)
Binary files a/utils/test/reporting/img/euphrates.jpg and b/utils/test/reporting/img/euphrates.jpg differ
diff --git a/utils/test/reporting/img/misc-npc-letterblock-m-800px.png b/utils/test/reporting/img/misc-npc-letterblock-m-800px.png
new file mode 100644 (file)
index 0000000..9d62e9e
Binary files /dev/null and b/utils/test/reporting/img/misc-npc-letterblock-m-800px.png differ
index 8966d06..225227a 100644 (file)
@@ -37,10 +37,14 @@ for version in VERSIONS:
     # For all the installers
     for installer in INSTALLERS:
         # get scenarios results data
+        if version != 'master':
+            new_version = "stable/{}".format(version)
+        else:
+            new_version = version
         scenario_results = rp_utils.getScenarios("bottlenecks",
                                                  "posca_factor_ping",
                                                  installer,
-                                                 version)
+                                                 new_version)
         LOGGER.info("scenario_results: %s", scenario_results)
 
         scenario_stats = rp_utils.getScenarioStats(scenario_results)
index 02bf67d..267803e 100755 (executable)
@@ -13,8 +13,8 @@ import time
 
 import jinja2
 
-import testCase as tc
-import scenarioResult as sr
+import reporting.functest.testCase as tc
+import reporting.functest.scenarioResult as sr
 import reporting.utils.reporting_utils as rp_utils
 
 """
@@ -22,7 +22,7 @@ Functest reporting status
 """
 
 # Logger
-logger = rp_utils.getLogger("Functest-Status")
+LOGGER = rp_utils.getLogger("Functest-Status")
 
 # Initialization
 testValid = []
@@ -46,16 +46,16 @@ exclude_virtual = rp_utils.get_config('functest.exclude_virtual')
 
 functest_yaml_config = rp_utils.getFunctestConfig()
 
-logger.info("*******************************************")
-logger.info("*                                         *")
-logger.info("*   Generating reporting scenario status  *")
-logger.info("*   Data retention: %s days               *" % period)
-logger.info("*   Log level: %s                         *" % log_level)
-logger.info("*                                         *")
-logger.info("*   Virtual PODs exluded: %s              *" % exclude_virtual)
-logger.info("*   NOHA scenarios excluded: %s           *" % exclude_noha)
-logger.info("*                                         *")
-logger.info("*******************************************")
+LOGGER.info("*******************************************")
+LOGGER.info("*                                         *")
+LOGGER.info("*   Generating reporting scenario status  *")
+LOGGER.info("*   Data retention: %s days               *", period)
+LOGGER.info("*   Log level: %s                         *", log_level)
+LOGGER.info("*                                         *")
+LOGGER.info("*   Virtual PODs exluded: %s              *", exclude_virtual)
+LOGGER.info("*   NOHA scenarios excluded: %s           *", exclude_noha)
+LOGGER.info("*                                         *")
+LOGGER.info("*******************************************")
 
 # Retrieve test cases of Tier 1 (smoke)
 config_tiers = functest_yaml_config.get("tiers")
@@ -75,9 +75,9 @@ for tier in config_tiers:
     elif tier['order'] == 2:
         for case in tier['testcases']:
             if case['case_name'] not in blacklist:
-                testValid.append(tc.TestCase(case['case_name'],
-                                             case['case_name'],
-                                             case['dependencies']))
+                otherTestCases.append(tc.TestCase(case['case_name'],
+                                                  case['case_name'],
+                                                  case['dependencies']))
     elif tier['order'] > 2:
         for case in tier['testcases']:
             if case['case_name'] not in blacklist:
@@ -85,7 +85,7 @@ for tier in config_tiers:
                                                   "functest",
                                                   case['dependencies']))
 
-logger.debug("Functest reporting start")
+LOGGER.debug("Functest reporting start")
 
 # For all the versions
 for version in versions:
@@ -101,7 +101,7 @@ for version in versions:
     # initiate scenario file if it does not exist
     if not os.path.isfile(scenario_file_name):
         with open(scenario_file_name, "a") as my_file:
-            logger.debug("Create scenario file: %s" % scenario_file_name)
+            LOGGER.debug("Create scenario file: %s", scenario_file_name)
             my_file.write("date,scenario,installer,detail,score\n")
 
     for installer in installers:
@@ -113,10 +113,10 @@ for version in versions:
                                                  version)
         # get nb of supported architecture (x86, aarch64)
         architectures = rp_utils.getArchitectures(scenario_results)
-        logger.info("Supported architectures: {}".format(architectures))
+        LOGGER.info("Supported architectures: %s", architectures)
 
         for architecture in architectures:
-            logger.info("architecture: {}".format(architecture))
+            LOGGER.info("Architecture: %s", architecture)
             # Consider only the results for the selected architecture
             # i.e drop x86 for aarch64 and vice versa
             filter_results = rp_utils.filterArchitecture(scenario_results,
@@ -133,10 +133,10 @@ for version in versions:
 
             # For all the scenarios get results
             for s, s_result in filter_results.items():
-                logger.info("---------------------------------")
-                logger.info("installer %s, version %s, scenario %s:" %
-                            (installer, version, s))
-                logger.debug("Scenario results: %s" % s_result)
+                LOGGER.info("---------------------------------")
+                LOGGER.info("installer %s, version %s, scenario %s:",
+                            installer, version, s)
+                LOGGER.debug("Scenario results: %s", s_result)
 
                 # Green or Red light for a given scenario
                 nb_test_runnable_for_this_scenario = 0
@@ -146,11 +146,11 @@ for version in versions:
                 s_url = ""
                 if len(s_result) > 0:
                     build_tag = s_result[len(s_result)-1]['build_tag']
-                    logger.debug("Build tag: %s" % build_tag)
+                    LOGGER.debug("Build tag: %s", build_tag)
                     s_url = rp_utils.getJenkinsUrl(build_tag)
                     if s_url is None:
                         s_url = "http://testresultS.opnfv.org/reporting"
-                    logger.info("last jenkins url: %s" % s_url)
+                    LOGGER.info("last jenkins url: %s", s_url)
                 testCases2BeDisplayed = []
                 # Check if test case is runnable / installer, scenario
                 # for the test case used for Scenario validation
@@ -160,24 +160,24 @@ for version in versions:
                     for test_case in testValid:
                         test_case.checkRunnable(installer, s,
                                                 test_case.getConstraints())
-                        logger.debug("testcase %s (%s) is %s" %
-                                     (test_case.getDisplayName(),
-                                      test_case.getName(),
-                                      test_case.isRunnable))
+                        LOGGER.debug("testcase %s (%s) is %s",
+                                     test_case.getDisplayName(),
+                                     test_case.getName(),
+                                     test_case.isRunnable)
                         time.sleep(1)
                         if test_case.isRunnable:
                             name = test_case.getName()
                             displayName = test_case.getDisplayName()
                             project = test_case.getProject()
                             nb_test_runnable_for_this_scenario += 1
-                            logger.info(" Searching results for case %s " %
-                                        (displayName))
+                            LOGGER.info(" Searching results for case %s ",
+                                        displayName)
                             result = rp_utils.getResult(name, installer,
                                                         s, version)
                             # if no result set the value to 0
                             if result < 0:
                                 result = 0
-                            logger.info(" >>>> Test score = " + str(result))
+                            LOGGER.info(" >>>> Test score = " + str(result))
                             test_case.setCriteria(result)
                             test_case.setIsRunnable(True)
                             testCases2BeDisplayed.append(tc.TestCase(name,
@@ -193,17 +193,17 @@ for version in versions:
                     for test_case in otherTestCases:
                         test_case.checkRunnable(installer, s,
                                                 test_case.getConstraints())
-                        logger.debug("testcase %s (%s) is %s" %
-                                     (test_case.getDisplayName(),
-                                      test_case.getName(),
-                                      test_case.isRunnable))
+                        LOGGER.debug("testcase %s (%s) is %s",
+                                     test_case.getDisplayName(),
+                                     test_case.getName(),
+                                     test_case.isRunnable)
                         time.sleep(1)
                         if test_case.isRunnable:
                             name = test_case.getName()
                             displayName = test_case.getDisplayName()
                             project = test_case.getProject()
-                            logger.info(" Searching results for case %s " %
-                                        (displayName))
+                            LOGGER.info(" Searching results for case %s ",
+                                        displayName)
                             result = rp_utils.getResult(name, installer,
                                                         s, version)
                             # at least 1 result for the test
@@ -218,13 +218,13 @@ for version in versions:
                                     True,
                                     4))
                             else:
-                                logger.debug("No results found")
+                                LOGGER.debug("No results found")
 
                         items[s] = testCases2BeDisplayed
-                except Exception:
-                    logger.error("Error: installer %s, version %s, scenario %s"
-                                 % (installer, version, s))
-                    logger.error("No data available: %s" % (sys.exc_info()[0]))
+                except Exception:  # pylint: disable=broad-except
+                    LOGGER.error("Error installer %s, version %s, scenario %s",
+                                 installer, version, s)
+                    LOGGER.error("No data available: %s", sys.exc_info()[0])
 
                 # **********************************************
                 # Evaluate the results for scenario validation
@@ -243,11 +243,11 @@ for version in versions:
 
                 s_status = "KO"
                 if scenario_score < scenario_criteria:
-                    logger.info(">>>> scenario not OK, score = %s/%s" %
-                                (scenario_score, scenario_criteria))
+                    LOGGER.info(">>>> scenario not OK, score = %s/%s",
+                                scenario_score, scenario_criteria)
                     s_status = "KO"
                 else:
-                    logger.info(">>>>> scenario OK, save the information")
+                    LOGGER.info(">>>>> scenario OK, save the information")
                     s_status = "OK"
                     path_validation_file = ("./display/" + version +
                                             "/functest/" +
@@ -270,7 +270,7 @@ for version in versions:
                     s_score,
                     s_score_percent,
                     s_url)
-                logger.info("--------------------------")
+                LOGGER.info("--------------------------")
 
             templateLoader = jinja2.FileSystemLoader(".")
             templateEnv = jinja2.Environment(
@@ -294,9 +294,9 @@ for version in versions:
                       installer_display + ".html", "wb") as fh:
                 fh.write(outputText)
 
-            logger.info("Manage export CSV & PDF")
+            LOGGER.info("Manage export CSV & PDF")
             rp_utils.export_csv(scenario_file_name, installer_display, version)
-            logger.error("CSV generated...")
+            LOGGER.error("CSV generated...")
 
             # Generate outputs for export
             # pdf
@@ -306,4 +306,4 @@ for version in versions:
             pdf_doc_name = ("./display/" + version +
                             "/functest/status-" + installer_display + ".pdf")
             rp_utils.export_pdf(pdf_path, pdf_doc_name)
-            logger.info("PDF generated...")
+            LOGGER.info("PDF generated...")
index 14fddbe..3b25e91 100755 (executable)
+#!/usr/bin/python
+#
+# 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
+#
+"""
+vIMS reporting status
+"""
 from urllib2 import Request, urlopen, URLError
 import json
 import jinja2
 
-# manage conf
-import utils.reporting_utils as rp_utils
-
-logger = rp_utils.getLogger("vIMS")
-
-
-def sig_test_format(sig_test):
-    nbPassed = 0
-    nbFailures = 0
-    nbSkipped = 0
-    for data_test in sig_test:
-        if data_test['result'] == "Passed":
-            nbPassed += 1
-        elif data_test['result'] == "Failed":
-            nbFailures += 1
-        elif data_test['result'] == "Skipped":
-            nbSkipped += 1
-    total_sig_test_result = {}
-    total_sig_test_result['passed'] = nbPassed
-    total_sig_test_result['failures'] = nbFailures
-    total_sig_test_result['skipped'] = nbSkipped
-    return total_sig_test_result
-
-period = rp_utils.get_config('general.period')
-versions = rp_utils.get_config('general.versions')
-url_base = rp_utils.get_config('testapi.url')
-
-logger.info("****************************************")
-logger.info("*   Generating reporting vIMS          *")
-logger.info("*   Data retention = %s days           *" % period)
-logger.info("*                                      *")
-logger.info("****************************************")
-
-installers = rp_utils.get_config('general.installers')
-step_order = ["initialisation", "orchestrator", "vIMS", "sig_test"]
-logger.info("Start processing....")
+import reporting.utils.reporting_utils as rp_utils
+
+LOGGER = rp_utils.getLogger("vIMS")
+
+PERIOD = rp_utils.get_config('general.period')
+VERSIONS = rp_utils.get_config('general.versions')
+URL_BASE = rp_utils.get_config('testapi.url')
+
+LOGGER.info("****************************************")
+LOGGER.info("*   Generating reporting vIMS          *")
+LOGGER.info("*   Data retention = %s days           *", PERIOD)
+LOGGER.info("*                                      *")
+LOGGER.info("****************************************")
+
+INSTALLERS = rp_utils.get_config('general.installers')
+STEP_ORDER = ["initialisation", "orchestrator", "vnf", "test_vnf"]
+LOGGER.info("Start vIMS reporting processing....")
 
 # For all the versions
-for version in versions:
-    for installer in installers:
-        logger.info("Search vIMS results for installer: %s, version: %s"
-                    % (installer, version))
-        request = Request("http://" + url_base + '?case=vims&installer=' +
-                          installer + '&version=' + version)
-
-        try:
-            response = urlopen(request)
-            k = response.read()
-            results = json.loads(k)
-        except URLError as e:
-            logger.error("Error code: %s" % e)
-
-        test_results = results['results']
-
-        logger.debug("Results found: %s" % test_results)
-
-        scenario_results = {}
-        for r in test_results:
-            if not r['scenario'] in scenario_results.keys():
-                scenario_results[r['scenario']] = []
-            scenario_results[r['scenario']].append(r)
-
-        for s, s_result in scenario_results.items():
-            scenario_results[s] = s_result[0:5]
-            logger.debug("Search for success criteria")
-            for result in scenario_results[s]:
-                result["start_date"] = result["start_date"].split(".")[0]
-                sig_test = result['details']['sig_test']['result']
-                if not sig_test == "" and isinstance(sig_test, list):
-                    format_result = sig_test_format(sig_test)
-                    if format_result['failures'] > format_result['passed']:
-                        result['details']['sig_test']['duration'] = 0
-                    result['details']['sig_test']['result'] = format_result
-                nb_step_ok = 0
-                nb_step = len(result['details'])
-
-                for step_name, step_result in result['details'].items():
-                    if step_result['duration'] != 0:
-                        nb_step_ok += 1
-                    m, s = divmod(step_result['duration'], 60)
-                    m_display = ""
-                    if int(m) != 0:
-                        m_display += str(int(m)) + "m "
-
-                    step_result['duration_display'] = (m_display +
-                                                       str(int(s)) + "s")
-
-                result['pr_step_ok'] = 0
-                if nb_step != 0:
-                    result['pr_step_ok'] = (float(nb_step_ok) / nb_step) * 100
-                try:
-                    logger.debug("Scenario %s, Installer %s"
-                                 % (s_result[1]['scenario'], installer))
-                    res = result['details']['orchestrator']['duration']
-                    logger.debug("Orchestrator deployment: %s s"
-                                 % res)
-                    logger.debug("vIMS deployment: %s s"
-                                 % result['details']['vIMS']['duration'])
-                    logger.debug("Signaling testing: %s s"
-                                 % result['details']['sig_test']['duration'])
-                    logger.debug("Signaling testing results: %s"
-                                 % format_result)
-                except Exception:
-                    logger.error("Data badly formatted")
-                logger.debug("----------------------------------------")
+for version in VERSIONS:
+    for installer in INSTALLERS:
+
+        # get nb of supported architecture (x86, aarch64)
+        # get scenarios
+        scenario_results = rp_utils.getScenarios("functest",
+                                                 "cloudify_ims",
+                                                 installer,
+                                                 version)
+
+        architectures = rp_utils.getArchitectures(scenario_results)
+        LOGGER.info("Supported architectures: %s", architectures)
+
+        for architecture in architectures:
+            LOGGER.info("Architecture: %s", architecture)
+            # Consider only the results for the selected architecture
+            # i.e drop x86 for aarch64 and vice versa
+            filter_results = rp_utils.filterArchitecture(scenario_results,
+                                                         architecture)
+            scenario_stats = rp_utils.getScenarioStats(filter_results)
+            items = {}
+            scenario_result_criteria = {}
+
+            # in case of more than 1 architecture supported
+            # precise the architecture
+            installer_display = installer
+            if "fuel" in installer:
+                installer_display = installer + "@" + architecture
+
+            LOGGER.info("Search vIMS results for installer: %s, version: %s",
+                        installer, version)
+            request = Request("http://" + URL_BASE + '?case=cloudify_ims&'
+                              'installer=' + installer + '&version=' + version)
+            try:
+                response = urlopen(request)
+                k = response.read()
+                results = json.loads(k)
+            except URLError as err:
+                LOGGER.error("Error code: %s", err)
+
+            test_results = results['results']
+
+            # LOGGER.debug("Results found: %s" % test_results)
+
+            scenario_results = {}
+            for r in test_results:
+                if not r['scenario'] in scenario_results.keys():
+                    scenario_results[r['scenario']] = []
+                scenario_results[r['scenario']].append(r)
+
+            # LOGGER.debug("scenario result: %s" % scenario_results)
+
+            for s, s_result in scenario_results.items():
+                scenario_results[s] = s_result[0:5]
+                for result in scenario_results[s]:
+                    try:
+                        format_result = result['details']['test_vnf']['result']
+
+                        # round durations of the different steps
+                        result['details']['orchestrator']['duration'] = round(
+                            result['details']['orchestrator']['duration'], 1)
+                        result['details']['vnf']['duration'] = round(
+                            result['details']['vnf']['duration'], 1)
+                        result['details']['test_vnf']['duration'] = round(
+                            result['details']['test_vnf']['duration'], 1)
+
+                        res_orch = \
+                            result['details']['orchestrator']['duration']
+                        res_vnf = result['details']['vnf']['duration']
+                        res_test_vnf = \
+                            result['details']['test_vnf']['duration']
+                        res_signaling = \
+                            result['details']['test_vnf']['result']['failures']
+
+                        # Manage test result status
+                        if res_signaling != 0:
+                            LOGGER.debug("At least 1 signalig test FAIL")
+                            result['details']['test_vnf']['status'] = "FAIL"
+                        else:
+                            LOGGER.debug("All signalig tests PASS")
+                            result['details']['test_vnf']['status'] = "PASS"
+
+                        LOGGER.debug("Scenario %s, Installer %s",
+                                     s_result[1]['scenario'], installer)
+                        LOGGER.debug("Orchestrator deployment: %ss", res_orch)
+                        LOGGER.debug("vIMS deployment: %ss", res_vnf)
+                        LOGGER.debug("VNF testing: %ss", res_test_vnf)
+                        LOGGER.debug("VNF testing results: %s", format_result)
+                    except Exception as err:  # pylint: disable=broad-except
+                        LOGGER.error("Uncomplete data %s", err)
+                    LOGGER.debug("----------------------------------------")
 
         templateLoader = jinja2.FileSystemLoader(".")
         templateEnv = jinja2.Environment(loader=templateLoader,
@@ -116,11 +132,11 @@ for version in versions:
         template = templateEnv.get_template(TEMPLATE_FILE)
 
         outputText = template.render(scenario_results=scenario_results,
-                                     step_order=step_order,
-                                     installer=installer)
-
+                                     step_order=STEP_ORDER,
+                                     installer=installer_display)
+        LOGGER.debug("Generate html page for %s", installer_display)
         with open("./display/" + version + "/functest/vims-" +
-                  installer + ".html", "wb") as fh:
+                  installer_display + ".html", "wb") as fh:
             fh.write(outputText)
 
-logger.info("vIMS report succesfully generated")
+LOGGER.info("vIMS report succesfully generated")
index cd51607..9bd2b2f 100644 (file)
         <nav>
           <ul class="nav nav-justified">
             <li class="active"><a href="../../index.html">Home</a></li>
-            <li><a href="vims-fuel.html">Fuel</a></li>
+            <li><a href="vims-apex.html">Apex</a></li>
             <li><a href="vims-compass.html">Compass</a></li>
             <li><a href="vims-daisy.html">Daisy</a></li>
-            <li><a href="vims-joid.html">JOID</a></li>
-            <li><a href="vims-apex.html">APEX</a></li>
+            <li><a href="vims-fuel@x86.html">Fuel@x86</a></li>
+            <li><a href="vims-fuel@aarch64.html">Fuel@aarch64</a></li>
+            <li><a href="vims-joid.html">Joid</a></li>
           </ul>
         </nav>
       </div>
                             <tr>
                                 <th width="20%">Step</th>
                                 <th width="10%">Status</th>
-                                <th width="10%">Duration</th>
+                                <th width="10%">Duration(s)</th>
                                 <th width="60%">Result</th>
                             </tr>
                             {% for step_od_name in step_order -%}
                                 {% if step_od_name in result.details.keys() -%}
                                     {% set step_result = result.details[step_od_name] -%}
-                                    {% if step_result.duration != 0 -%}
+                                    {% if step_result.status == "PASS" -%}
                                         <tr class="tr-ok">
                                             <td>{{step_od_name}}</td>
                                             <td><span class="glyphicon glyphicon-ok"></td>
-                                            <td><b>{{step_result.duration_display}}</b></td>
+                                            <td><b>{{step_result.duration}}</b></td>
                                             <td>{{step_result.result}}</td>
                                         </tr>
                                     {%- else -%}
index 9834f07..a182dd4 100644 (file)
@@ -50,9 +50,10 @@ class TestCase(object):
                                'gluon_vping': 'Netready',
                                'fds': 'FDS',
                                'cloudify_ims': 'vIMS (Cloudify)',
-                               'orchestra_ims': 'OpenIMS (OpenBaton)',
+                               'orchestra_openims': 'OpenIMS (OpenBaton)',
+                               'orchestra_clearwaterims': 'vIMS (OpenBaton)',
                                'opera_ims': 'vIMS (Open-O)',
-                               'vyos_vrouter': 'vyos',
+                               'vyos_vrouter': 'vyos (Cloudify)',
                                'barometercollectd': 'Barometer',
                                'odl_netvirt': 'Netvirt',
                                'security_scan': 'Security'}
index 56f9e0a..524338c 100644 (file)
@@ -45,27 +45,22 @@ def prepare_profile_file(version):
 def profile_results(results, installer, profile_fd):
     result_criterias = {}
     for s_p, s_p_result in results.iteritems():
-        ten_criteria = len(s_p_result)
-        ten_score = sum(s_p_result)
+        avg_last_ten = sum([int(s) for s in s_p_result]) / len(s_p_result)
 
         LASTEST_TESTS = rp_utils.get_config(
             'general.nb_iteration_tests_success_criteria')
-        four_result = s_p_result[:LASTEST_TESTS]
-        four_criteria = len(four_result)
-        four_score = sum(four_result)
-
-        s_four_score = str(four_score / four_criteria)
-        s_ten_score = str(ten_score / ten_criteria)
+        last_four = s_p_result[-LASTEST_TESTS:]
+        avg_last_four = sum([int(s) for s in last_four]) / len(last_four)
 
         info = '{},{},{},{},{}\n'.format(reportingDate,
                                          s_p,
                                          installer,
-                                         s_ten_score,
-                                         s_four_score)
+                                         '',
+                                         avg_last_four)
         profile_fd.write(info)
         result_criterias[s_p] = sr.ScenarioResult('OK',
-                                                  s_four_score,
-                                                  s_ten_score,
+                                                  avg_last_four,
+                                                  avg_last_ten,
                                                   '100')
 
         logger.info("--------------------------")
index 92f3395..da8424a 100644 (file)
           <ul class="nav nav-justified">
             <li class="active"><a href="http://testresults.opnfv.org/reporting/index.html">Home</a></li>
             <li><a href="status-apex.html">Apex</a></li>
-            <li><a href="status-compass.html">Compass</a></li>
-            <li><a href="status-daisy.html">Daisy</a></li>
-            <li><a href="status-fuel.html">Fuel</a></li>
-            <li><a href="status-joid.html">Joid</a></li>
+            <!--<li><a href="status-compass.html">Compass</a></li>-->
+            <!--<li><a href="status-daisy.html">Daisy</a></li>-->
+            <!--<li><a href="status-fuel.html">Fuel</a></li>-->
+            <!--<li><a href="status-joid.html">Joid</a></li>-->
           </ul>
         </nav>
       </div>
index 9bb90b8..2a4aa49 100644 (file)
@@ -9,6 +9,7 @@ general:
 
     versions:
         - master
+        - euphrates
         - danube
 
     log:
@@ -35,15 +36,8 @@ testapi:
 
 functest:
     blacklist:
-        - ovno
-        - security_scan
-        - healthcheck
         - odl_netvirt
-        - aaa
-        - cloudify_ims
-        - orchestra_ims
         - juju_epc
-        - orchestra
     max_scenario_criteria: 50
     test_conf: https://git.opnfv.org/cgit/functest/plain/functest/ci/testcases.yaml
     log_level: ERROR
@@ -62,7 +56,7 @@ storperf:
 
 qtip:
     log_level: ERROR
-    period: 1
+    period: 10
 
 bottlenecks:
     test_list:
index 26e8c8b..7504493 100644 (file)
@@ -9,7 +9,7 @@
 import requests
 import yaml
 
-import utils.reporting_utils as rp_utils
+import reporting.utils.reporting_utils as rp_utils
 
 yardstick_conf = rp_utils.get_config('yardstick.test_conf')
 response = requests.get(yardstick_conf)
index 77ba950..f9b8524 100644 (file)
@@ -25,7 +25,7 @@
         }
 
         // trend line management
-        d3.csv("./scenario_history.csv", function(data) {
+        d3.csv("./scenario_history.txt", function(data) {
             // ***************************************
             // Create the trend line
             {% for scenario in scenario_results.keys() -%}
diff --git a/utils/test/testapi/deployment/deploy.py b/utils/test/testapi/deployment/deploy.py
deleted file mode 100644 (file)
index 6433fa6..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-import argparse
-import os
-
-from jinja2 import Environment, FileSystemLoader
-
-env = Environment(loader=FileSystemLoader('./'))
-docker_compose_yml = './docker-compose.yml'
-docker_compose_template = './docker-compose.yml.template'
-
-
-def render_docker_compose(port, base_url):
-    vars = {
-        "expose_port": port,
-        "base_url": base_url,
-    }
-    template = env.get_template(docker_compose_template)
-    yml = template.render(vars=vars)
-
-    with open(docker_compose_yml, 'w') as f:
-        f.write(yml)
-        f.close()
-
-
-def main(args):
-    render_docker_compose(args.expose_port, args.base_url)
-    os.system('docker-compose -f {} up -d'.format(docker_compose_yml))
-
-
-if __name__ == '__main__':
-    parser = argparse.ArgumentParser(description='Backup MongoDBs')
-    parser.add_argument('-p', '--expose-port',
-                        type=int,
-                        required=False,
-                        default=8000,
-                        help='testapi exposed port')
-    parser.add_argument('-l', '--base-url',
-                        type=str,
-                        required=True,
-                        help='testapi exposed base-url')
-    main(parser.parse_args())
diff --git a/utils/test/testapi/deployment/docker-compose.yml.template b/utils/test/testapi/deployment/docker-compose.yml.template
deleted file mode 100644 (file)
index cd68404..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-version: '2'
-services:
-  mongo:
-    image: mongo:3.2.1
-    container_name: opnfv-mongo
-  testapi:
-    image: opnfv/testapi:latest
-    container_name: opnfv-testapi
-    environment:
-      - mongodb_url=mongodb://mongo:27017/
-      - base_url={{ vars.base_url }}
-    ports:
-      - "{{ vars.expose_port }}:8000"
-    links:
-      - mongo
index f5026c9..1df31f3 100644 (file)
@@ -11,6 +11,7 @@ from datetime import datetime
 from datetime import timedelta
 import httplib
 import json
+import urllib
 import unittest
 
 from opnfv_testapi.common import message
@@ -268,29 +269,29 @@ class TestResultGet(TestResultBase):
 
     @executor.query(httplib.BAD_REQUEST, message.must_int('period'))
     def test_queryPeriodNotInt(self):
-        return self._set_query('period=a')
+        return self._set_query(period='a')
 
     @executor.query(httplib.OK, '_query_period_one', 1)
     def test_queryPeriodSuccess(self):
-        return self._set_query('period=5')
+        return self._set_query(period=5)
 
     @executor.query(httplib.BAD_REQUEST, message.must_int('last'))
     def test_queryLastNotInt(self):
-        return self._set_query('last=a')
+        return self._set_query(last='a')
 
     @executor.query(httplib.OK, '_query_last_one', 1)
     def test_queryLast(self):
-        return self._set_query('last=1')
+        return self._set_query(last=1)
 
     @executor.query(httplib.OK, '_query_success', 4)
     def test_queryPublic(self):
         self._create_public_data()
-        return self._set_query('')
+        return self._set_query()
 
     @executor.query(httplib.OK, '_query_success', 1)
     def test_queryPrivate(self):
         self._create_private_data()
-        return self._set_query('public=false')
+        return self._set_query(public='false')
 
     @executor.query(httplib.OK, '_query_period_one', 1)
     def test_combination(self):
@@ -303,12 +304,11 @@ class TestResultGet(TestResultBase):
                                'scenario',
                                'trust_indicator',
                                'criteria',
-                               'period=5')
+                               period=5)
 
     @executor.query(httplib.OK, '_query_success', 0)
     def test_notFound(self):
-        return self._set_query('pod=notExistPod',
-                               'project',
+        return self._set_query('project',
                                'case',
                                'version',
                                'installer',
@@ -316,7 +316,8 @@ class TestResultGet(TestResultBase):
                                'scenario',
                                'trust_indicator',
                                'criteria',
-                               'period=1')
+                               pod='notExistPod',
+                               period=1)
 
     @executor.query(httplib.OK, '_query_success', 1)
     def test_filterErrorStartdate(self):
@@ -324,7 +325,7 @@ class TestResultGet(TestResultBase):
         self._create_error_start_date('None')
         self._create_error_start_date('null')
         self._create_error_start_date('')
-        return self._set_query('period=5')
+        return self._set_query(period=5)
 
     def _query_success(self, body, number):
         self.assertEqual(number, len(body.results))
@@ -363,18 +364,16 @@ class TestResultGet(TestResultBase):
         self.create(req)
         return req
 
-    def _set_query(self, *args):
+    def _set_query(self, *args, **kwargs):
         def get_value(arg):
             return self.__getattribute__(arg) \
                 if arg != 'trust_indicator' else self.trust_indicator.current
-        uri = ''
+        query = []
         for arg in args:
-            if arg:
-                if '=' in arg:
-                    uri += arg + '&'
-                else:
-                    uri += '{}={}&'.format(arg, get_value(arg))
-        return uri[0: -1]
+            query.append((arg, get_value(arg)))
+        for k, v in kwargs.iteritems():
+            query.append((k, v))
+        return urllib.urlencode(query)
 
 
 class TestResultUpdate(TestResultBase):
diff --git a/utils/test/testapi/opts/deploy.py b/utils/test/testapi/opts/deploy.py
new file mode 100644 (file)
index 0000000..f58690c
--- /dev/null
@@ -0,0 +1,55 @@
+import argparse
+import os
+
+from jinja2 import Environment
+
+DOCKER_COMPOSE_FILE = './docker-compose.yml'
+DOCKER_COMPOSE_TEMPLATE = """
+version: '2'
+services:
+  mongo:
+    image: mongo:3.2.1
+    container_name: opnfv-mongo
+  testapi:
+    image: opnfv/testapi:latest
+    container_name: opnfv-testapi
+    environment:
+      - mongodb_url=mongodb://mongo:27017/
+      - base_url={{ vars.testapi_base_url }}
+    ports:
+      - "{{ vars.testapi_port }}:8000"
+    links:
+      - mongo
+"""
+
+
+def render_docker_compose(testapi_port, testapi_base_url):
+    vars = {
+        "testapi_port": testapi_port,
+        "testapi_base_url": testapi_base_url,
+    }
+
+    yml = Environment().from_string(DOCKER_COMPOSE_TEMPLATE).render(vars=vars)
+
+    with open(DOCKER_COMPOSE_FILE, 'w') as f:
+        f.write(yml)
+        f.close()
+
+
+def main(args):
+    render_docker_compose(args.testapi_port, args.testapi_base_url)
+    os.system('docker-compose -f {} up -d'.format(DOCKER_COMPOSE_FILE))
+
+
+if __name__ == '__main__':
+    parser = argparse.ArgumentParser(description='Backup MongoDBs')
+    parser.add_argument('-tp', '--testapi-port',
+                        type=int,
+                        required=False,
+                        default=8000,
+                        help='testapi exposed port')
+    parser.add_argument('-tl', '--testapi-base-url',
+                        type=str,
+                        required=True,
+                        help='testapi exposed base-url')
+    main(parser.parse_args())