summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--jjb/apex/apex.yml202
-rw-r--r--jjb/apex/apex.yml.j250
-rw-r--r--jjb/apex/scenarios.yaml.hidden1
-rwxr-xr-xjjb/armband/armband-deploy.sh2
-rw-r--r--jjb/doctor/doctor.yml5
-rw-r--r--jjb/functest/functest-alpine.sh72
-rw-r--r--jjb/functest/functest-daily-jobs.yml56
-rw-r--r--jjb/global/slave-params.yml10
-rw-r--r--jjb/qtip/qtip-verify-jobs.yml117
-rw-r--r--utils/test/testapi/opnfv_testapi/resources/handlers.py27
-rw-r--r--utils/test/testapi/opnfv_testapi/resources/result_handlers.py8
-rw-r--r--utils/test/testapi/opnfv_testapi/tests/unit/fake_pymongo.py10
-rw-r--r--utils/test/testapi/opnfv_testapi/tests/unit/resources/test_result.py28
-rw-r--r--utils/test/testapi/requirements.txt10
-rw-r--r--utils/test/testapi/test-requirements.txt12
15 files changed, 468 insertions, 142 deletions
diff --git a/jjb/apex/apex.yml b/jjb/apex/apex.yml
index a395cf2e5..857cb55ec 100644
--- a/jjb/apex/apex.yml
+++ b/jjb/apex/apex.yml
@@ -13,13 +13,13 @@
- 'apex-csit-promote-daily-{stream}'
- 'apex-fdio-promote-daily-{stream}'
- 'apex-verify-iso-{stream}'
- - 'apex-run-deploy-test-baremetal-{stream}'
+ - 'apex-{scenario}-baremetal-{scenario_stream}'
- 'apex-upload-snapshot'
- 'apex-create-snapshot'
# stream: branch with - in place of / (eg. stable-arno)
# branch: branch (eg. stable/arno)
stream:
- - master:
+ - master: &master
branch: 'master'
gs-pathname: ''
build-slave: 'apex-build-master'
@@ -27,8 +27,9 @@
baremetal-slave: 'apex-baremetal-master'
verify-scenario: 'os-odl-nofeature-ha'
concurrent-builds: 3
+ scenario_stream: 'master'
- - danube:
+ - danube: &danube
branch: 'stable/danube'
gs-pathname: '/danube'
build-slave: 'apex-build-danube'
@@ -36,7 +37,72 @@
baremetal-slave: 'apex-baremetal-danube'
verify-scenario: 'os-odl_l3-nofeature-ha'
concurrent-builds: 1
- disabled: false
+ scenario_stream: 'danube'
+ disabled: true
+
+ scenario:
+ - 'os-nosdn-nofeature-noha':
+ <<: *danube
+ - 'os-nosdn-nofeature-ha':
+ <<: *danube
+ - 'os-nosdn-nofeature-ha-ipv6':
+ <<: *danube
+ - 'os-nosdn-ovs-noha':
+ <<: *danube
+ - 'os-nosdn-ovs-ha':
+ <<: *danube
+ - 'os-nosdn-fdio-noha':
+ <<: *danube
+ - 'os-nosdn-fdio-ha':
+ <<: *danube
+ - 'os-nosdn-kvm-ha':
+ <<: *danube
+ - 'os-nosdn-kvm-noha':
+ <<: *danube
+ - 'os-odl_l2-fdio-noha':
+ <<: *danube
+ - 'os-odl_l2-fdio-ha':
+ <<: *danube
+ - 'os-odl_netvirt-fdio-noha':
+ <<: *danube
+ - 'os-odl_l2-sfc-noha':
+ <<: *danube
+ - 'os-odl_l3-nofeature-noha':
+ <<: *danube
+ - 'os-odl_l3-nofeature-ha':
+ <<: *danube
+ - 'os-odl_l3-ovs-noha':
+ <<: *danube
+ - 'os-odl_l3-ovs-ha':
+ <<: *danube
+ - 'os-odl-bgpvpn-ha':
+ <<: *danube
+ - 'os-odl-gluon-noha':
+ <<: *danube
+ - 'os-odl_l3-fdio-noha':
+ <<: *danube
+ - 'os-odl_l3-fdio-ha':
+ <<: *danube
+ - 'os-odl_l3-fdio_dvr-noha':
+ <<: *danube
+ - 'os-odl_l3-fdio_dvr-ha':
+ <<: *danube
+ - 'os-odl_l3-csit-noha':
+ <<: *danube
+ - 'os-onos-nofeature-ha':
+ <<: *danube
+ - 'os-ovn-nofeature-noha':
+ <<: *danube
+ - 'os-nosdn-nofeature-noha':
+ <<: *master
+ - 'os-nosdn-nofeature-ha':
+ <<: *master
+ - 'os-odl-nofeature-ha':
+ <<: *master
+ - 'os-odl-nofeature-noha':
+ <<: *master
+ - 'os-odl-bgpvpn-ha':
+ <<: *master
platform:
- 'baremetal'
@@ -478,11 +544,6 @@
- job-template:
name: 'apex-deploy-{platform}-{stream}'
- # Job template for virtual deployment
- #
- # Required Variables:
- # stream: branch with - in place of / (eg. stable)
- # branch: branch (eg. stable)
node: 'apex-{platform}-{stream}'
concurrent: true
@@ -498,6 +559,7 @@
fail: true
parameters:
+ - '{project}-{platform}-{stream}-defaults'
- project-parameter:
project: '{project}'
branch: '{branch}'
@@ -536,13 +598,8 @@
# Baremetal Deploy and Test
- job-template:
- name: 'apex-run-deploy-test-baremetal-{stream}'
+ name: 'apex-{scenario}-baremetal-{scenario_stream}'
- # Job template for daily build
- #
- # Required Variables:
- # stream: branch with - in place of / (eg. stable)
- # branch: branch (eg. stable)
project-type: 'multijob'
disabled: false
@@ -552,7 +609,7 @@
parameters:
- '{project}-defaults'
- - '{project}-baremetal-{stream}-defaults'
+ - '{project}-baremetal-{scenario_stream}-defaults'
- project-parameter:
project: '{project}'
branch: '{branch}'
@@ -560,7 +617,7 @@
gs-pathname: '{gs-pathname}'
- string:
name: DEPLOY_SCENARIO
- default: '{verify-scenario}'
+ default: '{scenario}'
description: "Scenario to deploy with."
properties:
- logrotate-default
@@ -579,7 +636,7 @@
name: 'Baremetal Deploy'
condition: ALWAYS
projects:
- - name: 'apex-deploy-baremetal-{stream}'
+ - name: 'apex-deploy-baremetal-{scenario_stream}'
node-parameters: true
current-parameters: true
predefined-parameters: |
@@ -592,9 +649,9 @@
git-revision: false
- multijob:
name: Functest
- condition: ALWAYS
+ condition: SUCCESSFUL
projects:
- - name: 'functest-apex-baremetal-daily-{stream}'
+ - name: 'functest-apex-baremetal-daily-{scenario_stream}'
node-parameters: true
current-parameters: false
predefined-parameters:
@@ -606,7 +663,7 @@
name: Yardstick
condition: ALWAYS
projects:
- - name: 'yardstick-apex-baremetal-daily-{stream}'
+ - name: 'yardstick-apex-baremetal-daily-{scenario_stream}'
node-parameters: true
current-parameters: false
predefined-parameters:
@@ -686,261 +743,235 @@
condition: SUCCESSFUL
projects:
- - name: 'apex-run-deploy-test-baremetal-danube'
+ - name: 'apex-os-nosdn-nofeature-noha-baremetal-danube'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-nosdn-nofeature-noha
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-run-deploy-test-baremetal-danube'
+ - name: 'apex-os-nosdn-nofeature-ha-baremetal-danube'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-nosdn-nofeature-ha
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-run-deploy-test-baremetal-danube'
+ - name: 'apex-os-nosdn-nofeature-ha-ipv6-baremetal-danube'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-nosdn-nofeature-ha-ipv6
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-run-deploy-test-baremetal-danube'
+ - name: 'apex-os-nosdn-ovs-noha-baremetal-danube'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-nosdn-ovs-noha
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-run-deploy-test-baremetal-danube'
+ - name: 'apex-os-nosdn-ovs-ha-baremetal-danube'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-nosdn-ovs-ha
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-run-deploy-test-baremetal-danube'
+ - name: 'apex-os-nosdn-fdio-noha-baremetal-danube'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-nosdn-fdio-noha
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-run-deploy-test-baremetal-danube'
+ - name: 'apex-os-nosdn-fdio-ha-baremetal-danube'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-nosdn-fdio-ha
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-run-deploy-test-baremetal-danube'
+ - name: 'apex-os-nosdn-kvm-ha-baremetal-danube'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-nosdn-kvm-ha
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-run-deploy-test-baremetal-danube'
+ - name: 'apex-os-nosdn-kvm-noha-baremetal-danube'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-nosdn-kvm-noha
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-run-deploy-test-baremetal-danube'
+ - name: 'apex-os-odl_l2-fdio-noha-baremetal-danube'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-odl_l2-fdio-noha
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-run-deploy-test-baremetal-danube'
+ - name: 'apex-os-odl_l2-fdio-ha-baremetal-danube'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-odl_l2-fdio-ha
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-run-deploy-test-baremetal-danube'
+ - name: 'apex-os-odl_netvirt-fdio-noha-baremetal-danube'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-odl_netvirt-fdio-noha
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-run-deploy-test-baremetal-danube'
+ - name: 'apex-os-odl_l2-sfc-noha-baremetal-danube'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-odl_l2-sfc-noha
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-run-deploy-test-baremetal-danube'
+ - name: 'apex-os-odl_l3-nofeature-noha-baremetal-danube'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-odl_l3-nofeature-noha
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-run-deploy-test-baremetal-danube'
+ - name: 'apex-os-odl_l3-nofeature-ha-baremetal-danube'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-odl_l3-nofeature-ha
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-run-deploy-test-baremetal-danube'
+ - name: 'apex-os-odl_l3-ovs-noha-baremetal-danube'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-odl_l3-ovs-noha
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-run-deploy-test-baremetal-danube'
+ - name: 'apex-os-odl_l3-ovs-ha-baremetal-danube'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-odl_l3-ovs-ha
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-run-deploy-test-baremetal-danube'
+ - name: 'apex-os-odl-bgpvpn-ha-baremetal-danube'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-odl-bgpvpn-ha
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-run-deploy-test-baremetal-danube'
+ - name: 'apex-os-odl-gluon-noha-baremetal-danube'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-odl-gluon-noha
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-run-deploy-test-baremetal-danube'
+ - name: 'apex-os-odl_l3-fdio-noha-baremetal-danube'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-odl_l3-fdio-noha
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-run-deploy-test-baremetal-danube'
+ - name: 'apex-os-odl_l3-fdio-ha-baremetal-danube'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-odl_l3-fdio-ha
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-run-deploy-test-baremetal-danube'
+ - name: 'apex-os-odl_l3-fdio_dvr-noha-baremetal-danube'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-odl_l3-fdio_dvr-noha
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-run-deploy-test-baremetal-danube'
+ - name: 'apex-os-odl_l3-fdio_dvr-ha-baremetal-danube'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-odl_l3-fdio_dvr-ha
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-run-deploy-test-baremetal-danube'
+ - name: 'apex-os-odl_l3-csit-noha-baremetal-danube'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-odl_l3-csit-noha
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-run-deploy-test-baremetal-danube'
+ - name: 'apex-os-onos-nofeature-ha-baremetal-danube'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-onos-nofeature-ha
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-run-deploy-test-baremetal-danube'
+ - name: 'apex-os-ovn-nofeature-noha-baremetal-danube'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-ovn-nofeature-noha
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
@@ -1017,41 +1048,46 @@
condition: SUCCESSFUL
projects:
- - name: 'apex-run-deploy-test-baremetal-master'
+ - name: 'apex-os-nosdn-nofeature-noha-baremetal-master'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-nosdn-nofeature-noha
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-run-deploy-test-baremetal-master'
+ - name: 'apex-os-nosdn-nofeature-ha-baremetal-master'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-nosdn-nofeature-ha
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-run-deploy-test-baremetal-master'
+ - name: 'apex-os-odl-nofeature-ha-baremetal-master'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-odl-nofeature-ha
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
- - name: 'apex-run-deploy-test-baremetal-master'
+ - name: 'apex-os-odl-nofeature-noha-baremetal-master'
+ node-parameters: false
+ current-parameters: false
+ predefined-parameters: |
+ OPNFV_CLEAN=yes
+ kill-phase-on: NEVER
+ abort-all-job: true
+ git-revision: false
+
+ - name: 'apex-os-odl-bgpvpn-ha-baremetal-master'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO=os-odl-nofeature-noha
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
@@ -1385,8 +1421,8 @@
- trigger:
name: 'apex-master'
triggers:
- - timed: '0 3 1 1 7'
+ - timed: '0 12 * * *'
- trigger:
name: 'apex-danube'
triggers:
- - timed: '0 12 * * *'
+ - timed: '0 3 1 1 7'
diff --git a/jjb/apex/apex.yml.j2 b/jjb/apex/apex.yml.j2
index 752cf281d..c2b73b65c 100644
--- a/jjb/apex/apex.yml.j2
+++ b/jjb/apex/apex.yml.j2
@@ -13,13 +13,13 @@
- 'apex-csit-promote-daily-{stream}'
- 'apex-fdio-promote-daily-{stream}'
- 'apex-verify-iso-{stream}'
- - 'apex-run-deploy-test-baremetal-{stream}'
+ - 'apex-{scenario}-baremetal-{scenario_stream}'
- 'apex-upload-snapshot'
- 'apex-create-snapshot'
# stream: branch with - in place of / (eg. stable-arno)
# branch: branch (eg. stable/arno)
stream:
- - master:
+ - master: &master
branch: 'master'
gs-pathname: ''
build-slave: 'apex-build-master'
@@ -27,8 +27,9 @@
baremetal-slave: 'apex-baremetal-master'
verify-scenario: 'os-odl-nofeature-ha'
concurrent-builds: 3
+ scenario_stream: 'master'
- - danube:
+ - danube: &danube
branch: 'stable/danube'
gs-pathname: '/danube'
build-slave: 'apex-build-danube'
@@ -36,7 +37,16 @@
baremetal-slave: 'apex-baremetal-danube'
verify-scenario: 'os-odl_l3-nofeature-ha'
concurrent-builds: 1
- disabled: false
+ scenario_stream: 'danube'
+ disabled: true
+
+ scenario:
+ {%- for stream in scenarios %}
+ {%- for scenario in scenarios[stream] %}
+ - '{{scenario}}':
+ <<: *{{stream}}
+ {%- endfor %}
+ {%- endfor %}
platform:
- 'baremetal'
@@ -478,11 +488,6 @@
- job-template:
name: 'apex-deploy-{platform}-{stream}'
- # Job template for virtual deployment
- #
- # Required Variables:
- # stream: branch with - in place of / (eg. stable)
- # branch: branch (eg. stable)
node: 'apex-{platform}-{stream}'
concurrent: true
@@ -498,6 +503,7 @@
fail: true
parameters:
+ - '{project}-{platform}-{stream}-defaults'
- project-parameter:
project: '{project}'
branch: '{branch}'
@@ -536,13 +542,8 @@
# Baremetal Deploy and Test
- job-template:
- name: 'apex-run-deploy-test-baremetal-{stream}'
+ name: 'apex-{scenario}-baremetal-{scenario_stream}'
- # Job template for daily build
- #
- # Required Variables:
- # stream: branch with - in place of / (eg. stable)
- # branch: branch (eg. stable)
project-type: 'multijob'
disabled: false
@@ -552,7 +553,7 @@
parameters:
- '{project}-defaults'
- - '{project}-baremetal-{stream}-defaults'
+ - '{project}-baremetal-{scenario_stream}-defaults'
- project-parameter:
project: '{project}'
branch: '{branch}'
@@ -560,7 +561,7 @@
gs-pathname: '{gs-pathname}'
- string:
name: DEPLOY_SCENARIO
- default: '{verify-scenario}'
+ default: '{scenario}'
description: "Scenario to deploy with."
properties:
- logrotate-default
@@ -579,7 +580,7 @@
name: 'Baremetal Deploy'
condition: ALWAYS
projects:
- - name: 'apex-deploy-baremetal-{stream}'
+ - name: 'apex-deploy-baremetal-{scenario_stream}'
node-parameters: true
current-parameters: true
predefined-parameters: |
@@ -592,9 +593,9 @@
git-revision: false
- multijob:
name: Functest
- condition: ALWAYS
+ condition: SUCCESSFUL
projects:
- - name: 'functest-apex-baremetal-daily-{stream}'
+ - name: 'functest-apex-baremetal-daily-{scenario_stream}'
node-parameters: true
current-parameters: false
predefined-parameters:
@@ -606,7 +607,7 @@
name: Yardstick
condition: ALWAYS
projects:
- - name: 'yardstick-apex-baremetal-daily-{stream}'
+ - name: 'yardstick-apex-baremetal-daily-{scenario_stream}'
node-parameters: true
current-parameters: false
predefined-parameters:
@@ -686,11 +687,10 @@
condition: SUCCESSFUL
projects:
{% for scenario in scenarios[stream] %}
- - name: 'apex-run-deploy-test-baremetal-{{ stream }}'
+ - name: 'apex-{{ scenario }}-baremetal-{{ stream }}'
node-parameters: false
current-parameters: false
predefined-parameters: |
- DEPLOY_SCENARIO={{scenario}}
OPNFV_CLEAN=yes
kill-phase-on: NEVER
abort-all-job: true
@@ -1024,9 +1024,9 @@
- trigger:
name: 'apex-master'
triggers:
- - timed: '0 3 1 1 7'
+ - timed: '0 12 * * *'
- trigger:
name: 'apex-danube'
triggers:
- - timed: '0 12 * * *'
+ - timed: '0 3 1 1 7'
diff --git a/jjb/apex/scenarios.yaml.hidden b/jjb/apex/scenarios.yaml.hidden
index dc9107a11..748cd21b8 100644
--- a/jjb/apex/scenarios.yaml.hidden
+++ b/jjb/apex/scenarios.yaml.hidden
@@ -3,6 +3,7 @@ master:
- 'os-nosdn-nofeature-ha'
- 'os-odl-nofeature-ha'
- 'os-odl-nofeature-noha'
+ - 'os-odl-bgpvpn-ha'
danube:
- 'os-nosdn-nofeature-noha'
- 'os-nosdn-nofeature-ha'
diff --git a/jjb/armband/armband-deploy.sh b/jjb/armband/armband-deploy.sh
index b11500434..9964ed5cc 100755
--- a/jjb/armband/armband-deploy.sh
+++ b/jjb/armband/armband-deploy.sh
@@ -93,7 +93,7 @@ else
fi
# construct the command
-DEPLOY_COMMAND="sudo -E $WORKSPACE/ci/deploy.sh -b ${LAB_CONFIG_URL} \
+DEPLOY_COMMAND="$WORKSPACE/ci/deploy.sh -b ${LAB_CONFIG_URL} \
-l $LAB_NAME -p $POD_NAME -s $DEPLOY_SCENARIO -i file://${ISO_FILE} \
-H -B ${DEFAULT_BRIDGE:-pxebr} -S $TMPDIR -L $WORKSPACE/$FUEL_LOG_FILENAME \
${DEPLOY_CACHE}"
diff --git a/jjb/doctor/doctor.yml b/jjb/doctor/doctor.yml
index c5454c799..5bb8f7499 100644
--- a/jjb/doctor/doctor.yml
+++ b/jjb/doctor/doctor.yml
@@ -189,6 +189,11 @@
# 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}/{project}.log"
diff --git a/jjb/functest/functest-alpine.sh b/jjb/functest/functest-alpine.sh
new file mode 100644
index 000000000..4b4c36503
--- /dev/null
+++ b/jjb/functest/functest-alpine.sh
@@ -0,0 +1,72 @@
+#!/bin/bash
+
+set -e
+set +u
+set +o pipefail
+
+[[ $CI_DEBUG == true ]] && redirect="/dev/stdout" || redirect="/dev/null"
+FUNCTEST_DIR=/home/opnfv/functest
+
+# Prepare OpenStack credentials volume
+if [[ ${INSTALLER_TYPE} == 'joid' ]]; then
+ rc_file=$LAB_CONFIG/admin-openrc
+elif [[ ${INSTALLER_TYPE} == 'compass' && ${BRANCH} == 'master' ]]; 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
+ rc_file=${HOME}/opnfv-openrc.sh
+else
+ rc_file=${HOME}/opnfv-openrc.sh
+fi
+rc_file_vol="-v ${rc_file}:${FUNCTEST_DIR}/conf/openstack.creds"
+
+
+# Set iptables rule to allow forwarding return traffic for container
+if ! sudo iptables -C FORWARD -j RETURN 2> ${redirect} || ! sudo iptables -L FORWARD | awk 'NR==3' | grep RETURN 2> ${redirect}; then
+ sudo iptables -I FORWARD -j RETURN
+fi
+
+DEPLOY_TYPE=baremetal
+[[ $BUILD_TAG =~ "virtual" ]] && DEPLOY_TYPE=virt
+HOST_ARCH=$(uname -m)
+
+echo "Functest: Start Docker and prepare environment"
+
+echo "Functest: Download images that will be used by test cases"
+images_dir="${HOME}/opnfv/functest/images"
+chmod +x ${WORKSPACE}/functest/ci/download_images.sh
+${WORKSPACE}/functest/ci/download_images.sh ${images_dir} ${DEPLOY_SCENARIO} ${HOST_ARCH} 2> ${redirect}
+images_vol="-v ${images_dir}:${FUNCTEST_DIR}/images"
+
+dir_result="${HOME}/opnfv/functest/results/${BRANCH##*/}"
+mkdir -p ${dir_result}
+sudo rm -rf ${dir_result}/*
+results_vol="-v ${dir_result}:${FUNCTEST_DIR}/results"
+custom_params=
+test -f ${HOME}/opnfv/functest/custom/params_${DOCKER_TAG} && custom_params=$(cat ${HOME}/opnfv/functest/custom/params_${DOCKER_TAG})
+
+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"
+
+ envs=${env}" -e OPENO_MSB_ENDPOINT=${openo_msb_endpoint}"
+fi
+
+volumes="${images_vol} ${results_vol} ${sshkey_vol} ${rc_file_vol}"
+
+
+tiers=(healthcheck smoke)
+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 ${envs} ${volumes} ${FUNCTEST_IMAGE}"
+ echo "Running Functest tier '${tier}'. CMD: ${cmd}"
+ ${cmd}
+done
diff --git a/jjb/functest/functest-daily-jobs.yml b/jjb/functest/functest-daily-jobs.yml
index fdef6f483..cc9bac0a9 100644
--- a/jjb/functest/functest-daily-jobs.yml
+++ b/jjb/functest/functest-daily-jobs.yml
@@ -209,6 +209,12 @@
# <<: *master
#--------------------------------
+ alpine-pod:
+ - ericsson-virtual-pod1bl01:
+ slave-label: '{alpine-pod}'
+ installer: fuel
+ <<: *master
+
testsuite:
- 'suite':
job-timeout: 60
@@ -217,6 +223,7 @@
jobs:
- 'functest-{installer}-{pod}-{testsuite}-{stream}'
+ - 'functest-alpine-{installer}-{alpine-pod}-{testsuite}-{stream}'
################################
# job template
@@ -269,6 +276,46 @@
description: "Built on $NODE_NAME"
- 'functest-{testsuite}-builder'
+- job-template:
+ name: 'functest-alpine-{installer}-{alpine-pod}-{testsuite}-{stream}'
+
+ concurrent: true
+
+ properties:
+ - logrotate-default
+ - throttle:
+ enabled: true
+ max-per-node: 1
+ option: 'project'
+
+ wrappers:
+ - build-name:
+ name: '$BUILD_NUMBER Suite: $FUNCTEST_SUITE_NAME Scenario: $DEPLOY_SCENARIO'
+ - timeout:
+ timeout: '{job-timeout}'
+ abort: true
+
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ branch: '{branch}'
+ - '{installer}-defaults'
+ - '{slave-label}-defaults'
+ - 'functest-{testsuite}-parameter'
+ - string:
+ name: DEPLOY_SCENARIO
+ default: 'os-nosdn-nofeature-noha'
+ - functest-parameter:
+ gs-pathname: '{gs-pathname}'
+
+ scm:
+ - git-scm
+
+ builders:
+ - description-setter:
+ description: "Built on $NODE_NAME"
+ - 'functest-alpine-daily-builder'
+
########################
# parameter macros
########################
@@ -360,6 +407,15 @@
- 'functest-exit'
- builder:
+ name: functest-alpine-daily-builder
+ builders:
+ - shell:
+ !include-raw:
+ - ./functest-env-presetup.sh
+ - ../../utils/fetch_os_creds.sh
+ - ./functest-alpine.sh
+
+- builder:
name: functest-daily
builders:
- shell:
diff --git a/jjb/global/slave-params.yml b/jjb/global/slave-params.yml
index 50859c46f..3694c0bc9 100644
--- a/jjb/global/slave-params.yml
+++ b/jjb/global/slave-params.yml
@@ -935,6 +935,16 @@
default: https://gerrit.opnfv.org/gerrit/$PROJECT
description: 'Git URL to use on this Jenkins Slave'
- parameter:
+ name: 'ericsson-virtual-pod1bl01-defaults'
+ parameters:
+ - label:
+ name: SLAVE_LABEL
+ default: 'ericsson-virtual-pod1bl01'
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ description: 'Git URL to use on this Jenkins Slave'
+- parameter:
name: 'odl-netvirt-virtual-defaults'
parameters:
- label:
diff --git a/jjb/qtip/qtip-verify-jobs.yml b/jjb/qtip/qtip-verify-jobs.yml
index dd444c7a5..57d24b432 100644
--- a/jjb/qtip/qtip-verify-jobs.yml
+++ b/jjb/qtip/qtip-verify-jobs.yml
@@ -7,6 +7,8 @@
project: qtip
jobs:
- 'qtip-verify-{stream}'
+ - 'qtip-review-notebook-{stream}'
+ - 'qtip-merge-{stream}'
stream:
- master:
branch: '{stream}'
@@ -63,6 +65,89 @@
publishers:
- publish-coverage
+# upload juypter notebook to artifacts for review
+- job-template:
+ name: 'qtip-review-notebook-{stream}'
+
+ disabled: '{obj:disabled}'
+
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ branch: '{branch}'
+ - 'opnfv-build-ubuntu-defaults'
+
+ scm:
+ - 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}'
+ disable-strict-forbidden-file-verification: 'true'
+ file-paths:
+ - compare-type: ANT
+ pattern: 'examples/**'
+ builders:
+ - upload-under-review-notebooks-to-opnfv-artifacts
+ - report-build-result-to-gerrit
+
+- job-template:
+ name: 'qtip-merge-{stream}'
+
+ disabled: '{obj:disabled}'
+
+ parameters:
+ - project-parameter:
+ project: $GERRIT_PROJECT
+ branch: '{branch}'
+ - string:
+ name: GS_URL
+ default: '$GS_BASE{gs-pathname}'
+ description: "Directory where the build artifact will be located upon the completion of the build."
+ - string:
+ name: GERRIT_REFSPEC
+ default: 'refs/heads/{branch}'
+ description: "JJB configured GERRIT_REFSPEC parameter"
+
+ scm:
+ - git-scm
+
+ triggers:
+ - gerrit:
+ server-name: 'gerrit.opnfv.org'
+ trigger-on:
+ - change-merged-event
+ - comment-added-contains-event:
+ comment-contains-value: 'remerge'
+ projects:
+ - project-compare-type: 'ANT'
+ project-pattern: '*'
+ branches:
+ - branch-compare-type: 'ANT'
+ branch-pattern: '**/{branch}'
+ file-paths:
+ - compare-type: ANT
+ pattern: examples/**
+
+ builders:
+ - remove-old-docs-from-opnfv-artifacts
+
################################
## job builders
#################################
@@ -76,3 +161,35 @@
set -o xtrace
tox
+
+# modified from upload-under-review-docs-to-opnfv-artifacts in global/releng-macro.yml
+- builder:
+ name: upload-under-review-notebooks-to-opnfv-artifacts
+ builders:
+ - shell: |
+ #!/bin/bash
+ set -o errexit
+ set -o pipefail
+ set -o xtrace
+ export PATH=$PATH:/usr/local/bin/
+
+ [[ $GERRIT_CHANGE_NUMBER =~ .+ ]]
+ [[ -d examples ]] || exit 0
+
+ echo
+ echo "###########################"
+ echo "UPLOADING DOCS UNDER REVIEW"
+ echo "###########################"
+ echo
+
+ gs_base="artifacts.opnfv.org/$PROJECT/review"
+ gs_path="$gs_base/$GERRIT_CHANGE_NUMBER"
+ local_path="upload/$GERRIT_CHANGE_NUMBER"
+
+ mkdir -p upload
+ cp -r examples "$local_path"
+ gsutil -m cp -r "$local_path" "gs://$gs_base/"
+
+ echo "Document link(s):" >> gerrit_comment.txt
+ find "$local_path" | grep -e 'ipynb$' | \
+ sed -e "s|^$local_path| https://nbviewer.jupyter.org/urls/$gs_path|" >> gerrit_comment.txt
diff --git a/utils/test/testapi/opnfv_testapi/resources/handlers.py b/utils/test/testapi/opnfv_testapi/resources/handlers.py
index c7fed8f17..f23cc57ee 100644
--- a/utils/test/testapi/opnfv_testapi/resources/handlers.py
+++ b/utils/test/testapi/opnfv_testapi/resources/handlers.py
@@ -107,12 +107,15 @@ class GenericApiHandler(web.RequestHandler):
per_page = kwargs.get('per_page', 0)
if query is None:
query = {}
- cursor = self._eval_db(self.table, 'find', query)
- records_count = yield cursor.count()
- total_pages = self._calc_total_pages(records_count,
- last,
- page,
- per_page)
+
+ total_pages = 0
+ if page > 0:
+ cursor = self._eval_db(self.table, 'find', query)
+ records_count = yield cursor.count()
+ total_pages = self._calc_total_pages(records_count,
+ last,
+ page,
+ per_page)
pipelines = self._set_pipelines(query, sort, last, page, per_page)
cursor = self._eval_db(self.table,
'aggregate',
@@ -125,7 +128,7 @@ class GenericApiHandler(web.RequestHandler):
res = {self.table: data}
else:
res = res_op(data, *args)
- if total_pages > 0:
+ if page > 0:
res.update({
'pagination': {
'current_page': kwargs.get('page'),
@@ -140,12 +143,10 @@ class GenericApiHandler(web.RequestHandler):
if (records_count > last) and (last > 0):
records_nr = last
- total_pages = 0
- if page > 0:
- total_pages, remainder = divmod(records_nr, per_page)
- if remainder > 0:
- total_pages += 1
- if page > total_pages:
+ total_pages, remainder = divmod(records_nr, per_page)
+ if remainder > 0:
+ total_pages += 1
+ if page > 1 and page > total_pages:
raises.BadRequest(
'Request page > total_pages [{}]'.format(total_pages))
return total_pages
diff --git a/utils/test/testapi/opnfv_testapi/resources/result_handlers.py b/utils/test/testapi/opnfv_testapi/resources/result_handlers.py
index 1773216c0..f9706fc97 100644
--- a/utils/test/testapi/opnfv_testapi/resources/result_handlers.py
+++ b/utils/test/testapi/opnfv_testapi/resources/result_handlers.py
@@ -60,6 +60,12 @@ class GenericResultHandler(handlers.GenericApiHandler):
query[k] = v
if date_range:
query['start_date'] = date_range
+
+ # if $lt is not provided,
+ # empty/None/null/'' start_date will also be returned
+ if 'start_date' in query and '$lt' not in query['start_date']:
+ query['start_date'].update({'$lt': str(datetime.now())})
+
return query
@@ -147,7 +153,7 @@ class ResultsCLHandler(GenericResultHandler):
@in trust_indicator: query
@required trust_indicator: False
"""
- limitations = {'sort': {'start_date': -1}}
+ limitations = {'sort': {'_id': -1}}
last = self.get_query_argument('last', 0)
if last is not None:
last = self.get_int('last', last)
diff --git a/utils/test/testapi/opnfv_testapi/tests/unit/fake_pymongo.py b/utils/test/testapi/opnfv_testapi/tests/unit/fake_pymongo.py
index adaf6f7c3..04785d2b8 100644
--- a/utils/test/testapi/opnfv_testapi/tests/unit/fake_pymongo.py
+++ b/utils/test/testapi/opnfv_testapi/tests/unit/fake_pymongo.py
@@ -119,10 +119,14 @@ class MemDb(object):
@staticmethod
def _compare_date(spec, value):
+ gte = True
+ lt = False
for k, v in spec.iteritems():
- if k == '$gte' and value >= v:
- return True
- return False
+ if k == '$gte' and value < v:
+ gte = False
+ elif k == '$lt' and value < v:
+ lt = True
+ return gte and lt
def _in(self, content, *args):
if self.name == 'scenarios':
diff --git a/utils/test/testapi/opnfv_testapi/tests/unit/resources/test_result.py b/utils/test/testapi/opnfv_testapi/tests/unit/resources/test_result.py
index c8463cb02..2bff04805 100644
--- a/utils/test/testapi/opnfv_testapi/tests/unit/resources/test_result.py
+++ b/utils/test/testapi/opnfv_testapi/tests/unit/resources/test_result.py
@@ -208,9 +208,9 @@ class TestResultCreate(TestResultBase):
class TestResultGet(TestResultBase):
def setUp(self):
super(TestResultGet, self).setUp()
+ self.req_10d_before = self._create_changed_date(days=-10)
self.req_d_id = self._create_d()
self.req_10d_later = self._create_changed_date(days=10)
- self.req_10d_before = self._create_changed_date(days=-10)
@executor.get(httplib.OK, 'assert_res')
def test_getOne(self):
@@ -256,9 +256,9 @@ class TestResultGet(TestResultBase):
def test_queryPeriodNotInt(self):
return self._set_query('period=a')
- @executor.query(httplib.OK, '_query_last_one', 1)
+ @executor.query(httplib.OK, '_query_period_one', 1)
def test_queryPeriodSuccess(self):
- return self._set_query('period=1')
+ return self._set_query('period=11')
@executor.query(httplib.BAD_REQUEST, message.must_int('last'))
def test_queryLastNotInt(self):
@@ -268,7 +268,7 @@ class TestResultGet(TestResultBase):
def test_queryLast(self):
return self._set_query('last=1')
- @executor.query(httplib.OK, '_query_last_one', 1)
+ @executor.query(httplib.OK, '_query_period_one', 1)
def test_combination(self):
return self._set_query('pod',
'project',
@@ -279,7 +279,7 @@ class TestResultGet(TestResultBase):
'scenario',
'trust_indicator',
'criteria',
- 'period=1')
+ 'period=11')
@executor.query(httplib.OK, '_query_success', 0)
def test_notFound(self):
@@ -294,6 +294,14 @@ class TestResultGet(TestResultBase):
'criteria',
'period=1')
+ @executor.query(httplib.OK, '_query_success', 1)
+ def test_filterErrorStartdate(self):
+ self._create_error_start_date(None)
+ # self._create_error_start_date('None')
+ self._create_error_start_date('null')
+ self._create_error_start_date('')
+ return self._set_query('period=11')
+
def _query_success(self, body, number):
self.assertEqual(number, len(body.results))
@@ -301,6 +309,16 @@ class TestResultGet(TestResultBase):
self.assertEqual(number, len(body.results))
self.assert_res(body.results[0], self.req_10d_later)
+ def _query_period_one(self, body, number):
+ self.assertEqual(number, len(body.results))
+ self.assert_res(body.results[0], self.req_10d_before)
+
+ def _create_error_start_date(self, start_date):
+ req = copy.deepcopy(self.req_d)
+ req.start_date = start_date
+ self.create(req)
+ return req
+
def _create_changed_date(self, **kwargs):
req = copy.deepcopy(self.req_d)
req.start_date = datetime.now() + timedelta(**kwargs)
diff --git a/utils/test/testapi/requirements.txt b/utils/test/testapi/requirements.txt
index d2a45dcd0..4b6f75c10 100644
--- a/utils/test/testapi/requirements.txt
+++ b/utils/test/testapi/requirements.txt
@@ -2,9 +2,9 @@
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
-pbr==2.0.0
-setuptools>=16.0
-tornado>=3.1,<=4.3
+pbr>=2.0.0,!=2.1.0 # Apache-2.0
+setuptools>=16.0,!=24.0.0,!=34.0.0,!=34.0.1,!=34.0.2,!=34.0.3,!=34.1.0,!=34.1.1,!=34.2.0,!=34.3.0,!=34.3.1,!=34.3.2 # PSF/ZPL
+tornado>=3.1,<=4.3 # Apache-2.0
epydoc>=0.3.1
-six>=1.9.0
-motor
+six>=1.9.0 # MIT
+motor # Apache-2.0
diff --git a/utils/test/testapi/test-requirements.txt b/utils/test/testapi/test-requirements.txt
index 3bead7987..233f4652b 100644
--- a/utils/test/testapi/test-requirements.txt
+++ b/utils/test/testapi/test-requirements.txt
@@ -2,9 +2,9 @@
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
-coverage
-mock>=2.0
-nose>=1.3.1
-pytest
-pytest-cov
-pytest-mock
+coverage>=4.0,!=4.4 # Apache-2.0
+mock>=2.0 # BSD
+nose # LGPL
+pytest # MIT
+pytest-cov # MIT
+pytest-mock # MIT