--- /dev/null
+# Upstream contributions, bitergia will crawl this and extract the relevant information
+# system is one of Gerrit, Bugzilla, Launchpad (insert more)
+#
+# All the contributions listed in this file are merged commits. Contributions under
+# review, in progress and abandoned are not included.
+# The latest contribution included in this file is 453130 and it is dated 2017-05-23.
+# Contributions from Yolanda Robla Mota have not been included yet.
+# The gerrit query used to list contributions is
+# status:merged AND (owner: "Markos Chandras" OR owner: "Fatih Degirmenci")
+---
+-
+ url: https://review.openstack.org/#/c/453130/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/466422/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/466421/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/466249/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/465927/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/465686/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/465685/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/464759/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/464180/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/464629/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/463359/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/463313/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/463301/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/463300/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/462488/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/450970/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/463299/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/462863/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/461754/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/462859/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/462443/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/461755/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/461018/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/461017/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/461050/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/458616/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/460617/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/458797/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/453128/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/459984/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/460071/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/459779/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/459775/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/459332/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/459331/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/459330/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/459715/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/459702/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/459684/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/459599/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/459461/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/458801/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/457709/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/458246/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/458420/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/458419/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/450634/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/457695/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/455290/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/455461/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/448800/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/453609/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/453798/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/453577/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/453574/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/449183/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/452079/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/452160/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/450384/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/450210/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/451848/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/451426/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/450239/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/450095/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/448625/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/447444/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/447435/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/441041/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/444197/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/439938/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/444033/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/442224/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/428345/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/440614/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/439946/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/441042/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/439940/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/433517/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/435433/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/437010/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/436948/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/436000/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/436066/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/436085/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/435994/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/434328/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/433532/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/427682/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/428704/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/430864/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/428716/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/427744/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/426844/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/424853/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/410639/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/407970/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/387441/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/398317/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/401991/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/400150/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/404315/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/389171/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/401164/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/400712/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/392002/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/388242/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/392003/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/392986/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/392004/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/389079/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/388158/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/388840/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/388780/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/388847/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/388748/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/381576/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/381575/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/378532/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/386002/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/381574/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/381541/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/376303/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/379835/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/376534/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/375350/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/371602/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/370258/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/370584/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/363458/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/366835/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/363896/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/353165/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/361652/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/358477/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/359922/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/357268/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/357718/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/356964/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/355485/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/355431/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/355668/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/202056/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/202180/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/192397/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/192720/
+ system: Gerrit
+-
+ url: https://review.openstack.org/#/c/163149/
+ system: Gerrit
set -o nounset
set -o pipefail
-APEX_PKGS="common undercloud" # removed onos for danube
+APEX_PKGS="common undercloud onos"
IPV6_FLAG=False
# log info to console
set -o nounset
set -o pipefail
-APEX_PKGS="common undercloud" # removed onos for danube
+APEX_PKGS="common undercloud onos"
# log info to console
echo "Downloading the Apex artifact. This could take some time..."
RPM_INSTALL_PATH=$BUILD_DIRECTORY/noarch
RPM_LIST=$RPM_INSTALL_PATH/$(basename $OPNFV_RPM_URL)
VERSION_EXTENSION=$(echo $(basename $OPNFV_RPM_URL) | sed 's/opnfv-apex-//')
- for pkg in common undercloud; do # removed onos for danube
+ for pkg in common undercloud onos; do
RPM_LIST+=" ${RPM_INSTALL_PATH}/opnfv-apex-${pkg}-${VERSION_EXTENSION}"
done
SRPM_INSTALL_PATH=$BUILD_DIRECTORY
SRPM_LIST=$SRPM_INSTALL_PATH/$(basename $OPNFV_SRPM_URL)
VERSION_EXTENSION=$(echo $(basename $OPNFV_SRPM_URL) | sed 's/opnfv-apex-//')
- for pkg in common undercloud; do # removed onos for danube
+ for pkg in common undercloud onos; do
SRPM_LIST+=" ${SRPM_INSTALL_PATH}/opnfv-apex-${pkg}-${VERSION_EXTENSION}"
done
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: FAILURE
-# abort-all-job: true
-# git-revision: false
+ - 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:
GERRIT_REFSPEC=$GERRIT_REFSPEC
GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
+ GERRIT_EVENT_COMMENT_TEXT=$GERRIT_EVENT_COMMENT_TEXT
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={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: FAILURE
-# abort-all-job: true
-# git-revision: false
+ - 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
- job-template:
name: 'apex-runner-cperf-{stream}'
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: FAILURE
-# abort-all-job: true
-# git-revision: false
+ - 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:
GERRIT_REFSPEC=$GERRIT_REFSPEC
GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
+ GERRIT_EVENT_COMMENT_TEXT=$GERRIT_EVENT_COMMENT_TEXT
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={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: FAILURE
-# abort-all-job: true
-# git-revision: false
+ - 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
- job-template:
name: 'apex-runner-cperf-{stream}'
- trigger:
name: 'fuel-os-odl_l2-nofeature-ha-armband-baremetal-master-trigger'
triggers:
- - timed: '0 0 * * 1'
+ - timed: ''
- trigger:
name: 'fuel-os-nosdn-nofeature-ha-armband-baremetal-master-trigger'
triggers:
- - timed: '0 0 * * 2'
+ - timed: ''
- trigger:
name: 'fuel-os-odl_l3-nofeature-ha-armband-baremetal-master-trigger'
triggers:
- - timed: '0 0 * * 3'
+ - timed: ''
- trigger:
name: 'fuel-os-odl_l2-bgpvpn-ha-armband-baremetal-master-trigger'
triggers:
- - timed: '0 0 * * 4'
+ - timed: ''
- trigger:
name: 'fuel-os-odl_l2-nofeature-noha-armband-baremetal-master-trigger'
triggers:
- - timed: '0 0 * * 5'
+ - timed: ''
- trigger:
name: 'fuel-os-odl_l2-sfc-ha-armband-baremetal-master-trigger'
triggers:
- - timed: '0 0,20 * * 6'
+ - timed: ''
- trigger:
name: 'fuel-os-odl_l2-sfc-noha-armband-baremetal-master-trigger'
triggers:
- - timed: '0 0,20 * * 7'
+ - timed: ''
#----------------------------------------------------------------------
# Enea Armband CI Baremetal Triggers running against danube branch
- trigger:
name: 'fuel-os-odl_l2-nofeature-ha-armband-baremetal-danube-trigger'
triggers:
- - timed: '0 4 * * 1,2,3,4,5'
+ - timed: '0 0,16 * * 2,4'
- trigger:
name: 'fuel-os-nosdn-nofeature-ha-armband-baremetal-danube-trigger'
triggers:
- - timed: '0 8 * * 1,2,3,4,5'
+ - timed: '0 0 * * 1,5,7'
- trigger:
name: 'fuel-os-odl_l2-bgpvpn-ha-armband-baremetal-danube-trigger'
triggers:
- - timed: '0 12 * * 1,2,3,4,5'
+ - timed: '0 16 * * 1,5,7'
- trigger:
name: 'fuel-os-odl_l3-nofeature-ha-armband-baremetal-danube-trigger'
triggers:
- - timed: '0 16 * * 1,2,3,4,5'
+ - timed: '0 8 * * 2,4,6'
- trigger:
name: 'fuel-os-odl_l2-nofeature-noha-armband-baremetal-danube-trigger'
triggers:
- - timed: '0 20 * * 1,2,3,4,5'
+ - timed: '0 8 * * 1,3,5,7'
- trigger:
name: 'fuel-os-odl_l2-sfc-ha-armband-baremetal-danube-trigger'
triggers:
- - timed: '0 4,8 * * 6,7'
+ - timed: '0 0 * * 3,6'
- trigger:
name: 'fuel-os-odl_l2-sfc-noha-armband-baremetal-danube-trigger'
triggers:
- - timed: '0 12,16 * * 6,7'
+ - timed: '0 16 * * 3,6'
#---------------------------------------------------------------
# Enea Armband CI Virtual Triggers running against master branch
#---------------------------------------------------------------
--- /dev/null
+#!/bin/bash
+set -o errexit
+set -o pipefail
+export PATH=$PATH:/usr/local/bin/
+EXITSTATUS=0
+
+# This Log should always exist
+if [[ -e securityaudit.log ]] ; then
+ echo -e "\nposting security audit report to gerrit...\n"
+
+ #check if log has errors
+ if grep ERROR securityaudit.log; then
+ EXITSTATUS=1
+ fi
+
+ cat securityaudit.log | awk -F"ERROR - " '{print $2}' > shortlog
+
+ ssh -p 29418 gerrit.opnfv.org \
+ "gerrit review -p $GERRIT_PROJECT \
+ -m \"$(cat shortlog)\" \
+ $GERRIT_PATCHSET_REVISION \
+ --notify NONE"
+
+ exit $EXITSTATUS
+fi
--- /dev/null
+#!/bin/bash
+cd $WORKSPACE
+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"
+echo "--------------------------------------------------------"
+cat $WORKSPACE/patchset
+echo "--------------------------------------------------------"
+
+vols="-v $WORKSPACE:/home/opnfv/anteater/$PROJECT"
+envs="-e PROJECT=$PROJECT"
+
+echo "Pulling releng-anteater docker image"
+echo "--------------------------------------------------------"
+docker pull opnfv/releng-anteater
+echo "--------------------------------------------------------"
+
+cmd="sudo docker run --privileged=true -id $envs $vols opnfv/releng-anteater /bin/bash"
+echo "Running docker command $cmd"
+container_id=$($cmd)
+echo "Container ID is $container_id"
+cmd="anteater --project $PROJECT --patchset /home/opnfv/anteater/$PROJECT/patchset"
+echo "Executing command inside container"
+echo "$cmd"
+echo "--------------------------------------------------------"
+docker exec $container_id $cmd > $WORKSPACE/securityaudit.log 2>&1
+exit_code=$?
+echo "--------------------------------------------------------"
+echo "Stopping docker container with ID $container_id"
+docker stop $container_id
+cat securityaudit.log
+exit 0
########################
-# Job configuration for opnfv-lint
+# Job configuration for opnfv-anteater (security audit)
########################
- project:
disabled: '{obj:disabled}'
parameters:
+ - label:
+ name: SLAVE_LABEL
+ default: 'ericsson-build3'
+ description: 'Slave label on Jenkins'
- project-parameter:
project: $GERRIT_PROJECT
branch: '{branch}'
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ description: "Used for overriding the GIT URL coming from Global Jenkins configuration in case if the stuff is done on none-LF HW."
scm:
- git-scm-gerrit
comment-contains-value: 'reverify'
projects:
- project-compare-type: 'REG_EXP'
- project-pattern: 'sandbox'
+ project-pattern: 'sandbox|releng'
branches:
- branch-compare-type: 'ANT'
branch-pattern: '**/{branch}'
file-paths:
- compare-type: ANT
- pattern: '**/*.py'
- skip-vote:
- successful: true
- failed: true
- unstable: true
- notbuilt: true
+ pattern: '**'
+ skip-vote:
+ successful: true
+ failed: true
+ unstable: true
+ notbuilt: true
builders:
- - security-audit-python-code
+ - anteater-security-audit
- report-security-audit-result-to-gerrit
########################
# builder macros
########################
- builder:
- name: security-audit-python-code
+ name: anteater-security-audit
builders:
- - shell: |
- #!/bin/bash
- set -o errexit
- set -o pipefail
- set -o xtrace
- export PATH=$PATH:/usr/local/bin/
+ - shell:
+ !include-raw: ./anteater-security-audit.sh
- # this is where the security/license audit script will be executed
- echo "Hello World!"
- builder:
name: report-security-audit-result-to-gerrit
builders:
- - shell: |
- #!/bin/bash
- set -o errexit
- set -o pipefail
- set -o xtrace
- export PATH=$PATH:/usr/local/bin/
-
- # If no violations were found, no lint log will exist.
- if [[ -e securityaudit.log ]] ; then
- echo -e "\nposting security audit report to gerrit...\n"
-
- cat securityaudit.log
- echo
-
- ssh -p 29418 gerrit.opnfv.org \
- "gerrit review -p $GERRIT_PROJECT \
- -m \"$(cat securityaudit.log)\" \
- $GERRIT_PATCHSET_REVISION \
- --notify NONE"
-
- exit 1
- fi
+ - shell:
+ !include-raw: ./anteater-report-to-gerrit.sh
fi
cd $WORKSPACE/
-./build.sh --iso-dir $BUILD_DIRECTORY/ --iso-name compass.iso -c $CACHE_DIRECTORY
+
+if [[ "$BRANCH" == 'stable/danube' ]]; then
+ ./build.sh --iso-dir $BUILD_DIRECTORY/ --iso-name compass.iso -c $CACHE_DIRECTORY
+ OPNFV_ARTIFACT_SHA512SUM=$(sha512sum $BUILD_DIRECTORY/compass.iso | cut -d' ' -f1)
+ OPNFV_ARTIFACT_URL=$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso
+else
+ ./build.sh --tar-dir $BUILD_DIRECTORY/ --tar-name compass.tar.gz -c $CACHE_DIRECTORY
+ OPNFV_ARTIFACT_SHA512SUM=$(sha512sum $BUILD_DIRECTORY/compass.tar.gz | cut -d' ' -f1)
+ OPNFV_ARTIFACT_URL=$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.tar.gz
+fi
# list the build artifacts
ls -al $BUILD_DIRECTORY
echo "OPNFV_ARTIFACT_VERSION=$OPNFV_ARTIFACT_VERSION"
echo "OPNFV_GIT_URL=$(git config --get remote.origin.url)"
echo "OPNFV_GIT_SHA1=$(git rev-parse HEAD)"
- echo "OPNFV_ARTIFACT_URL=$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso"
- echo "OPNFV_ARTIFACT_SHA512SUM=$(sha512sum $BUILD_DIRECTORY/compass.iso | cut -d' ' -f1)"
+ echo "OPNFV_ARTIFACT_URL=$OPNFV_ARTIFACT_URL"
+ echo "OPNFV_ARTIFACT_SHA512SUM=$OPNFV_ARTIFACT_SHA512SUM"
echo "OPNFV_BUILD_URL=$BUILD_URL"
) > $BUILD_DIRECTORY/opnfv.properties
echo
branch: '{stream}'
gs-pathname: ''
disabled: false
+ openstack-version: ocata
danube: &danube
stream: danube
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
disabled: false
+ openstack-version: newton
#--------------------------------
# POD, INSTALLER, AND BRANCH MAPPING
#--------------------------------
#--------------------------------
pod:
- baremetal:
- slave-label: compass-baremetal
+ slave-label: compass-baremetal-master
os-version: 'xenial'
<<: *master
- virtual:
- slave-label: compass-virtual
+ slave-label: compass-virtual-master
os-version: 'xenial'
<<: *master
- baremetal:
- slave-label: compass-baremetal
+ slave-label: compass-baremetal-branch
os-version: 'xenial'
<<: *danube
- virtual:
- slave-label: compass-virtual
+ slave-label: compass-virtual-branch
os-version: 'xenial'
<<: *danube
#--------------------------------
wrappers:
- build-name:
name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
+ - fix-workspace-permissions
parameters:
- project-parameter:
predefined-parameters: |
DEPLOY_SCENARIO={scenario}
COMPASS_OS_VERSION={os-version}
+ COMPASS_OPENSTACK_VERSION={openstack-version}
same-node: true
block: true
- trigger-builds:
- build-name:
name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
- timeout:
- timeout: 120
+ timeout: 150
abort: true
+ - fix-workspace-permissions
parameters:
- project-parameter:
scm:
- git-scm
- wrappers:
- - build-name:
- name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
-
-
builders:
- description-setter:
description: "POD: $NODE_NAME"
name: GS_URL
default: '$GS_BASE{gs-pathname}'
description: "URL to Google Storage."
- - choice:
- name: COMPASS_OPENSTACK_VERSION
- choices:
- - 'newton'
########################
# trigger macros
echo 1 > /proc/sys/vm/drop_caches
export CONFDIR=$WORKSPACE/deploy/conf
-export ISO_URL=file://$BUILD_DIRECTORY/compass.iso
+if [[ "$BRANCH" = 'stable/danube' ]]; then
+ export ISO_URL=file://$BUILD_DIRECTORY/compass.iso
+else
+ export ISO_URL=file://$BUILD_DIRECTORY/compass.tar.gz
+fi
cd $WORKSPACE
wrappers:
- build-name:
name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
+ - fix-workspace-permissions
triggers:
- '{auto-trigger-name}'
- build-name:
name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
- timeout:
- timeout: 120
+ timeout: 150
abort: true
+ - fix-workspace-permissions
parameters:
- project-parameter:
scm:
- git-scm
- wrappers:
- - build-name:
- name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
-
-
builders:
- description-setter:
description: "POD: $NODE_NAME"
# source the file so we get OPNFV vars
source $BUILD_DIRECTORY/latest.properties
-# download the file
-curl -s -o $BUILD_DIRECTORY/compass.iso http://$OPNFV_ARTIFACT_URL > gsutil.iso.log 2>&1
-
-# list the file
-ls -al $BUILD_DIRECTORY/compass.iso
+if [[ "$BRANCH" == 'stable/danube' ]]; then
+ # download the file
+ curl -s -o $BUILD_DIRECTORY/compass.iso http://$OPNFV_ARTIFACT_URL > gsutil.iso.log 2>&1
+ # list the file
+ ls -al $BUILD_DIRECTORY/compass.iso
+else
+ # download the file
+ curl -s -o $BUILD_DIRECTORY/compass.tar.gz http://$OPNFV_ARTIFACT_URL > gsutil.tar.gz.log 2>&1
+ # list the file
+ ls -al $BUILD_DIRECTORY/compass.tar.gz
+fi
echo
echo "--------------------------------------------------------"
-echo "Done!"
\ No newline at end of file
+echo "Done!"
echo "--------------------------------------------------------"
echo
+if [[ "$BRANCH" == 'stable/danube' ]]; then
+ FILETYPE='iso'
+else
+ FILETYPE='tar.gz'
+fi
# source the opnfv.properties to get ARTIFACT_VERSION
source $BUILD_DIRECTORY/opnfv.properties
time gpg2 -vvv --batch --yes --no-tty \
--default-key opnfv-helpdesk@rt.linuxfoundation.org \
--passphrase besteffort \
- --detach-sig $BUILD_DIRECTORY/compass.iso
+ --detach-sig $BUILD_DIRECTORY/compass.$FILETYPE
-gsutil cp $BUILD_DIRECTORY/compass.iso.sig gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso.sig
+gsutil cp $BUILD_DIRECTORY/compass.$FILETYPE.sig gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.$FILETYPE.sig
echo "ISO signature Upload Complete!"
}
signiso
# upload artifact and additional files to google storage
-gsutil cp $BUILD_DIRECTORY/compass.iso gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso > gsutil.iso.log 2>&1
+gsutil cp $BUILD_DIRECTORY/compass.$FILETYPE gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.$FILETYPE > gsutil.$FILETYPE.log 2>&1
gsutil cp $BUILD_DIRECTORY/opnfv.properties gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.properties > gsutil.properties.log 2>&1
gsutil cp $BUILD_DIRECTORY/opnfv.properties gs://$GS_URL/latest.properties > gsutil.latest.log 2>&1
gsutil -m setmeta \
-h "Cache-Control:private, max-age=0, no-transform" \
- gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso > /dev/null 2>&1
+ gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.$FILETYPE > /dev/null 2>&1
# disabled errexit due to gsutil setmeta complaints
# BadRequestException: 400 Invalid argument
# check if we uploaded the file successfully to see if things are fine
-gsutil ls gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso > /dev/null 2>&1
+gsutil ls gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.$FILETYPE > /dev/null 2>&1
if [[ $? -ne 0 ]]; then
echo "Problem while uploading artifact!"
- echo "Check log $WORKSPACE/gsutil.iso.log on the machine where this build is done."
+ echo "Check log $WORKSPACE/gsutil.$FILETYPE.log on the machine where this build is done."
exit 1
fi
echo
echo "--------------------------------------------------------"
echo "Done!"
-echo "Artifact is available as http://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso"
+echo "Artifact is available as http://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.$FILETYPE"
gs-pathname: ''
ppa-pathname: '/{stream}'
disabled: false
+ openstack-version: 'ocata'
+ branch-type: 'master'
- danube:
branch: 'stable/{stream}'
gs-pathname: '/{stream}'
ppa-pathname: '/{stream}'
disabled: false
+ openstack-version: 'newton'
+ branch-type: 'branch'
distro:
- 'xenial':
- 'compass-os-.*?-virtual-daily-.*?'
block-level: 'NODE'
- scm:
- - git-scm-gerrit
-
wrappers:
- ssh-agent-wrapper
- timeout:
- timeout: 120
+ timeout: 150
fail: true
+ - fix-workspace-permissions
+
+ scm:
+ - git-scm-gerrit
triggers:
- gerrit:
- project-parameter:
project: '{project}'
branch: '{branch}'
- - 'compass-virtual-defaults'
+ - 'compass-virtual-{branch-type}-defaults'
- '{installer}-defaults'
- 'compass-verify-defaults':
installer: '{installer}'
current-parameters: true
predefined-parameters: |
COMPASS_OS_VERSION={os-version}
+ COMPASS_OPENSTACK_VERSION={openstack-version}
node-parameters: true
kill-phase-on: FAILURE
abort-all-job: true
- 'compass-os-.*?-virtual-daily-.*?'
block-level: 'NODE'
- scm:
- - git-scm-gerrit
-
wrappers:
- ssh-agent-wrapper
- timeout:
- timeout: 120
+ timeout: 150
fail: true
+ - fix-workspace-permissions
+
+ scm:
+ - git-scm-gerrit
triggers:
- gerrit:
- project-parameter:
project: '{project}'
branch: '{branch}'
- - 'compass-virtual-defaults'
+ - 'compass-virtual-{branch-type}-defaults'
- '{installer}-defaults'
- 'compass-verify-defaults':
installer: '{installer}'
- 'functest-compass-virtual.*'
block-level: 'NODE'
- scm:
- - git-scm-gerrit
-
wrappers:
- ssh-agent-wrapper
- timeout:
- timeout: 120
+ timeout: 150
fail: true
+ - fix-workspace-permissions
+
+ scm:
+ - git-scm-gerrit
builders:
- description-setter:
- string:
name: PPA_CACHE
default: "$WORKSPACE/work/repo/"
- - choice:
- name: COMPASS_OPENSTACK_VERSION
- choices:
- - 'newton'
- choice:
name: COMPASS_OS_VERSION
choices:
echo "This is $INSTALLER_TYPE deploy job!"
echo "--------------------------------------------------------"
-DEPLOY_SCENARIO=${DEPLOY_SCENARIO:-"os-nosdn-nofeature-ha"}
+DEPLOY_SCENARIO=${DEPLOY_SCENARIO:-"os-nosdn-nofeature-noha"}
BRIDGE=${BRIDGE:-pxebr}
LAB_NAME=${NODE_NAME/-*}
POD_NAME=${NODE_NAME/*-}
cp -r securedlab/labs .
DEPLOY_COMMAND="sudo ./ci/deploy/deploy.sh -b $BASE_DIR \
- -l $LAB_NAME -p $POD_NAME -B $BRIDGE"
+ -l $LAB_NAME -p $POD_NAME -B $BRIDGE -s $DEPLOY_SCENARIO"
# log info to console
echo """
name: GS_URL
default: artifacts.opnfv.org/$PROJECT{gs-pathname}
description: "URL to Google Storage."
+ - string:
+ name: SSH_KEY
+ default: "/tmp/mcp.rsa"
+ description: "Path to private SSH key to access environment nodes. For MCP deployments only."
########################
# trigger macros
########################
- trigger:
name: 'fuel-os-nosdn-nofeature-ha-baremetal-daily-master-trigger'
triggers:
- - timed: '5 20 * * *'
+ - timed: '' # '5 20 * * *'
- trigger:
name: 'fuel-os-odl_l2-nofeature-ha-baremetal-daily-master-trigger'
triggers:
- - timed: '5 23 * * *'
+ - timed: '' # '5 23 * * *'
- trigger:
name: 'fuel-os-odl_l3-nofeature-ha-baremetal-daily-master-trigger'
triggers:
- - timed: '5 2 * * *'
+ - timed: '' # '5 2 * * *'
- trigger:
name: 'fuel-os-nosdn-ovs-ha-baremetal-daily-master-trigger'
triggers:
- - timed: '5 5 * * *'
+ - timed: '' # '5 5 * * *'
- trigger:
name: 'fuel-os-onos-sfc-ha-baremetal-daily-master-trigger'
triggers:
- trigger:
name: 'fuel-os-odl_l2-sfc-ha-baremetal-daily-master-trigger'
triggers:
- - timed: '5 11 * * *'
+ - timed: '' # '5 11 * * *'
- trigger:
name: 'fuel-os-odl_l2-bgpvpn-ha-baremetal-daily-master-trigger'
triggers:
- - timed: '5 14 * * *'
+ - timed: '' # '5 14 * * *'
- trigger:
name: 'fuel-os-nosdn-kvm-ha-baremetal-daily-master-trigger'
triggers:
- - timed: '5 17 * * *'
+ - timed: '' # '5 17 * * *'
- trigger:
name: 'fuel-os-nosdn-kvm_ovs_dpdk-ha-baremetal-daily-master-trigger'
triggers:
- - timed: '30 12 * * *'
+ - timed: '' # '30 12 * * *'
- trigger:
name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-ha-baremetal-daily-master-trigger'
triggers:
- - timed: '30 8 * * *'
+ - timed: '' # '30 8 * * *'
# NOHA Scenarios
- trigger:
name: 'fuel-os-nosdn-nofeature-noha-baremetal-daily-master-trigger'
- trigger:
name: 'fuel-os-odl_l2-nofeature-noha-virtual-daily-master-trigger'
triggers:
- - timed: '35 15 * * *'
+ - timed: '' # '35 15 * * *'
- trigger:
name: 'fuel-os-odl_l3-nofeature-noha-virtual-daily-master-trigger'
triggers:
- - timed: '5 18 * * *'
+ - timed: '' # '5 18 * * *'
- trigger:
name: 'fuel-os-onos-sfc-noha-virtual-daily-master-trigger'
triggers:
- trigger:
name: 'fuel-os-odl_l2-sfc-noha-virtual-daily-master-trigger'
triggers:
- - timed: '35 1 * * *'
+ - timed: '' # '35 1 * * *'
- trigger:
name: 'fuel-os-odl_l2-bgpvpn-noha-virtual-daily-master-trigger'
triggers:
- - timed: '5 4 * * *'
+ - timed: '' # '5 4 * * *'
- trigger:
name: 'fuel-os-nosdn-kvm-noha-virtual-daily-master-trigger'
triggers:
- - timed: '35 6 * * *'
+ - timed: '' # '35 6 * * *'
- trigger:
name: 'fuel-os-nosdn-ovs-noha-virtual-daily-master-trigger'
triggers:
- - timed: '5 9 * * *'
+ - timed: '' # '5 9 * * *'
- trigger:
name: 'fuel-os-nosdn-kvm_ovs_dpdk-noha-virtual-daily-master-trigger'
triggers:
- - timed: '30 16 * * *'
+ - timed: '' # '30 16 * * *'
- trigger:
name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-noha-virtual-daily-master-trigger'
triggers:
- - timed: '30 20 * * *'
+ - timed: '' # '30 20 * * *'
#-----------------------------------------------
# Triggers for job running on fuel-virtual against danube branch
#-----------------------------------------------
export TERM="vt220"
-# source the file so we get OPNFV vars
-source latest.properties
+if [[ "$BRANCH" != 'master' ]]; then
+ # source the file so we get OPNFV vars
+ source latest.properties
-# echo the info about artifact that is used during the deployment
-echo "Using ${OPNFV_ARTIFACT_URL/*\/} for deployment"
+ # echo the info about artifact that is used during the deployment
+ echo "Using ${OPNFV_ARTIFACT_URL/*\/} for deployment"
+fi
if [[ "$JOB_NAME" =~ "merge" ]]; then
# set simplest scenario for virtual deploys to run for merges
echo "Scenario: $DEPLOY_SCENARIO"
echo "Lab: $LAB_NAME"
echo "POD: $POD_NAME"
-echo "ISO: ${OPNFV_ARTIFACT_URL/*\/}"
+[[ "$BRANCH" != 'master' ]] && echo "ISO: ${OPNFV_ARTIFACT_URL/*\/}"
echo
echo "Starting the deployment using $INSTALLER_TYPE. This could take some time..."
echo "--------------------------------------------------------"
set -o errexit
set -o pipefail
+# disable Fuel ISO download for master branch
+[[ "$BRANCH" == 'master' ]] && exit 0
+
# use proxy url to replace the nomral URL, for googleusercontent.com will be blocked randomly
[[ "$NODE_NAME" =~ (zte) ]] && GS_URL=${GS_BASE_PROXY%%/*}/$GS_URL
name: INSTALLER_IP
default: '10.20.0.2'
description: 'IP of the installer'
+ - string:
+ name: SALT_MASTER_IP
+ default: '192.168.10.100'
+ description: 'IP of the salt master (for mcp deployments)'
- string:
name: INSTALLER_TYPE
default: fuel
- pre-scm-buildstep:
- shell: |
#!/bin/bash
- sudo chown -R $USER $WORKSPACE || exit 1
+ sudo chown -R $USER:$USER $WORKSPACE || exit 1
- builder:
name: build-html-and-pdf-docs-output
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
description: 'Git URL to use on this Jenkins Slave'
+- parameter:
+ name: 'compass-baremetal-master-defaults'
+ parameters:
+ - label:
+ name: SLAVE_LABEL
+ default: 'compass-baremetal-master'
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ description: 'Git URL to use on this Jenkins Slave'
+- parameter:
+ name: 'compass-baremetal-branch-defaults'
+ parameters:
+ - label:
+ name: SLAVE_LABEL
+ default: 'compass-baremetal-branch'
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ description: 'Git URL to use on this Jenkins Slave'
- parameter:
name: 'fuel-baremetal-defaults'
parameters:
name: GIT_BASE
default: https://gerrit.opnfv.org/gerrit/$PROJECT
description: 'Git URL to use on this Jenkins Slave'
+- parameter:
+ name: 'compass-virtual-master-defaults'
+ parameters:
+ - label:
+ name: SLAVE_LABEL
+ default: 'compass-virtual-master'
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ description: 'Git URL to use on this Jenkins Slave'
+- parameter:
+ name: 'compass-virtual-branch-defaults'
+ parameters:
+ - label:
+ name: SLAVE_LABEL
+ default: 'compass-virtual-branch'
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ description: 'Git URL to use on this Jenkins Slave'
- parameter:
name: 'fuel-virtual-defaults'
parameters:
project:
# projects with jobs for master
+ - 'releng-anteater':
+ <<: *master
+ <<: *other-receivers
- 'bottlenecks':
<<: *master
<<: *other-receivers
name: DOCKER_TAG
default: '{docker-tag}'
description: 'Tag to pull docker image'
+ - choice:
+ name: DISK_TYPE
+ choices:
+ - 'SSD'
+ - 'HDD'
+ default: 'HDD'
+ description: 'The type of hard disk that Cinder uses'
+ - string:
+ name: AGENT_COUNT
+ description: 'The number of slave agents to start. Defaults to the cinder node count'
+ - string:
+ name: VOLUME_SIZE
+ default: '4'
+ description: 'Size of Cinder volume (in GB)'
+ - string:
+ name: WORKLOADS
+ default: 'wr,rr,rw'
+ description: 'Workloads to run'
+ - string:
+ name: BLOCK_SIZES
+ default: '2048,16384'
+ description: 'Block sizes for VM I/O operations'
+ - string:
+ name: QUEUE_DEPTHS
+ default: '1,4'
+ description: 'Number of simultaneous I/O operations to keep active'
+ - string:
+ name: STEADY_STATE_SAMPLES
+ default: '10'
+ description: 'Number of samples to use (1 per minute) to measure steady state'
+ - string:
+ name: DEADLINE
+ description: 'Maximum run time in minutes if steady state cannot be found. Defaults to 3 times steady state samples'
+ - choice:
+ name: TEST_CASE
+ choices:
+ - 'snia_steady_state'
+ description: 'The test case to run'
scm:
- git-scm
triggers:
- - timed: 'H H * * *'
+ - timed: '0 18 * * *'
builders:
- shell: |
# distros
#--------------------------------
distro:
- - 'trusty':
+ - 'xenial':
disabled: false
- dib-os-release: 'trusty'
+ dib-os-release: 'xenial'
dib-os-element: 'ubuntu-minimal'
dib-os-packages: 'vlan,vim,less,bridge-utils,language-pack-en,iputils-ping,rsyslog,curl'
extra-dib-elements: 'openssh-server'
}
# check distro to see if we support it
-if [[ ! "$DISTRO" =~ (trusty|centos7|suse) ]]; then
+if [[ ! "$DISTRO" =~ (xenial|centos7|suse) ]]; then
echo "Distro $DISTRO is not supported!"
exit 1
fi
-paramiko==2.1.2
-mock==1.3.0
-requests==2.9.1
+paramiko>=2.0 # LGPLv2.1+
+mock>=2.0 # BSD
+requests!=2.12.2,>=2.10.0 # Apache-2.0
package_data={
},
url="https://www.opnfv.org",
- install_requires=["paramiko>=2.0.1",
- "mock==1.3.0",
- "nose==1.3.7",
- "coverage==4.1",
- "requests==2.9.1"]
+ install_requires=["paramiko>=2.0",
+ "mock>=2.0",
+ "requests!=2.12.2,>=2.10.0"],
+ test_requires=["nose",
+ "coverage>=4.0"]
)
-# The order of packages is significant, because pip processes them in the order
-# of appearance. Changing the order has an impact on the overall integration
-# process, which may cause wedges in the gate later.
-
-nose
-coverage
+nose # LGPL
+coverage>=4.0 # Apache-2.0
export DIB_DEV_USER_PWDLESS_SUDO=yes
export DIB_DEV_USER_PASSWORD=devuser
-# Settings for distro: trusty/ubuntu-minimal, 7/centos7, 42.2/suse
-export DIB_OS_RELEASE=${DIB_OS_RELEASE:-trusty}
+# Settings for distro: xenial/ubuntu-minimal, 7/centos7, 42.2/suse
+export DIB_OS_RELEASE=${DIB_OS_RELEASE:-xenial}
export DIB_OS_ELEMENT=${DIB_OS_ELEMENT:-ubuntu-minimal}
# DIB OS packages
execute sandbox script
- sudo -E ./xci-deploy.sh
+ ./xci-deploy.sh
Issuing above command will start aio sandbox deployment and the sandbox
should be ready between 1,5 and 2 hours depending on the host machine.
+Please remember that the user executing the XCI script will need to
+have an ssh key available, and stored in $HOME/.ssh directory.
+You can generate one by executing
+
+ ssh-keygen -t rsa
+
Advanced Usage
--------------
export OPENSTACK_BIFROST_GIT_URL=https://git.openstack.org/openstack/bifrost
export OPENSTACK_OSA_GIT_URL=https://git.openstack.org/openstack/openstack-ansible
export OPENSTACK_OSA_ETC_PATH=/etc/openstack_deploy
-export CLEAN_DIB_IMAGES=false
export OPNFV_HOST_IP=192.168.122.2
export XCI_FLAVOR_ANSIBLE_FILE_PATH=$OPNFV_RELENG_PATH/prototypes/xci/file/$XCI_FLAVOR
export CI_LOOP=${CI_LOOP:-daily}
# use releng from master until the development work with the sandbox is complete
export OPNFV_RELENG_VERSION="master"
# HEAD of "master" as of 04.04.2017
-export OPENSTACK_BIFROST_VERSION=${OPENSTACK_BIFROST_VERSION:-"6109f824e5510e794dbf1968c3859e8b6356d280"}
+export OPENSTACK_BIFROST_VERSION=${OPENSTACK_BIFROST_VERSION:-"7c9bb5e07c6bc3b42c9a9e8457e5eef511075b38"}
# HEAD of "master" as of 04.04.2017
export OPENSTACK_OSA_VERSION=${OPENSTACK_OSA_VERSION:-"d9e1330c7ff9d72a604b6b4f3af765f66a01b30e"}
export ANSIBLE_VERBOSITY=${ANSIBLE_VERBOSITY-""}
export LOG_PATH=${LOG_PATH:-${XCI_DEVEL_ROOT}/opnfv/logs}
export RUN_TEMPEST=${RUN_TEMPEST:-false}
+# Set this to to true to force XCI to re-create the target OS images
+export CLEAN_DIB_IMAGES=${CLEAN_DIB_IMAGES:-false}
##############################################################################
# these versions are extracted based on the osa commit d9e1330c7ff9d72a604b6b4f3af765f66a01b30e on 04.04.2017
# https://review.openstack.org/gitweb?p=openstack/openstack-ansible.git;a=commit;h=d9e1330c7ff9d72a604b6b4f3af765f66a01b30e
+- name: ansible-hardening
+ scm: git
+ src: https://git.openstack.org/openstack/ansible-hardening
+ version: 051fe3195f59d1ee8db06fca5d2cce7a25e58861
- name: apt_package_pinning
scm: git
src: https://git.openstack.org/openstack/openstack-ansible-apt_package_pinning
PIP=$(which pip)
-sudo -H -E ${PIP} install "pip>6.0"
+${PIP} install --user "pip>6.0"
-pip install ansible==$XCI_ANSIBLE_PIP_VERSION
+${PIP} install --user --upgrade ansible==$XCI_ANSIBLE_PIP_VERSION
set -o pipefail
usage() {
- echo "usage: $0 [-v] -d <destination> -i <installer_type> -a <installer_ip>" >&2
+ echo "usage: $0 [-v] -d <destination> -i <installer_type> -a <installer_ip> [-s <ssh_key>]" >&2
echo "[-v] Virtualized deployment" >&2
+ echo "[-s <ssh_key>] Path to ssh key. For MCP deployments only" >&2
}
info () {
: ${DEPLOY_TYPE:=''}
#Get options
-while getopts ":d:i:a:h:v" optchar; do
+while getopts ":d:i:a:h:s:v" optchar; do
case "${optchar}" in
d) dest_path=${OPTARG} ;;
i) installer_type=${OPTARG} ;;
a) installer_ip=${OPTARG} ;;
+ s) ssh_key=${OPTARG} ;;
v) DEPLOY_TYPE="virt" ;;
*) echo "Non-option argument: '-${OPTARG}'" >&2
usage
dest_path=${dest_path:-$HOME/opnfv-openrc.sh}
installer_type=${installer_type:-$INSTALLER_TYPE}
installer_ip=${installer_ip:-$INSTALLER_IP}
+if [ "${installer_type}" == "fuel" ] && [ "${BRANCH}" == "master" ]; then
+ installer_ip=${SALT_MASTER_IP}
+fi
if [ -z $dest_path ] || [ -z $installer_type ] || [ -z $installer_ip ]; then
usage
# Start fetching the files
if [ "$installer_type" == "fuel" ]; then
- #ip_fuel="10.20.0.2"
verify_connectivity $installer_ip
+ if [ "${BRANCH}" == "master" ]; then
+ ssh_key=${ssh_key:-$SSH_KEY}
+ if [ -z $ssh_key ] || [ ! -f $ssh_key ]; then
+ error "Please provide path to existing ssh key for mcp deployment."
+ exit 2
+ fi
+ ssh_options+=" -i ${ssh_key}"
- env=$(sshpass -p r00tme ssh 2>/dev/null $ssh_options root@${installer_ip} \
- 'fuel env'|grep operational|head -1|awk '{print $1}') &> /dev/null
- if [ -z $env ]; then
- error "No operational environment detected in Fuel"
- fi
- env_id="${FUEL_ENV:-$env}"
-
- # Check if controller is alive (online='True')
- controller_ip=$(sshpass -p r00tme ssh 2>/dev/null $ssh_options root@${installer_ip} \
- "fuel node --env ${env_id} | grep controller | grep 'True\| 1' | awk -F\| '{print \$5}' | head -1" | \
- sed 's/ //g') &> /dev/null
+ # retrieving controller vip
+ controller_ip=$(ssh 2>/dev/null ${ssh_options} ubuntu@${installer_ip} \
+ "sudo salt --out txt 'ctl01*' pillar.get _param:openstack_control_address | awk '{print \$2}'" | \
+ sed 's/ //g') &> /dev/null
- if [ -z $controller_ip ]; then
- error "The controller $controller_ip is not up. Please check that the POD is correctly deployed."
- fi
+ info "Fetching rc file from controller $controller_ip..."
+ ssh ${ssh_options} ubuntu@${controller_ip} "sudo cat /root/keystonercv3" > $dest_path
+ else
+ #ip_fuel="10.20.0.2"
+ env=$(sshpass -p r00tme ssh 2>/dev/null ${ssh_options} root@${installer_ip} \
+ 'fuel env'|grep operational|head -1|awk '{print $1}') &> /dev/null
+ if [ -z $env ]; then
+ error "No operational environment detected in Fuel"
+ fi
+ env_id="${FUEL_ENV:-$env}"
- info "Fetching rc file from controller $controller_ip..."
- sshpass -p r00tme ssh 2>/dev/null $ssh_options root@${installer_ip} \
- "scp $ssh_options ${controller_ip}:/root/openrc ." &> /dev/null
- sshpass -p r00tme scp 2>/dev/null $ssh_options root@${installer_ip}:~/openrc $dest_path &> /dev/null
+ # Check if controller is alive (online='True')
+ controller_ip=$(sshpass -p r00tme ssh 2>/dev/null ${ssh_options} root@${installer_ip} \
+ "fuel node --env ${env_id} | grep controller | grep 'True\| 1' | awk -F\| '{print \$5}' | head -1" | \
+ sed 's/ //g') &> /dev/null
- #This file contains the mgmt keystone API, we need the public one for our rc file
- admin_ip=$(cat $dest_path | grep "OS_AUTH_URL" | sed 's/^.*\=//' | sed "s/^\([\"']\)\(.*\)\1\$/\2/g" | sed s'/\/$//')
- public_ip=$(sshpass -p r00tme ssh $ssh_options root@${installer_ip} \
- "ssh ${controller_ip} 'source openrc; openstack endpoint list'" \
- | grep keystone | grep public | sed 's/ /\n/g' | grep ^http | head -1) &> /dev/null
- #| grep http | head -1 | cut -d '|' -f 4 | sed 's/v1\/.*/v1\//' | sed 's/ //g') &> /dev/null
- #NOTE: this is super ugly sed 's/v1\/.*/v1\//'OS_AUTH_URL
- # but sometimes the output of endpoint-list is like this: http://172.30.9.70:8004/v1/%(tenant_id)s
- # Fuel virtual need a fix
+ if [ -z $controller_ip ]; then
+ error "The controller $controller_ip is not up. Please check that the POD is correctly deployed."
+ fi
+ info "Fetching rc file from controller $controller_ip..."
+ sshpass -p r00tme ssh 2>/dev/null ${ssh_options} root@${installer_ip} \
+ "scp ${ssh_options} ${controller_ip}:/root/openrc ." &> /dev/null
+ sshpass -p r00tme scp 2>/dev/null ${ssh_options} root@${installer_ip}:~/openrc $dest_path &> /dev/null
+ fi
#convert to v3 URL
auth_url=$(cat $dest_path|grep AUTH_URL)
if [[ -z `echo $auth_url |grep v3` ]]; then
-Creative Commons Attribution 3.0 Unported\r
-http://creativecommons.org/licenses/by/3.0/\r
+This work is licensed under a Creative Commons Attribution 4.0 International License.\r
+SPDX-License-Identifier: CC-BY-4.0\r
\r
License\r
\r
Phantom by HTML5 UP\r
html5up.net | @ajlkn\r
-Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)\r
+SPDX-License-Identifier: CC-BY-4.0\r
\r
\r
This is Phantom, a simple design built around a grid of large, colorful, semi-interactive\r
html5shiv.js (@afarkas @jdalton @jon_neal @rem)\r
Misc. Sass functions (@HugoGiraudel)\r
Respond.js (j.mp/respondjs)\r
- Skel (skel.io)
\ No newline at end of file
+ Skel (skel.io)\r
url = '{}/projects/{}/cases'.format(conf.base_url, project)
cases = requests.get(url).json().get('testcases', [])
- data = [t['name'] for t in cases]
+ data = [{t['name']: t['catalog_description']} for t in cases]
self.write(json_encode(data))
angular.module('opnfvApp')
.controller('testVisualController', ['$scope', '$state', '$stateParams', 'TableFactory', 'ngDialog', '$http', '$loading',
function($scope, $state, $stateParams, TableFactory, ngDialog, $http, $loading) {
- $scope.dovet = "59,222,156,317";
- $scope.functest = "203,163,334,365";
- $scope.yardstick = "398,161,513,384";
- $scope.vsperf = "567,163,673,350";
- $scope.stor = "686,165,789,341";
- $scope.qtip = "802,164,905,341";
- $scope.bootleneck = "917,161,1022,338";
- $scope.noPopArea1 = "30,11,1243,146";
- $scope.noPopArea2 = "1041,157,1250,561";
- $scope.noPopArea3 = "15,392,1027,561";
+ $scope.dovet = "50,168,177,443";
+ $scope.functest = "194,173,356,442";
+ $scope.yardstick = "377,183,521,412";
+ $scope.vsperf = "542,185,640,414";
+ $scope.stor = "658,187,750,410";
+ $scope.qtip = "769,190,852,416";
+ $scope.bootleneck = "870,192,983,419";
+ $scope.noPopArea1 = "26,8,1190,180";
+ $scope.noPopArea2 = "1018,193,1190,590";
+ $scope.noPopArea3 = "37,455,1003,584";
init();
$scope.showSelectValue = 0;
$http.get(url, config).then(function(response) {
if (response.status == 200) {
$scope.tableData = response.data;
+
+ $scope.tableData = constructObjectArray($scope.tableData);
+ console.log($scope.tableData);
$loading.finish('Key');
+
}
})
}
+ //construct key value for tableData
+ function constructObjectArray(array) {
+ var templateArray = [];
+ for (var i = 0; i < array.length; i++) {
+ var key = Object.keys(array[i])[0];
+ var value = array[i][key];
+ var temp = {
+ 'key': key,
+ 'value': value
+ };
+ templateArray.push(temp);
+
+ }
+
+ return templateArray;
+ }
+
function getDetail(casename) {
TableFactory.getProjectTestCaseDetail().get({
'project': $scope.modalName,
'testcase': casename
}).$promise.then(function(response) {
if (response != null) {
- $scope.project_name_modal = response.project_name;
+ $scope.name_modal = response.name;
$scope.description_modal = response.description;
openTestDetail();
}
}
- ]);
\ No newline at end of file
+ ]);
border-radius: 5px 5px 5px 5px;
background-color: #f3f3f4;
opacity: 0.9;
+ width: 200px;
}
.ngdialog.ngdialog.ngdialog-theme-default .ngdialog-content {
<div class="row">
- <div class="row border-bottom white-bg dashboard-header" style="border-radius: 5px 5px 5px 5px ">
+ <div class="row border-bottom white-bg dashboard-header" style="border-radius: 5px 5px 5px 5px;width:90%;margin-left:30px; ">
<h3>OPNFV Test ecosystem
<small> *mouse over display test case list</small>
</div>
- <div id="popup" class="popup" style="width: 20%;height: 35%" dw-loading="Key">
+ <div id="popup" class="popup" style="width: 40%;height: 35%" dw-loading="Key">
<div ng-show="tableData.length==0">
<center>
<tbody>
<tr dir-paginate="data in tableData | itemsPerPage: 8 track by $index ">
- <td><a ng-click="getDetail(data)"> {{data}}</a></td>
+ <td ng-if="data.value!=null"><a ng-click="getDetail(data.key)"> {{data.value}}</a></td>
+ <td ng-if="data.value==null"><a ng-click="getDetail(data.key)"> null</a></td>
<tr>
</tbody>
<div class="hr-line-dashed"></div>
-<strong> name</strong>: {{project_name_modal}}<br>
+<strong> name</strong>: {{name_modal}}<br>
-<strong>description</strong>: {{description_modal}}<br>
\ No newline at end of file
+<strong>description</strong>: {{description_modal}}<br>
<div cg-busy="{promise:ctrl.resultsRequest,message:'Loading'}"></div>
<div ng-show="ctrl.data" class="results-table">
- <table ng-show="ctrl.data" class="table table-striped table-hover">
+ <table ng-data="ctrl.data.result" ng-show="ctrl.data" class="table table-striped table-hover">
<thead>
<tr>
- <th ng-if="ctrl.isUserResults"></th>
- <th>Upload Date</th>
- <th>Test Run ID</th>
- <th ng-if="ctrl.isUserResults">Vendor</th>
- <th ng-if="ctrl.isUserResults">Product (version)</th>
- <th ng-if="ctrl.isUserResults">Target Program</th>
- <th ng-if="ctrl.isUserResults">Guideline</th>
- <th ng-if="ctrl.isUserResults">Verified</th>
- <th ng-if="ctrl.isUserResults">Shared</th>
+ <th>ID</th>
+ <th>Pod</th>
+ <th>Project</th>
+ <th>Test Case</th>
+ <th>Installer</th>
+ <th>Version</th>
+ <th>Scenario</th>
+ <th>Criteria</th>
+ <th>Start Date</th>
+ <th>Stop Date</th>
</tr>
</thead>
<tbody>
<tr ng-repeat-start="(index, result) in ctrl.data.results">
- <td ng-if="ctrl.isUserResults">
- <a ng-if="!result.expanded"
- class="glyphicon glyphicon-plus"
- ng-click="result.expanded = true">
- </a>
- <a ng-if="result.expanded"
- class="glyphicon glyphicon-minus"
- ng-click="result.expanded = false">
- </a>
- </td>
- <td>{{result.created_at}}</td>
- <td><a ui-sref="resultsDetail({testID: result.id})">
- {{result.id.slice(0, 8)}}...{{result.id.slice(-8)}}
- </a>
- </td>
- <td ng-if="ctrl.isUserResults">
- {{ctrl.vendors[result.product_version.product_info.organization_id].name || '-'}}
- </td>
- <td ng-if="ctrl.isUserResults">{{result.product_version.product_info.name || '-'}}
- <span ng-if="result.product_version.version">
- ({{result.product_version.version}})
- </span>
- </td>
- <td ng-if="ctrl.isUserResults">{{ctrl.targetMappings[result.meta.target] || '-'}}</td>
- <td ng-if="ctrl.isUserResults">{{result.meta.guideline.slice(0, -5) || '-'}}</td>
- <td ng-if="ctrl.isUserResults">
- <span ng-if="result.verification_status" class="glyphicon glyphicon-ok"></span>
- <span ng-if="!result.verification_status">-</span>
-
- </td>
- <td ng-if="ctrl.isUserResults">
- <span ng-show="result.meta.shared" class="glyphicon glyphicon-share"></span>
- </td>
+ <td>{{ result._id }}</td>
+ <td>{{ result.pod_name }}</td>
+ <td>{{ result.project_name }}</td>
+ <td>{{ result.case_name }}</td>
+ <td>{{ result.installer }}</td>
+ <td>{{ result.version }}</td>
+ <td>{{ result.scenario }}</td>
+ <td>{{ result.criteria }}</td>
+ <td>{{ result.start_date }}</td>
+ <td>{{ result.stop_date }}</td>
</tr>
- <tr ng-if="result.expanded" ng-repeat-end>
- <td></td>
- <td colspan="3">
- <strong>Publicly Shared:</strong>
- <span ng-if="result.meta.shared == 'true' && !result.sharedEdit">Yes</span>
- <span ng-if="!result.meta.shared && !result.sharedEdit">
- <em>No</em>
- </span>
- <select ng-if="result.sharedEdit"
- ng-model="result.meta.shared"
- class="form-inline">
- <option value="true">Yes</option>
- <option value="">No</option>
- </select>
- <a ng-if="!result.sharedEdit"
- ng-click="result.sharedEdit = true"
- title="Edit"
- class="glyphicon glyphicon-pencil"></a>
- <a ng-if="result.sharedEdit"
- ng-click="ctrl.associateMeta(index,'shared',result.meta.shared)"
- title="Save"
- class="glyphicon glyphicon-floppy-disk"></a>
- <br />
-
- <strong>Associated Guideline:</strong>
- <span ng-if="!result.meta.guideline && !result.guidelineEdit">
- <em>None</em>
- </span>
- <span ng-if="result.meta.guideline && !result.guidelineEdit">
- {{result.meta.guideline.slice(0, -5)}}
- </span>
- <select ng-if="result.guidelineEdit"
- ng-model="result.meta.guideline"
- ng-options="o as o.slice(0, -5) for o in ctrl.versionList"
- class="form-inline">
- <option value="">None</option>
- </select>
- <a ng-if="!result.guidelineEdit"
- ng-click="ctrl.getVersionList();result.guidelineEdit = true"
- title="Edit"
- class="glyphicon glyphicon-pencil"></a>
- <a ng-if="result.guidelineEdit"
- ng-click="ctrl.associateMeta(index, 'guideline', result.meta.guideline)"
- title="Save"
- class="glyphicon glyphicon-floppy-disk">
- </a>
- <br />
-
- <strong>Associated Target Program:</strong>
- <span ng-if="!result.meta.target && !result.targetEdit">
- <em>None</em>
- </span>
- <span ng-if="result.meta.target && !result.targetEdit">
- {{ctrl.targetMappings[result.meta.target]}}</span>
- <select ng-if="result.targetEdit"
- ng-model="result.meta.target"
- class="form-inline">
- <option value="">None</option>
- <option value="platform">OpenStack Powered Platform</option>
- <option value="compute">OpenStack Powered Compute</option>
- <option value="object">OpenStack Powered Object Storage</option>
- </select>
- <a ng-if="!result.targetEdit"
- ng-click="result.targetEdit = true;"
- title="Edit"
- class="glyphicon glyphicon-pencil">
- </a>
- <a ng-if="result.targetEdit"
- ng-click="ctrl.associateMeta(index, 'target', result.meta.target)"
- title="Save"
- class="glyphicon glyphicon-floppy-disk">
- </a>
- <br />
-
- <strong>Associated Product:</strong>
- <span ng-if="!result.product_version && !result.productEdit">
- <em>None</em>
- </span>
- <span ng-if="result.product_version && !result.productEdit">
- <span ng-if="ctrl.products[result.product_version.product_info.id].product_type == 0">
- <a ui-sref="distro({id: result.product_version.product_info.id})">
- {{ctrl.products[result.product_version.product_info.id].name}}
- <small ng-if="result.product_version.version">
- ({{result.product_version.version}})
- </small>
- </a>
- </span>
- <span ng-if="ctrl.products[result.product_version.product_info.id].product_type != 0">
- <a ui-sref="cloud({id: result.product_version.product_info.id})">
- {{ctrl.products[result.product_version.product_info.id].name}}
- <small ng-if="result.product_version.version">
- ({{result.product_version.version}})
- </small>
- </a>
- </span>
- </span>
-
- <select ng-if="result.productEdit"
- ng-options="product as product.name for product in ctrl.products | arrayConverter | orderBy: 'name' track by product.id"
- ng-model="result.selectedProduct"
- ng-change="ctrl.getProductVersions(result)">
- <option value="">-- No Product --</option>
- </select>
-
- <span ng-if="result.productVersions.length && result.productEdit">
- <span class="glyphicon glyphicon-arrow-right" style="padding-right:3px;color:#303030;"></span>
- Version:
- <select ng-options="version as version.version for version in result.productVersions | orderBy: 'version' track by version.id"
- ng-model="result.selectedVersion">
- </select>
-
- </span>
- <a ng-if="!result.productEdit"
- ng-click="ctrl.prepVersionEdit(result)"
- title="Edit"
- class="glyphicon glyphicon-pencil">
- </a>
- <a ng-if="result.productEdit"
- ng-click="ctrl.associateProductVersion(result)"
- confirm="Once you associate this test to this product, ownership
- will be transferred to the product's vendor admins.
- Continue?"
- title="Save"
- class="glyphicon glyphicon-floppy-disk">
- </a>
- <br />
- </td>
+ <tr ng-repeat-end=>
</tr>
</tbody>
</table>
ctrl.associateMeta = associateMeta;
ctrl.getVersionList = getVersionList;
ctrl.getUserProducts = getUserProducts;
- ctrl.getVendors = getVendors;
ctrl.associateProductVersion = associateProductVersion;
ctrl.getProductVersions = getProductVersions;
ctrl.prepVersionEdit = prepVersionEdit;
ctrl.update();
}
- ctrl.getVendors();
-
/**
* This will contact the TestAPI API to get a listing of test run
* results.
var start = $filter('date')(ctrl.startDate, 'yyyy-MM-dd');
if (start) {
content_url =
- content_url + '&start_date=' + start + ' 00:00:00';
+ content_url + '&from=' + start + ' 00:00:00';
}
var end = $filter('date')(ctrl.endDate, 'yyyy-MM-dd');
if (end) {
- content_url = content_url + '&end_date=' + end + ' 23:59:59';
+ content_url = content_url + '&to=' + end + ' 23:59:59';
}
if (ctrl.isUserResults) {
content_url = content_url + '&signed';
ctrl.resultsRequest =
$http.get(content_url).success(function (data) {
ctrl.data = data;
- ctrl.totalItems = ctrl.data.pagination.total_pages *
- ctrl.itemsPerPage;
- ctrl.currentPage = ctrl.data.pagination.current_page;
+ ctrl.totalItems = 20 // ctrl.data.pagination.total_pages * ctrl.itemsPerPage;
+ ctrl.currentPage = 1 // ctrl.data.pagination.current_page;
}).error(function (error) {
ctrl.data = null;
ctrl.totalItems = 0;
});
}
- /**
- * This will contact the TestAPI API to get a listing of
- * vendors.
- */
- function getVendors() {
- var contentUrl = testapiApiUrl + '/vendors';
- ctrl.vendorsRequest =
- $http.get(contentUrl).success(function (data) {
- ctrl.vendors = {};
- data.vendors.forEach(function(vendor) {
- ctrl.vendors[vendor.id] = vendor;
- });
- }).error(function (error) {
- ctrl.vendors = null;
- ctrl.showError = true;
- ctrl.error =
- 'Error retrieving vendor listing from server: ' +
- angular.toJson(error);
- });
- }
-
/**
* Send a PUT request to the API server to associate a product with
* a test result.
def set_query(self):
query = dict()
+ date_range = dict()
+
for k in self.request.query_arguments.keys():
v = self.get_query_argument(k)
if k == 'project' or k == 'pod' or k == 'case':
query['start_date'] = obj
elif k == 'trust_indicator':
query[k + '.current'] = float(v)
- elif k != 'last':
+ elif k == 'from':
+ date_range.update({'$gte': str(v)})
+ elif k == 'to':
+ date_range.update({'$lt': str(v)})
+ elif k != 'last' and k != 'page':
query[k] = v
+ if date_range:
+ query['start_date'] = date_range
return query
- case : case name
- pod : pod name
- version : platform version (Arno-R1, ...)
- - installer (fuel, ...)
+ - installer : fuel/apex/compass/joid/daisy
- build_tag : Jenkins build tag name
- - period : x (x last days)
+ - period : x last days, incompatible with from/to
+ - from : starting time in 2016-01-01 or 2016-01-01 00:01:23
+ - to : ending time in 2016-01-01 or 2016-01-01 00:01:23
- scenario : the test scenario (previously version)
- criteria : the global criteria status passed or failed
- trust_indicator : evaluate the stability of the test case
@type period: L{string}
@in period: query
@required period: False
+ @param from: i.e. 2016-01-01 or 2016-01-01 00:01:23
+ @type from: L{string}
+ @in from: query
+ @required from: False
+ @param to: i.e. 2016-01-01 or 2016-01-01 00:01:23
+ @type to: L{string}
+ @in to: query
+ @required to: False
@param last: last records stored until now
@type last: L{string}
@in last: query
if last is not None:
last = self.get_int('last', last)
+ page = self.get_query_argument('page', 0)
+ if page:
+ last = 20
+
self._list(query=self.set_query(),
sort=[('start_date', -1)],
last=last)