Merge "Disable CI Email Notifications for Gerrit Reviews"
authorRyota Mibu <r-mibu@cq.jp.nec.com>
Thu, 19 May 2016 10:23:30 +0000 (10:23 +0000)
committerGerrit Code Review <gerrit@172.30.200.206>
Thu, 19 May 2016 10:23:30 +0000 (10:23 +0000)
30 files changed:
jjb/apex/apex.yml
jjb/armband/armband-ci-jobs.yml
jjb/armband/armband-deploy.sh
jjb/armband/armband-download-artifact.sh
jjb/fuel/fuel-ci-jobs.yml
jjb/fuel/fuel-deploy.sh
jjb/functest/functest-ci-jobs.yml
jjb/genesis/genesis-foreman.yml [deleted file]
jjb/genesis/genesis-fuel-att.yml [deleted file]
jjb/genesis/genesis-fuel-dell.yml [deleted file]
jjb/genesis/genesis-fuel.yml [deleted file]
jjb/genesis/genesis-juju.yml [deleted file]
jjb/joid/joid-deploy.sh
jjb/netready/netready.yml [moved from jjb/oscar/oscar.yml with 69% similarity]
jjb/opnfv/opnfv-docker.sh
jjb/opnfv/opnfv-docker.yml
jjb/yardstick/yardstick-ci-jobs.yml
utils/test/result_collection_api/README.md [new file with mode: 0644]
utils/test/result_collection_api/common/constants.py
utils/test/result_collection_api/resources/handlers.py
utils/test/result_collection_api/resources/models.py
utils/test/result_collection_api/resources/pod_models.py [new file with mode: 0644]
utils/test/result_collection_api/run_test.sh [new file with mode: 0755]
utils/test/result_collection_api/tests/__init__.py [new file with mode: 0644]
utils/test/result_collection_api/tests/unit/__init__.py [new file with mode: 0644]
utils/test/result_collection_api/tests/unit/fake_pymongo.py [new file with mode: 0644]
utils/test/result_collection_api/tests/unit/test_base.py [new file with mode: 0644]
utils/test/result_collection_api/tests/unit/test_fake_pymongo.py [new file with mode: 0644]
utils/test/result_collection_api/tests/unit/test_pod.py [new file with mode: 0644]
utils/test/result_collection_api/tests/unit/test_version.py [new file with mode: 0644]

index 282ae7b..ce673b2 100644 (file)
     properties:
         - build-blocker:
             use-build-blocker: true
+            block-level: 'NODE'
             blocking-jobs:
                 - 'apex-daily.*{stream1}'
                 - 'apex-deploy.*{stream1}'
                 - 'apex-build.*{stream1}'
                 - 'apex-runner.*{stream1}'
                 - 'apex-verify-{stream1}'
+        - throttle:
+            max-per-node: 1
 
     builders:
         - 'apex-build'
             block: true
             same-node: true
 #        - trigger-builds:
-#          - project: 'functest-apex-{slave}-suite-{stream1}'
+#          - project: 'functest-apex-{verify-slave}-suite-{stream1}'
 #            predefined-parameters: |
 #              DEPLOY_SCENARIO=os-nosdn-nofeature-ha
 #              FUNCTEST_SUITE_NAME=vping_userdata
 #            block: true
+#            same-node: true
         - trigger-builds:
           - project: 'apex-deploy-virtual-os-odl_l2-nofeature-ha-{stream1}'
             predefined-parameters: |
     # Required Variables:
     #     stream:    branch with - in place of / (eg. stable)
     #     branch:    branch (eg. stable)
-    node: '{slave}'
+    node: '{daily-slave}'
 
     disabled: false
 
     properties:
         - build-blocker:
             use-build-blocker: true
+            block-level: 'NODE'
             blocking-jobs:
                 - 'apex-deploy.*{stream}'
+        - throttle:
+            max-per-node: 1
 
     builders:
         - 'apex-build'
               BUILD_DIRECTORY=apex-build-{stream}/build
               OPNFV_CLEAN=yes
             git-revision: false
+            same-node: true
             block: true
         - 'apex-upload-artifact'
 
     properties:
         - build-blocker:
             use-build-blocker: true
+            block-level: 'NODE'
             blocking-jobs:
                 - 'apex-deploy.*{stream}'
+        - throttle:
+            max-per-node: 1
 
     builders:
         - 'apex-deploy-virtual'
     properties:
         - build-blocker:
             use-build-blocker: true
+            block-level: 'NODE'
             blocking-jobs:
                 - 'apex-verify.*{stream1}'
                 - 'apex-deploy.*{stream1}'
           - project: 'apex-build-{stream1}'
             git-revision: true
             current-parameters: true
+            same-node: true
             block: true
         - trigger-builds:
           - project: 'apex-deploy-virtual-nosdn-nofeature-ha-{stream1}'
index 5ae8a04..bbf7c40 100644 (file)
 - trigger:
     name: 'armband-os-odl_l2-nofeature-ha-arm-pod1-brahmaputra-trigger'
     triggers:
-        - timed: '0 4 * * *'
+        - timed: '0 20 * * *'
index 97430c1..8b0af31 100755 (executable)
@@ -39,10 +39,10 @@ POD_NAME=${NODE_NAME/*-}
 if [[ ! $LAB_NAME =~ (arm|enea) ]]; then
     echo "Unsupported/unidentified lab $LAB_NAME. Cannot continue!"
     exit 1
-else
-    echo "Using configuration for $LAB_NAME"
 fi
 
+echo "Using configuration for $LAB_NAME"
+
 # create TMPDIR if it doesn't exist
 mkdir -p $TMPDIR
 
@@ -52,8 +52,11 @@ if [[ $LAB_CONFIG_URL =~ ^git:// ]]; then
     LAB_CONFIG_URL=file://${WORKSPACE}/lab-config
 fi
 
+# releng wants us to use nothing else but opnfv.iso for now. We comply.
+ISO_FILE=$WORKSPACE/opnfv.iso
+
 # construct the command
-DEPLOY_COMMAND="$WORKSPACE/ci/deploy.sh -b ${LAB_CONFIG_URL} -l $LAB_NAME -p $POD_NAME -s $DEPLOY_SCENARIO -i file://$WORKSPACE/opnfv.iso -H -B $BRIDGE -S $TMPDIR"
+DEPLOY_COMMAND="$WORKSPACE/ci/deploy.sh -l $LAB_NAME -p $POD_NAME -b ${LAB_CONFIG_URL} -s $DEPLOY_SCENARIO -i file://${ISO_FILE} -H -B $BRIDGE -S $TMPDIR"
 
 # log info to console
 echo "Deployment parameters"
@@ -72,9 +75,6 @@ echo "Issuing command"
 echo "$DEPLOY_COMMAND"
 echo
 
-# FIXME
-export TARGET_LAB=${LAB_NAME}
-export TARGET_POD=${POD_NAME}
 $DEPLOY_COMMAND
 
 echo
index 15ad67d..18b55d7 100755 (executable)
@@ -13,35 +13,33 @@ set -o pipefail
 if [[ "$JOB_NAME" =~ "merge" ]]; then
     echo "Downloading http://$GS_URL/opnfv-gerrit-$GERRIT_CHANGE_NUMBER.properties"
     # get the properties file for the Armband Fuel ISO built for a merged change
-    curl -s -o $WORKSPACE/latest.properties http://$GS_URL/opnfv-gerrit-$GERRIT_CHANGE_NUMBER.properties
+    curl -f -s -o $WORKSPACE/latest.properties http://$GS_URL/opnfv-gerrit-$GERRIT_CHANGE_NUMBER.properties
 else
     # get the latest.properties file in order to get info regarding latest artifact
     echo "Downloading http://$GS_URL/latest.properties"
-    curl -s -o $WORKSPACE/latest.properties http://$GS_URL/latest.properties
+    curl -f -s -o $WORKSPACE/latest.properties http://$GS_URL/latest.properties
 fi
 
-# check if we got the file
-# FIXME: the file is created even if it didn't exist on the host
-#        We should check that the contents are sane
-[[ -f latest.properties ]] || exit 1
-
-# source the file so we get artifact metadata
+# source the file so we get artifact metadata, it will exit if it doesn't exist
 source latest.properties
 
 # echo the info about artifact that is used during the deployment
 OPNFV_ARTIFACT=${OPNFV_ARTIFACT_URL/*\/}
 echo "Using $OPNFV_ARTIFACT for deployment"
 
+# Releng doesn't want us to use anything but opnfv.iso for now. We comply.
+ISO_FILE=${WORKSPACE}/opnfv.iso
+
 # using ISOs for verify & merge jobs from local storage will be enabled later
 if [[ ! "$JOB_NAME" =~ (verify|merge) ]]; then
     # check if we already have the ISO to avoid redownload
     ISOSTORE="/iso_mount/opnfv_ci/${GIT_BRANCH##*/}"
     if [[ -f "$ISOSTORE/$OPNFV_ARTIFACT" ]]; then
         echo "ISO exists locally. Skipping the download and using the file from ISO store"
-        ln -s $ISOSTORE/$OPNFV_ARTIFACT $WORKSPACE/opnfv.iso
+        ln -s $ISOSTORE/$OPNFV_ARTIFACT ${ISO_FILE}
         echo "--------------------------------------------------------"
         echo
-        ls -al $WORKSPACE/opnfv.iso
+        ls -al ${ISO_FILE}
         echo
         echo "--------------------------------------------------------"
         echo "Done!"
@@ -49,18 +47,22 @@ if [[ ! "$JOB_NAME" =~ (verify|merge) ]]; then
     fi
 fi
 
+# Use gsutils if available
+if $(which gsutil &>/dev/null); then
+    DOWNLOAD_URL="gs://$OPNFV_ARTIFACT_URL"
+    CMD="gsutil cp ${DOWNLOAD_URL} ${ISO_FILE}"
+else
+    # download image
+    # -f returns error if the file was not found or on server error
+    DOWNLOAD_URL="http://$OPNFV_ARTIFACT_URL"
+    CMD="curl -f -s -o ${ISO_FILE} ${DOWNLOAD_URL}"
+fi
+
 # log info to console
-echo "Downloading the $INSTALLER_TYPE artifact using URL http://$OPNFV_ARTIFACT_URL"
+echo "Downloading the $INSTALLER_TYPE artifact using URL $DOWNLOAD_URL"
 echo "This could take some time..."
 echo "--------------------------------------------------------"
-echo
-
-# download the file
-curl -s -o $WORKSPACE/opnfv.iso http://$OPNFV_ARTIFACT_URL
-
-# The file is always created, check that it is in fact an ISO image
-[[ $(file $WORKSPACE/opnfv.iso) =~ ISO ]]
-
-echo
+echo "$CMD"
+$CMD
 echo "--------------------------------------------------------"
 echo "Done!"
index 77b711e..acfceda 100644 (file)
@@ -43,6 +43,8 @@
             <<: *master
         - virtual:
             <<: *master
+        - zte-pod1:
+            <<: *master
 #--------------------------------
 #       scenarios
 #--------------------------------
     name: 'fuel-os-nosdn-kvm-noha-ericsson-pod2-brahmaputra-trigger'
     triggers:
         - timed: ''
+
+#-----------------------------------------------
+# ZTE POD1 Triggers running against master branch
+#-----------------------------------------------
+- trigger:
+    name: 'fuel-os-nosdn-nofeature-ha-zte-pod1-master-trigger'
+    triggers:
+        - timed: ''
+- trigger:
+    name: 'fuel-os-odl_l2-nofeature-ha-zte-pod1-master-trigger'
+    triggers:
+        - timed: '0 12 * * *'
+- trigger:
+    name: 'fuel-os-odl_l3-nofeature-ha-zte-pod1-master-trigger'
+    triggers:
+        - timed: ''
+- trigger:
+    name: 'fuel-os-onos-nofeature-ha-zte-pod1-master-trigger'
+    triggers:
+        - timed: ''
+- trigger:
+    name: 'fuel-os-odl_l2-bgpvpn-ha-zte-pod1-master-trigger'
+    triggers:
+        - timed: ''
+- trigger:
+    name: 'fuel-os-odl_l2-sfc-ha-zte-pod1-master-trigger'
+    triggers:
+        - timed: ''
+- trigger:
+    name: 'fuel-os-nosdn-kvm-ha-zte-pod1-master-trigger'
+    triggers:
+        - timed: ''
+- trigger:
+    name: 'fuel-os-nosdn-ovs-ha-zte-pod1-master-trigger'
+    triggers:
+        - timed: ''
 #-----------------------------------------------
 # Triggers for other PODs
 #-----------------------------------------------
index bab6151..ceccc54 100755 (executable)
@@ -43,8 +43,8 @@ if [[ "$NODE_NAME" =~ "virtual" ]]; then
     POD_NAME="virtual_kvm"
 fi
 
-# we currently support ericsson, intel, and lf labs
-if [[ ! "$LAB_NAME" =~ (ericsson|intel|lf) ]]; then
+# we currently support ericsson, intel, lf and zte labs
+if [[ ! "$LAB_NAME" =~ (ericsson|intel|lf|zte) ]]; then
     echo "Unsupported/unidentified lab $LAB_NAME. Cannot continue!"
     exit 1
 else
index 6cfcfdc..cd3f11e 100644 (file)
     builders:
         - 'functest-cleanup'
         - 'set-functest-env'
-        - 'functest-all'
+        - 'functest-daily'
         - 'functest-store-results'
 
 - builder:
     name: functest-suite-builder
+    builders:
+        - 'functest-cleanup'
+        - 'set-functest-env'
+        - 'functest-suite'
+
+
+- builder:
+    name: functest-suite
     builders:
         - shell: |
             #!/bin/bash
             container_id=$(docker ps -a | grep opnfv/functest | awk '{print $1}' | head -1)
             docker exec $container_id $cmd
 
+
 - builder:
-    name: functest-all
+    name: functest-daily
     builders:
         - shell: |
             #!/bin/bash
diff --git a/jjb/genesis/genesis-foreman.yml b/jjb/genesis/genesis-foreman.yml
deleted file mode 100644 (file)
index 808dd3b..0000000
+++ /dev/null
@@ -1,665 +0,0 @@
-########################
-# Job configuration for genesis/foreman
-########################
-- project:
-
-    name: genesis-foreman
-
-    project: 'genesis'
-
-    installer: 'foreman'
-
-#    jobs:
-#        - 'genesis-foreman-verify-build-{stream}'
-#        - 'genesis-foreman-merge-{stream}'
-#        - 'genesis-foreman-daily-{stream}'
-#        - 'genesis-foreman-build-{stream}'
-#        - 'genesis-foreman-deploy-{stream}'
-#        - 'genesis-foreman-lab-reconfig-{stream}'
-#        - 'genesis-foreman-deploy-runner-{stream}'
-#        - 'genesis-foreman-verify-deploy-virtual-{stream}'
-
-    # stream:    branch with - in place of / (eg. stable-arno)
-    # branch:    branch (eg. stable/arno)
-    stream:
-        - master:
-            branch: 'master'
-            gs-pathname: ''
-            disabled: true
-        - stable-arno:
-            branch: 'stable/arno'
-            gs-pathname: '/arno'
-            disabled: true
-########################
-# job templates
-########################
-
-- job-template:
-    name: 'genesis-foreman-verify-build-{stream}'
-
-    disabled: true
-
-    node: ericsson-build
-
-    concurrent: true
-
-    properties:
-        - throttle:
-            enabled: true
-            max-total: 1
-
-    parameters:
-        - project-parameter:
-            project: '{project}'
-        - gerrit-parameter:
-            branch: '{branch}'
-        - foreman-parameter:
-            installer: '{installer}'
-            gs-pathname: '{gs-pathname}'
-    scm:
-        - gerrit-trigger-scm:
-            credentials-id: '{ssh-credentials}'
-            refspec: '$GERRIT_REFSPEC'
-            choosing-strategy: 'gerrit'
-
-    triggers:
-        - gerrit:
-            trigger-on:
-                - patchset-created-event:
-                    exclude-drafts: 'false'
-                    exclude-trivial-rebase: 'false'
-                    exclude-no-code-change: 'false'
-                - draft-published-event
-                - comment-added-contains-event:
-                    comment-contains-value: 'recheck'
-                - comment-added-contains-event:
-                    comment-contains-value: 'reverify'
-            projects:
-              - project-compare-type: 'ANT'
-                project-pattern: 'genesis'
-                branches:
-                  - branch-compare-type: 'ANT'
-                    branch-pattern: '**/{branch}'
-                file-paths:
-                  - compare-type: ANT
-                    pattern: 'common/ci/**'
-                  - compare-type: ANT
-                    pattern: 'common/manifests/**'
-                  - compare-type: ANT
-                    pattern: 'common/puppet-opnfv/**'
-                  - compare-type: ANT
-                    pattern: 'common/tools/**'
-                  - compare-type: ANT
-                    pattern: '{installer}/build/**'
-                  - compare-type: ANT
-                    pattern: '{installer}/ci/**'
-                  - compare-type: ANT
-                    pattern: '{installer}/include/**'
-                forbidden-file-paths:
-                  - compare-type: ANT
-                    pattern: 'common/docs/**'
-                  - compare-type: ANT
-                    pattern: '{installer}/docs/**'
-
-    builders:
-        - 'foreman-build'
-        - 'foreman-workspace-cleanup'
-
-- job-template:
-    name: 'genesis-foreman-merge-{stream}'
-
-    node: ericsson-build
-
-    disabled: true
-
-    concurrent: true
-
-    properties:
-        - throttle:
-            enabled: true
-            max-total: 2
-
-    parameters:
-        - project-parameter:
-            project: '{project}'
-        - gerrit-parameter:
-            branch: '{branch}'
-        - foreman-parameter:
-            installer: '{installer}'
-            gs-pathname: ''
-    scm:
-        - gerrit-trigger-scm:
-            credentials-id: '{ssh-credentials}'
-            refspec: ''
-            choosing-strategy: 'default'
-
-    triggers:
-        - gerrit:
-            trigger-on:
-                - change-merged-event
-                - comment-added-contains-event:
-                    comment-contains-value: 'remerge'
-            projects:
-              - project-compare-type: 'ANT'
-                project-pattern: 'genesis'
-                branches:
-                  - branch-compare-type: 'ANT'
-                    branch-pattern: '**/{branch}'
-                file-paths:
-                  - compare-type: ANT
-                    pattern: 'common/ci/**'
-                  - compare-type: ANT
-                    pattern: 'common/manifests/**'
-                  - compare-type: ANT
-                    pattern: 'common/puppet-opnfv/**'
-                  - compare-type: ANT
-                    pattern: 'common/tools/**'
-                  - compare-type: ANT
-                    pattern: '{installer}/build/**'
-                  - compare-type: ANT
-                    pattern: '{installer}/ci/**'
-                  - compare-type: ANT
-                    pattern: '{installer}/include/**'
-                forbidden-file-paths:
-                  - compare-type: ANT
-                    pattern: 'common/docs/**'
-                  - compare-type: ANT
-                    pattern: '{installer}/docs/**'
-
-    builders:
-        - 'foreman-build'
-        - 'foreman-workspace-cleanup'
-
-- job-template:
-    name: 'genesis-foreman-daily-{stream}'
-
-    node: ericsson-build
-
-    disabled: true
-
-    triggers:
-        - 'foreman-{stream}'
-
-    parameters:
-        - project-parameter:
-            project: '{project}'
-        - foreman-parameter:
-            installer: '{installer}'
-            gs-pathname: '{gs-pathname}'
-
-    scm:
-        - git-scm:
-            credentials-id: '{ssh-credentials}'
-            refspec: ''
-            branch: '{branch}'
-
-    builders:
-        - trigger-builds:
-          - project: 'genesis-foreman-build-{stream}'
-            git-revision: true
-            block: true
-        - trigger-builds:
-          - project: 'genesis-foreman-lab-reconfig-{stream}'
-            git-revision: true
-            block: true
-        - trigger-builds:
-          - project: 'genesis-foreman-deploy-{stream}'
-            git-revision: true
-            block: true
-        - trigger-builds:
-          - project: 'functest-foreman-{stream}'
-            block: true
-            block-thresholds:
-                build-step-failure-threshold: 'never'
-                failure-threshold: 'never'
-                unstable-threshold: 'FAILURE'
-        # - trigger-builds:
-          # - project: 'yardstick-foreman-{stream}'
-            # block: true
-            # block-thresholds:
-                # build-step-failure-threshold: 'never'
-                # failure-threshold: 'never'
-                # unstable-threshold: 'FAILURE'
-
-    publishers:
-        - trigger-parameterized-builds:
-            - project: 'genesis-fuel-daily-{stream}'
-              trigger-with-no-params: true
-
-- job-template:
-    name: 'genesis-foreman-deploy-runner-{stream}'
-
-    disabled: true
-
-    parameters:
-        - project-parameter:
-            project: '{project}'
-        - foreman-parameter:
-            installer: '{installer}'
-            gs-pathname: '{gs-pathname}'
-        - string:
-            name: GIT_BASE
-            default: ssh://gerrit.opnfv.org:29418/$PROJECT
-            description: "Used for overriding the GIT URL coming from parameters macro."
-
-    scm:
-        - git-scm:
-            credentials-id: '{ssh-credentials}'
-            refspec: ''
-            branch: '{branch}'
-
-    properties:
-        - build-blocker:
-            use-build-blocker: true
-            blocking-jobs:
-                - "genesis-fuel-daily.*"
-                - "genesis-fuel-deploy-runner-{stream}"
-                - "genesis-foreman-daily.*"
-
-    builders:
-        - 'foreman-lab-reconfig'
-        - trigger-builds:
-          - project: 'genesis-foreman-deploy-{stream}'
-            git-revision: true
-            block: true
-
-- job-template:
-    name: 'genesis-foreman-build-{stream}'
-
-    node: ericsson-build
-
-    disabled: true
-
-    parameters:
-        - project-parameter:
-            project: '{project}'
-        - foreman-parameter:
-            installer: '{installer}'
-            gs-pathname: '{gs-pathname}'
-    scm:
-        - git-scm:
-            credentials-id: '{ssh-credentials}'
-            refspec: ''
-            branch: '{branch}'
-
-    builders:
-        - 'foreman-build'
-        - 'foreman-upload-artifact'
-        - 'foreman-workspace-cleanup'
-
-- job-template:
-    name: 'genesis-foreman-deploy-{stream}'
-
-    disabled: true
-
-    node: opnfv-jump-2
-
-    parameters:
-        - project-parameter:
-            project: '{project}'
-        - foreman-parameter:
-            installer: '{installer}'
-            gs-pathname: '{gs-pathname}'
-        - string:
-            name: GIT_BASE
-            default: ssh://gerrit.opnfv.org:29418/$PROJECT
-            description: "Used for overriding the GIT URL coming from parameters macro."
-
-    scm:
-        - git-scm:
-            credentials-id: '{ssh-credentials}'
-            refspec: ''
-            branch: '{branch}'
-
-    builders:
-        - 'foreman-deploy'
-
-- job-template:
-    name: 'genesis-foreman-lab-reconfig-{stream}'
-
-    disabled: true
-
-    parameters:
-        - project-parameter:
-            project: '{project}'
-        - foreman-parameter:
-            installer: '{installer}'
-            gs-pathname: '{gs-pathname}'
-        - string:
-            name: GIT_BASE
-            default: ssh://gerrit.opnfv.org:29418/$PROJECT
-            description: "Used for overriding the GIT URL coming from parameters macro."
-
-    scm:
-        - git-scm:
-            credentials-id: '{ssh-credentials}'
-            refspec: ''
-            branch: '{branch}'
-
-    properties:
-        - build-blocker:
-            use-build-blocker: true
-            blocking-jobs:
-                - "genesis-fuel-daily.*"
-
-    builders:
-        - 'foreman-lab-reconfig'
-
-- job-template:
-    name: 'genesis-foreman-verify-deploy-virtual-{stream}'
-
-    node: opnfv-jump-1
-
-    disabled: true
-
-    parameters:
-        - project-parameter:
-            project: '{project}'
-        - gerrit-parameter:
-            branch: '{branch}'
-        - foreman-parameter:
-            installer: '{installer}'
-            gs-pathname: '{gs-pathname}'
-        - string:
-            name: GIT_BASE
-            default: ssh://gerrit.opnfv.org:29418/$PROJECT
-            description: "Used for overriding the GIT URL coming from parameters macro."
-    scm:
-        - gerrit-trigger-scm:
-            credentials-id: '{ssh-credentials}'
-            refspec: '$GERRIT_REFSPEC'
-            choosing-strategy: 'gerrit'
-
-    triggers:
-        - gerrit:
-            trigger-on:
-                - patchset-created-event:
-                    exclude-drafts: 'false'
-                    exclude-trivial-rebase: 'false'
-                    exclude-no-code-change: 'false'
-                - draft-published-event
-                - comment-added-contains-event:
-                    comment-contains-value: 'recheck'
-                - comment-added-contains-event:
-                    comment-contains-value: 'reverify'
-            projects:
-              - project-compare-type: 'ANT'
-                project-pattern: 'genesis'
-                branches:
-                  - branch-compare-type: 'ANT'
-                    branch-pattern: '**/{branch}'
-                file-paths:
-                  - compare-type: ANT
-                    pattern: 'common/ci/**'
-                  - compare-type: ANT
-                    pattern: 'common/manifests/**'
-                  - compare-type: ANT
-                    pattern: 'common/puppet-opnfv/**'
-                  - compare-type: ANT
-                    pattern: 'common/tools/**'
-                  - compare-type: ANT
-                    pattern: '{installer}/build/**'
-                  - compare-type: ANT
-                    pattern: '{installer}/ci/**'
-                  - compare-type: ANT
-                    pattern: '{installer}/include/**'
-                forbidden-file-paths:
-                  - compare-type: ANT
-                    pattern: 'common/docs/**'
-                  - compare-type: ANT
-                    pattern: '{installer}/docs/**'
-            dependency-jobs: 'genesis-foreman-verify-build-{stream}'
-
-    builders:
-        - 'foreman-deploy-virtual'
-
-########################
-# parameter macros
-########################
-- parameter:
-    name: foreman-parameter
-    parameters:
-        - string:
-            name: INSTALLER
-            default: '{installer}'
-            description: "Installer to use."
-        - string:
-            name: BUILD_DIRECTORY
-            default: $WORKSPACE/build_output
-            description: "Directory where the build artifact will be located upon the completion of the build."
-        - string:
-            name: CACHE_DIRECTORY
-            default: $HOME/opnfv/cache/genesis-$INSTALLER{gs-pathname}
-            description: "Directory where the cache to be used during the build is located."
-        - 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."
-        - string:
-            name: GS_URL
-            default: artifacts.opnfv.org/$PROJECT/$INSTALLER{gs-pathname}
-            description: "URL to Google Storage."
-
-########################
-# builder macros
-########################
-- builder:
-    name: 'foreman-lab-reconfig'
-    builders:
-        - shell: |
-            #!/bin/bash
-            set -o errexit
-            set -o nounset
-            set -o pipefail
-
-            # check to see if ucs login info file exists
-            if [ -e ~/.ssh/ucs_creds ];then
-              source ~/.ssh/ucs_creds
-            else
-              echo "Unable to find UCS credentials for LF lab reconfiguration...Exiting"
-              exit 1
-            fi
-
-            # clone releng
-            echo "Cloning releng repo..."
-            if ! GIT_SSL_NO_VERIFY=true git clone https://gerrit.opnfv.org/gerrit/releng; then
-              echo "Unable to clone releng repo...Exiting"
-              exit 1
-            fi
-
-            # log info to console
-            echo "Starting the lab reconfiguration for $INSTALLER..."
-            echo "--------------------------------------------------------"
-            echo
-
-            # create venv
-            $WORKSPACE/releng/utils/lab-reconfiguration/create_venv.sh
-
-            # disable nounset because 'activate' script contains unbound variable(s)
-            set +o nounset
-            # enter venv
-            source $WORKSPACE/releng/utils/lab-reconfiguration/venv/bin/activate
-            # set nounset back again
-            set -o nounset
-
-            # verify we are in venv
-            if [[ ! $(which python | grep venv) ]]; then
-              echo "Unable to activate venv...Exiting"
-              exit 1
-            fi
-
-            python $WORKSPACE/releng/utils/lab-reconfiguration/reconfigUcsNet.py -i $ucs_host -u $ucs_user -p $ucs_password -f $WORKSPACE/releng/utils/lab-reconfiguration/foreman.yaml
-
-            # while undergoing reboot
-            sleep 30
-
-            # check to see if slave is back up
-            ping_counter=0
-            ping_flag=0
-            while [ "$ping_counter" -lt 20 ]; do
-              if [[ $(ping -c 5 172.30.10.72) ]]; then
-                ping_flag=1
-                break
-              fi
-              ((ping_counter++))
-              sleep 10
-            done
-
-            if [ "$ping_flag" -eq 1 ]; then
-              echo "Slave is pingable, now wait 180 seconds for services to start"
-              sleep 180
-            else
-              echo "Slave did not come back up after reboot: please check opnfv-jump-2"
-              exit 1
-            fi
-
-            set +o nounset
-            deactivate
-
-            echo
-            echo "--------------------------------------------------------"
-            echo "Done!"
-
-- builder:
-    name: 'foreman-build'
-    builders:
-        - shell: |
-            #!/bin/bash
-            set -o errexit
-            set -o nounset
-            set -o pipefail
-
-            # log info to console
-            echo "Starting the build of $INSTALLER. This could take some time..."
-            echo "--------------------------------------------------------"
-            echo
-
-            # create the cache directory if it doesn't exist
-            [[ -d $CACHE_DIRECTORY ]] || mkdir -p $CACHE_DIRECTORY
-
-            # set OPNFV_ARTIFACT_VERSION
-            export OPNFV_ARTIFACT_VERSION=$(date -u +"%Y-%m-%d_%H-%M-%S")
-
-            # start the build
-            cd $WORKSPACE/$INSTALLER/ci
-            ./build.sh -v $OPNFV_ARTIFACT_VERSION -c file://$CACHE_DIRECTORY $BUILD_DIRECTORY
-
-            # list the contents of BUILD_OUTPUT directory
-            ls -al $BUILD_DIRECTORY
-
-            # save information regarding artifact into file
-            (
-                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_MD5SUM=$(md5sum $BUILD_DIRECTORY/OPNFV-CentOS-7-x86_64-$OPNFV_ARTIFACT_VERSION.iso | cut -d' ' -f1)"
-                echo "OPNFV_BUILD_URL=$BUILD_URL"
-            ) > $WORKSPACE/opnfv.properties
-
-            echo
-            echo "--------------------------------------------------------"
-            echo "Done!"
-
-- builder:
-    name: 'foreman-deploy'
-    builders:
-        - shell: |
-            #!/bin/bash
-            set -o errexit
-            set -o nounset
-            set -o pipefail
-
-            # log info to console
-            echo "Starting the deployment using $INSTALLER. This could take some time..."
-            echo "--------------------------------------------------------"
-            echo
-
-            # cleanup first
-            sudo $WORKSPACE/common/ci/clean.sh -base_config $WORKSPACE/$INSTALLER/ci/inventory/lf_pod2_ksgen_settings.yml
-
-            echo "Sleeping for 60 seconds between clean and deploy to allow nodes to power off"
-            sleep 60
-
-            # and then initiate deployment
-            sudo $WORKSPACE/$INSTALLER/ci/deploy.sh -base_config $WORKSPACE/$INSTALLER/ci/inventory/lf_pod2_ksgen_settings.yml
-
-            echo
-            echo "--------------------------------------------------------"
-            echo "Done!"
-
-- builder:
-    name: 'foreman-deploy-virtual'
-    builders:
-        - shell: |
-            #!/bin/bash
-            set -o errexit
-            set -o nounset
-            set -o pipefail
-
-            # log info to console
-            echo "Starting the virtual deployment using $INSTALLER. This could take some time..."
-            echo "--------------------------------------------------------"
-            echo
-
-            # cleanup baremetal first (in case baremetal was being used on pod2, remove when moved to isolated Virtual pod)
-            sudo $WORKSPACE/common/ci/clean.sh
-
-            # initiate virtual deployment
-            sudo $WORKSPACE/$INSTALLER/ci/deploy.sh -virtual
-
-            echo
-            echo "--------------------------------------------------------"
-            echo "Done!"
-
-- builder:
-    name: 'foreman-upload-artifact'
-    builders:
-        - shell: |
-            #!/bin/bash
-            set -o errexit
-            set -o nounset
-            set -o pipefail
-
-            # log info to console
-            echo "Uploading the $INSTALLER artifact. This could take some time..."
-            echo "--------------------------------------------------------"
-            echo
-
-            # source the opnfv.properties to get ARTIFACT_VERSION
-            source $WORKSPACE/opnfv.properties
-
-            # upload artifact and additional files to google storage
-            gsutil cp $BUILD_DIRECTORY/OPNFV-CentOS-7-x86_64-$OPNFV_ARTIFACT_VERSION.iso gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso > gsutil.iso.log 2>&1
-            gsutil cp $WORKSPACE/opnfv.properties gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.properties > gsutil.properties.log 2>&1
-            gsutil cp $WORKSPACE/opnfv.properties gs://$GS_URL/latest.properties > gsutil.latest.log 2>&1
-
-            echo
-            echo "--------------------------------------------------------"
-            echo "Done!"
-            echo "Artifact is available as http://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso"
-
-- builder:
-    name: 'foreman-workspace-cleanup'
-    builders:
-        - shell: |
-            #!/bin/bash
-            set -o errexit
-            set -o nounset
-            set -o pipefail
-
-            # delete everything that is in $WORKSPACE
-            /bin/rm -rf $WORKSPACE
-
-########################
-# trigger macros
-########################
-- trigger:
-    name: 'foreman-master'
-    triggers:
-        - timed: '0 11 * * *'
-
-- trigger:
-    name: 'foreman-stable-arno'
-    triggers:
-        - timed: '0 12 * * *'
diff --git a/jjb/genesis/genesis-fuel-att.yml b/jjb/genesis/genesis-fuel-att.yml
deleted file mode 100644 (file)
index 0202c22..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-# this is the job configuration for bgs
-- project:
-    name: genesis-att
-    installer:
-      - fuel
-#    jobs:
-#      - 'genesis-{installer}-daily-att-{stream}'
-
-    # stream:    branch with - in place of / (eg. stable-helium)
-    # branch:    branch (eg. stable/helium)
-    stream:
-        - master:
-            branch: 'master'
-
-    project: 'genesis'
-
-########################
-# job templates
-########################
-
-- job-template:
-    name: 'genesis-{installer}-daily-att-{stream}'
-
-    node: att-build
-
-    disabled: true
-
-    parameters:
-        - string:
-            name: BUILD_DIRECTORY
-            default: $WORKSPACE/build_output
-            description: "Directory where the build artifact will be located upon the completion of the build."
-        - string:
-            name: GS_URL
-            default: 'artifacts.opnfv.org/genesis/{installer}'
-            description: "URL to Google Storage."
-        - string:
-            name: INSTALLER
-            default: '{installer}'
-            description: "Installer to use."
-        - string:
-            name: GIT_BASE
-            default: https://gerrit.opnfv.org/gerrit/genesis
-        - string:
-            name: GERRIT_BRANCH
-            default: origin/master
-            description: "Branch to build, deploy and test."
-        - string:
-            name: GERRIT_REFSPEC
-            default: refs/heads/master
-            description: "Refspec to retrieve."
-
-    scm:
-        - git:
-            skip-tag: true
-            url: $GIT_BASE
-            branches:
-                - $GERRIT_BRANCH
-            refspec: $GERRIT_REFSPEC
-
-    triggers:
-        - pollscm:
-            cron: '@midnight'
-
-    builders:
-      - '{installer}-daily-master-att'
-
-########################
-# builder macros
-########################
-
-- builder:
-    name: fuel-daily-master-att
-    builders:
-      - shell: |
-          #!/bin/bash
-          set -o errexit
-          set -o nounset
-          set -o pipefail
-          set -x
-
-          # set/create the cache location
-          OPNFV_FUEL_CACHE="$(dirname $WORKSPACE)/opnfv_fuel_cache"
-          [[ -d $OPNFV_FUEL_CACHE ]] || mkdir -p $OPNFV_FUEL_CACHE
-
-          # do the build
-          cd $WORKSPACE/fuel/ci
-          ./build.sh -f t -v $BUILD_ID -c file://$OPNFV_FUEL_CACHE $BUILD_DIRECTORY
diff --git a/jjb/genesis/genesis-fuel-dell.yml b/jjb/genesis/genesis-fuel-dell.yml
deleted file mode 100644 (file)
index 4818b5c..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-# this is the job configuration for bgs
-- project:
-    name: genesis-dell
-    installer:
-      - fuel
-#    jobs:
-#      - 'genesis-{installer}-daily-dell-{stream}'
-
-    # stream:    branch with - in place of / (eg. stable-helium)
-    # branch:    branch (eg. stable/helium)
-    stream:
-        - master:
-            branch: 'master'
-
-    project: 'genesis'
-
-########################
-# job templates
-########################
-
-- job-template:
-    name: 'genesis-{installer}-daily-dell-{stream}'
-
-    node: dell-build
-
-    disabled: true
-
-    parameters:
-        - string:
-            name: BUILD_DIRECTORY
-            default: $WORKSPACE/build_output
-            description: "Directory where the build artifact will be located upon the completion of the build."
-        - string:
-            name: GS_URL
-            default: 'artifacts.opnfv.org/genesis/{installer}'
-            description: "URL to Google Storage."
-        - string:
-            name: INSTALLER
-            default: '{installer}'
-            description: "Installer to use."
-        - string:
-            name: GIT_BASE
-            default: https://gerrit.opnfv.org/gerrit/genesis
-        - string:
-            name: GERRIT_BRANCH
-            default: origin/master
-            description: "Branch to build, deploy and test."
-        - string:
-            name: GERRIT_REFSPEC
-            default: refs/heads/master
-            description: "Refspec to retrieve."
-
-    scm:
-        - git:
-            skip-tag: true
-            url: $GIT_BASE
-            branches:
-                - $GERRIT_BRANCH
-            refspec: $GERRIT_REFSPEC
-
-    triggers:
-        - pollscm:
-            cron: '@midnight'
-
-    builders:
-      - '{installer}-daily-master-dell'
-
-########################
-# builder macros
-########################
-
-- builder:
-      name: fuel-daily-master-dell
-      builders:
-        - shell: |
-            #!/bin/bash
-            set -o errexit
-            set -o nounset
-            set -o pipefail
-            set -x
-
-            # set/create the cache location
-            OPNFV_FUEL_CACHE="$(dirname $WORKSPACE)/opnfv_fuel_cache"
-            [[ -d $OPNFV_FUEL_CACHE ]] || mkdir -p $OPNFV_FUEL_CACHE
-
-            # do the build
-            cd $WORKSPACE/fuel/ci
-            ./build.sh -f t -v $BUILD_ID -c file://$OPNFV_FUEL_CACHE $BUILD_DIRECTORY
diff --git a/jjb/genesis/genesis-fuel.yml b/jjb/genesis/genesis-fuel.yml
deleted file mode 100644 (file)
index cc134fb..0000000
+++ /dev/null
@@ -1,691 +0,0 @@
-########################
-# Job configuration for genesis/fuel
-########################
-- project:
-
-    name: genesis-fuel
-
-    project: 'genesis'
-
-    installer: 'fuel'
-
-#    jobs:
-#        - 'genesis-fuel-verify-build-{stream}'
-#        - 'genesis-fuel-merge-{stream}'
-#        - 'genesis-fuel-daily-{stream}'
-#        - 'genesis-fuel-build-{stream}'
-#        - 'genesis-fuel-deploy-{stream}'
-#        - 'genesis-fuel-deploy-runner-{stream}'
-#        - 'genesis-fuel-lab-reconfig-{stream}'
-#        - 'genesis-fuel-verify-deploy-virtual-{stream}'
-
-    # stream:    branch with - in place of / (eg. stable-arno)
-    # branch:    branch (eg. stable/arno)
-    stream:
-        - master:
-            branch: 'master'
-            gs-pathname: ''
-            disabled: true
-        - stable-arno:
-            branch: 'stable/arno'
-            gs-pathname: '/arno'
-            disabled: true
-
-########################
-# job templates
-########################
-
-- job-template:
-    name: 'genesis-fuel-verify-build-{stream}'
-
-    node: ericsson-build
-
-    disabled: true
-
-    concurrent: true
-
-    properties:
-        - throttle:
-            enabled: true
-            max-total: 3
-
-    parameters:
-        - project-parameter:
-            project: '{project}'
-        - gerrit-parameter:
-            branch: '{branch}'
-        - genesis-fuel-parameter:
-            installer: '{installer}'
-            gs-pathname: '{gs-pathname}'
-
-    scm:
-        - gerrit-trigger-scm:
-            credentials-id: '{ssh-credentials}'
-            refspec: '$GERRIT_REFSPEC'
-            choosing-strategy: 'gerrit'
-
-    triggers:
-        - gerrit:
-            trigger-on:
-                - patchset-created-event:
-                    exclude-drafts: 'false'
-                    exclude-trivial-rebase: 'false'
-                    exclude-no-code-change: 'false'
-                - draft-published-event
-                - comment-added-contains-event:
-                    comment-contains-value: 'recheck'
-                - comment-added-contains-event:
-                    comment-contains-value: 'reverify'
-            projects:
-              - project-compare-type: 'ANT'
-                project-pattern: 'genesis'
-                branches:
-                  - branch-compare-type: 'ANT'
-                    branch-pattern: '**/{branch}'
-                file-paths:
-                  - compare-type: ANT
-                    pattern: 'common/ci/**'
-                  - compare-type: ANT
-                    pattern: 'common/manifests/**'
-                  - compare-type: ANT
-                    pattern: 'common/puppet-opnfv/**'
-                  - compare-type: ANT
-                    pattern: 'common/tools/**'
-                  - compare-type: ANT
-                    pattern: '{installer}/build/**'
-                  - compare-type: ANT
-                    pattern: '{installer}/ci/**'
-                  - compare-type: ANT
-                    pattern: '{installer}/deploy/**'
-                  - compare-type: ANT
-                    pattern: '{installer}/include/**'
-                  - compare-type: ANT
-                    pattern: '{installer}/prototypes/**'
-                forbidden-file-paths:
-                  - compare-type: ANT
-                    pattern: 'common/docs/**'
-                  - compare-type: ANT
-                    pattern: '{installer}/docs/**'
-
-    builders:
-        - 'fuel-build'
-        - 'fuel-workspace-cleanup'
-
-- job-template:
-    name: 'genesis-fuel-merge-{stream}'
-
-    node: ericsson-build
-
-    disabled: true
-
-    concurrent: true
-
-    properties:
-        - throttle:
-            enabled: true
-            max-total: 2
-
-    parameters:
-        - project-parameter:
-            project: '{project}'
-        - gerrit-parameter:
-            branch: '{branch}'
-        - genesis-fuel-parameter:
-            installer: '{installer}'
-            gs-pathname: ''
-
-    scm:
-        - gerrit-trigger-scm:
-            credentials-id: '{ssh-credentials}'
-            refspec: ''
-            choosing-strategy: 'default'
-
-    triggers:
-        - gerrit:
-            trigger-on:
-                - change-merged-event
-                - comment-added-contains-event:
-                    comment-contains-value: 'remerge'
-            projects:
-              - project-compare-type: 'ANT'
-                project-pattern: 'genesis'
-                branches:
-                  - branch-compare-type: 'ANT'
-                    branch-pattern: '**/{branch}'
-                file-paths:
-                  - compare-type: ANT
-                    pattern: 'common/ci/**'
-                  - compare-type: ANT
-                    pattern: 'common/manifests/**'
-                  - compare-type: ANT
-                    pattern: 'common/puppet-opnfv/**'
-                  - compare-type: ANT
-                    pattern: 'common/tools/**'
-                  - compare-type: ANT
-                    pattern: '{installer}/build/**'
-                  - compare-type: ANT
-                    pattern: '{installer}/ci/**'
-                  - compare-type: ANT
-                    pattern: '{installer}/deploy/**'
-                  - compare-type: ANT
-                    pattern: '{installer}/include/**'
-                  - compare-type: ANT
-                    pattern: '{installer}/prototypes/**'
-                forbidden-file-paths:
-                  - compare-type: ANT
-                    pattern: 'common/docs/**'
-                  - compare-type: ANT
-                    pattern: '{installer}/docs/**'
-
-    builders:
-        - 'fuel-build'
-        - 'fuel-workspace-cleanup'
-
-- job-template:
-    name: 'genesis-fuel-daily-{stream}'
-
-    node: ericsson-build
-
-    disabled: true
-
-    triggers:
-        - 'genesis-fuel-{stream}-trigger'
-
-    parameters:
-        - project-parameter:
-            project: '{project}'
-        - genesis-fuel-parameter:
-            installer: '{installer}'
-            gs-pathname: '{gs-pathname}'
-
-    scm:
-        - git-scm:
-            credentials-id: '{ssh-credentials}'
-            refspec: ''
-            branch: '{branch}'
-
-    builders:
-        - trigger-builds:
-          - project: 'genesis-fuel-build-{stream}'
-            git-revision: true
-            block: true
-        - trigger-builds:
-          - project: 'genesis-fuel-lab-reconfig-{stream}'
-            git-revision: true
-            block: true
-        - trigger-builds:
-          - project: 'genesis-fuel-deploy-{stream}'
-            git-revision: true
-            block: true
-        - trigger-builds:
-          - project: 'functest-fuel-{stream}'
-            block: true
-            block-thresholds:
-                build-step-failure-threshold: 'never'
-                failure-threshold: 'never'
-                unstable-threshold: 'FAILURE'
-        # - trigger-builds:
-          # - project: 'yardstick-fuel-{stream}'
-            # block: true
-            # block-thresholds:
-                # build-step-failure-threshold: 'never'
-                # failure-threshold: 'never'
-                # unstable-threshold: 'FAILURE'
-
-    publishers:
-        - trigger-parameterized-builds:
-            - project: 'genesis-foreman-daily-{stream}'
-              trigger-with-no-params: true
-
-- job-template:
-    name: 'genesis-fuel-deploy-runner-{stream}'
-
-    disabled: true
-
-    parameters:
-        - project-parameter:
-            project: '{project}'
-        - genesis-fuel-parameter:
-            installer: '{installer}'
-            gs-pathname: '{gs-pathname}'
-        - string:
-            name: GIT_BASE
-            default: ssh://gerrit.opnfv.org:29418/$PROJECT
-            description: "Used for overriding the GIT URL coming from parameters macro."
-
-    scm:
-        - git-scm:
-            credentials-id: '{ssh-credentials}'
-            refspec: ''
-            branch: '{branch}'
-
-    properties:
-        - build-blocker:
-            use-build-blocker: true
-            blocking-jobs:
-                - "genesis-foreman-daily.*"
-                - "genesis-foreman-deploy-runner-{stream}"
-                - "genesis-fuel-daily.*"
-
-    builders:
-        - 'fuel-lab-reconfig'
-        - trigger-builds:
-          - project: 'genesis-fuel-deploy-{stream}'
-            git-revision: true
-            block: true
-
-- job-template:
-    name: 'genesis-fuel-build-{stream}'
-
-    node: ericsson-build
-
-    disabled: true
-
-    parameters:
-        - project-parameter:
-            project: '{project}'
-        - genesis-fuel-parameter:
-            installer: '{installer}'
-            gs-pathname: '{gs-pathname}'
-
-    scm:
-        - git-scm:
-            credentials-id: '{ssh-credentials}'
-            refspec: ''
-            branch: '{branch}'
-
-    builders:
-        - 'fuel-build'
-        - 'fuel-upload-artifact'
-        - 'fuel-workspace-cleanup'
-
-    publishers:
-        - email:
-            recipients: jonas.bjurel@ericsson.com stefan.k.berg@ericsson.com
-
-- job-template:
-    name: 'genesis-fuel-deploy-{stream}'
-
-    disabled: true
-
-    node: opnfv-jump-2
-
-    parameters:
-        - project-parameter:
-            project: '{project}'
-        - genesis-fuel-parameter:
-            installer: '{installer}'
-            gs-pathname: '{gs-pathname}'
-        - string:
-            name: GIT_BASE
-            default: ssh://gerrit.opnfv.org:29418/$PROJECT
-            description: "POD2 has some issues with cloning using https so that's why GIT_BASE is overriden here again."
-
-    scm:
-        - git-scm:
-            credentials-id: '{ssh-credentials}'
-            refspec: ''
-            branch: '{branch}'
-
-    builders:
-        - 'fuel-download-artifact'
-        - 'fuel-deploy'
-
-    publishers:
-        - email:
-            recipients: jonas.bjurel@ericsson.com stefan.k.berg@ericsson.com
-
-- job-template:
-    name: 'genesis-fuel-lab-reconfig-{stream}'
-
-    disabled: true
-
-    parameters:
-        - project-parameter:
-            project: '{project}'
-        - genesis-fuel-parameter:
-            installer: '{installer}'
-            gs-pathname: '{gs-pathname}'
-        - string:
-            name: GIT_BASE
-            default: ssh://gerrit.opnfv.org:29418/$PROJECT
-            description: "Used for overriding the GIT URL coming from parameters macro."
-
-    scm:
-        - git-scm:
-            credentials-id: '{ssh-credentials}'
-            refspec: ''
-            branch: '{branch}'
-
-    properties:
-        - build-blocker:
-            use-build-blocker: true
-            blocking-jobs:
-                - "genesis-foreman-daily.*"
-
-    builders:
-        - 'fuel-lab-reconfig'
-
-- job-template:
-    name: 'genesis-fuel-verify-deploy-virtual-{stream}'
-
-    disabled: true
-
-    node: ericsson-build
-
-    parameters:
-        - project-parameter:
-            project: '{project}'
-        - genesis-fuel-parameter:
-            installer: '{installer}'
-            gs-pathname: ''
-
-    scm:
-        - git-scm:
-            credentials-id: '{ssh-credentials}'
-            refspec: ''
-            branch: 'master'
-
-    builders:
-        - 'fuel-deploy-virtual'
-
-########################
-# parameter macros
-########################
-- parameter:
-    name: genesis-fuel-parameter
-    parameters:
-        - string:
-            name: INSTALLER
-            default: '{installer}'
-            description: "Installer to use."
-        - string:
-            name: BUILD_DIRECTORY
-            default: $WORKSPACE/build_output
-            description: "Directory where the build artifact will be located upon the completion of the build."
-        - string:
-            name: CACHE_DIRECTORY
-            default: $HOME/opnfv/cache/genesis-$INSTALLER
-            description: "Directory where the cache to be used during the build is located."
-        - 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."
-        - string:
-            name: GS_URL
-            default: artifacts.opnfv.org/$PROJECT/$INSTALLER{gs-pathname}
-            description: "URL to Google Storage."
-
-########################
-# builder macros
-########################
-- builder:
-    name: 'fuel-build'
-    builders:
-        - shell: |
-            #!/bin/bash
-            set -o errexit
-            set -o nounset
-            set -o pipefail
-
-            # log info to console
-            echo "Starting the build of $INSTALLER. This could take some time..."
-            echo "--------------------------------------------------------"
-            echo
-
-            # create the cache directory if it doesn't exist
-            [[ -d $CACHE_DIRECTORY ]] || mkdir -p $CACHE_DIRECTORY
-
-            # set OPNFV_ARTIFACT_VERSION
-            export OPNFV_ARTIFACT_VERSION=$(date -u +"%Y-%m-%d_%H-%M-%S")
-
-            # start the build
-            cd $WORKSPACE/$INSTALLER/ci
-            ./build.sh -v $OPNFV_ARTIFACT_VERSION -c file://$CACHE_DIRECTORY $BUILD_DIRECTORY
-
-            # list the build artifacts
-            ls -al $BUILD_DIRECTORY
-
-            # save information regarding artifact into file
-            (
-                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_MD5SUM=$(md5sum $BUILD_DIRECTORY/opnfv-$OPNFV_ARTIFACT_VERSION.iso | cut -d' ' -f1)"
-                echo "OPNFV_BUILD_URL=$BUILD_URL"
-            ) > $WORKSPACE/opnfv.properties
-
-            echo
-            echo "--------------------------------------------------------"
-            echo "Done!"
-
-- builder:
-    name: 'fuel-deploy'
-    builders:
-        - shell: |
-            #!/bin/bash
-            set -o errexit
-            set -o nounset
-            set -o pipefail
-
-            # source the file so we get OPNFV vars
-            source latest.properties
-
-            # echo the info about artifact that is used during the deployment
-            echo "Using $(echo $OPNFV_ARTIFACT_URL | cut -d'/' -f4) for deployment"
-
-            # create TMPDIR if it doesn't exist
-            export TMPDIR=$HOME/tmpdir
-            [[ -d $TMPDIR ]] || mkdir -p $TMPDIR
-
-            # change permissions down to TMPDIR
-            chmod a+x $HOME
-            chmod a+x $TMPDIR
-
-            # set CONFDIR, BRIDGE
-            export CONFDIR=$WORKSPACE/fuel/deploy/templates/hardware_environment/conf/linux_foundation_lab/pod2
-            export BRIDGE=pxebr
-
-            # cleanup first
-            sudo $WORKSPACE/common/ci/clean.sh -base_config $WORKSPACE/foreman/ci/inventory/lf_pod2_ksgen_settings.yml
-
-            # prepare for Fuel Deployment
-            sudo $WORKSPACE/common/ci/setup.sh
-
-            # log info to console
-            echo "Starting the deployment using $INSTALLER. This could take some time..."
-            echo "--------------------------------------------------------"
-            echo
-
-            # start the deployment
-            echo "Issuing command"
-            echo "sudo $WORKSPACE/fuel/ci/deploy.sh -iso $WORKSPACE/opnfv.iso -dea $CONFDIR/dea.yaml -dha $CONFDIR/dha.yaml -s $TMPDIR -b $BRIDGE -nh"
-            sudo $WORKSPACE/fuel/ci/deploy.sh -iso $WORKSPACE/opnfv.iso -dea $CONFDIR/dea.yaml -dha $CONFDIR/dha.yaml -s $TMPDIR -b $BRIDGE -nh
-
-            echo
-            echo "--------------------------------------------------------"
-            echo "Done!"
-
-- builder:
-    name: 'fuel-deploy-virtual'
-    builders:
-        - shell: |
-            #!/bin/bash
-            set -o errexit
-            set -o nounset
-            set -o pipefail
-
-            # log info to console
-            echo "Starting the deployment on virtual environment using $INSTALLER. This could take some time..."
-            echo "--------------------------------------------------------"
-            echo
-
-            ssh -o BatchMode=yes -o TCPKeepAlive=yes cideploy@10.118.34.205 ./cideploy.sh
-
-            echo
-            echo "--------------------------------------------------------"
-            echo "Done!"
-
-- builder:
-    name: 'fuel-upload-artifact'
-    builders:
-        - shell: |
-            #!/bin/bash
-            set -o errexit
-            set -o nounset
-            set -o pipefail
-
-            # log info to console
-            echo "Uploading the $INSTALLER artifact. This could take some time..."
-            echo "--------------------------------------------------------"
-            echo
-
-            # source the opnfv.properties to get ARTIFACT_VERSION
-            source $WORKSPACE/opnfv.properties
-
-            # upload artifact and additional files to google storage
-            gsutil cp $BUILD_DIRECTORY/opnfv-$OPNFV_ARTIFACT_VERSION.iso gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso > gsutil.iso.log 2>&1
-            gsutil cp $WORKSPACE/opnfv.properties gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.properties > gsutil.properties.log 2>&1
-            gsutil cp $WORKSPACE/opnfv.properties gs://$GS_URL/latest.properties > gsutil.latest.log 2>&1
-
-            echo
-            echo "--------------------------------------------------------"
-            echo "Done!"
-            echo "Artifact is available as http://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso"
-
-- builder:
-    name: 'fuel-download-artifact'
-    builders:
-        - shell: |
-            #!/bin/bash
-            set -o errexit
-            set -o nounset
-            set -o pipefail
-
-            # get the latest.properties file in order to get info regarding latest artifact
-            curl -s -o $WORKSPACE/latest.properties http://$GS_URL/latest.properties
-
-            # check if we got the file
-            [[ -f latest.properties ]] || exit 1
-
-            # source the file so we get OPNFV vars
-            source latest.properties
-
-            # log info to console
-            echo "Downloading the $INSTALLER artifact using URL http://$OPNFV_ARTIFACT_URL"
-            echo "This could take some time..."
-            echo "--------------------------------------------------------"
-            echo
-
-            # download the file
-            curl -s -o $WORKSPACE/opnfv.iso http://$OPNFV_ARTIFACT_URL > gsutil.iso.log 2>&1
-
-            # list the file
-            ls -al $WORKSPACE/opnfv.iso
-
-            echo
-            echo "--------------------------------------------------------"
-            echo "Done!"
-
-- builder:
-    name: 'fuel-workspace-cleanup'
-    builders:
-        - shell: |
-            #!/bin/bash
-            set -o errexit
-            set -o nounset
-            set -o pipefail
-
-            # delete everything that is in $WORKSPACE
-            /bin/rm -rf $WORKSPACE
-
-- builder:
-    name: 'fuel-lab-reconfig'
-    builders:
-        - shell: |
-            #!/bin/bash
-            set -o errexit
-            set -o nounset
-            set -o pipefail
-
-            # check to see if ucs login info file exists
-            if [ -e ~/.ssh/ucs_creds ];then
-              source ~/.ssh/ucs_creds
-            else
-              echo "Unable to find UCS credentials for LF lab reconfiguration...Exiting"
-              exit 1
-            fi
-
-            # clone releng
-            echo "Cloning releng repo..."
-            if ! GIT_SSL_NO_VERIFY=true git clone https://gerrit.opnfv.org/gerrit/releng; then
-              echo "Unable to clone releng repo...Exiting"
-              exit 1
-            fi
-
-            # log info to console
-            echo "Starting the lab reconfiguration for $INSTALLER..."
-            echo "--------------------------------------------------------"
-            echo
-
-            # create venv
-            $WORKSPACE/releng/utils/lab-reconfiguration/create_venv.sh
-
-            # disable nounset because 'activate' script contains unbound variable(s)
-            set +o nounset
-            # enter venv
-            source $WORKSPACE/releng/utils/lab-reconfiguration/venv/bin/activate
-            # set nounset back again
-            set -o nounset
-
-            # verify we are in venv
-            if [[ ! $(which python | grep venv) ]]; then
-              echo "Unable to activate venv...Exiting"
-              exit 1
-            fi
-
-            python $WORKSPACE/releng/utils/lab-reconfiguration/reconfigUcsNet.py -i $ucs_host -u $ucs_user -p $ucs_password -f $WORKSPACE/releng/utils/lab-reconfiguration/fuel.yaml
-
-            # while undergoing reboot
-            sleep 30
-
-            # check to see if slave is back up
-            ping_counter=0
-            ping_flag=0
-            while [ "$ping_counter" -lt 20 ]; do
-              if [[ $(ping -c 5 172.30.10.72) ]]; then
-                ping_flag=1
-                break
-              fi
-              ((ping_counter++))
-              sleep 10
-            done
-
-            if [ "$ping_flag" -eq 1 ]; then
-              echo "Slave is pingable, now wait 180 seconds for services to start"
-              sleep 180
-            else
-              echo "Slave did not come back up after reboot: please check opnfv-jump-2"
-              exit 1
-            fi
-
-            set +o nounset
-            deactivate
-
-            echo
-            echo "--------------------------------------------------------"
-            echo "Done!"
-
-########################
-# trigger macros
-########################
-- trigger:
-    name: 'genesis-fuel-master-trigger'
-    triggers:
-        - timed: '0 5 * * *'
-
-- trigger:
-    name: 'genesis-fuel-stable-arno-trigger'
-    triggers:
-        - timed: '0 7 * * *'
diff --git a/jjb/genesis/genesis-juju.yml b/jjb/genesis/genesis-juju.yml
deleted file mode 100644 (file)
index 14f2e12..0000000
+++ /dev/null
@@ -1,193 +0,0 @@
-# this is the job configuration for bgs
-- project:
-
-    name: genesis-juju
-
-    installer:
-        - juju
-#    jobs:
-#        - 'genesis-juju-verify'
-#        - 'genesis-juju-merge'
-#        - 'genesis-juju-daily-{stream}'
-
-    # stream:    branch with - in place of / (eg. stable-helium)
-    # branch:    branch (eg. stable/helium)
-    stream:
-        - master:
-            branch: 'master'
-
-    project: 'genesis'
-
-########################
-# job templates
-########################
-
-- job-template:
-    name: 'genesis-juju-verify'
-
-    disabled: true
-
-    node: ericsson-build
-
-    parameters:
-        - string:
-            name: BUILD_DIRECTORY
-            default: $WORKSPACE/build_output
-        - string:
-            name: GIT_BASE
-            default: https://gerrit.opnfv.org/gerrit/genesis
-        - project-parameter:
-            project: '{project}'
-        - gerrit-parameter:
-            branch: 'master'
-
-    scm:
-        - gerrit-trigger-scm:
-            credentials-id: '{ssh-credentials}'
-            refspec: '$GERRIT_REFSPEC'
-            choosing-strategy: 'gerrit'
-
-    triggers:
-        - gerrit:
-            trigger-on:
-                - patchset-created-event:
-                    exclude-drafts: 'false'
-                    exclude-trivial-rebase: 'false'
-                    exclude-no-code-change: 'false'
-                - draft-published-event
-                - comment-added-contains-event:
-                    comment-contains-value: 'recheck'
-                - comment-added-contains-event:
-                    comment-contains-value: 'reverify'
-            projects:
-              - project-compare-type: 'ANT'
-                project-pattern: 'genesis'
-                branches:
-                  - branch-compare-type: 'ANT'
-                    branch-pattern: '**/master'
-                file-paths:
-                  - compare-type: ANT
-                    pattern: 'common/**'
-                  - compare-type: ANT
-                    pattern: 'juju/**'
-
-    builders:
-        - 'juju-verify'
-
-- job-template:
-    name: 'genesis-juju-merge'
-
-    disabled: true
-
-    # builder-merge job to run JJB update
-    #
-    # This job's purpose is to update all the JJB
-
-    node: ericsson-build
-
-    parameters:
-        - string:
-            name: BUILD_DIRECTORY
-            default: $WORKSPACE/build_output
-        - string:
-            name: GIT_BASE
-            default: https://gerrit.opnfv.org/gerrit/genesis
-        - project-parameter:
-            project: '{project}'
-        - gerrit-parameter:
-            branch: 'master'
-
-    scm:
-        - gerrit-trigger-scm:
-            credentials-id: '{ssh-credentials}'
-            refspec: ''
-            choosing-strategy: 'default'
-
-    triggers:
-        - gerrit:
-            trigger-on:
-                - change-merged-event
-                - comment-added-contains-event:
-                    comment-contains-value: 'remerge'
-            projects:
-              - project-compare-type: 'ANT'
-                project-pattern: 'genesis'
-                branches:
-                    - branch-compare-type: 'ANT'
-                      branch-pattern: '**/master'
-                file-paths:
-                  - compare-type: ANT
-                    pattern: 'common/**'
-                  - compare-type: ANT
-                    pattern: 'juju/**'
-
-    builders:
-        - 'juju-merge'
-
-- job-template:
-    name: 'genesis-juju-daily-{stream}'
-
-    disabled: true
-
-    node: ericsson-build
-
-    parameters:
-        - string:
-            name: BUILD_DIRECTORY
-            default: $WORKSPACE/build_output
-            description: "Directory where the build artifact will be located upon the completion of the build."
-        - string:
-            name: GS_URL
-            default: 'artifacts.opnfv.org/genesis/juju'
-            description: "URL to Google Storage."
-        - string:
-            name: INSTALLER
-            default: 'juju'
-            description: "Installer to use."
-        - string:
-            name: GIT_BASE
-            default: https://gerrit.opnfv.org/gerrit/genesis
-        - string:
-            name: GERRIT_BRANCH
-            default: origin/master
-            description: "Branch to build, deploy and test."
-        - string:
-            name: GERRIT_REFSPEC
-            default: refs/heads/master
-            description: "Refspec to retrieve."
-
-    scm:
-        - git:
-            skip-tag: true
-            url: $GIT_BASE
-            branches:
-                - $GERRIT_BRANCH
-            refspec: $GERRIT_REFSPEC
-
-    triggers:
-        - pollscm:
-            cron: '@midnight'
-
-    builders:
-        - 'juju-daily-master'
-
-- builder:
-    name: juju-verify
-    builders:
-        - shell: |
-            #!/bin/bash
-            echo "Hello World!"
-
-- builder:
-    name: juju-merge
-    builders:
-        - shell: |
-            #!/bin/bash
-            echo "Hello World!"
-
-- builder:
-    name: juju-daily-master
-    builders:
-        - shell: |
-            #!/bin/bash
-            echo "Hello World!"
index 907db4f..bcc4b64 100644 (file)
@@ -181,10 +181,17 @@ cat << EOF > $JOID_ADMIN_OPENRC
 export OS_USERNAME=admin
 export OS_PASSWORD=$OS_ADMIN_PASSWORD
 export OS_TENANT_NAME=admin
-export OS_AUTH_URL=http://$KEYSTONE:5000/v2.0
+export OS_AUTH_URL=http://$KEYSTONE:35537/v2.0
 export OS_REGION_NAME=Canonical
+export OS_ENDPOINT_TYPE='adminURL'
+export CINDER_ENDPOINT_TYPE='adminURL'
+export GLANCE_ENDPOINT_TYPE='adminURL'
+export KEYSTONE_ENDPOINT_TYPE='adminURL'
+export NEUTRON_ENDPOINT_TYPE='adminURL'
+export NOVA_ENDPOINT_TYPE='adminURL'
 export SDN_CONTROLLER=$SDN_CONTROLLER_IP
 export SDN_PASSWORD=$SDN_PASSWORD
+export OS_INTERFACE=admin
 EOF
 
 ##
similarity index 69%
rename from jjb/oscar/oscar.yml
rename to jjb/netready/netready.yml
index 786d44b..bc8f666 100644 (file)
@@ -1,34 +1,27 @@
-###################################################
-# All the jobs except verify have been removed!
-# They will only be enabled on request by projects!
-###################################################
 - project:
-    name: oscar
+    name: netready
 
     project: '{name}'
 
     jobs:
-        - 'oscar-verify-{stream}'
+        - 'netready-verify-{stream}'
 
-# only master branch is enabled at the moment to keep no of jobs sane
     stream:
         - master:
-            branch: 'master'
+            branch: '{stream}'
             gs-pathname: ''
-#        - brahmaputra:
-#            branch: 'stable/brahmaputra'
-#            gs-pathname: '/brahmaputra'
+        - brahmaputra:
+            branch: 'stable/{stream}'
+            gs-pathname: '/{stream}'
 
 - job-template:
-    name: 'oscar-verify-{stream}'
+    name: 'netready-verify-{stream}'
 
     parameters:
         - project-parameter:
             project: '{project}'
         - gerrit-parameter:
             branch: '{branch}'
-        - 'opnfv-build-defaults'
-
     scm:
         - gerrit-trigger-scm:
             credentials-id: '{ssh-credentials}'
@@ -55,7 +48,7 @@
                     branch-pattern: '**/{branch}'
                 forbidden-file-paths:
                   - compare-type: ANT
-                    pattern: 'docs/**|.gitignore'
+                    pattern: 'docs/**'
 
     builders:
         - shell: |
index 702c0ce..1093d5f 100644 (file)
@@ -67,16 +67,18 @@ fi
 
 
 # cd to directory where Dockerfile is located
-if [[ "$DOCKER_REPO_NAME" == "opnfv/functest" ]]; then
+if [[ "$DOCKER_REPO_NAME" == "opnfv/bottlenecks" ]]; then
+    cd $WORKSPACE/ci/docker
+elif [[ "$DOCKER_REPO_NAME" == "opnfv/cperf" ]]; then
     cd $WORKSPACE/docker
-elif [[ "$DOCKER_REPO_NAME" == "opnfv/yardstick" ]]; then
-    cd $WORKSPACE/ci/docker/yardstick-ci
-elif [[ "$DOCKER_REPO_NAME" == "opnfv/storperf" ]]; then
+elif [[ "$DOCKER_REPO_NAME" == "opnfv/functest" ]]; then
     cd $WORKSPACE/docker
 elif [[ "$DOCKER_REPO_NAME" == "opnfv/qtip" ]]; then
     cd $WORKSPACE/docker
-elif [[ "$DOCKER_REPO_NAME" == "opnfv/bottlenecks" ]]; then
-    cd $WORKSPACE/ci/docker
+elif [[ "$DOCKER_REPO_NAME" == "opnfv/storeperf" ]]; then
+    cd $WORKSPACE/docker
+elif [[ "$DOCKER_REPO_NAME" == "opnfv/yardstick" ]]; then
+    cd $WORKSPACE/ci/docker/yardstick-ci
 else
     echo "ERROR: DOCKER_REPO_NAME parameter not valid: $DOCKER_REPO_NAME"
     exit 1
index 936f220..6b49242 100644 (file)
@@ -8,6 +8,7 @@
 
     project:
         - 'bottlenecks'
+        - 'cperf'
         - 'functest'
         - 'storperf'
         - 'qtip'
index e241cbe..32191ff 100644 (file)
         - zte-pod1:
             installer: fuel
             suite: daily
-            auto-trigger-name: 'yardstick-daily-zte-pod1-trigger'
+            auto-trigger-name: 'brahmaputra-trigger-daily-disabled'
             <<: *master
         - orange-pod2:
             installer: joid
     parameters:
         - string:
             name: YARDSTICK_DB_BACKEND
-            default: ''
+            default: '-i 104.197.68.199:8086'
             description: 'Arguments to use in order to choose the backend DB'
 
 - parameter:
 ## trigger macros
 #######################
 # trigger for PODs to only run yardstick test suites
-- trigger:
-    name: 'yardstick-daily-zte-pod1-trigger'
-    triggers:
-        - timed: '0 2 * * *'
-
 - trigger:
     name: 'yardstick-vtcdaily-ericsson-pod1-trigger'
     triggers:
diff --git a/utils/test/result_collection_api/README.md b/utils/test/result_collection_api/README.md
new file mode 100644 (file)
index 0000000..d73274c
--- /dev/null
@@ -0,0 +1,16 @@
+# result_collection_api
+
+## prepare:
+Install:
+
+```
+pip install testtools
+pip install discover
+```
+
+## How to:
+run_test.sh:
+
+```
+bash ./run_test.sh
+```
index 2c825c1..4d39a14 100644 (file)
@@ -12,3 +12,4 @@ DEFAULT_REPRESENTATION = "application/json"
 HTTP_BAD_REQUEST = 400
 HTTP_FORBIDDEN = 403
 HTTP_NOT_FOUND = 404
+HTTP_OK = 200
index c1e8eb1..fff1662 100644 (file)
@@ -13,7 +13,8 @@ from tornado.web import RequestHandler, asynchronous, HTTPError
 from tornado import gen
 from datetime import datetime, timedelta
 
-from models import Pod, TestProject, TestCase, TestResult
+from models import TestProject, TestCase, TestResult
+from resources.pod_models import Pod
 from common.constants import DEFAULT_REPRESENTATION, HTTP_BAD_REQUEST, \
     HTTP_NOT_FOUND, HTTP_FORBIDDEN
 from common.config import prepare_put_request
index 06e95f9..adf6842 100644 (file)
@@ -5,47 +5,41 @@
 # are made available under the terms of the Apache License, Version 2.0\r
 # which accompanies this distribution, and is available at\r
 # http://www.apache.org/licenses/LICENSE-2.0\r
+# feng.xiaowei@zte.com.cn  mv Pod to pod_models.py                 6-18-2016\r
+# feng.xiaowei@zte.com.cn  add MetaCreateResponse/MetaGetResponse  6-18-2016\r
 ##############################################################################\r
 \r
 \r
-class Pod:\r
-    """ describes a POD platform """\r
-    def __init__(self):\r
-        self._id = ""\r
-        self.name = ""\r
-        self.creation_date = ""\r
-        self.mode = ""\r
-        self.details = ""\r
+class MetaCreateResponse(object):\r
+    def __init__(self, success=True, uri=''):\r
+        self.success = success\r
+        self.uri = uri\r
 \r
     @staticmethod\r
-    def pod_from_dict(pod_dict):\r
-        if pod_dict is None:\r
+    def from_dict(meta_dict):\r
+        if meta_dict is None:\r
             return None\r
 \r
-        p = Pod()\r
-        p._id = pod_dict.get('_id')\r
-        p.creation_date = str(pod_dict.get('creation_date'))\r
-        p.name = pod_dict.get('name')\r
-        p.mode = pod_dict.get('mode')\r
-        p.details = pod_dict.get('details')\r
-        return p\r
+        meta = MetaCreateResponse()\r
+        meta.success = meta_dict.get('success')\r
+        meta.uri = meta_dict.get('uri')\r
+        return meta\r
 \r
-    def format(self):\r
-        return {\r
-            "name": self.name,\r
-            "mode": self.mode,\r
-            "details": self.details,\r
-            "creation_date": str(self.creation_date),\r
-        }\r
 \r
-    def format_http(self):\r
-        return {\r
-            "_id": str(self._id),\r
-            "name": self.name,\r
-            "mode": self.mode,\r
-            "details": self.details,\r
-            "creation_date": str(self.creation_date),\r
-        }\r
+class MetaGetResponse(object):\r
+    def __init__(self, success=True, total=0):\r
+        self.success = success\r
+        self.total = total\r
+\r
+    @staticmethod\r
+    def from_dict(meta_dict):\r
+        if meta_dict is None:\r
+            return None\r
+\r
+        meta = MetaGetResponse()\r
+        meta.success = meta_dict.get('success')\r
+        meta.total = meta_dict.get('total')\r
+        return meta\r
 \r
 \r
 class TestProject:\r
diff --git a/utils/test/result_collection_api/resources/pod_models.py b/utils/test/result_collection_api/resources/pod_models.py
new file mode 100644 (file)
index 0000000..5c4ef72
--- /dev/null
@@ -0,0 +1,108 @@
+from models import MetaCreateResponse, MetaGetResponse
+
+
+class PodCreateRequest(object):
+    def __init__(self, name='', mode='', details=''):
+        self.name = name
+        self.mode = mode
+        self.details = details
+
+    def format(self):
+        return {
+            "name": self.name,
+            "mode": self.mode,
+            "details": self.details,
+        }
+
+    @staticmethod
+    def from_dict(req_dict):
+        if req_dict is None:
+            return None
+
+        req = PodCreateRequest()
+        req.name = req_dict.get('name')
+        req.mode = req_dict.get('mode')
+        req.details = req_dict.get('details')
+        return req
+
+
+class Pod(PodCreateRequest):
+    """ describes a POD platform """
+    def __init__(self, name='', mode='', details='', _id='', create_date=''):
+        super(Pod, self).__init__(name, mode, details)
+        self._id = _id
+        self.creation_date = create_date
+
+    @staticmethod
+    def pod_from_dict(pod_dict):
+        if pod_dict is None:
+            return None
+
+        p = Pod()
+        p._id = pod_dict.get('_id')
+        p.creation_date = str(pod_dict.get('creation_date'))
+        p.name = pod_dict.get('name')
+        p.mode = pod_dict.get('mode')
+        p.details = pod_dict.get('details')
+        return p
+
+    def format(self):
+        f = super(Pod, self).format()
+        f['creation_date'] = str(self.creation_date)
+        return f
+
+    def format_http(self):
+        f = self.format()
+        f['_id'] = str(self._id)
+        return f
+
+
+class PodCreateResponse(object):
+    def __init__(self, pod=None, meta=None):
+        self.pod = pod
+        self.meta = meta
+
+    @staticmethod
+    def from_dict(res_dict):
+        if res_dict is None:
+            return None
+
+        res = PodCreateResponse()
+        res.pod = Pod.pod_from_dict(res_dict.get('pod'))
+        res.meta = MetaCreateResponse.from_dict(res_dict.get('meta'))
+        return res
+
+
+class PodGetResponse(PodCreateRequest):
+    def __init__(self, name='', mode='', details='', create_date=''):
+        self.creation_date = create_date
+        super(PodGetResponse, self).__init__(name, mode, details)
+
+    @staticmethod
+    def from_dict(req_dict):
+        if req_dict is None:
+            return None
+
+        res = PodGetResponse()
+        res.creation_date = str(req_dict.get('creation_date'))
+        res.name = req_dict.get('name')
+        res.mode = req_dict.get('mode')
+        res.details = req_dict.get('details')
+        return res
+
+
+class PodsGetResponse(object):
+    def __init__(self, pods=[], meta=None):
+        self.pods = pods
+        self.meta = meta
+
+    @staticmethod
+    def from_dict(res_dict):
+        if res_dict is None:
+            return None
+
+        res = PodsGetResponse()
+        for pod in res_dict.get('pods'):
+            res.pods.append(PodGetResponse.from_dict(pod))
+        res.meta = MetaGetResponse.from_dict(res_dict.get('meta'))
+        return res
diff --git a/utils/test/result_collection_api/run_test.sh b/utils/test/result_collection_api/run_test.sh
new file mode 100755 (executable)
index 0000000..6006fcf
--- /dev/null
@@ -0,0 +1,10 @@
+#! /bin/bash
+
+# Before run this script, make sure that testtools and discover
+# had been installed in your env
+# or else using pip to install them as follows:
+# pip install testtools, discover
+
+find . -type f -name "*.pyc" -delete
+testrargs="discover ./tests/unit"
+python -m testtools.run $testrargs
\ No newline at end of file
diff --git a/utils/test/result_collection_api/tests/__init__.py b/utils/test/result_collection_api/tests/__init__.py
new file mode 100644 (file)
index 0000000..3ed9fd0
--- /dev/null
@@ -0,0 +1 @@
+__author__ = 'root'
diff --git a/utils/test/result_collection_api/tests/unit/__init__.py b/utils/test/result_collection_api/tests/unit/__init__.py
new file mode 100644 (file)
index 0000000..3ed9fd0
--- /dev/null
@@ -0,0 +1 @@
+__author__ = 'root'
diff --git a/utils/test/result_collection_api/tests/unit/fake_pymongo.py b/utils/test/result_collection_api/tests/unit/fake_pymongo.py
new file mode 100644 (file)
index 0000000..e5ded37
--- /dev/null
@@ -0,0 +1,132 @@
+from bson.objectid import ObjectId
+from concurrent.futures import ThreadPoolExecutor
+
+__author__ = 'serena'
+
+
+class MemCursor(object):
+    def __init__(self, collection):
+        self.collection = collection
+        self.count = len(self.collection)
+
+    def _is_next_exist(self):
+        return self.count != 0
+
+    @property
+    def fetch_next(self):
+        with ThreadPoolExecutor(max_workers=2) as executor:
+            result = executor.submit(self._is_next_exist)
+        return result
+
+    def next_object(self):
+        self.count -= 1
+        return self.collection.pop()
+
+
+class MemDb(object):
+
+    def __init__(self):
+        self.contents = []
+        pass
+
+    def _find_one(self, spec_or_id=None, *args):
+        if spec_or_id is not None and not isinstance(spec_or_id, dict):
+            spec_or_id = {"_id": spec_or_id}
+        cursor = self._find(spec_or_id, *args)
+        for result in cursor:
+            return result
+        return None
+
+    def find_one(self, spec_or_id=None, *args):
+        with ThreadPoolExecutor(max_workers=2) as executor:
+            result = executor.submit(self._find_one, spec_or_id, *args)
+        return result
+
+    def _insert(self, doc_or_docs):
+
+        docs = doc_or_docs
+        return_one = False
+        if isinstance(docs, dict):
+            return_one = True
+            docs = [docs]
+
+        ids = []
+        for doc in docs:
+            if '_id' not in doc:
+                doc['_id'] = ObjectId()
+            if not self._find_one(doc['_id']):
+                ids.append(doc['_id'])
+                self.contents.append(doc_or_docs)
+
+        if len(ids) == 0:
+            return None
+        if return_one:
+            return ids[0]
+        else:
+            return ids
+
+    def insert(self, doc_or_docs):
+        with ThreadPoolExecutor(max_workers=2) as executor:
+            result = executor.submit(self._insert, doc_or_docs)
+        return result
+
+    @staticmethod
+    def _in(content, *args):
+        for arg in args:
+            for k, v in arg.iteritems():
+                if content.get(k, None) != v:
+                    return False
+
+        return True
+
+    def _find(self, *args):
+        res = []
+        for content in self.contents:
+            if self._in(content, *args):
+                res.append(content)
+
+        return res
+
+    def find(self, *args):
+        return MemCursor(self._find(*args))
+
+    def _update(self, spec, document):
+        updated = False
+        for index in range(len(self.contents)):
+            content = self.contents[index]
+            if self._in(content, spec):
+                for k, v in document.iteritems():
+                    updated = True
+                    content[k] = v
+            self.contents[index] = content
+        return updated
+
+    def update(self, spec, document):
+        with ThreadPoolExecutor(max_workers=2) as executor:
+            result = executor.submit(self._update, spec, document)
+        return result
+
+    def _remove(self, spec_or_id=None):
+        if spec_or_id is None:
+            self.contents = []
+        if not isinstance(spec_or_id, dict):
+            spec_or_id = {'_id': spec_or_id}
+        for index in range(len(self.contents)):
+            content = self.contents[index]
+            if self._in(content, spec_or_id):
+                del self.contents[index]
+                return True
+        return False
+
+    def remove(self, spec_or_id=None):
+        with ThreadPoolExecutor(max_workers=2) as executor:
+            result = executor.submit(self._remove, spec_or_id)
+        return result
+
+    def clear(self):
+        self._remove()
+
+pod = MemDb()
+test_projects = MemDb()
+test_cases = MemDb()
+test_results = MemDb()
diff --git a/utils/test/result_collection_api/tests/unit/test_base.py b/utils/test/result_collection_api/tests/unit/test_base.py
new file mode 100644 (file)
index 0000000..98190fb
--- /dev/null
@@ -0,0 +1,54 @@
+import json
+from tornado.web import Application
+from tornado.testing import AsyncHTTPTestCase
+
+from resources.handlers import VersionHandler, PodHandler, \
+    TestProjectHandler, TestCasesHandler, TestResultsHandler, DashboardHandler
+import fake_pymongo
+
+
+class TestBase(AsyncHTTPTestCase):
+    headers = {'Content-Type': 'application/json; charset=UTF-8'}
+
+    def setUp(self):
+        self.addCleanup(self._clear)
+        super(TestBase, self).setUp()
+
+    def get_app(self):
+        return Application(
+            [
+                (r"/version", VersionHandler),
+                (r"/pods", PodHandler),
+                (r"/pods/([^/]+)", PodHandler),
+                (r"/test_projects", TestProjectHandler),
+                (r"/test_projects/([^/]+)", TestProjectHandler),
+                (r"/test_projects/([^/]+)/cases", TestCasesHandler),
+                (r"/test_projects/([^/]+)/cases/([^/]+)", TestCasesHandler),
+                (r"/results", TestResultsHandler),
+                (r"/results([^/]*)", TestResultsHandler),
+                (r"/results/([^/]*)", TestResultsHandler),
+                (r"/dashboard", DashboardHandler),
+                (r"/dashboard([^/]*)", DashboardHandler),
+                (r"/dashboard/([^/]*)", DashboardHandler),
+            ],
+            db=fake_pymongo,
+            debug=True,
+        )
+
+    def create(self, uri, body=None):
+        return self.fetch(uri,
+                          method='POST',
+                          body=json.dumps(body),
+                          headers=self.headers)
+
+    def get(self, uri):
+        return self.fetch(uri,
+                          method='GET',
+                          headers=self.headers)
+
+    @staticmethod
+    def _clear():
+        fake_pymongo.pod.clear()
+        fake_pymongo.test_projects.clear()
+        fake_pymongo.test_cases.clear()
+        fake_pymongo.test_results.clear()
diff --git a/utils/test/result_collection_api/tests/unit/test_fake_pymongo.py b/utils/test/result_collection_api/tests/unit/test_fake_pymongo.py
new file mode 100644 (file)
index 0000000..5ddbf28
--- /dev/null
@@ -0,0 +1,52 @@
+import unittest
+from tornado.web import Application
+from tornado import gen
+from tornado.testing import AsyncHTTPTestCase, gen_test
+
+import fake_pymongo
+
+
+class MyTest(AsyncHTTPTestCase):
+    def setUp(self):
+        super(MyTest, self).setUp()
+        self.db = fake_pymongo
+        self.io_loop.run_sync(self.fixture_setup)
+
+    def get_app(self):
+        return Application()
+
+    @gen.coroutine
+    def fixture_setup(self):
+        self.test1 = {'_id': '1', 'name': 'test1'}
+        self.test2 = {'name': 'test2'}
+        yield self.db.pod.insert({'_id': '1', 'name': 'test1'})
+        yield self.db.pod.insert({'name': 'test2'})
+
+    @gen_test
+    def test_find_one(self):
+        user = yield self.db.pod.find_one({'name': 'test1'})
+        self.assertEqual(user, self.test1)
+
+    @gen_test
+    def test_find(self):
+        cursor = self.db.pod.find()
+        names = []
+        while (yield cursor.fetch_next):
+            ob = cursor.next_object()
+            names.append(ob.get('name'))
+        self.assertItemsEqual(names, ['test1', 'test2'])
+
+    @gen_test
+    def test_update(self):
+        yield self.db.pod.update({'_id': '1'}, {'name': 'new_test1'})
+        user = yield self.db.pod.find_one({'_id': '1'})
+        self.assertEqual(user.get('name', None), 'new_test1')
+
+    @gen_test
+    def test_remove(self):
+        yield self.db.pod.remove({'_id': '1'})
+        user = yield self.db.pod.find_one({'_id': '1'})
+        self.assertIsNone(user)
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/utils/test/result_collection_api/tests/unit/test_pod.py b/utils/test/result_collection_api/tests/unit/test_pod.py
new file mode 100644 (file)
index 0000000..5a3d485
--- /dev/null
@@ -0,0 +1,86 @@
+import unittest
+import json
+
+from test_base import TestBase
+from resources.pod_models import PodCreateRequest, \
+    PodCreateResponse, PodsGetResponse
+from common.constants import HTTP_OK, HTTP_BAD_REQUEST, HTTP_FORBIDDEN
+
+
+class TestPodCreate(TestBase):
+    req = PodCreateRequest(name='zte-1', mode='alive', details='zte pod 1')
+
+    def test_withoutBody(self):
+        res = self.create('/pods', body=None)
+        self.assertEqual(res.code, HTTP_BAD_REQUEST)
+
+    def test_success(self):
+        res = self.create('/pods', body=self.req.format())
+        self.assertEqual(res.code, HTTP_OK)
+        res_body = PodCreateResponse.from_dict(json.loads(res.body))
+        self._assertMeta(res_body.meta, True)
+        self._assertBody(res_body.pod)
+
+    def test_alreadyExist(self):
+        self.create('/pods', body=self.req.format())
+        res = self.create('/pods', body=self.req.format())
+        self.assertEqual(res.code, HTTP_FORBIDDEN)
+        self.assertIn('already exists', res.body)
+
+    def _assertMeta(self, meta, success):
+        self.assertEqual(meta.success, success)
+        if success:
+            self.assertEqual(meta.uri, '/pods/{}'.format(self.req.name))
+
+    def _assertBody(self, res):
+        self.assertEqual(res.name, self.req.name)
+        self.assertEqual(res.mode, self.req.mode)
+        self.assertEqual(res.details, self.req.details)
+        self.assertIsNotNone(res.creation_date)
+        self.assertIsNotNone(res._id)
+
+
+class TestPodGet(TestBase):
+    def test_notExist(self):
+        res = self.get('/pods/notExist')
+        body = PodsGetResponse.from_dict(json.loads(res.body))
+        self._assertMeta(body.meta, 0)
+
+    def test_getOne(self):
+        self.create('/pods', body=TestPodCreate.req.format())
+        res = self.get('/pods/{}'.format(TestPodCreate.req.name))
+        body = PodsGetResponse.from_dict(json.loads(res.body))
+        self._assertMeta(body.meta, 1)
+        self._assertBody(TestPodCreate.req, body.pods[0])
+
+    def test_list(self):
+        req = PodCreateRequest(name='zte-2', mode='alive', details='zte pod 2')
+        self.create('/pods', body=TestPodCreate.req.format())
+        self.create('/pods', body=req.format())
+        res = self.get('/pods')
+        body = PodsGetResponse.from_dict(json.loads(res.body))
+        self._assertMeta(body.meta, 2)
+        for pod in body.pods:
+            if req.name == pod.name:
+                self._assertBody(req, pod)
+            else:
+                self._assertBody(TestPodCreate.req, pod)
+
+    def _assertMeta(self, meta, total):
+        def check_success():
+            if total is 0:
+                return False
+            else:
+                return True
+        self.assertEqual(meta.total, total)
+        self.assertEqual(meta.success, check_success())
+
+    def _assertBody(self, req, res):
+        self.assertEqual(res.name, req.name)
+        self.assertEqual(res.mode, req.mode)
+        self.assertEqual(res.details, req.details)
+        self.assertIsNotNone(res.creation_date)
+
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/utils/test/result_collection_api/tests/unit/test_version.py b/utils/test/result_collection_api/tests/unit/test_version.py
new file mode 100644 (file)
index 0000000..918f2f0
--- /dev/null
@@ -0,0 +1,14 @@
+import unittest
+
+from test_base import TestBase
+
+__author__ = 'serena'
+
+
+class TestVersion(TestBase):
+    def test_get_version(self):
+        response = self.fetch('/version')
+        self.assertEqual(response.code, 200)
+
+if __name__ == '__main__':
+    unittest.main()