diff options
44 files changed, 759 insertions, 1616 deletions
diff --git a/jjb/apex/apex-deploy.sh b/jjb/apex/apex-deploy.sh index c6cfb26d1..4fd7b0069 100755 --- a/jjb/apex/apex-deploy.sh +++ b/jjb/apex/apex-deploy.sh @@ -139,10 +139,15 @@ fi DEPLOY_CMD="CONFIG=${CONFIG} RESOURCES=${RESOURCES} LIB=${LIB} ${DEPLOY_CMD}" if [ "$OPNFV_CLEAN" == 'yes' ]; then + if sudo test -e '/root/inventory/pod_settings.yaml'; then + clean_opts='-i /root/inventory/pod_settings.yaml' + else + clean_opts='' + fi if [[ "$BUILD_DIRECTORY" == *verify* ]]; then - sudo CONFIG=${CONFIG} LIB=${LIB} ./clean.sh + sudo CONFIG=${CONFIG} LIB=${LIB} ./clean.sh ${clean_opts} else - sudo CONFIG=${CONFIG} LIB=${LIB} opnfv-clean + sudo CONFIG=${CONFIG} LIB=${LIB} opnfv-clean ${clean_opts} fi fi diff --git a/jjb/compass4nfv/compass-ci-jobs.yml b/jjb/compass4nfv/compass-ci-jobs.yml index 426e59777..946ecac79 100644 --- a/jjb/compass4nfv/compass-ci-jobs.yml +++ b/jjb/compass4nfv/compass-ci-jobs.yml @@ -379,19 +379,19 @@ - trigger: name: 'compass-os-nosdn-nofeature-ha-virtual-colorado-trigger' triggers: - - timed: '' + - timed: '0 21 * * *' - trigger: name: 'compass-os-odl_l2-nofeature-ha-virtual-colorado-trigger' triggers: - - timed: '' + - timed: '0 20 * * *' - trigger: name: 'compass-os-odl_l3-nofeature-ha-virtual-colorado-trigger' triggers: - - timed: '' + - timed: '0 19 * * *' - trigger: name: 'compass-os-onos-nofeature-ha-virtual-colorado-trigger' triggers: - - timed: '' + - timed: '0 18 * * *' - trigger: name: 'compass-os-ocl-nofeature-ha-virtual-colorado-trigger' triggers: @@ -399,11 +399,11 @@ - trigger: name: 'compass-os-onos-sfc-ha-virtual-colorado-trigger' triggers: - - timed: '' + - timed: '0 15 * * *' - trigger: name: 'compass-os-odl_l2-moon-ha-virtual-colorado-trigger' triggers: - - timed: '' + - timed: '0 14 * * *' - trigger: name: 'compass-os-nosdn-kvm-ha-virtual-colorado-trigger' triggers: diff --git a/jjb/functest/functest-ci-jobs.yml b/jjb/functest/functest-ci-jobs.yml index 167877f4f..c31eae737 100644 --- a/jjb/functest/functest-ci-jobs.yml +++ b/jjb/functest/functest-ci-jobs.yml @@ -284,6 +284,7 @@ - 'set-functest-env' - 'functest-daily' - 'functest-store-results' + - 'functest-exit' - builder: name: functest-weekly-builder @@ -292,6 +293,7 @@ - 'set-functest-env' - 'functest-weekly' - 'functest-store-results' + - 'functest-exit' - builder: name: functest-suite-builder @@ -299,6 +301,7 @@ - 'functest-cleanup' - 'set-functest-env' - 'functest-suite' + - 'functest-exit' - builder: name: functest-daily @@ -335,3 +338,9 @@ builders: - shell: !include-raw: ./functest-cleanup.sh + +- builder: + name: functest-exit + builders: + - shell: + !include-raw: ./functest-exit.sh
\ No newline at end of file diff --git a/jjb/functest/functest-exit.sh b/jjb/functest/functest-exit.sh new file mode 100644 index 000000000..10edab005 --- /dev/null +++ b/jjb/functest/functest-exit.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +branch=${GIT_BRANCH##*/} +ret_val_file="${HOME}/opnfv/functest/results/${branch}/return_value" +if [ ! -f ${ret_val_file} ]; then + echo "Return value not found!" + exit -1 +fi + +ret_val=`cat ${ret_val_file}` + +exit ${ret_val}
\ No newline at end of file diff --git a/jjb/functest/functest-loop.sh b/jjb/functest/functest-loop.sh index 5abddfd84..73856235f 100755 --- a/jjb/functest/functest-loop.sh +++ b/jjb/functest/functest-loop.sh @@ -10,3 +10,9 @@ else fi container_id=$(docker ps -a | grep opnfv/functest | awk '{print $1}' | head -1) docker exec $container_id $cmd + +ret_value=$? +ret_val_file="${HOME}/opnfv/functest/results/${branch}/return_value" +echo ${ret_value}>${ret_val_file} + +exit 0
\ No newline at end of file diff --git a/jjb/infra/infra-daily-jobs.yml b/jjb/infra/infra-daily-jobs.yml new file mode 100644 index 000000000..64c2fc09c --- /dev/null +++ b/jjb/infra/infra-daily-jobs.yml @@ -0,0 +1,159 @@ +- project: + name: 'infra-daily-jobs' + + project: 'releng' + + installer: 'infra' +#-------------------------------- +# BRANCH ANCHORS +#-------------------------------- + master: &master + stream: master + branch: '{stream}' + gs-pathname: '' +#-------------------------------- +# CI Slaves +#-------------------------------- + pod: + - virtual: + slave-label: infra-virtual + <<: *master +#-------------------------------- +# phases +#-------------------------------- + phase: + - 'provision' + - 'deploy' + - 'smoketest' +#-------------------------------- +# scenarios +#-------------------------------- + scenario: + - 'os-nosdn-nofeature-noha' +#-------------------------------- +# jobs +#-------------------------------- + jobs: + - 'infra-{scenario}-{pod}-daily-{stream}' + - 'infra-{phase}-{pod}-daily-{stream}' +######################## +# job templates +######################## +- job-template: + name: 'infra-{scenario}-{pod}-daily-{stream}' + + concurrent: false + + properties: + - build-blocker: + use-build-blocker: true + blocking-jobs: + - 'infra-os-.*?-{pod}-daily-{stream}' + block-level: 'NODE' + + wrappers: + - build-name: + name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO' + + triggers: + - timed: 'H */3 * * *' + + parameters: + - project-parameter: + project: '{project}' + - '{installer}-defaults' + - '{slave-label}-defaults' + - string: + name: DEPLOY_SCENARIO + default: '{scenario}' + + builders: + - description-setter: + description: "Built on $NODE_NAME" + - trigger-builds: + - project: 'infra-provision-{pod}-daily-{stream}' + current-parameters: false + predefined-parameters: + DEPLOY_SCENARIO={scenario} + same-node: true + block: true + - trigger-builds: + - project: 'infra-deploy-{pod}-daily-{stream}' + current-parameters: false + predefined-parameters: + DEPLOY_SCENARIO={scenario} + same-node: true + block: true + - trigger-builds: + - project: 'infra-smoketest-{pod}-daily-{stream}' + current-parameters: false + predefined-parameters: + DEPLOY_SCENARIO={scenario} + block: true + same-node: true + block-thresholds: + build-step-failure-threshold: 'never' + failure-threshold: 'never' + unstable-threshold: 'FAILURE' + +- job-template: + name: 'infra-{phase}-{pod}-daily-{stream}' + + concurrent: false + + properties: + - build-blocker: + use-build-blocker: true + blocking-jobs: + - 'infra-provision-{pod}-daily-{stream}' + - 'infra-deploy-{pod}-daily-{stream}' + - 'infra-smoketest-{pod}-daily-{stream}' + block-level: 'NODE' + + parameters: + - project-parameter: + project: '{project}' + - '{installer}-defaults' + - '{slave-label}-defaults' + - string: + name: DEPLOY_SCENARIO + default: 'os-nosdn-nofeature-noha' + + scm: + - git-scm: + credentials-id: '{ssh-credentials}' + refspec: '' + branch: '{branch}' + + wrappers: + - build-name: + name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO' + + builders: + - description-setter: + description: "Built on $NODE_NAME" + - 'infra-{phase}-daily-builder' +##################################### +# builder macros +##################################### +- builder: + name: 'infra-provision-daily-builder' + builders: + - shell: | + #!/bin/bash + + sudo $WORKSPACE/jjb/infra/infra-provision.sh +- builder: + name: 'infra-deploy-daily-builder' + builders: + - shell: | + #!/bin/bash + + sudo $WORKSPACE/jjb/infra/infra-provision.sh +- builder: + name: 'infra-smoketest-daily-builder' + builders: + - shell: | + #!/bin/bash + + sudo $WORKSPACE/jjb/infra/infra-provision.sh diff --git a/jjb/infra/infra-deploy.sh b/jjb/infra/infra-deploy.sh new file mode 100755 index 000000000..35ef9a1d0 --- /dev/null +++ b/jjb/infra/infra-deploy.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +echo "Not activated!" diff --git a/jjb/infra/infra-provision.sh b/jjb/infra/infra-provision.sh new file mode 100755 index 000000000..5ddbaf968 --- /dev/null +++ b/jjb/infra/infra-provision.sh @@ -0,0 +1,34 @@ +#!/bin/bash +set -xe + +if [[ $(whoami) != "root" ]]; then + echo "Error: This script must be run as root!" + exit 1 +fi + +# remove previously cloned repos +/bin/rm -rf /opt/bifrost /opt/puppet-infracloud /opt/releng + +# clone upstream repos +git clone https://git.openstack.org/openstack/bifrost /opt/bifrost +git clone https://git.openstack.org/openstack-infra/puppet-infracloud /opt/puppet-infracloud + +# clone opnfv releng repo +git clone https://gerrit.opnfv.org/gerrit/releng /opt/releng + +# combine opnfv and upstream scripts/playbooks +cp -R /opt/releng/prototypes/bifrost/* /opt/bifrost/ + +# cleanup remnants of previous deployment +cd /opt/bifrost +./scripts/destroy_env.sh + +# provision 3 VMs; jumphost, controller, and compute +cd /opt/bifrost +./scripts/test-bifrost-deployment.sh + +# list the provisioned VMs +cd /opt/bifrost +source env-vars +ironic node-list +virsh list diff --git a/jjb/infra/infra-smoketest.sh b/jjb/infra/infra-smoketest.sh new file mode 100755 index 000000000..35ef9a1d0 --- /dev/null +++ b/jjb/infra/infra-smoketest.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +echo "Not activated!" diff --git a/jjb/multisite/multisite.yml b/jjb/multisite/multisite.yml index fc1e0ef12..21b973093 100644 --- a/jjb/multisite/multisite.yml +++ b/jjb/multisite/multisite.yml @@ -17,10 +17,12 @@ branch: '{stream}' gs-pathname: '' disabled: false + timed: '@midnight' - colorado: branch: 'stable/{stream}' gs-pathname: '/{stream}' disabled: false + timed: '' - job-template: name: 'multisite-verify-{stream}' @@ -99,7 +101,7 @@ choosing-strategy: 'default' triggers: - - timed: '@midnight' + - timed: '{timed}' builders: - trigger-builds: diff --git a/jjb/opnfv/installer-params.yml b/jjb/opnfv/installer-params.yml index d1225dcab..ec0b86170 100644 --- a/jjb/opnfv/installer-params.yml +++ b/jjb/opnfv/installer-params.yml @@ -70,6 +70,10 @@ default: 'mitaka' description: 'OpenStack release (liberty|mitaka)' - string: + name: EXTERNAL_NETWORK + default: ext-net4 + description: "External network used for Floating ips." + - string: name: LAB_CONFIG default: "$HOME/joid_config" description: "Local lab config and Openstack openrc location" @@ -85,19 +89,14 @@ name: CPU_ARCHITECTURE default: 'amd64' description: "CPU Architecture to use for Ubuntu distro " - - parameter: - name: 'sandbox-defaults' + name: 'infra-defaults' parameters: - string: name: INSTALLER_IP - default: '10.20.0.2' + default: '192.168.122.2' description: 'IP of the installer' - string: name: INSTALLER_TYPE - default: sandbox + default: infra description: 'Installer used for deploying OPNFV on this POD' - - string: - name: EXTERNAL_NETWORK - default: 'admin_floating_net' - description: 'external network for test' diff --git a/jjb/opnfv/slave-params.yml b/jjb/opnfv/slave-params.yml index 562a9dae9..59348e454 100644 --- a/jjb/opnfv/slave-params.yml +++ b/jjb/opnfv/slave-params.yml @@ -160,6 +160,10 @@ name: GIT_BASE default: https://gerrit.opnfv.org/gerrit/$PROJECT description: 'Git URL to use on this Jenkins Slave' + - string: + name: EXTERNAL_NETWORK + default: ext-net + description: "External network floating ips" ##################################################### # Parameters for CI virtual PODs ##################################################### @@ -207,6 +211,16 @@ name: GIT_BASE default: https://gerrit.opnfv.org/gerrit/$PROJECT description: 'Git URL to use on this Jenkins Slave' +- parameter: + name: 'infra-virtual-defaults' + parameters: + - label: + name: SLAVE_LABEL + default: 'infra-virtual' + - string: + name: GIT_BASE + default: https://gerrit.opnfv.org/gerrit/$PROJECT + description: 'Git URL to use on this Jenkins Slave' ##################################################### # Parameters for build slaves ##################################################### diff --git a/jjb/sandbox/basic.sh b/jjb/sandbox/basic.sh deleted file mode 100755 index 33268558c..000000000 --- a/jjb/sandbox/basic.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/bash -#set -o errexit -#set -o nounset -#set -o pipefail - -# get the job type -# we only support verify, merge, daily and weekly jobs -if [[ "$JOB_NAME" =~ (verify|merge|daily|weekly) ]]; then - JOB_TYPE=${BASH_REMATCH[0]} -else - echo "Unable to determine job type!" - exit 1 -fi - -# do stuff differently based on the job type -case "$JOB_TYPE" in - verify) - echo "Running as part of verify job" - ;; - merge) - echo "Running as part of merge job" - ;; - daily) - echo "Running as part of daily job" - ;; - weekly) - echo "Running as part of weekly job" - ;; - *) - echo "Job type $JOB_TYPE is not supported!" - exit 1 -esac - -# this just shows we can get the patch/commit information -# no matter what job we are executed by -cd $WORKSPACE -echo -echo "Commit Message is" -echo "-------------------------------------" -git log --format=%B -n 1 $(git rev-parse HEAD) -echo "-------------------------------------" -echo -echo "Repo contents" -echo "-------------------------------------" -ls -al -echo "-------------------------------------" -echo -echo "Changed files are" -echo "-------------------------------------" -git diff origin/master --name-only -echo "-------------------------------------" -echo -echo "Change introduced" -echo "-------------------------------------" -git diff origin/master -echo "-------------------------------------" -echo -echo "git show" -echo "-------------------------------------" -git show -echo "-------------------------------------" - -sleep 60 diff --git a/jjb/sandbox/build.sh b/jjb/sandbox/build.sh deleted file mode 100755 index 33268558c..000000000 --- a/jjb/sandbox/build.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/bash -#set -o errexit -#set -o nounset -#set -o pipefail - -# get the job type -# we only support verify, merge, daily and weekly jobs -if [[ "$JOB_NAME" =~ (verify|merge|daily|weekly) ]]; then - JOB_TYPE=${BASH_REMATCH[0]} -else - echo "Unable to determine job type!" - exit 1 -fi - -# do stuff differently based on the job type -case "$JOB_TYPE" in - verify) - echo "Running as part of verify job" - ;; - merge) - echo "Running as part of merge job" - ;; - daily) - echo "Running as part of daily job" - ;; - weekly) - echo "Running as part of weekly job" - ;; - *) - echo "Job type $JOB_TYPE is not supported!" - exit 1 -esac - -# this just shows we can get the patch/commit information -# no matter what job we are executed by -cd $WORKSPACE -echo -echo "Commit Message is" -echo "-------------------------------------" -git log --format=%B -n 1 $(git rev-parse HEAD) -echo "-------------------------------------" -echo -echo "Repo contents" -echo "-------------------------------------" -ls -al -echo "-------------------------------------" -echo -echo "Changed files are" -echo "-------------------------------------" -git diff origin/master --name-only -echo "-------------------------------------" -echo -echo "Change introduced" -echo "-------------------------------------" -git diff origin/master -echo "-------------------------------------" -echo -echo "git show" -echo "-------------------------------------" -git show -echo "-------------------------------------" - -sleep 60 diff --git a/jjb/sandbox/deploy.sh b/jjb/sandbox/deploy.sh deleted file mode 100755 index 33268558c..000000000 --- a/jjb/sandbox/deploy.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/bash -#set -o errexit -#set -o nounset -#set -o pipefail - -# get the job type -# we only support verify, merge, daily and weekly jobs -if [[ "$JOB_NAME" =~ (verify|merge|daily|weekly) ]]; then - JOB_TYPE=${BASH_REMATCH[0]} -else - echo "Unable to determine job type!" - exit 1 -fi - -# do stuff differently based on the job type -case "$JOB_TYPE" in - verify) - echo "Running as part of verify job" - ;; - merge) - echo "Running as part of merge job" - ;; - daily) - echo "Running as part of daily job" - ;; - weekly) - echo "Running as part of weekly job" - ;; - *) - echo "Job type $JOB_TYPE is not supported!" - exit 1 -esac - -# this just shows we can get the patch/commit information -# no matter what job we are executed by -cd $WORKSPACE -echo -echo "Commit Message is" -echo "-------------------------------------" -git log --format=%B -n 1 $(git rev-parse HEAD) -echo "-------------------------------------" -echo -echo "Repo contents" -echo "-------------------------------------" -ls -al -echo "-------------------------------------" -echo -echo "Changed files are" -echo "-------------------------------------" -git diff origin/master --name-only -echo "-------------------------------------" -echo -echo "Change introduced" -echo "-------------------------------------" -git diff origin/master -echo "-------------------------------------" -echo -echo "git show" -echo "-------------------------------------" -git show -echo "-------------------------------------" - -sleep 60 diff --git a/jjb/sandbox/functest.sh b/jjb/sandbox/functest.sh deleted file mode 100755 index 2f9be2729..000000000 --- a/jjb/sandbox/functest.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/bash -#set -o errexit -#set -o nounset -#set -o pipefail - -# get the job type -# we only support verify, merge, daily and weekly jobs -if [[ "$JOB_NAME" =~ (verify|merge|daily|weekly) ]]; then - JOB_TYPE=${BASH_REMATCH[0]} -else - echo "Unable to determine job type!" - exit 1 -fi - -# do stuff differently based on the job type -case "$JOB_TYPE" in - verify) - echo "Running as part of verify job" - ;; - merge) - echo "Running as part of merge job" - ;; - daily) - echo "Running as part of daily job" - ;; - weekly) - echo "Running as part of weekly job" - ;; - *) - echo "Job type $JOB_TYPE is not supported!" - exit 1 -esac - -# this just shows we can get the patch/commit information -# no matter what job we are executed by -cd $WORKSPACE -echo -echo "Commit Message is" -echo "-------------------------------------" -git log --format=%B -n 1 $(git rev-parse HEAD) -echo "-------------------------------------" -echo -echo "Repo contents" -echo "-------------------------------------" -ls -al -echo "-------------------------------------" -echo -echo "Changed files are" -echo "-------------------------------------" -git diff origin/master --name-only -echo "-------------------------------------" -echo -echo "Change introduced" -echo "-------------------------------------" -git diff origin/master -echo "-------------------------------------" -echo -echo "git show" -echo "-------------------------------------" -git show -echo "-------------------------------------" diff --git a/jjb/sandbox/merge.sh b/jjb/sandbox/merge.sh deleted file mode 100755 index 2f9be2729..000000000 --- a/jjb/sandbox/merge.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/bash -#set -o errexit -#set -o nounset -#set -o pipefail - -# get the job type -# we only support verify, merge, daily and weekly jobs -if [[ "$JOB_NAME" =~ (verify|merge|daily|weekly) ]]; then - JOB_TYPE=${BASH_REMATCH[0]} -else - echo "Unable to determine job type!" - exit 1 -fi - -# do stuff differently based on the job type -case "$JOB_TYPE" in - verify) - echo "Running as part of verify job" - ;; - merge) - echo "Running as part of merge job" - ;; - daily) - echo "Running as part of daily job" - ;; - weekly) - echo "Running as part of weekly job" - ;; - *) - echo "Job type $JOB_TYPE is not supported!" - exit 1 -esac - -# this just shows we can get the patch/commit information -# no matter what job we are executed by -cd $WORKSPACE -echo -echo "Commit Message is" -echo "-------------------------------------" -git log --format=%B -n 1 $(git rev-parse HEAD) -echo "-------------------------------------" -echo -echo "Repo contents" -echo "-------------------------------------" -ls -al -echo "-------------------------------------" -echo -echo "Changed files are" -echo "-------------------------------------" -git diff origin/master --name-only -echo "-------------------------------------" -echo -echo "Change introduced" -echo "-------------------------------------" -git diff origin/master -echo "-------------------------------------" -echo -echo "git show" -echo "-------------------------------------" -git show -echo "-------------------------------------" diff --git a/jjb/sandbox/promote.sh b/jjb/sandbox/promote.sh deleted file mode 100755 index 2f9be2729..000000000 --- a/jjb/sandbox/promote.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/bash -#set -o errexit -#set -o nounset -#set -o pipefail - -# get the job type -# we only support verify, merge, daily and weekly jobs -if [[ "$JOB_NAME" =~ (verify|merge|daily|weekly) ]]; then - JOB_TYPE=${BASH_REMATCH[0]} -else - echo "Unable to determine job type!" - exit 1 -fi - -# do stuff differently based on the job type -case "$JOB_TYPE" in - verify) - echo "Running as part of verify job" - ;; - merge) - echo "Running as part of merge job" - ;; - daily) - echo "Running as part of daily job" - ;; - weekly) - echo "Running as part of weekly job" - ;; - *) - echo "Job type $JOB_TYPE is not supported!" - exit 1 -esac - -# this just shows we can get the patch/commit information -# no matter what job we are executed by -cd $WORKSPACE -echo -echo "Commit Message is" -echo "-------------------------------------" -git log --format=%B -n 1 $(git rev-parse HEAD) -echo "-------------------------------------" -echo -echo "Repo contents" -echo "-------------------------------------" -ls -al -echo "-------------------------------------" -echo -echo "Changed files are" -echo "-------------------------------------" -git diff origin/master --name-only -echo "-------------------------------------" -echo -echo "Change introduced" -echo "-------------------------------------" -git diff origin/master -echo "-------------------------------------" -echo -echo "git show" -echo "-------------------------------------" -git show -echo "-------------------------------------" diff --git a/jjb/sandbox/sandbox-daily-jobs.yml b/jjb/sandbox/sandbox-daily-jobs.yml deleted file mode 100644 index fc7244e41..000000000 --- a/jjb/sandbox/sandbox-daily-jobs.yml +++ /dev/null @@ -1,264 +0,0 @@ -- project: - name: 'sandbox-daily-jobs' - - project: 'sandbox' - - installer: 'sandbox' - -#-------------------------------- -# BRANCH ANCHORS -#-------------------------------- - master: &master - stream: master - branch: '{stream}' - gs-pathname: '' -#-------------------------------- -# POD, INSTALLER, AND BRANCH MAPPING -#-------------------------------- -# CI PODs -#-------------------------------- - pod: - - baremetal: - slave-label: sandbox-baremetal - <<: *master - - virtual: - slave-label: fuel-virtual - <<: *master -#-------------------------------- -# None-CI PODs -#-------------------------------- - - dummy-pod1: - slave-label: dummy-pod1 - <<: *master -#-------------------------------- -# scenarios -#-------------------------------- - scenario: - # HA scenarios - - 'os-nosdn-nofeature-ha': - auto-trigger-name: 'daily-trigger-disabled' - - 'os-odl_l2-nofeature-ha': - auto-trigger-name: 'daily-trigger-disabled' - - jobs: - - 'sandbox-{scenario}-{pod}-daily-{stream}' - - 'sandbox-deploy-{pod}-daily-{stream}' - - 'yardstick-sandbox-{pod}-daily-{stream}' - - 'functest-sandbox-{pod}-daily-{stream}' - -######################## -# job templates -######################## -- job-template: - name: 'sandbox-{scenario}-{pod}-daily-{stream}' - - concurrent: false - - properties: - - throttle: - enabled: true - max-total: 4 - max-per-node: 1 - option: 'project' - - build-blocker: - use-build-blocker: true - blocking-jobs: - - 'sandbox-os-.*?-{pod}-daily-{stream}' - block-level: 'NODE' - - wrappers: - - build-name: - name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO' - - triggers: - - '{auto-trigger-name}' - - parameters: - - project-parameter: - project: '{project}' - - '{installer}-defaults' - - '{slave-label}-defaults' - - string: - name: DEPLOY_SCENARIO - default: '{scenario}' - - builders: - - description-setter: - description: "Built on $NODE_NAME" - - trigger-builds: - - project: 'sandbox-deploy-{pod}-daily-{stream}' - current-parameters: false - predefined-parameters: - DEPLOY_SCENARIO={scenario} - same-node: true - block: true - - trigger-builds: - - project: 'yardstick-sandbox-{pod}-daily-{stream}' - current-parameters: false - predefined-parameters: - DEPLOY_SCENARIO={scenario} - same-node: true - block: true - block-thresholds: - build-step-failure-threshold: 'never' - failure-threshold: 'never' - unstable-threshold: 'FAILURE' - - trigger-builds: - - project: 'functest-sandbox-{pod}-daily-{stream}' - current-parameters: false - predefined-parameters: - DEPLOY_SCENARIO={scenario} - block: true - same-node: true - block-thresholds: - build-step-failure-threshold: 'never' - failure-threshold: 'never' - unstable-threshold: 'FAILURE' - -- job-template: - name: 'sandbox-deploy-{pod}-daily-{stream}' - - concurrent: true - - properties: - - throttle: - enabled: true - max-total: 4 - max-per-node: 1 - option: 'project' - - build-blocker: - use-build-blocker: true - blocking-jobs: - - 'fuel-deploy-{pod}-daily-{stream}' - - 'fuel-deploy-generic-daily-.*' - block-level: 'NODE' - - parameters: - - project-parameter: - project: '{project}' - - '{installer}-defaults' - - '{slave-label}-defaults' - - string: - name: DEPLOY_SCENARIO - default: 'os-odl_l2-nofeature-ha' - - scm: - - git-scm: - credentials-id: '{ssh-credentials}' - refspec: '' - branch: '{branch}' - - wrappers: - - build-name: - name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO' - - builders: - - description-setter: - description: "Built on $NODE_NAME" - - 'sandbox-deploy-daily-builder' - -- job-template: - name: 'yardstick-sandbox-{pod}-daily-{stream}' - - concurrent: true - - properties: - - throttle: - enabled: true - max-per-node: 1 - option: 'project' - - wrappers: - - build-name: - name: '$BUILD_NUMBER Suite: $YARDSTICK_SUITE_NAME Scenario: $DEPLOY_SCENARIO' - - timeout: - timeout: 400 - abort: true - - parameters: - - project-parameter: - project: '{project}' - - '{installer}-defaults' - - '{slave-label}-defaults': - installer: '{installer}' - - string: - name: DEPLOY_SCENARIO - default: 'os-odl_l2-nofeature-ha' - - scm: - - git-scm: - credentials-id: '{ssh-credentials}' - refspec: '' - branch: '{branch}' - - wrappers: - - build-name: - name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO' - - builders: - - description-setter: - description: "Built on $NODE_NAME" - - 'yardstick-sandbox-daily-builder' - -- job-template: - name: 'functest-sandbox-{pod}-daily-{stream}' - - concurrent: true - - properties: - - throttle: - enabled: true - max-per-node: 1 - option: 'project' - - wrappers: - - build-name: - name: '$BUILD_NUMBER Suite: $FUNCTEST_SUITE_NAME Scenario: $DEPLOY_SCENARIO' - - timeout: - timeout: 400 - abort: true - - parameters: - - project-parameter: - project: '{project}' - - '{slave-label}-defaults' - - '{installer}-defaults' - - string: - name: DEPLOY_SCENARIO - default: 'os-odl_l2-nofeature-ha' - - scm: - - git-scm: - credentials-id: '{ssh-credentials}' - refspec: '' - branch: '{branch}' - - wrappers: - - build-name: - name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO' - - builders: - - description-setter: - description: "Built on $NODE_NAME" - - 'functest-sandbox-daily-builder' - -##################################### -# builder macros -##################################### -- builder: - name: 'sandbox-deploy-daily-builder' - builders: - - shell: - !include-raw: ./deploy.sh - -- builder: - name: 'functest-sandbox-daily-builder' - builders: - - shell: - !include-raw: ./functest.sh - -- builder: - name: 'yardstick-sandbox-daily-builder' - builders: - - shell: - !include-raw: ./yardstick.sh diff --git a/jjb/sandbox/sandbox-merge-jobs.yml b/jjb/sandbox/sandbox-merge-jobs.yml deleted file mode 100644 index 69fcb4330..000000000 --- a/jjb/sandbox/sandbox-merge-jobs.yml +++ /dev/null @@ -1,159 +0,0 @@ -- project: - name: 'sandbox-merge-jobs' - - project: 'sandbox' - - installer: 'sandbox' - - stream: - - master: - branch: '{stream}' - gs-pathname: '' - -# what are the verification activities we do for this installer - activity: - - 'basic' - - 'build' - - 'promote' - - jobs: - - 'sandbox-merge-{stream}' - - 'sandbox-merge-{activity}-{stream}' - -- job-template: - name: 'sandbox-merge-{stream}' - - parameters: - - project-parameter: - project: '{project}' - - gerrit-parameter: - branch: '{branch}' - - 'opnfv-build-ubuntu-defaults' - - wrappers: - - ssh-agent-credentials: - users: - - '{ssh-credentials}' - - timeout: - timeout: 360 - fail: true - - triggers: - - gerrit: - trigger-on: - - change-merged-event - - comment-added-contains-event: - comment-contains-value: 'remerge' - projects: - - project-compare-type: 'ANT' - project-pattern: '{project}' - branches: - - branch-compare-type: 'ANT' - branch-pattern: '**/{branch}' - forbidden-file-paths: - - compare-type: ANT - pattern: 'docs/**' - readable-message: true - - builders: - - description-setter: - description: "Built on $NODE_NAME" - - '{project}-merge-builder' - - trigger-builds: - - project: 'sandbox-merge-basic-{stream}' - current-parameters: false - predefined-parameters: | - GERRIT_BRANCH=$GERRIT_BRANCH - GERRIT_REFSPEC=$GERRIT_REFSPEC - GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER - block: true - - trigger-builds: - - project: 'sandbox-merge-build-{stream}' - current-parameters: false - predefined-parameters: | - GERRIT_BRANCH=$GERRIT_BRANCH - GERRIT_REFSPEC=$GERRIT_REFSPEC - GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER - block: true - - trigger-builds: - - project: 'sandbox-merge-promote-{stream}' - current-parameters: false - predefined-parameters: | - GERRIT_BRANCH=$GERRIT_BRANCH - GERRIT_REFSPEC=$GERRIT_REFSPEC - GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER - block: true - -- job-template: - name: 'sandbox-merge-{activity}-{stream}' - - scm: - - gerrit-trigger-scm: - credentials-id: '{ssh-credentials}' - refspec: '' - choosing-strategy: 'default' - - wrappers: - - ssh-agent-credentials: - users: - - '{ssh-credentials}' - - timeout: - timeout: 360 - fail: true - - parameters: - - project-parameter: - project: '{project}' - - gerrit-parameter: - branch: '{branch}' - - '{installer}-defaults' - - '{project}-merge-{activity}-parameter' - - builders: - - description-setter: - description: "Built on $NODE_NAME" - - '{project}-merge-{activity}-builder' - -##################################### -# parameter builders -##################################### -- parameter: - name: 'sandbox-merge-basic-parameter' - parameters: - - 'opnfv-build-ubuntu-defaults' - -- parameter: - name: 'sandbox-merge-build-parameter' - parameters: - - 'opnfv-build-ubuntu-defaults' - -- parameter: - name: 'sandbox-merge-promote-parameter' - parameters: - - 'opnfv-build-centos-defaults' -##################################### -# builder builders -##################################### -- builder: - name: 'sandbox-merge-builder' - builders: - - shell: - !include-raw: ./merge.sh - -- builder: - name: 'sandbox-merge-basic-builder' - builders: - - shell: - !include-raw: ./basic.sh - -- builder: - name: 'sandbox-merge-build-builder' - builders: - - shell: - !include-raw: ./build.sh - -- builder: - name: 'sandbox-merge-promote-builder' - builders: - - shell: - !include-raw: ./promote.sh diff --git a/jjb/sandbox/sandbox-verify-jobs.yml b/jjb/sandbox/sandbox-verify-jobs.yml deleted file mode 100644 index e0bc2183f..000000000 --- a/jjb/sandbox/sandbox-verify-jobs.yml +++ /dev/null @@ -1,234 +0,0 @@ -- project: - name: 'sandbox-verify-jobs' - - project: 'sandbox' - - installer: 'sandbox' -##################################### -# branch definitions -##################################### - stream: - - master: - branch: '{stream}' - gs-pathname: '' - disabled: false - - colorado: - branch: 'stable/{stream}' - gs-pathname: '/{stream}' - disabled: true -##################################### -# patch verification phases -##################################### - phase: - - 'basic': - slave-label: 'opnfv-build-ubuntu' - - 'build': - slave-label: 'opnfv-build-ubuntu' - - 'deploy-virtual': - slave-label: 'sandbox-virtual' - - 'smoke-test': - slave-label: 'sandbox-virtual' -##################################### -# jobs -##################################### - jobs: - - 'sandbox-verify-{stream}' - - 'sandbox-verify-{phase}-{stream}' -##################################### -# job templates -##################################### -- job-template: - name: 'sandbox-verify-{stream}' - - project-type: multijob - - disabled: '{obj:disabled}' - - concurrent: true - - properties: - - throttle: - enabled: true - max-total: 2 - max-per-node: 1 - option: 'project' - - build-blocker: - use-build-blocker: true - blocking-jobs: - - 'sandbox-verify-master' - - 'sandbox-verify-colorado' - block-level: 'NODE' - - scm: - - gerrit-trigger-scm: - credentials-id: '{ssh-credentials}' - refspec: '$GERRIT_REFSPEC' - choosing-strategy: 'gerrit' - - wrappers: - - ssh-agent-credentials: - users: - - '{ssh-credentials}' - - timeout: - timeout: 360 - fail: true - - triggers: - - gerrit: - trigger-on: - - patchset-created-event: - exclude-drafts: 'false' - exclude-trivial-rebase: 'false' - exclude-no-code-change: 'false' - - draft-published-event - - comment-added-contains-event: - comment-contains-value: '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}' - forbidden-file-paths: - - compare-type: ANT - pattern: 'docs/**|.gitignore' - readable-message: true - - parameters: - - project-parameter: - project: '{project}' - - gerrit-parameter: - branch: '{branch}' - - 'sandbox-virtual-defaults' - - builders: - - description-setter: - description: "Built on $NODE_NAME" - - multijob: - name: basic - condition: SUCCESSFUL - projects: - - name: 'sandbox-verify-basic-{stream}' - current-parameters: false - predefined-parameters: | - GERRIT_BRANCH=$GERRIT_BRANCH - GERRIT_REFSPEC=$GERRIT_REFSPEC - GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER - GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE - kill-phase-on: FAILURE - abort-all-job: true - - multijob: - name: build - condition: SUCCESSFUL - projects: - - name: 'sandbox-verify-build-{stream}' - current-parameters: false - predefined-parameters: | - GERRIT_BRANCH=$GERRIT_BRANCH - GERRIT_REFSPEC=$GERRIT_REFSPEC - GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER - GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE - kill-phase-on: FAILURE - abort-all-job: true - - multijob: - name: deploy-virtual - condition: SUCCESSFUL - projects: - - name: 'sandbox-verify-deploy-virtual-{stream}' - current-parameters: false - predefined-parameters: | - 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 - - multijob: - name: smoke-test - condition: SUCCESSFUL - projects: - - name: 'sandbox-verify-smoke-test-{stream}' - current-parameters: false - predefined-parameters: | - 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 - -- job-template: - name: 'sandbox-verify-{phase}-{stream}' - - disabled: '{obj:disabled}' - - concurrent: true - - properties: - - throttle: - enabled: true - max-total: 2 - max-per-node: 1 - option: 'project' - - build-blocker: - use-build-blocker: true - blocking-jobs: - - 'sandbox-verify-deploy-.*' - - 'sandbox-verify-test-.*' - block-level: 'NODE' - - scm: - - gerrit-trigger-scm: - credentials-id: '{ssh-credentials}' - refspec: '$GERRIT_REFSPEC' - choosing-strategy: 'gerrit' - - wrappers: - - ssh-agent-credentials: - users: - - '{ssh-credentials}' - - timeout: - timeout: 360 - fail: true - parameters: - - project-parameter: - project: '{project}' - - gerrit-parameter: - branch: '{branch}' - - '{installer}-defaults' - - '{slave-label}-defaults' - - builders: - - description-setter: - description: "Built on $NODE_NAME" - - '{project}-verify-{phase}-macro' -##################################### -# builder macros -##################################### -- builder: - name: 'sandbox-verify-basic-macro' - builders: - - shell: - !include-raw: ./basic.sh - -- builder: - name: 'sandbox-verify-build-macro' - builders: - - shell: - !include-raw: ./build.sh - -- builder: - name: 'sandbox-verify-deploy-virtual-macro' - builders: - - shell: - !include-raw: ./deploy.sh - -- builder: - name: 'sandbox-verify-smoke-test-macro' - builders: - - shell: - !include-raw: ./test.sh diff --git a/jjb/sandbox/sandbox-weekly-jobs.yml b/jjb/sandbox/sandbox-weekly-jobs.yml deleted file mode 100644 index 52f852923..000000000 --- a/jjb/sandbox/sandbox-weekly-jobs.yml +++ /dev/null @@ -1,264 +0,0 @@ -- project: - name: 'sandbox-weekly-jobs' - - project: 'sandbox' - - installer: 'sandbox' - -#-------------------------------- -# BRANCH ANCHORS -#-------------------------------- - master: &master - stream: master - branch: '{stream}' - gs-pathname: '' -#-------------------------------- -# POD, INSTALLER, AND BRANCH MAPPING -#-------------------------------- -# CI PODs -#-------------------------------- - pod: - - baremetal: - slave-label: sandbox-baremetal - <<: *master - - virtual: - slave-label: fuel-virtual - <<: *master -#-------------------------------- -# None-CI PODs -#-------------------------------- - - dummy-pod1: - slave-label: dummy-pod1 - <<: *master -#-------------------------------- -# scenarios -#-------------------------------- - scenario: - # HA scenarios - - 'os-nosdn-nofeature-ha': - auto-trigger-name: 'weekly-trigger-disabled' - - 'os-odl_l2-nofeature-ha': - auto-trigger-name: 'weekly-trigger-disabled' - - jobs: - - 'sandbox-{scenario}-{pod}-weekly-{stream}' - - 'sandbox-deploy-{pod}-weekly-{stream}' - - 'yardstick-sandbox-{pod}-weekly-{stream}' - - 'functest-sandbox-{pod}-weekly-{stream}' - -######################## -# job templates -######################## -- job-template: - name: 'sandbox-{scenario}-{pod}-weekly-{stream}' - - concurrent: false - - properties: - - throttle: - enabled: true - max-total: 4 - max-per-node: 1 - option: 'project' - - build-blocker: - use-build-blocker: true - blocking-jobs: - - 'sandbox-os-.*?-{pod}-weekly-{stream}' - block-level: 'NODE' - - wrappers: - - build-name: - name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO' - - triggers: - - '{auto-trigger-name}' - - parameters: - - project-parameter: - project: '{project}' - - '{installer}-defaults' - - '{slave-label}-defaults' - - string: - name: DEPLOY_SCENARIO - default: '{scenario}' - - builders: - - description-setter: - description: "Built on $NODE_NAME" - - trigger-builds: - - project: 'sandbox-deploy-{pod}-weekly-{stream}' - current-parameters: false - predefined-parameters: - DEPLOY_SCENARIO={scenario} - same-node: true - block: true - - trigger-builds: - - project: 'yardstick-sandbox-{pod}-weekly-{stream}' - current-parameters: false - predefined-parameters: - DEPLOY_SCENARIO={scenario} - same-node: true - block: true - block-thresholds: - build-step-failure-threshold: 'never' - failure-threshold: 'never' - unstable-threshold: 'FAILURE' - - trigger-builds: - - project: 'functest-sandbox-{pod}-weekly-{stream}' - current-parameters: false - predefined-parameters: - DEPLOY_SCENARIO={scenario} - block: true - same-node: true - block-thresholds: - build-step-failure-threshold: 'never' - failure-threshold: 'never' - unstable-threshold: 'FAILURE' - -- job-template: - name: 'sandbox-deploy-{pod}-weekly-{stream}' - - concurrent: true - - properties: - - throttle: - enabled: true - max-total: 4 - max-per-node: 1 - option: 'project' - - build-blocker: - use-build-blocker: true - blocking-jobs: - - 'fuel-deploy-{pod}-weekly-{stream}' - - 'fuel-deploy-generic-weekly-.*' - block-level: 'NODE' - - parameters: - - project-parameter: - project: '{project}' - - '{installer}-defaults' - - '{slave-label}-defaults' - - string: - name: DEPLOY_SCENARIO - default: 'os-odl_l2-nofeature-ha' - - scm: - - git-scm: - credentials-id: '{ssh-credentials}' - refspec: '' - branch: '{branch}' - - wrappers: - - build-name: - name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO' - - builders: - - description-setter: - description: "Built on $NODE_NAME" - - 'sandbox-deploy-weekly-builder' - -- job-template: - name: 'yardstick-sandbox-{pod}-weekly-{stream}' - - concurrent: true - - properties: - - throttle: - enabled: true - max-per-node: 1 - option: 'project' - - wrappers: - - build-name: - name: '$BUILD_NUMBER Suite: $YARDSTICK_SUITE_NAME Scenario: $DEPLOY_SCENARIO' - - timeout: - timeout: 400 - abort: true - - parameters: - - project-parameter: - project: '{project}' - - '{installer}-defaults' - - '{slave-label}-defaults': - installer: '{installer}' - - string: - name: DEPLOY_SCENARIO - default: 'os-odl_l2-nofeature-ha' - - scm: - - git-scm: - credentials-id: '{ssh-credentials}' - refspec: '' - branch: '{branch}' - - wrappers: - - build-name: - name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO' - - builders: - - description-setter: - description: "Built on $NODE_NAME" - - 'yardstick-sandbox-weekly-builder' - -- job-template: - name: 'functest-sandbox-{pod}-weekly-{stream}' - - concurrent: true - - properties: - - throttle: - enabled: true - max-per-node: 1 - option: 'project' - - wrappers: - - build-name: - name: '$BUILD_NUMBER Suite: $FUNCTEST_SUITE_NAME Scenario: $DEPLOY_SCENARIO' - - timeout: - timeout: 400 - abort: true - - parameters: - - project-parameter: - project: '{project}' - - '{slave-label}-defaults' - - '{installer}-defaults' - - string: - name: DEPLOY_SCENARIO - default: 'os-odl_l2-nofeature-ha' - - scm: - - git-scm: - credentials-id: '{ssh-credentials}' - refspec: '' - branch: '{branch}' - - wrappers: - - build-name: - name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO' - - builders: - - description-setter: - description: "Built on $NODE_NAME" - - 'functest-sandbox-weekly-builder' - -##################################### -# builder macros -##################################### -- builder: - name: 'sandbox-deploy-weekly-builder' - builders: - - shell: - !include-raw: ./deploy.sh - -- builder: - name: 'functest-sandbox-weekly-builder' - builders: - - shell: - !include-raw: ./functest.sh - -- builder: - name: 'yardstick-sandbox-weekly-builder' - builders: - - shell: - !include-raw: ./yardstick.sh diff --git a/jjb/sandbox/test.sh b/jjb/sandbox/test.sh deleted file mode 100755 index 33268558c..000000000 --- a/jjb/sandbox/test.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/bash -#set -o errexit -#set -o nounset -#set -o pipefail - -# get the job type -# we only support verify, merge, daily and weekly jobs -if [[ "$JOB_NAME" =~ (verify|merge|daily|weekly) ]]; then - JOB_TYPE=${BASH_REMATCH[0]} -else - echo "Unable to determine job type!" - exit 1 -fi - -# do stuff differently based on the job type -case "$JOB_TYPE" in - verify) - echo "Running as part of verify job" - ;; - merge) - echo "Running as part of merge job" - ;; - daily) - echo "Running as part of daily job" - ;; - weekly) - echo "Running as part of weekly job" - ;; - *) - echo "Job type $JOB_TYPE is not supported!" - exit 1 -esac - -# this just shows we can get the patch/commit information -# no matter what job we are executed by -cd $WORKSPACE -echo -echo "Commit Message is" -echo "-------------------------------------" -git log --format=%B -n 1 $(git rev-parse HEAD) -echo "-------------------------------------" -echo -echo "Repo contents" -echo "-------------------------------------" -ls -al -echo "-------------------------------------" -echo -echo "Changed files are" -echo "-------------------------------------" -git diff origin/master --name-only -echo "-------------------------------------" -echo -echo "Change introduced" -echo "-------------------------------------" -git diff origin/master -echo "-------------------------------------" -echo -echo "git show" -echo "-------------------------------------" -git show -echo "-------------------------------------" - -sleep 60 diff --git a/jjb/sandbox/yardstick.sh b/jjb/sandbox/yardstick.sh deleted file mode 100755 index 2f9be2729..000000000 --- a/jjb/sandbox/yardstick.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/bash -#set -o errexit -#set -o nounset -#set -o pipefail - -# get the job type -# we only support verify, merge, daily and weekly jobs -if [[ "$JOB_NAME" =~ (verify|merge|daily|weekly) ]]; then - JOB_TYPE=${BASH_REMATCH[0]} -else - echo "Unable to determine job type!" - exit 1 -fi - -# do stuff differently based on the job type -case "$JOB_TYPE" in - verify) - echo "Running as part of verify job" - ;; - merge) - echo "Running as part of merge job" - ;; - daily) - echo "Running as part of daily job" - ;; - weekly) - echo "Running as part of weekly job" - ;; - *) - echo "Job type $JOB_TYPE is not supported!" - exit 1 -esac - -# this just shows we can get the patch/commit information -# no matter what job we are executed by -cd $WORKSPACE -echo -echo "Commit Message is" -echo "-------------------------------------" -git log --format=%B -n 1 $(git rev-parse HEAD) -echo "-------------------------------------" -echo -echo "Repo contents" -echo "-------------------------------------" -ls -al -echo "-------------------------------------" -echo -echo "Changed files are" -echo "-------------------------------------" -git diff origin/master --name-only -echo "-------------------------------------" -echo -echo "Change introduced" -echo "-------------------------------------" -git diff origin/master -echo "-------------------------------------" -echo -echo "git show" -echo "-------------------------------------" -git show -echo "-------------------------------------" diff --git a/prototypes/bifrost/scripts/destroy_env.sh b/prototypes/bifrost/scripts/destroy_env.sh index aef4ccba3..819048b53 100755 --- a/prototypes/bifrost/scripts/destroy_env.sh +++ b/prototypes/bifrost/scripts/destroy_env.sh @@ -1,3 +1,4 @@ +#!/bin/bash # SPDX-license-identifier: Apache-2.0 ############################################################################## # Copyright (c) 2016 RedHat and others. @@ -6,7 +7,6 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -#!/bin/bash virsh destroy jumphost.opnfvlocal || true virsh destroy controller00.opnfvlocal || true virsh destroy compute00.opnfvlocal || true diff --git a/prototypes/bifrost/scripts/test-bifrost-deployment.sh b/prototypes/bifrost/scripts/test-bifrost-deployment.sh index 5df58f8eb..66affe9a7 100755 --- a/prototypes/bifrost/scripts/test-bifrost-deployment.sh +++ b/prototypes/bifrost/scripts/test-bifrost-deployment.sh @@ -1,3 +1,4 @@ +#!/bin/bash # SPDX-license-identifier: Apache-2.0 ############################################################################## # Copyright (c) 2016 Ericsson AB and others. @@ -6,7 +7,6 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -#!/bin/bash set -eux set -o pipefail diff --git a/utils/test/reporting/functest/reporting-tempest.py b/utils/test/reporting/functest/reporting-tempest.py index e3f4e3306..0dc1dd343 100755 --- a/utils/test/reporting/functest/reporting-tempest.py +++ b/utils/test/reporting/functest/reporting-tempest.py @@ -24,104 +24,108 @@ logger.info("nb tests executed > %s s " % criteria_nb_test) logger.info("test duration < %s s " % criteria_duration) logger.info("success rate > %s " % criteria_success_rate) -for installer in installers: - # we consider the Tempest results of the last PERIOD days - url = conf.URL_BASE + "?case=tempest_smoke_serial" - request = Request(url + '&period=' + str(PERIOD) + - '&installer=' + installer + '&version=master') - logger.info("Search tempest_smoke_serial results for installer %s" - % installer) - try: - response = urlopen(request) - k = response.read() - results = json.loads(k) - except URLError, e: - logger.error("Error code: %s" % e) - - test_results = results['results'] - - scenario_results = {} - criteria = {} - errors = {} - - for r in test_results: - # Retrieve all the scenarios per installer - # In Brahmaputra use version - # Since Colorado use scenario - if not r['scenario'] in scenario_results.keys(): - scenario_results[r['scenario']] = [] - scenario_results[r['scenario']].append(r) - - for s, s_result in scenario_results.items(): - scenario_results[s] = s_result[0:5] - # For each scenario, we build a result object to deal with - # results, criteria and error handling - for result in scenario_results[s]: - result["start_date"] = result["start_date"].split(".")[0] - - # retrieve results - # **************** - nb_tests_run = result['details']['tests'] - nb_tests_failed = result['details']['failures'] - if nb_tests_run != 0: - success_rate = 100*(int(nb_tests_run) - - int(nb_tests_failed)) / int(nb_tests_run) - else: - success_rate = 0 - - result['details']["tests"] = nb_tests_run - result['details']["Success rate"] = str(success_rate) + "%" - - # Criteria management - # ******************* - crit_tests = False - crit_rate = False - crit_time = False - - # Expect that at least 165 tests are run - if nb_tests_run >= criteria_nb_test: - crit_tests = True - - # Expect that at least 90% of success - if success_rate >= criteria_success_rate: - crit_rate = True - - # Expect that the suite duration is inferior to 30m - if result['details']['duration'] < criteria_duration: - crit_time = True - - result['criteria'] = {'tests': crit_tests, - 'Success rate': crit_rate, - 'duration': crit_time} - try: - logger.debug("Scenario %s, Installer %s" - % (s_result[1]['scenario'], installer)) - logger.debug("Nb Test run: %s" % nb_tests_run) - logger.debug("Test duration: %s" - % result['details']['duration']) - logger.debug("Success rate: %s" % success_rate) - except: - logger.error("Data format error") - - # Error management - # **************** - try: - errors = result['details']['errors'] - result['errors'] = errors.replace('{0}', '') - except: - logger.error("Error field not present (Brahamputra runs?)") - - templateLoader = jinja2.FileSystemLoader(conf.REPORTING_PATH) - templateEnv = jinja2.Environment(loader=templateLoader) - - TEMPLATE_FILE = "/template/index-tempest-tmpl.html" - template = templateEnv.get_template(TEMPLATE_FILE) - - outputText = template.render(scenario_results=scenario_results, - items=items, - installer=installer) - - with open(conf.REPORTING_PATH + "/release/master/index-tempest-" + - installer + ".html", "wb") as fh: - fh.write(outputText) +# For all the versions +for version in conf.versions: + for installer in conf.installers: + # we consider the Tempest results of the last PERIOD days + url = conf.URL_BASE + "?case=tempest_smoke_serial" + request = Request(url + '&period=' + str(PERIOD) + + '&installer=' + installer + + '&version=' + version) + logger.info("Search tempest_smoke_serial results for installer %s" + " for version %s" + % (installer, version)) + try: + response = urlopen(request) + k = response.read() + results = json.loads(k) + except URLError, e: + logger.error("Error code: %s" % e) + + test_results = results['results'] + + scenario_results = {} + criteria = {} + errors = {} + + for r in test_results: + # Retrieve all the scenarios per installer + # In Brahmaputra use version + # Since Colorado use scenario + if not r['scenario'] in scenario_results.keys(): + scenario_results[r['scenario']] = [] + scenario_results[r['scenario']].append(r) + + for s, s_result in scenario_results.items(): + scenario_results[s] = s_result[0:5] + # For each scenario, we build a result object to deal with + # results, criteria and error handling + for result in scenario_results[s]: + result["start_date"] = result["start_date"].split(".")[0] + + # retrieve results + # **************** + nb_tests_run = result['details']['tests'] + nb_tests_failed = result['details']['failures'] + if nb_tests_run != 0: + success_rate = 100*(int(nb_tests_run) - + int(nb_tests_failed)) / int(nb_tests_run) + else: + success_rate = 0 + + result['details']["tests"] = nb_tests_run + result['details']["Success rate"] = str(success_rate) + "%" + + # Criteria management + # ******************* + crit_tests = False + crit_rate = False + crit_time = False + + # Expect that at least 165 tests are run + if nb_tests_run >= criteria_nb_test: + crit_tests = True + + # Expect that at least 90% of success + if success_rate >= criteria_success_rate: + crit_rate = True + + # Expect that the suite duration is inferior to 30m + if result['details']['duration'] < criteria_duration: + crit_time = True + + result['criteria'] = {'tests': crit_tests, + 'Success rate': crit_rate, + 'duration': crit_time} + try: + logger.debug("Scenario %s, Installer %s" + % (s_result[1]['scenario'], installer)) + logger.debug("Nb Test run: %s" % nb_tests_run) + logger.debug("Test duration: %s" + % result['details']['duration']) + logger.debug("Success rate: %s" % success_rate) + except: + logger.error("Data format error") + + # Error management + # **************** + try: + errors = result['details']['errors'] + result['errors'] = errors.replace('{0}', '') + except: + logger.error("Error field not present (Brahamputra runs?)") + + templateLoader = jinja2.FileSystemLoader(conf.REPORTING_PATH) + templateEnv = jinja2.Environment(loader=templateLoader) + + TEMPLATE_FILE = "/template/index-tempest-tmpl.html" + template = templateEnv.get_template(TEMPLATE_FILE) + + outputText = template.render(scenario_results=scenario_results, + items=items, + installer=installer) + + with open(conf.REPORTING_PATH + "/release/" + version + + "/index-tempest-" + installer + ".html", "wb") as fh: + fh.write(outputText) logger.info("Tempest automatic reporting succesfully generated.") diff --git a/utils/test/reporting/functest/reporting-vims.py b/utils/test/reporting/functest/reporting-vims.py index d0436ed14..a83d92f0a 100755 --- a/utils/test/reporting/functest/reporting-vims.py +++ b/utils/test/reporting/functest/reporting-vims.py @@ -33,81 +33,87 @@ logger.info("****************************************") installers = conf.installers step_order = ["initialisation", "orchestrator", "vIMS", "sig_test"] logger.info("Start processing....") -for installer in installers: - logger.info("Search vIMS results for installer %s" % installer) - request = Request(conf.URL_BASE + '?case=vims&installer=' + installer) - - try: - response = urlopen(request) - k = response.read() - results = json.loads(k) - except URLError, e: - logger.error("Error code: %s" % e) - - test_results = results['results'] - - logger.debug("Results found: %s" % test_results) - - scenario_results = {} - for r in test_results: - if not r['scenario'] in scenario_results.keys(): - scenario_results[r['scenario']] = [] - scenario_results[r['scenario']].append(r) - - for s, s_result in scenario_results.items(): - scenario_results[s] = s_result[0:5] - logger.debug("Search for success criteria") - for result in scenario_results[s]: - result["start_date"] = result["start_date"].split(".")[0] - sig_test = result['details']['sig_test']['result'] - if not sig_test == "" and isinstance(sig_test, list): - format_result = sig_test_format(sig_test) - if format_result['failures'] > format_result['passed']: - result['details']['sig_test']['duration'] = 0 - result['details']['sig_test']['result'] = format_result - nb_step_ok = 0 - nb_step = len(result['details']) - - for step_name, step_result in result['details'].items(): - if step_result['duration'] != 0: - nb_step_ok += 1 - m, s = divmod(step_result['duration'], 60) - m_display = "" - if int(m) != 0: - m_display += str(int(m)) + "m " - step_result['duration_display'] = m_display + str(int(s)) + "s" - - result['pr_step_ok'] = 0 - if nb_step != 0: - result['pr_step_ok'] = (float(nb_step_ok)/nb_step)*100 - try: - logger.debug("Scenario %s, Installer %s" - % (s_result[1]['scenario'], installer)) - logger.debug("Orchestrator deployment: %s s" - % result['details']['orchestrator']['duration']) - logger.debug("vIMS deployment: %s s" - % result['details']['vIMS']['duration']) - logger.debug("Signaling testing: %s s" - % result['details']['sig_test']['duration']) - logger.debug("Signaling testing results: %s" - % format_result) - except: - logger.error("Data badly formatted") - logger.debug("------------------------------------------------") - - templateLoader = jinja2.FileSystemLoader(conf.REPORTING_PATH) - templateEnv = jinja2.Environment(loader=templateLoader) - - TEMPLATE_FILE = "/template/index-vims-tmpl.html" - template = templateEnv.get_template(TEMPLATE_FILE) - - outputText = template.render(scenario_results=scenario_results, - step_order=step_order, - installer=installer) - - with open(conf.REPORTING_PATH + - "/release/master/index-vims-" + - installer + ".html", "wb") as fh: - fh.write(outputText) + +# For all the versions +for version in conf.versions: + for installer in installers: + logger.info("Search vIMS results for installer: %s, version: %s" + % (installer, version)) + request = Request(conf.URL_BASE + '?case=vims&installer=' + + installer + '&version=' + version) + + try: + response = urlopen(request) + k = response.read() + results = json.loads(k) + except URLError, e: + logger.error("Error code: %s" % e) + + test_results = results['results'] + + logger.debug("Results found: %s" % test_results) + + scenario_results = {} + for r in test_results: + if not r['scenario'] in scenario_results.keys(): + scenario_results[r['scenario']] = [] + scenario_results[r['scenario']].append(r) + + for s, s_result in scenario_results.items(): + scenario_results[s] = s_result[0:5] + logger.debug("Search for success criteria") + for result in scenario_results[s]: + result["start_date"] = result["start_date"].split(".")[0] + sig_test = result['details']['sig_test']['result'] + if not sig_test == "" and isinstance(sig_test, list): + format_result = sig_test_format(sig_test) + if format_result['failures'] > format_result['passed']: + result['details']['sig_test']['duration'] = 0 + result['details']['sig_test']['result'] = format_result + nb_step_ok = 0 + nb_step = len(result['details']) + + for step_name, step_result in result['details'].items(): + if step_result['duration'] != 0: + nb_step_ok += 1 + m, s = divmod(step_result['duration'], 60) + m_display = "" + if int(m) != 0: + m_display += str(int(m)) + "m " + + step_result['duration_display'] = m_display + str(int(s)) + "s" + + result['pr_step_ok'] = 0 + if nb_step != 0: + result['pr_step_ok'] = (float(nb_step_ok)/nb_step)*100 + try: + logger.debug("Scenario %s, Installer %s" + % (s_result[1]['scenario'], installer)) + logger.debug("Orchestrator deployment: %s s" + % result['details']['orchestrator']['duration']) + logger.debug("vIMS deployment: %s s" + % result['details']['vIMS']['duration']) + logger.debug("Signaling testing: %s s" + % result['details']['sig_test']['duration']) + logger.debug("Signaling testing results: %s" + % format_result) + except: + logger.error("Data badly formatted") + logger.debug("----------------------------------------") + + templateLoader = jinja2.FileSystemLoader(conf.REPORTING_PATH) + templateEnv = jinja2.Environment(loader=templateLoader) + + TEMPLATE_FILE = "/template/index-vims-tmpl.html" + template = templateEnv.get_template(TEMPLATE_FILE) + + outputText = template.render(scenario_results=scenario_results, + step_order=step_order, + installer=installer) + + with open(conf.REPORTING_PATH + + "/release/" + version + "/index-vims-" + + installer + ".html", "wb") as fh: + fh.write(outputText) logger.info("vIMS report succesfully generated") diff --git a/utils/test/reporting/functest/reportingConf.py b/utils/test/reporting/functest/reportingConf.py index c60ba5483..9230cb286 100644 --- a/utils/test/reporting/functest/reportingConf.py +++ b/utils/test/reporting/functest/reportingConf.py @@ -14,7 +14,7 @@ installers = ["apex", "compass", "fuel", "joid"] # taken into account for the scoring blacklist = ["ovno", "security_scan", 'odl-sfc'] # versions = ["brahmaputra", "master"] -versions = ["master"] +versions = ["master", "colorado"] PERIOD = 50 MAX_SCENARIO_CRITERIA = 50 # get the last 5 test results to determinate the success criteria diff --git a/utils/test/reporting/functest/template/index-status-tmpl.html b/utils/test/reporting/functest/template/index-status-tmpl.html index 78eae1f16..da2213bc0 100644 --- a/utils/test/reporting/functest/template/index-status-tmpl.html +++ b/utils/test/reporting/functest/template/index-status-tmpl.html @@ -21,7 +21,7 @@ <h3 class="text-muted">Functest status page ({{version}})</h3> <nav> <ul class="nav nav-justified"> - <li class="active"><a href="index.html">Home</a></li> + <li class="active"><a href="http://testresults.opnfv.org/reporting/index.html">Home</a></li> <li><a href="index-status-apex.html">Apex</a></li> <li><a href="index-status-compass.html">Compass</a></li> <li><a href="index-status-fuel.html">Fuel</a></li> diff --git a/utils/test/reporting/functest/template/index-tempest-tmpl.html b/utils/test/reporting/functest/template/index-tempest-tmpl.html index c56214346..42d7ed339 100644 --- a/utils/test/reporting/functest/template/index-tempest-tmpl.html +++ b/utils/test/reporting/functest/template/index-tempest-tmpl.html @@ -21,7 +21,7 @@ <h3 class="text-muted">Tempest status page</h3> <nav> <ul class="nav nav-justified"> - <li class="active"><a href="index.html">Home</a></li> + <li class="active"><a href="http://testresults.opnfv.org/reporting/index.html">Home</a></li> <li><a href="index-tempest-apex.html">Apex</a></li> <li><a href="index-tempest-compass.html">Compass</a></li> <li><a href="index-tempest-fuel.html">Fuel</a></li> diff --git a/utils/test/reporting/functest/template/index-vims-tmpl.html b/utils/test/reporting/functest/template/index-vims-tmpl.html index 25499dc46..3836be91f 100644 --- a/utils/test/reporting/functest/template/index-vims-tmpl.html +++ b/utils/test/reporting/functest/template/index-vims-tmpl.html @@ -21,7 +21,7 @@ <h3 class="text-muted">vIMS status page</h3> <nav> <ul class="nav nav-justified"> - <li class="active"><a href="index.html">Home</a></li> + <li class="active"><a href="http://testresults.opnfv.org/reporting/index.html">Home</a></li> <li><a href="index-vims-fuel.html">Fuel</a></li> <li><a href="index-vims-compass.html">Compass</a></li> <li><a href="index-vims-joid.html">JOID</a></li> diff --git a/utils/test/reporting/yardstick/img/icon-nok.png b/utils/test/reporting/yardstick/img/icon-nok.png Binary files differnew file mode 100644 index 000000000..526b5294b --- /dev/null +++ b/utils/test/reporting/yardstick/img/icon-nok.png diff --git a/utils/test/reporting/yardstick/img/icon-ok.png b/utils/test/reporting/yardstick/img/icon-ok.png Binary files differnew file mode 100644 index 000000000..3a9de2e89 --- /dev/null +++ b/utils/test/reporting/yardstick/img/icon-ok.png diff --git a/utils/test/reporting/yardstick/img/weather-clear.png b/utils/test/reporting/yardstick/img/weather-clear.png Binary files differnew file mode 100644 index 000000000..a0d967750 --- /dev/null +++ b/utils/test/reporting/yardstick/img/weather-clear.png diff --git a/utils/test/reporting/yardstick/img/weather-few-clouds.png b/utils/test/reporting/yardstick/img/weather-few-clouds.png Binary files differnew file mode 100644 index 000000000..acfa78398 --- /dev/null +++ b/utils/test/reporting/yardstick/img/weather-few-clouds.png diff --git a/utils/test/reporting/yardstick/img/weather-overcast.png b/utils/test/reporting/yardstick/img/weather-overcast.png Binary files differnew file mode 100644 index 000000000..4296246d0 --- /dev/null +++ b/utils/test/reporting/yardstick/img/weather-overcast.png diff --git a/utils/test/reporting/yardstick/img/weather-storm.png b/utils/test/reporting/yardstick/img/weather-storm.png Binary files differnew file mode 100644 index 000000000..956f0e20f --- /dev/null +++ b/utils/test/reporting/yardstick/img/weather-storm.png diff --git a/utils/test/reporting/yardstick/index.html b/utils/test/reporting/yardstick/index.html new file mode 100644 index 000000000..ec64bc848 --- /dev/null +++ b/utils/test/reporting/yardstick/index.html @@ -0,0 +1,48 @@ + <html> + <head> + <meta charset="utf-8"> + <!-- Bootstrap core CSS --> + <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet"> + <link href="default.css" rel="stylesheet"> + <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> + <script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script> + <script type="text/javascript"> + $(document).ready(function (){ + $(".btn-more").click(function() { + $(this).hide(); + $(this).parent().find(".panel-default").show(); + }); + }) + </script> + </head> + <body> + <div class="container"> + <div class="masthead"> + <h3 class="text-muted">Yardstick reporting page</h3> + <nav> + <ul class="nav nav-justified"> + <li class="active"><a href="#">Home</a></li> + <li><a href="./index-status-apex.html">Status</a></li> + </ul> + </nav> + </div> +<div class="row"> + <div class="col-md-1"></div> + <div class="col-md-10"> + <div class="page-main"> + <h2>Yardstick</h2> + Yardstick is used in OPNFV for verifying the OPNFV infrastructure and some of the OPNFV features. + <br>The Yardstick framework is deployed in several OPNFV community labs. + <br>It is installer, infrastructure and application independent. + + <h2>Useful Links</h2> + <li><a href="https://wiki.opnfv.org/download/attachments/5734608/yardstick%20in%20depth.pdf?version=1&modificationDate=1463410431000&api=v2">Yardstick in Depth</a></li> + <li><a href="https://git.opnfv.org/cgit/yardstick">Yardstick Repo</a></li> + <li><a href="https://wiki.opnfv.org/display/yardstick">Yardstick Project</a></li> + <li><a href="https://build.opnfv.org/ci/view/yardstick/">Yardstick Jenkins page</a></li> + <li><a href="https://jira.opnfv.org/browse/YARDSTICK-119?jql=project%20%3D%20YARDSTICK">JIRA</a></li> + + </div> + </div> + <div class="col-md-1"></div> +</div>
\ No newline at end of file diff --git a/utils/test/reporting/yardstick/reporting-status.py b/utils/test/reporting/yardstick/reporting-status.py new file mode 100644 index 000000000..ed5dab044 --- /dev/null +++ b/utils/test/reporting/yardstick/reporting-status.py @@ -0,0 +1,74 @@ +#!/usr/bin/python +# +# This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +import datetime +import jinja2 +import requests +import sys +import time +import yaml + +import reportingUtils as utils +import reportingConf as conf +import scenarioResult as sr + +# Logger +logger = utils.getLogger("Yardstick-Status") + +logger.info("*******************************************") +logger.info("* Generating reporting scenario status *") +logger.info("* Data retention = %s days *" % conf.PERIOD) +logger.info("* *") +logger.info("*******************************************") + +# For all the versions +for version in conf.versions: + # For all the installers + for installer in conf.installers: + # get scenarios results data + scenario_results = utils.getScenarioStatus(installer, version) + scenario_result_criteria = {} + + # From each scenarios get results list + for s, s_result in scenario_results.items(): + logger.info("---------------------------------") + logger.info("installer %s, version %s, scenario %s:" % (installer, version, s)) + + s_status = 'KO' + scenario_criteria = len(s_result) + scenario_score = 0 + + for v in s_result: + if v['details'] == 'SUCCESS': + scenario_score += 1 + + if scenario_score == scenario_criteria: + s_status = 'OK' + logger.info(">>>>> scenario OK, save the information") + else: + logger.info(">>>> scenario not OK, score = %s/%s" % (scenario_score, scenario_criteria)) + + s_score = str(scenario_score) + '/' + str(scenario_criteria) + scenario_result_criteria[s] = sr.ScenarioResult(s_status, s_score) + + logger.info("--------------------------") + + templateLoader = jinja2.FileSystemLoader(conf.REPORTING_PATH) + templateEnv = jinja2.Environment(loader=templateLoader) + + TEMPLATE_FILE = "/template/index-status-tmpl.html" + template = templateEnv.get_template(TEMPLATE_FILE) + + outputText = template.render(scenario_results=scenario_result_criteria, + installer=installer, + period=conf.PERIOD, + version=version) + + with open(conf.REPORTING_PATH + "/release/" + version + + "/index-status-" + installer + ".html", "wb") as fh: + fh.write(outputText) diff --git a/utils/test/reporting/yardstick/reportingConf.py b/utils/test/reporting/yardstick/reportingConf.py new file mode 100644 index 000000000..af95cc00f --- /dev/null +++ b/utils/test/reporting/yardstick/reportingConf.py @@ -0,0 +1,28 @@ +#!/usr/bin/python +# +# This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Reporting: Declaration of the variables +# +# **************************************************** +installers = ["apex", "compass", "fuel", "joid"] + +versions = ["master"] + +# get data in the past 7 days +PERIOD = 7 + +# get the lastest 4 test results to determinate the success criteria +LASTEST_TESTS = 4 + +REPORTING_PATH = "." + +URL_BASE = 'http://testresults.opnfv.org/test/api/v1/results' + +# LOG_LEVEL = "ERROR" +LOG_LEVEL = "INFO" +LOG_FILE = REPORTING_PATH + "/reporting.log" diff --git a/utils/test/reporting/yardstick/reportingUtils.py b/utils/test/reporting/yardstick/reportingUtils.py new file mode 100644 index 000000000..06bcd4926 --- /dev/null +++ b/utils/test/reporting/yardstick/reportingUtils.py @@ -0,0 +1,68 @@ +#!/usr/bin/python +# +# This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +from urllib2 import Request, urlopen, URLError +import logging +import json +import reportingConf as conf + + +def getLogger(module): + logFormatter = logging.Formatter("%(asctime)s [" + + module + + "] [%(levelname)-5.5s] %(message)s") + logger = logging.getLogger() + + fileHandler = logging.FileHandler("{0}/{1}".format('.', conf.LOG_FILE)) + fileHandler.setFormatter(logFormatter) + logger.addHandler(fileHandler) + + consoleHandler = logging.StreamHandler() + consoleHandler.setFormatter(logFormatter) + logger.addHandler(consoleHandler) + logger.setLevel(conf.LOG_LEVEL) + return logger + + +def getScenarioStatus(installer, version): + url = (conf.URL_BASE + "?case=" + "scenario_status" + + "&installer=" + installer + + "&version=" + version +"&period=" + str(conf.PERIOD)) + request = Request(url) + + try: + response = urlopen(request) + k = response.read() + response.close() + results = json.loads(k) + test_results = results['results'] + except URLError, e: + print 'Got an error code:', e + + scenario_results = {} + if test_results is not None: + for r in test_results: + if r['stop_date'] != 'None': + if not r['scenario'] in scenario_results.keys(): + scenario_results[r['scenario']] = [] + scenario_results[r['scenario']].append(r) + + for k,v in scenario_results.items(): + scenario_results[k] = v[:conf.LASTEST_TESTS] + + return scenario_results + + +def _test(): + status = getScenarioStatus("compass", "master") + print "status:++++++++++++++++++++++++" + print json.dumps(status,indent=4) + + +if __name__ == '__main__': # pragma: no cover + _test() diff --git a/utils/test/reporting/yardstick/scenarioResult.py b/utils/test/reporting/yardstick/scenarioResult.py new file mode 100644 index 000000000..743346adc --- /dev/null +++ b/utils/test/reporting/yardstick/scenarioResult.py @@ -0,0 +1,20 @@ +#!/usr/bin/python +# +# This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# + + +class ScenarioResult(object): + def __init__(self, status, score=0): + self.status = status + self.score = score + + def getStatus(self): + return self.status + + def getScore(self): + return self.score diff --git a/utils/test/reporting/yardstick/template/index-status-tmpl.html b/utils/test/reporting/yardstick/template/index-status-tmpl.html new file mode 100644 index 000000000..ff1a619f1 --- /dev/null +++ b/utils/test/reporting/yardstick/template/index-status-tmpl.html @@ -0,0 +1,66 @@ + <html> + <head> + <meta charset="utf-8"> + <!-- Bootstrap core CSS --> + <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet"> + <link href="default.css" rel="stylesheet"> + <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> + <script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script> + <script type="text/javascript"> + $(document).ready(function (){ + $(".btn-more").click(function() { + $(this).hide(); + $(this).parent().find(".panel-default").show(); + }); + }) + </script> + </head> + <body> + <div class="container"> + <div class="masthead"> + <h3 class="text-muted">Yardstick status page ({{version}})</h3> + <nav> + <ul class="nav nav-justified"> + <li class="active"><a href="index.html">Home</a></li> + <li><a href="index-status-apex.html">Apex</a></li> + <li><a href="index-status-compass.html">Compass</a></li> + <li><a href="index-status-fuel.html">Fuel</a></li> + <li><a href="index-status-joid.html">Joid</a></li> + </ul> + </nav> + </div> +<div class="row"> + <div class="col-md-1"></div> + <div class="col-md-10"> + <div class="page-header"> + <h2>{{installer}}</h2> + </div> + + <div class="scenario-overview"> + <div class="panel-heading"><h4><b>List of last scenarios ({{version}}) run over the last {{period}} days </b></h4></div> + <table class="table"> + <tr> + <th width="60%">Scenario</th> + <th width="20%">Status</th> + <th width="20%">Score</th> + </tr> + {% for scenario,result in scenario_results.iteritems() -%} + <tr class="tr-ok"> + <td>{{scenario}}</td> + <td> + {%if scenario_results[scenario].getStatus() is sameas "OK" -%} + <img src="../../img/icon-ok.png"> + {%- else -%} + <img src="../../img/icon-nok.png"> + {%- endif %} + </td> + <td>{{scenario_results[scenario].getScore()}}</td> + </tr> + {%- endfor %} + </table> + </div> + + + </div> + <div class="col-md-1"></div> +</div> |