Merge "Add docker update builder to jenkins job"
authorMorgan Richomme <morgan.richomme@orange.com>
Thu, 19 Jan 2017 07:16:36 +0000 (07:16 +0000)
committerGerrit Code Review <gerrit@opnfv.org>
Thu, 19 Jan 2017 07:16:36 +0000 (07:16 +0000)
66 files changed:
jjb/3rd_party_ci/create-apex-vms.sh
jjb/3rd_party_ci/download-netvirt-artifact.sh
jjb/3rd_party_ci/functest-netvirt.sh [deleted file]
jjb/3rd_party_ci/install-netvirt.sh
jjb/3rd_party_ci/odl-netvirt.yml
jjb/3rd_party_ci/postprocess-netvirt.sh
jjb/armband/armband-ci-jobs.yml
jjb/armband/armband-project-jobs.yml
jjb/armband/armband-verify-jobs.yml
jjb/availability/availability.yml
jjb/barometer/barometer.yml
jjb/bottlenecks/bottlenecks-ci-jobs.yml
jjb/bottlenecks/bottlenecks-project-jobs.yml
jjb/compass4nfv/compass-ci-jobs.yml
jjb/compass4nfv/compass-project-jobs.yml
jjb/compass4nfv/compass-verify-jobs.yml
jjb/conductor/conductor.yml
jjb/copper/copper.yml
jjb/doctor/doctor.yml
jjb/domino/domino.yml
jjb/dpacc/dpacc.yml
jjb/functest/functest-ci-jobs.yml
jjb/functest/functest-project-jobs.yml
jjb/functest/functest-suite.sh
jjb/global/slave-params.yml
jjb/infra/bifrost-upload-logs.sh [new file with mode: 0755]
jjb/infra/bifrost-verify-jobs.yml
jjb/ipv6/ipv6.yml
jjb/joid/joid-daily-jobs.yml
jjb/joid/joid-verify-jobs.yml
jjb/kvmfornfv/kvmfornfv.yml
jjb/multisite/multisite.yml
jjb/octopus/octopus.yml
jjb/onosfw/onosfw.yml
jjb/opnfvdocs/opnfvdocs.yml
jjb/ovsnfv/ovsnfv.yml
jjb/parser/parser.yml
jjb/pharos/pharos.yml
jjb/prediction/prediction.yml
jjb/promise/promise.yml
jjb/releng/opnfv-docker.yml
jjb/releng/opnfv-docs.yml
jjb/releng/opnfv-lint.yml
jjb/releng/testapi-automate.yml
jjb/storperf/storperf.yml
jjb/vnf_forwarding_graph/vnf_forwarding_graph.yml
jjb/vswitchperf/vswitchperf.yml
jjb/yardstick/yardstick-ci-jobs.yml
jjb/yardstick/yardstick-project-jobs.yml
modules/opnfv/utils/constants.py
utils/fetch_os_creds.sh
utils/push-test-logs.sh
utils/test/declaration/addtestcase.php [deleted file]
utils/test/declaration/index.php [deleted file]
utils/test/declaration/testcases.php [deleted file]
utils/test/testapi/docker/Dockerfile
utils/test/testapi/htmlize/doc-build.sh [new file with mode: 0644]
utils/test/testapi/htmlize/finish.sh
utils/test/testapi/htmlize/prepare.sh
utils/test/testapi/htmlize/push-doc-artifact.sh
utils/test/testapi/opnfv_testapi/resources/scenario_handlers.py
utils/test/testapi/opnfv_testapi/resources/scenario_models.py
utils/test/testapi/opnfv_testapi/tests/unit/fake_pymongo.py
utils/test/testapi/opnfv_testapi/tests/unit/scenario-create.json [new file with mode: 0644]
utils/test/testapi/opnfv_testapi/tests/unit/test_base.py
utils/test/testapi/opnfv_testapi/tests/unit/test_scenario.py [new file with mode: 0644]

index a076dd0..3f5dbd1 100755 (executable)
@@ -1,11 +1,15 @@
 #!/bin/bash
 set -e
 
+if [ -z ${WORKSPACE} ]; then
+  echo "WORKSPACE is unset. Please do so."
+  exit 1
+fi
 # wipe the WORKSPACE
 /bin/rm -rf $WORKSPACE/*
-
 # clone opnfv sdnvpn repo
 git clone https://gerrit.opnfv.org/gerrit/p/sdnvpn.git $WORKSPACE/sdnvpn
+
 . $WORKSPACE/sdnvpn/odl-pipeline/odl-pipeline-common.sh
 pushd $LIB
 ./test_environment.sh --env-number $APEX_ENV_NUMBER --cloner-info $CLONER_INFO --snapshot-disks $SNAPSHOT_DISKS --vjump-hosts $VIRTUAL_JUMPHOSTS
index 0a48e3a..be2d405 100755 (executable)
@@ -1,6 +1,10 @@
 #!/bin/bash
 set -e
 
+if [ -z ${WORKSPACE} ]; then
+  echo "WORKSPACE is unset. Please do so."
+  exit 1
+fi
 # wipe the WORKSPACE
 /bin/rm -rf $WORKSPACE/*
 
diff --git a/jjb/3rd_party_ci/functest-netvirt.sh b/jjb/3rd_party_ci/functest-netvirt.sh
deleted file mode 100755 (executable)
index adffaf4..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/bash
-set -e
-
-# wipe the WORKSPACE
-/bin/rm -rf $WORKSPACE/*
-
-echo "Hello World"
index 96c4b96..f111d48 100755 (executable)
@@ -1,5 +1,12 @@
 #!/bin/bash
 set -e
+
+if [ -z ${WORKSPACE} ]; then
+  echo "WORKSPACE is unset. Please do so."
+  exit 1
+fi
+# wipe the WORKSPACE
+/bin/rm -rf $WORKSPACE/*
 # clone opnfv sdnvpn repo
 git clone https://gerrit.opnfv.org/gerrit/p/sdnvpn.git $WORKSPACE/sdnvpn
 . $WORKSPACE/sdnvpn/odl-pipeline/odl-pipeline-common.sh
index ca19361..054761e 100644 (file)
@@ -20,8 +20,6 @@
             slave-label: 'ericsson-virtual5'
         - 'install-netvirt':
             slave-label: 'odl-netvirt-virtual'
-        - 'functest':
-            slave-label: 'odl-netvirt-virtual'
         - 'postprocess':
             slave-label: 'odl-netvirt-virtual'
 #####################################
             name: functest
             condition: SUCCESSFUL
             projects:
-                - name: 'functest-netvirt-virtual-suite-{stream}'
+                - name: 'functest-netvirt-virtual-daily-{stream}'
                   predefined-parameters: |
-                    FUNCTEST_SUITE_NAME=vping_userdata,bgpvpn
                     RC_FILE_PATH=/home/jenkins/cloner-info/overcloudrc
                     DEPLOY_SCENARIO=os-odl_l2-bgpvpn-noha
                   node-parameters: true
             use-build-blocker: true
             blocking-jobs:
                 - 'odl-netvirt-verify-virtual-install-.*'
-                - 'odl-netvirt-verify-virtual-functest-.*'
+                - 'functest-netvirt-virtual-daily-.*'
                 - 'odl-netvirt-verify-virtual-postprocess-.*'
             block-level: 'NODE'
 
             !include-raw: ./download-netvirt-artifact.sh
         - shell:
             !include-raw: ./install-netvirt.sh
-- builder:
-    name: 'netvirt-verify-functest-builder'
-    builders:
-        - shell:
-            !include-raw: ./functest-netvirt.sh
 - builder:
     name: 'netvirt-verify-postprocess-builder'
     builders:
index 2e99477..5baf378 100755 (executable)
@@ -1,14 +1,15 @@
 #!/bin/bash
 set -e
 
+if [ -z ${WORKSPACE} ]; then
+  echo "WORKSPACE is unset. Please do so."
+  exit 1
+fi
 # wipe the WORKSPACE
-if [ -z ${WORKSPACE} ]; then echo "WORKSPACE is unset"; else echo "WORKSPACE is set to \"$WORKSPACE\""; fi
-WORKSPACE=${WORKSPACE:-$PWD}
 /bin/rm -rf $WORKSPACE/*
-set -e
 # clone opnfv sdnvpn repo
 git clone https://gerrit.opnfv.org/gerrit/p/sdnvpn.git $WORKSPACE/sdnvpn
 . $WORKSPACE/sdnvpn/odl-pipeline/odl-pipeline-common.sh
 pushd $LIB
 ./post_process.sh
-popd
\ No newline at end of file
+popd
index 22e1daf..4e88678 100644 (file)
         stream: master
         branch: '{stream}'
         gs-pathname: ''
-    colorado: &colorado
-        stream: colorado
+        disabled: false
+    danube: &danube
+        stream: danube
         branch: 'stable/{stream}'
         gs-pathname: '/{stream}'
+        disabled: true
 #--------------------------------
 # POD, INSTALLER, AND BRANCH MAPPING
 #--------------------------------
 # CI POD's
 #--------------------------------
-#        colorado
+#        danube
 #--------------------------------
     pod:
         - armband-baremetal:
             slave-label: armband-baremetal
             installer: fuel
-            <<: *colorado
+            <<: *danube
         - armband-virtual:
             slave-label: armband-virtual
             installer: fuel
-            <<: *colorado
+            <<: *danube
 #--------------------------------
 #        master
 #--------------------------------
 #--------------------------------
 # NONE-CI POD's
 #--------------------------------
-#        colorado
+#        danube
 #--------------------------------
         - arm-pod2:
             slave-label: arm-pod2
             installer: fuel
-            <<: *colorado
+            <<: *danube
         - arm-pod3:
             slave-label: arm-pod3
             installer: fuel
-            <<: *colorado
+            <<: *danube
 #--------------------------------
 #        master
 #--------------------------------
@@ -97,6 +99,8 @@
 - job-template:
     name: '{installer}-{scenario}-{pod}-daily-{stream}'
 
+    disabled: '{obj:disabled}'
+
     concurrent: false
 
     properties:
 - trigger:
     name: 'fuel-os-odl_l2-nofeature-ha-armband-baremetal-master-trigger'
     triggers:
-        - timed: '0 0 * * 1'
+        - timed: '0 8 * * 1,3,5,7'
 - trigger:
     name: 'fuel-os-nosdn-nofeature-ha-armband-baremetal-master-trigger'
     triggers:
-        - timed: '0 0 * * 2'
+        - timed: '0 16 * * 2,7'
 - trigger:
     name: 'fuel-os-odl_l3-nofeature-ha-armband-baremetal-master-trigger'
     triggers:
-        - timed: '0 0 * * 3'
+        - timed: '0 16 * * 1,4,6'
 - trigger:
     name: 'fuel-os-odl_l2-bgpvpn-ha-armband-baremetal-master-trigger'
     triggers:
-        - timed: '0 0 * * 4'
+        - timed: '0 8 * * 2,4,6'
 - trigger:
     name: 'fuel-os-odl_l2-nofeature-noha-armband-baremetal-master-trigger'
     triggers:
-        - timed: '0 0 * * 5'
+        - timed: '0 16 * * 3,5'
 - trigger:
     name: 'fuel-os-odl_l2-sfc-ha-armband-baremetal-master-trigger'
     triggers:
         - timed: '0 0 * * 7'
 
 #----------------------------------------------------------------------
-# Enea Armband CI Baremetal Triggers running against colorado branch
+# Enea Armband CI Baremetal Triggers running against danube branch
 #----------------------------------------------------------------------
 - trigger:
-    name: 'fuel-os-odl_l2-nofeature-ha-armband-baremetal-colorado-trigger'
+    name: 'fuel-os-odl_l2-nofeature-ha-armband-baremetal-danube-trigger'
     triggers:
-        - timed: '0 8 * * 1,3,5,7'
+        - timed: '0 0 * * 1'
 - trigger:
-    name: 'fuel-os-nosdn-nofeature-ha-armband-baremetal-colorado-trigger'
+    name: 'fuel-os-nosdn-nofeature-ha-armband-baremetal-danube-trigger'
     triggers:
-        - timed: '0 16 * * 2,7'
+        - timed: '0 0 * * 2'
 - trigger:
-    name: 'fuel-os-odl_l2-bgpvpn-ha-armband-baremetal-colorado-trigger'
+    name: 'fuel-os-odl_l2-bgpvpn-ha-armband-baremetal-danube-trigger'
     triggers:
-        - timed: '0 8 * * 2,4,6'
+        - timed: '0 0 * * 4'
 - trigger:
-    name: 'fuel-os-odl_l3-nofeature-ha-armband-baremetal-colorado-trigger'
+    name: 'fuel-os-odl_l3-nofeature-ha-armband-baremetal-danube-trigger'
     triggers:
-        - timed: '0 16 * * 1,4,6'
+        - timed: '0 0 * * 3'
 - trigger:
-    name: 'fuel-os-odl_l2-nofeature-noha-armband-baremetal-colorado-trigger'
+    name: 'fuel-os-odl_l2-nofeature-noha-armband-baremetal-danube-trigger'
     triggers:
-        - timed: '0 16 * * 3,5'
+        - timed: '0 0 * * 5'
 - trigger:
-    name: 'fuel-os-odl_l2-sfc-ha-armband-baremetal-colorado-trigger'
+    name: 'fuel-os-odl_l2-sfc-ha-armband-baremetal-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'fuel-os-odl_l2-sfc-noha-armband-baremetal-colorado-trigger'
+    name: 'fuel-os-odl_l2-sfc-noha-armband-baremetal-danube-trigger'
     triggers:
         - timed: ''
 #---------------------------------------------------------------
     triggers:
         - timed: '0 2 * * 7'
 #--------------------------------------------------------------------
-# Enea Armband CI Virtual Triggers running against colorado branch
+# Enea Armband CI Virtual Triggers running against danube branch
 #--------------------------------------------------------------------
 - trigger:
-    name: 'fuel-os-odl_l2-nofeature-ha-armband-virtual-colorado-trigger'
+    name: 'fuel-os-odl_l2-nofeature-ha-armband-virtual-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'fuel-os-nosdn-nofeature-ha-armband-virtual-colorado-trigger'
+    name: 'fuel-os-nosdn-nofeature-ha-armband-virtual-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'fuel-os-odl_l3-nofeature-ha-armband-virtual-colorado-trigger'
+    name: 'fuel-os-odl_l3-nofeature-ha-armband-virtual-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'fuel-os-odl_l2-bgpvpn-ha-armband-virtual-colorado-trigger'
+    name: 'fuel-os-odl_l2-bgpvpn-ha-armband-virtual-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'fuel-os-odl_l2-nofeature-noha-armband-virtual-colorado-trigger'
+    name: 'fuel-os-odl_l2-nofeature-noha-armband-virtual-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'fuel-os-odl_l2-sfc-ha-armband-virtual-colorado-trigger'
+    name: 'fuel-os-odl_l2-sfc-ha-armband-virtual-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'fuel-os-odl_l2-sfc-noha-armband-virtual-colorado-trigger'
+    name: 'fuel-os-odl_l2-sfc-noha-armband-virtual-danube-trigger'
     triggers:
         - timed: ''
 #----------------------------------------------------------
     triggers:
         - timed: ''
 #---------------------------------------------------------------
-# Enea Armband POD 2 Triggers running against colorado branch
+# Enea Armband POD 2 Triggers running against danube branch
 #---------------------------------------------------------------
 - trigger:
-    name: 'fuel-os-odl_l2-nofeature-ha-arm-pod2-colorado-trigger'
+    name: 'fuel-os-odl_l2-nofeature-ha-arm-pod2-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'fuel-os-nosdn-nofeature-ha-arm-pod2-colorado-trigger'
+    name: 'fuel-os-nosdn-nofeature-ha-arm-pod2-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'fuel-os-odl_l3-nofeature-ha-arm-pod2-colorado-trigger'
+    name: 'fuel-os-odl_l3-nofeature-ha-arm-pod2-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'fuel-os-odl_l2-bgpvpn-ha-arm-pod2-colorado-trigger'
+    name: 'fuel-os-odl_l2-bgpvpn-ha-arm-pod2-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'fuel-os-odl_l2-nofeature-noha-arm-pod2-colorado-trigger'
+    name: 'fuel-os-odl_l2-nofeature-noha-arm-pod2-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'fuel-os-odl_l2-sfc-ha-arm-pod2-colorado-trigger'
+    name: 'fuel-os-odl_l2-sfc-ha-arm-pod2-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'fuel-os-odl_l2-sfc-noha-arm-pod2-colorado-trigger'
+    name: 'fuel-os-odl_l2-sfc-noha-arm-pod2-danube-trigger'
     triggers:
         - timed: ''
 #----------------------------------------------------------
     triggers:
         - timed: ''
 #---------------------------------------------------------------
-# Enea Armband POD 3 Triggers running against colorado branch
+# Enea Armband POD 3 Triggers running against danube branch
 #---------------------------------------------------------------
 - trigger:
-    name: 'fuel-os-odl_l2-nofeature-ha-arm-pod3-colorado-trigger'
+    name: 'fuel-os-odl_l2-nofeature-ha-arm-pod3-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'fuel-os-nosdn-nofeature-ha-arm-pod3-colorado-trigger'
+    name: 'fuel-os-nosdn-nofeature-ha-arm-pod3-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'fuel-os-odl_l3-nofeature-ha-arm-pod3-colorado-trigger'
+    name: 'fuel-os-odl_l3-nofeature-ha-arm-pod3-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'fuel-os-odl_l2-bgpvpn-ha-arm-pod3-colorado-trigger'
+    name: 'fuel-os-odl_l2-bgpvpn-ha-arm-pod3-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'fuel-os-odl_l2-nofeature-noha-arm-pod3-colorado-trigger'
+    name: 'fuel-os-odl_l2-nofeature-noha-arm-pod3-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'fuel-os-odl_l2-sfc-ha-arm-pod3-colorado-trigger'
+    name: 'fuel-os-odl_l2-sfc-ha-arm-pod3-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'fuel-os-odl_l2-sfc-noha-arm-pod3-colorado-trigger'
+    name: 'fuel-os-odl_l2-sfc-noha-arm-pod3-danube-trigger'
     triggers:
         - timed: ''
index e3853fa..981f509 100644 (file)
         - master:
             branch: '{stream}'
             gs-pathname: ''
-        - colorado:
+            disabled: false
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
+            disabled: true
 
 - job-template:
     name: 'armband-{installer}-build-daily-{stream}'
 
+    disabled: '{obj:disabled}'
+
     concurrent: false
 
     properties:
index 9bfe4f4..d5333eb 100644 (file)
@@ -12,7 +12,7 @@
             branch: '{stream}'
             gs-pathname: ''
             disabled: false
-        - colorado:
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
             disabled: false
index ae9f163..c3603a6 100644 (file)
@@ -15,7 +15,7 @@
             branch: '{stream}'
             gs-pathname: ''
             disabled: 'false'
-        - colorado:
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
             disabled: 'false'
index 41a80ad..e789b7f 100644 (file)
             branch: '{stream}'
             gs-pathname: ''
             disabled: false
-        - colorado:
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
-            disabled: false
+            disabled: true
 
 - job-template:
     name: 'barometer-verify-{stream}'
index 0054ddd..92ec2d8 100644 (file)
@@ -18,8 +18,8 @@
         gs-packagepath: '/{suite}'
         #docker tag used for version control
         docker-tag: 'latest'
-    colorado: &colorado
-        stream: colorado
+    danube: &danube
+        stream: danube
         branch: 'stable/{stream}'
         gs-pathname: '/{stream}'
         gs-packagepath: '/{stream}/{suite}'
             slave-label: compass-baremetal
             installer: compass
             auto-trigger-name: 'daily-trigger-disabled'
-            <<: *colorado
+            <<: *danube
         - virtual:
             slave-label: compass-virtual
             installer: compass
             auto-trigger-name: 'daily-trigger-disabled'
-            <<: *colorado
+            <<: *danube
 
 #--------------------------------
 #        None-CI PODs
@@ -62,7 +62,7 @@
        #     slave-label: '{pod}'
        #     installer: joid
        #     auto-trigger-name: 'daily-trigger-disabled'
-       #     <<: *colorado
+       #     <<: *danube
        # - orange-pod2:
        #     slave-label: '{pod}'
        #     installer: joid
index a461c6a..03e40dc 100644 (file)
@@ -20,7 +20,7 @@
             #This is used for different test suite dependent packages storage
             gs-packagepath: '/{suite}'
             disabled: false
-        - colorado:
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
             gs-packagepath: '/{stream}/{suite}'
index b4910cf..8800a15 100644 (file)
         stream: master
         branch: '{stream}'
         gs-pathname: ''
-#    colorado: &colorado
-#        stream: colorado
-#        branch: 'stable/{stream}'
-#        gs-pathname: '/{stream}'
+        disabled: false
+    danube: &danube
+        stream: danube
+        branch: 'stable/{stream}'
+        gs-pathname: '/{stream}'
+        disabled: true
 #--------------------------------
 # POD, INSTALLER, AND BRANCH MAPPING
 #--------------------------------
             slave-label: compass-virtual
             os-version: 'xenial'
             <<: *master
-#        - baremetal:
-#            slave-label: compass-baremetal
-#            os-version: 'trusty'
-#            <<: *colorado
-#        - virtual:
-#            slave-label: compass-virtual
-#            os-version: 'trusty'
-#            <<: *colorado
+        - baremetal:
+            slave-label: compass-baremetal
+            os-version: 'trusty'
+            <<: *danube
+        - virtual:
+            slave-label: compass-virtual
+            os-version: 'trusty'
+            <<: *danube
 #--------------------------------
 #        master
 #--------------------------------
@@ -80,6 +82,8 @@
 - job-template:
     name: 'compass-{scenario}-{pod}-daily-{stream}'
 
+    disabled: '{obj:disabled}'
+
     concurrent: true
 
     properties:
         - timed: ''
 
 - trigger:
-    name: 'compass-os-nosdn-nofeature-ha-baremetal-colorado-trigger'
+    name: 'compass-os-nosdn-nofeature-ha-baremetal-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'compass-os-odl_l2-nofeature-ha-baremetal-colorado-trigger'
+    name: 'compass-os-odl_l2-nofeature-ha-baremetal-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'compass-os-odl_l3-nofeature-ha-baremetal-colorado-trigger'
+    name: 'compass-os-odl_l3-nofeature-ha-baremetal-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'compass-os-onos-nofeature-ha-baremetal-colorado-trigger'
+    name: 'compass-os-onos-nofeature-ha-baremetal-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'compass-os-ocl-nofeature-ha-baremetal-colorado-trigger'
+    name: 'compass-os-ocl-nofeature-ha-baremetal-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'compass-os-onos-sfc-ha-baremetal-colorado-trigger'
+    name: 'compass-os-onos-sfc-ha-baremetal-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'compass-os-odl_l2-moon-ha-baremetal-colorado-trigger'
+    name: 'compass-os-odl_l2-moon-ha-baremetal-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'compass-os-nosdn-kvm-ha-baremetal-colorado-trigger'
+    name: 'compass-os-nosdn-kvm-ha-baremetal-danube-trigger'
     triggers:
         - timed: ''
 
         - timed: ''
 
 - trigger:
-    name: 'compass-os-nosdn-nofeature-ha-virtual-colorado-trigger'
+    name: 'compass-os-nosdn-nofeature-ha-virtual-danube-trigger'
     triggers:
         - timed: '0 21 * * *'
 - trigger:
-    name: 'compass-os-odl_l2-nofeature-ha-virtual-colorado-trigger'
+    name: 'compass-os-odl_l2-nofeature-ha-virtual-danube-trigger'
     triggers:
         - timed: '0 20 * * *'
 - trigger:
-    name: 'compass-os-odl_l3-nofeature-ha-virtual-colorado-trigger'
+    name: 'compass-os-odl_l3-nofeature-ha-virtual-danube-trigger'
     triggers:
         - timed: '0 19 * * *'
 - trigger:
-    name: 'compass-os-onos-nofeature-ha-virtual-colorado-trigger'
+    name: 'compass-os-onos-nofeature-ha-virtual-danube-trigger'
     triggers:
         - timed: '0 18 * * *'
 - trigger:
-    name: 'compass-os-ocl-nofeature-ha-virtual-colorado-trigger'
+    name: 'compass-os-ocl-nofeature-ha-virtual-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'compass-os-onos-sfc-ha-virtual-colorado-trigger'
+    name: 'compass-os-onos-sfc-ha-virtual-danube-trigger'
     triggers:
         - timed: '0 15 * * *'
 - trigger:
-    name: 'compass-os-odl_l2-moon-ha-virtual-colorado-trigger'
+    name: 'compass-os-odl_l2-moon-ha-virtual-danube-trigger'
     triggers:
         - timed: '0 14 * * *'
 - trigger:
-    name: 'compass-os-nosdn-kvm-ha-virtual-colorado-trigger'
+    name: 'compass-os-nosdn-kvm-ha-virtual-danube-trigger'
     triggers:
         - timed: ''
index 6cf35d6..6b40803 100644 (file)
         - master:
             branch: '{stream}'
             gs-pathname: ''
-        - colorado:
+            disabled: false
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
+            disabled: true
 
     jobs:
         - 'compass-build-iso-{stream}'
@@ -26,6 +28,8 @@
 - job-template:
     name: 'compass-build-iso-{stream}'
 
+    disabled: '{obj:disabled}'
+
     concurrent: true
 
     properties:
@@ -65,6 +69,8 @@
 
     description: "build ppa(using docker) in huawei lab"
 
+    disabled: '{obj:disabled}'
+
     node: huawei-build
 
     concurrent: true
index 2277e92..6ef5fbb 100644 (file)
             branch: '{stream}'
             gs-pathname: ''
             disabled: false
-        - colorado:
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
-            disabled: true
+            disabled: false
 
     distro:
         - 'xenial':
                   node-parameters: true
                   kill-phase-on: FAILURE
                   abort-all-job: true
-#        - multijob:
-#            name: smoke-test
-#            condition: SUCCESSFUL
-#            projects:
-#                - name: 'functest-compass-virtual-suite-{stream}'
-#                  current-parameters: true
-#                  predefined-parameters:
-#                    FUNCTEST_SUITE_NAME=healthcheck
-#                  node-parameters: true
-#                  kill-phase-on: NEVER
-#                  abort-all-job: true
+        - multijob:
+            name: smoke-test
+            condition: SUCCESSFUL
+            projects:
+                - name: 'functest-compass-virtual-suite-{stream}'
+                  current-parameters: true
+                  predefined-parameters:
+                    FUNCTEST_SUITE_NAME=healthcheck
+                  node-parameters: true
+                  kill-phase-on: NEVER
+                  abort-all-job: true
+                - name: 'functest-compass-virtual-suite-{stream}'
+                  current-parameters: true
+                  predefined-parameters:
+                    FUNCTEST_SUITE_NAME=vping_ssh
+                  node-parameters: true
+                  kill-phase-on: NEVER
+                  abort-all-job: true
 
 - job-template:
     name: 'compass-verify-{phase}-{distro}-{stream}'
index f997880..fccd53e 100644 (file)
@@ -15,7 +15,7 @@
             branch: '{stream}'
             gs-pathname: ''
             disabled: false
-        - colorado:
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
             disabled: false
index 9c736db..24f65a3 100644 (file)
@@ -15,7 +15,7 @@
             branch: '{stream}'
             gs-pathname: ''
             disabled: false
-        - colorado:
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
             disabled: false
index e225a12..ab9ef8f 100644 (file)
@@ -9,7 +9,7 @@
             gs-pathname: ''
             docker-tag: 'master'
             disabled: false
-        - colorado:
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
             docker-tag: 'stable'
index b653300..532fce6 100644 (file)
@@ -11,7 +11,7 @@
             branch: '{stream}'
             gs-pathname: ''
             disabled: false
-        - colorado:
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
             disabled: false
index 3eb581e..27e6635 100644 (file)
@@ -15,7 +15,7 @@
             branch: '{stream}'
             gs-pathname: ''
             disabled: false
-        - colorado:
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
             disabled: false
index f8fdeb8..4920bff 100644 (file)
@@ -14,8 +14,8 @@
         branch: '{stream}'
         gs-pathname: ''
         docker-tag: 'latest'
-    colorado: &colorado
-        stream: colorado
+    danube: &danube
+        stream: danube
         branch: 'stable/{stream}'
         gs-pathname: '/{stream}'
         docker-tag: 'stable'
         - baremetal:
             slave-label: fuel-baremetal
             installer: fuel
-            <<: *colorado
+            <<: *danube
         - virtual:
             slave-label: fuel-virtual
             installer: fuel
-            <<: *colorado
+            <<: *danube
 # joid CI PODs
         - baremetal:
             slave-label: joid-baremetal
         - baremetal:
             slave-label: joid-baremetal
             installer: joid
-            <<: *colorado
+            <<: *danube
         - virtual:
             slave-label: joid-virtual
             installer: joid
-            <<: *colorado
+            <<: *danube
 # compass CI PODs
         - baremetal:
             slave-label: compass-baremetal
         - baremetal:
             slave-label: compass-baremetal
             installer: compass
-            <<: *colorado
+            <<: *danube
         - virtual:
             slave-label: compass-virtual
             installer: compass
-            <<: *colorado
+            <<: *danube
 # apex CI PODs
         - apex-verify-master:
             slave-label: '{pod}'
             slave-label: '{pod}'
             installer: apex
             <<: *master
-        - apex-verify-colorado:
-            slave-label: '{pod}'
-            installer: apex
-            <<: *colorado
-        - apex-daily-colorado:
-            slave-label: '{pod}'
-            installer: apex
-            <<: *colorado
+#        - apex-verify-danube:
+#            slave-label: '{pod}'
+#            installer: apex
+#            <<: *danube
+#        - apex-daily-danube:
+#            slave-label: '{pod}'
+#            installer: apex
+#            <<: *danube
 # armband CI PODs
         - armband-baremetal:
             slave-label: armband-baremetal
         - armband-baremetal:
             slave-label: armband-baremetal
             installer: fuel
-            <<: *colorado
+            <<: *danube
         - armband-virtual:
             slave-label: armband-virtual
             installer: fuel
-            <<: *colorado
+            <<: *danube
 # netvirt 3rd party ci
         - virtual:
             slave-label: odl-netvirt-virtual
         - zte-pod1:
             slave-label: '{pod}'
             installer: fuel
-            <<: *colorado
+            <<: *danube
         - zte-pod2:
             slave-label: '{pod}'
             installer: fuel
         - zte-pod3:
             slave-label: '{pod}'
             installer: fuel
-            <<: *colorado
+            <<: *danube
         - arm-pod2:
             slave-label: '{pod}'
             installer: fuel
-            <<: *colorado
+            <<: *danube
         - arm-pod3:
             slave-label: '{pod}'
             installer: fuel
-            <<: *colorado
+            <<: *danube
 # PODs for verify jobs triggered by each patch upload
         - ool-virtual1:
             slave-label: '{pod}'
index 11bc364..6a0768c 100644 (file)
             branch: '{stream}'
             gs-pathname: ''
             disabled: false
-        - colorado:
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
-            disabled: true
+            disabled: false
 
 - job-template:
     name: 'functest-verify-{stream}'
index a30fb59..9dc8dec 100755 (executable)
@@ -12,3 +12,7 @@ else
 fi
 container_id=$(docker ps -a | grep opnfv/functest | awk '{print $1}' | head -1)
 docker exec $container_id $cmd
+
+ret_value=$?
+
+exit $ret_value
index 39a1b1b..9d08487 100644 (file)
             name: SSH_KEY
             default: /root/.ssh/id_rsa
             description: 'SSH key to use for Apex'
+- parameter:
+    name: 'intel-pod9-defaults'
+    parameters:
+        - node:
+            name: SLAVE_NAME
+            description: 'Slave name on Jenkins'
+            allowed-slaves:
+                - intel-pod9
+            default-slaves:
+                - intel-pod9
+        - string:
+            name: GIT_BASE
+            default: https://gerrit.opnfv.org/gerrit/$PROJECT
+            description: 'Git URL to use on this Jenkins Slave'
 - parameter:
     name: 'intel-pod3-defaults'
     parameters:
diff --git a/jjb/infra/bifrost-upload-logs.sh b/jjb/infra/bifrost-upload-logs.sh
new file mode 100755 (executable)
index 0000000..8e1982d
--- /dev/null
@@ -0,0 +1,52 @@
+#!/bin/bash
+# SPDX-license-identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2016 SUSE.
+# All rights reserved. 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
+##############################################################################
+
+set -eu
+set -o pipefail
+
+BIFROST_CONSOLE_LOG="${BUILD_URL}/consoleText"
+BIFROST_GS_URL=${BIFROST_LOG_URL/http:/gs:}
+BIFROST_COMPRESS_SUFFIX="tar.gz"
+BIFROST_COMPRESSED_LOGS=()
+
+echo "Uploading build logs to ${BIFROST_LOG_URL}"
+
+echo "Uploading console output"
+curl -L ${BIFROST_CONSOLE_LOG} | gsutil cp - ${BIFROST_GS_URL}/build_log.txt
+
+[[ ! -d ${WORKSPACE}/logs ]] && exit 0
+
+pushd ${WORKSPACE}/logs/ &> /dev/null
+for x in *.log; do
+    echo "Compressing and uploading $x"
+    tar -czf - $x | gsutil cp - ${BIFROST_GS_URL}/${x}.${BIFROST_COMPRESS_SUFFIX} 1>/dev/null
+    BIFROST_COMPRESSED_LOGS+=(${x}.${BIFROST_COMPRESS_SUFFIX})
+done
+popd &> /dev/null
+
+echo "Generating the landing page"
+cat > index.html << EOF
+<html>
+<h1>Build results for <a href=https://$GERRIT_NAME/#/c/$GERRIT_CHANGE_NUMBER>$GERRIT_NAME/$GERRIT_CHANGE_NUMBER</a></h1>
+<h2>Job: $JOB_NAME</h2>
+<ul>
+<li><a href=${BIFROST_LOG_URL}/build_log.txt>build_log.txt</a></li>
+EOF
+
+for x in ${BIFROST_COMPRESSED_LOGS[@]}; do
+    echo "<li><a href=${BIFROST_LOG_URL}/${x}>${x}</a></li>" >> index.html
+done
+
+cat >> index.html << EOF
+</ul>
+</html>
+EOF
+
+gsutil cp index.html ${BIFROST_GS_URL}/index.html
index 422a422..6232859 100644 (file)
         - label:
             name: SLAVE_LABEL
             default: 'infra-{type}-{distro}'
+        - string:
+            name: BIFROST_LOG_URL
+            default: 'http://artifacts.opnfv.org/cross-community-ci/openstack/bifrost/$GERRIT_NAME/$GERRIT_CHANGE_NUMBER/$GERRIT_PATCHSET_NUMBER/$JOB_NAME'
 
     scm:
         - git:
             branch: '{branch}'
 
     builders:
-        - description-setter:
-            description: "Built on $NODE_NAME"
-        - shell:
-            !include-raw-escape: ./bifrost-verify.sh
+        - bifrost-set-name
+        - bifrost-build
+        - bifrost-artifacts-upload
 
     publishers:
         - email:
                     exclude-no-code-change: 'false'
                 - comment-added-contains-event:
                     comment-contains-value: 'recheck'
-            custom-url: '* $JOB_NAME $BUILD_URL'
+            custom-url: '* $JOB_NAME $BIFROST_LOG_URL/index.html'
             silent-start: true
             projects:
               - project-compare-type: 'PLAIN'
                     comment-contains-value: 'recheck'
                 - comment-added-contains-event:
                     comment-contains-value: 'reverify'
+            custom-url: '* $JOB_NAME $BIFROST_LOG_URL/index.html'
             projects:
               - project-compare-type: 'ANT'
                 project-pattern: 'releng'
                   - compare-type: ANT
                     pattern: 'jjb/infra/**'
             readable-message: true
+
+#---------------------------
+# builder macros
+#---------------------------
+- builder:
+    name: bifrost-set-name
+    builders:
+        - description-setter:
+            description: "Built on $NODE_NAME"
+
+- builder:
+    name: bifrost-build
+    builders:
+        - shell:
+            !include-raw: ./bifrost-verify.sh
+
+- builder:
+    name: bifrost-artifacts-upload
+    builders:
+        - shell:
+            !include-raw: ./bifrost-upload-logs.sh
index db662ae..da54c52 100644 (file)
@@ -15,7 +15,7 @@
             branch: '{stream}'
             gs-pathname: ''
             disabled: false
-        - colorado:
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
             disabled: false
index 20429f1..91fcc88 100644 (file)
         branch: '{stream}'
         disabled: false
         gs-pathname: ''
-    colorado: &colorado
-        stream: colorado
+    danube: &danube
+        stream: danube
         branch: 'stable/{stream}'
-        disabled: false
+        disabled: true
         gs-pathname: '/{stream}'
 #--------------------------------
 # POD, INSTALLER, AND BRANCH MAPPING
             <<: *master
         - baremetal:
             slave-label: joid-baremetal
-            <<: *colorado
+            <<: *danube
         - virtual:
             slave-label: joid-virtual
-            <<: *colorado
+            <<: *danube
 #--------------------------------
 #        None-CI PODs
 #--------------------------------
     name: 'joid-os-nosdn-nofeature-ha-orange-pod1-master-trigger'
     triggers:
         - timed: ''
-# os-nosdn-nofeature-ha trigger - branch: colorado
+# os-nosdn-nofeature-ha trigger - branch: danube
 - trigger:
-    name: 'joid-os-nosdn-nofeature-ha-baremetal-colorado-trigger'
+    name: 'joid-os-nosdn-nofeature-ha-baremetal-danube-trigger'
     triggers:
         - timed: '0 2 * * *'
 - trigger:
-    name: 'joid-os-nosdn-nofeature-ha-virtual-colorado-trigger'
+    name: 'joid-os-nosdn-nofeature-ha-virtual-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'joid-os-nosdn-nofeature-ha-orange-pod1-colorado-trigger'
+    name: 'joid-os-nosdn-nofeature-ha-orange-pod1-danube-trigger'
     triggers:
         - timed: ''
 # os-odl_l2-nofeature-ha trigger - branch: master
     name: 'joid-os-odl_l2-nofeature-ha-orange-pod1-master-trigger'
     triggers:
         - timed: ''
-# os-odl_l2-nofeature-ha trigger - branch: colorado
+# os-odl_l2-nofeature-ha trigger - branch: danube
 - trigger:
-    name: 'joid-os-odl_l2-nofeature-ha-baremetal-colorado-trigger'
+    name: 'joid-os-odl_l2-nofeature-ha-baremetal-danube-trigger'
     triggers:
         - timed: '0 7 * * *'
 - trigger:
-    name: 'joid-os-odl_l2-nofeature-ha-virtual-colorado-trigger'
+    name: 'joid-os-odl_l2-nofeature-ha-virtual-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'joid-os-odl_l2-nofeature-ha-orange-pod1-colorado-trigger'
+    name: 'joid-os-odl_l2-nofeature-ha-orange-pod1-danube-trigger'
     triggers:
         - timed: ''
 # os-onos-nofeature-ha trigger - branch: master
     name: 'joid-os-onos-nofeature-ha-orange-pod1-master-trigger'
     triggers:
         - timed: ''
-# os-onos-nofeature-ha trigger - branch: colorado
+# os-onos-nofeature-ha trigger - branch: danube
 - trigger:
-    name: 'joid-os-onos-nofeature-ha-baremetal-colorado-trigger'
+    name: 'joid-os-onos-nofeature-ha-baremetal-danube-trigger'
     triggers:
         - timed: '0 12 * * *'
 - trigger:
-    name: 'joid-os-onos-nofeature-ha-virtual-colorado-trigger'
+    name: 'joid-os-onos-nofeature-ha-virtual-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'joid-os-onos-nofeature-ha-orange-pod1-colorado-trigger'
+    name: 'joid-os-onos-nofeature-ha-orange-pod1-danube-trigger'
     triggers:
         - timed: ''
 # os-onos-sfc-ha trigger - branch: master
     name: 'joid-os-onos-sfc-ha-orange-pod1-master-trigger'
     triggers:
         - timed: ''
-# os-onos-sfc-ha trigger - branch: colorado
+# os-onos-sfc-ha trigger - branch: danube
 - trigger:
-    name: 'joid-os-onos-sfc-ha-baremetal-colorado-trigger'
+    name: 'joid-os-onos-sfc-ha-baremetal-danube-trigger'
     triggers:
         - timed: '0 17 * * *'
 - trigger:
-    name: 'joid-os-onos-sfc-ha-virtual-colorado-trigger'
+    name: 'joid-os-onos-sfc-ha-virtual-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'joid-os-onos-sfc-ha-orange-pod1-colorado-trigger'
+    name: 'joid-os-onos-sfc-ha-orange-pod1-danube-trigger'
     triggers:
         - timed: ''
 # os-nosdn-lxd-noha trigger - branch: master
     name: 'joid-os-nosdn-lxd-noha-orange-pod1-master-trigger'
     triggers:
         - timed: ''
-# os-nosdn-lxd-noha trigger - branch: colorado
+# os-nosdn-lxd-noha trigger - branch: danube
 - trigger:
-    name: 'joid-os-nosdn-lxd-noha-baremetal-colorado-trigger'
+    name: 'joid-os-nosdn-lxd-noha-baremetal-danube-trigger'
     triggers:
         - timed: '0 22 * * *'
 - trigger:
-    name: 'joid-os-nosdn-lxd-noha-virtual-colorado-trigger'
+    name: 'joid-os-nosdn-lxd-noha-virtual-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'joid-os-nosdn-lxd-noha-orange-pod1-colorado-trigger'
+    name: 'joid-os-nosdn-lxd-noha-orange-pod1-danube-trigger'
     triggers:
         - timed: ''
 # os-nosdn-lxd-ha trigger - branch: master
     name: 'joid-os-nosdn-lxd-ha-orange-pod1-master-trigger'
     triggers:
         - timed: ''
-# os-nosdn-lxd-ha trigger - branch: colorado
+# os-nosdn-lxd-ha trigger - branch: danube
 - trigger:
-    name: 'joid-os-nosdn-lxd-ha-baremetal-colorado-trigger'
+    name: 'joid-os-nosdn-lxd-ha-baremetal-danube-trigger'
     triggers:
         - timed: '0 10 * * *'
 - trigger:
-    name: 'joid-os-nosdn-lxd-ha-virtual-colorado-trigger'
+    name: 'joid-os-nosdn-lxd-ha-virtual-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'joid-os-nosdn-lxd-ha-orange-pod1-colorado-trigger'
+    name: 'joid-os-nosdn-lxd-ha-orange-pod1-danube-trigger'
     triggers:
         - timed: ''
 # os-nosdn-nofeature-noha trigger - branch: master
     name: 'joid-os-nosdn-nofeature-noha-orange-pod1-master-trigger'
     triggers:
         - timed: ''
-# os-nosdn-nofeature-noha trigger - branch: colorado
+# os-nosdn-nofeature-noha trigger - branch: danube
 - trigger:
-    name: 'joid-os-nosdn-nofeature-noha-baremetal-colorado-trigger'
+    name: 'joid-os-nosdn-nofeature-noha-baremetal-danube-trigger'
     triggers:
         - timed: '0 4 * * *'
 - trigger:
-    name: 'joid-os-nosdn-nofeature-noha-virtual-colorado-trigger'
+    name: 'joid-os-nosdn-nofeature-noha-virtual-danube-trigger'
     triggers:
         - timed: ''
 - trigger:
-    name: 'joid-os-nosdn-nofeature-noha-orange-pod1-colorado-trigger'
+    name: 'joid-os-nosdn-nofeature-noha-orange-pod1-danube-trigger'
     triggers:
         - timed: ''
index 516e822..6e821a5 100644 (file)
@@ -12,7 +12,7 @@
             branch: '{stream}'
             gs-pathname: ''
             disabled: false
-        - colorado:
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
             disabled: false
@@ -54,7 +54,7 @@
             use-build-blocker: true
             blocking-jobs:
                 - 'joid-verify-master'
-                - 'joid-verify-colorado'
+                - 'joid-verify-danube'
             block-level: 'NODE'
 
     scm:
index 8ab821c..60f8de8 100644 (file)
@@ -8,7 +8,7 @@
             branch: '{stream}'
             gs-pathname: ''
             disabled: false
-        - colorado:
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
             disabled: false
index cfe9b2d..6b64069 100644 (file)
@@ -18,7 +18,7 @@
             gs-pathname: ''
             disabled: false
             timed: '@midnight'
-        - colorado:
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
             disabled: false
index 71d6a41..b820ecb 100644 (file)
@@ -14,7 +14,7 @@
             branch: '{stream}'
             gs-pathname: ''
             disabled: false
-        - colorado:
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
             disabled: false
index 07bcdc5..d3a8454 100644 (file)
             branch: '{stream}'
             gs-pathname: ''
             disabled: false
-        - colorado:
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
-            disabled: false
+            disabled: true
 
     project: 'onosfw'
 
index d8cfabc..0d4c461 100644 (file)
             branch: '{stream}'
             gs-pathname: ''
             disabled: false
-        - colorado:
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
-            disabled: false
+            disabled: true
 
 ########################
 # job templates
index a5b8fd8..9b2adf3 100644 (file)
             branch: '{stream}'
             gs-pathname: ''
             disabled: false
-        - colorado:
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
-            disabled: false
+            disabled: true
 
 - job-template:
     name: 'ovsnfv-verify-{stream}'
index 50c7d25..de5587e 100644 (file)
@@ -15,7 +15,7 @@
             branch: '{stream}'
             gs-pathname: ''
             disabled: false
-        - colorado:
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
             disabled: false
index 1a605d3..dbf1b92 100644 (file)
@@ -15,7 +15,7 @@
             branch: '{stream}'
             gs-pathname: ''
             disabled: false
-        - colorado:
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
             disabled: false
index c0066bf..fba5741 100644 (file)
@@ -15,7 +15,7 @@
             branch: '{stream}'
             gs-pathname: ''
             disabled: false
-        - colorado:
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
             disabled: false
index 38e1814..a0af6f4 100644 (file)
@@ -15,7 +15,7 @@
             branch: '{stream}'
             gs-pathname: ''
             disabled: false
-        - colorado:
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
             disabled: false
index be04b15..02dfb75 100644 (file)
         stream: master
         branch: '{stream}'
         disabled: false
-    colorado: &colorado
-        stream: colorado
+    danube: &danube
+        stream: danube
         branch: 'stable/{stream}'
-        disabled: false
+        disabled: true
 
     project:
         # projects with jobs for master
             <<: *master
         # projects with jobs for stable
         - 'bottlenecks':
-            <<: *colorado
+            <<: *danube
         - 'functest':
-            <<: *colorado
+            <<: *danube
         - 'storperf':
-            <<: *colorado
+            <<: *danube
         - 'yardstick':
-            <<: *colorado
+            <<: *danube
 
     jobs:
         - '{project}-docker-build-push-{stream}'
index cd70a80..f6092ee 100644 (file)
             doc-version: ''
             gs-pathname: ''
             disabled: false
-        - colorado:
+        - danube:
             branch: 'stable/{stream}'
             doc-version: '3.0'
             gs-pathname: '/{stream}/{doc-version}'
-            disabled: false
+            disabled: true
 
 ########################
 # job templates
index a96fce6..590790f 100644 (file)
@@ -16,7 +16,7 @@
             branch: '{stream}'
             gs-pathname: ''
             disabled: false
-        - colorado:
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
             disabled: false
index 9139394..3762885 100644 (file)
@@ -63,7 +63,7 @@
     name: testapi-doc-build
     builders:
         - shell: |
-            python ./utils/test/testapi/htmlize/htmlize.py -o ${WORKSPACE}/
+            bash ./utils/test/testapi/htmlize/doc-build.sh
 
 - builder:
     name: start-testapi-server
index 1a2eb5e..8f42f8c 100644 (file)
             branch: '{stream}'
             gs-pathname: ''
             disabled: false
-        - colorado:
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
-            disabled: false
+            disabled: true
 
 - job-template:
     name: 'storperf-verify-{stream}'
     # Required Variables:
     #     stream:    branch with - in place of / (eg. stable)
     #     branch:    branch (eg. stable)
-    node: opnfv-build-ubuntu
-
-    disabled: true
+    disabled: '{obj:disabled}'
 
     parameters:
         - project-parameter:
             project: '{project}'
         - gerrit-parameter:
             branch: '{branch}'
+        - 'intel-pod9-defaults'
 
     scm:
         - git-scm
index 54e8338..c129f49 100644 (file)
@@ -11,7 +11,7 @@
             branch: '{stream}'
             gs-pathname: ''
             disabled: false
-        - colorado:
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
             disabled: false
index fe8ea53..4cfe5d9 100644 (file)
             gs-pathname: ''
             disabled: false
             slave-label: 'opnfv-build-ubuntu'
-        - colorado:
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
-            disabled: false
+            disabled: true
             slave-label: 'intel-pod3'
 
 - job-template:
index 1ad5417..ed2dcca 100644 (file)
@@ -14,8 +14,8 @@
         branch: '{stream}'
         gs-pathname: ''
         docker-tag: 'latest'
-    colorado: &colorado
-        stream: colorado
+    danube: &danube
+        stream: danube
         branch: 'stable/{stream}'
         gs-pathname: '{stream}'
         docker-tag: 'stable'
             slave-label: fuel-baremetal
             installer: fuel
             auto-trigger-name: 'daily-trigger-disabled'
-            <<: *colorado
+            <<: *danube
         - virtual:
             slave-label: fuel-virtual
             installer: fuel
             auto-trigger-name: 'daily-trigger-disabled'
-            <<: *colorado
+            <<: *danube
 # armband CI PODs
         - armband-baremetal:
             slave-label: armband-baremetal
             slave-label: armband-baremetal
             installer: fuel
             auto-trigger-name: 'daily-trigger-disabled'
-            <<: *colorado
+            <<: *danube
         - armband-virtual:
             slave-label: armband-virtual
             installer: fuel
             auto-trigger-name: 'daily-trigger-disabled'
-            <<: *colorado
+            <<: *danube
 # joid CI PODs
         - baremetal:
             slave-label: joid-baremetal
             slave-label: joid-baremetal
             installer: joid
             auto-trigger-name: 'daily-trigger-disabled'
-            <<: *colorado
+            <<: *danube
         - virtual:
             slave-label: joid-virtual
             installer: joid
             auto-trigger-name: 'daily-trigger-disabled'
-            <<: *colorado
+            <<: *danube
 
 # compass CI PODs
         - baremetal:
             slave-label: compass-baremetal
             installer: compass
             auto-trigger-name: 'daily-trigger-disabled'
-            <<: *colorado
+            <<: *danube
         - virtual:
             slave-label: compass-virtual
             installer: compass
             auto-trigger-name: 'daily-trigger-disabled'
-            <<: *colorado
+            <<: *danube
 #--------------------------------
 #    Installers not using labels
 #            CI PODs
             slave-label: '{pod}'
             installer: apex
             auto-trigger-name: 'daily-trigger-disabled'
-            <<: *colorado
+            <<: *danube
 #--------------------------------
 #        None-CI PODs
 #--------------------------------
             slave-label: '{pod}'
             installer: fuel
             auto-trigger-name: 'daily-trigger-disabled'
-            <<: *colorado
+            <<: *danube
         - zte-pod2:
             slave-label: '{pod}'
             installer: fuel
             slave-label: '{pod}'
             installer: fuel
             auto-trigger-name: 'daily-trigger-disabled'
-            <<: *colorado
+            <<: *danube
         - arm-pod2:
             slave-label: '{pod}'
             installer: fuel
             slave-label: '{pod}'
             installer: fuel
             auto-trigger-name: 'daily-trigger-disabled'
-            <<: *colorado
+            <<: *danube
         - arm-pod3:
             slave-label: '{pod}'
             installer: fuel
             slave-label: '{pod}'
             installer: fuel
             auto-trigger-name: 'daily-trigger-disabled'
-            <<: *colorado
+            <<: *danube
         - orange-pod2:
             slave-label: '{pod}'
             installer: joid
index 48c9d9d..a54750e 100644 (file)
@@ -16,7 +16,7 @@
             branch: '{stream}'
             gs-pathname: ''
             disabled: false
-        - colorado:
+        - danube:
             branch: 'stable/{stream}'
             gs-pathname: '/{stream}'
             disabled: false
index a69cedd..ed83488 100644 (file)
@@ -13,3 +13,12 @@ VERSIONS = ['arno', 'brahmaputra', 'colorado', 'danube']
 EXIT_OK = 0
 EXIT_RUN_ERROR = -1
 EXIT_PUSH_TO_TEST_DB_ERROR = -2
+
+class Constants(object):
+    INSTALLERS = ['apex', 'fuel', 'compass', 'joid', "daisy"]
+    VERSIONS = ['arno', 'brahmaputra', 'colorado', 'danube']
+
+    EX_OK = 0
+    EX_RUN_ERROR = -1
+    EX_TEST_FAIL = -2
+    EX_PUSH_RESULT_FAIL = -3
index 3667dbe..856f69a 100755 (executable)
@@ -38,6 +38,16 @@ verify_connectivity() {
     error "Can not talk to $ip."
 }
 
+
+swap_to_public() {
+    if [ "$1" != "" ]; then
+        info "Exchanging keystone public IP in rc file to $public_ip"
+        sed -i  "/OS_AUTH_URL/c\export OS_AUTH_URL=\'$public_ip'" $dest_path
+        sed -i 's/internalURL/publicURL/g' $dest_path
+    fi
+}
+
+
 : ${DEPLOY_TYPE:=''}
 
 #Get options
@@ -151,6 +161,7 @@ elif [ "$installer_type" == "compass" ]; then
             | grep identity | awk '{print $14}')
     fi
     info "public_ip: $public_ip"
+    swap_to_public $public_ip
 
 
 elif [ "$installer_type" == "joid" ]; then
index 913748f..61a6c32 100644 (file)
@@ -27,7 +27,9 @@ node_list=(\
 'ericsson-virtual1' 'ericsson-virtual2'  'ericsson-virtual3' \
 'ericsson-virtual4' 'ericsson-virtual5' \
 'arm-pod1' 'arm-pod3' \
-'huawei-pod1' 'huawei-pod2' 'huawei-virtual1' 'huawei-virtual2' 'huawei-virtual3' 'huawei-virtual4')
+'huawei-pod1' 'huawei-pod2' 'huawei-pod3' 'huawei-pod4' 'huawei-pod5' \
+'huawei-pod6' 'huawei-pod7' \
+'huawei-virtual1' 'huawei-virtual2' 'huawei-virtual3' 'huawei-virtual4')
 
 
 if [[ ! " ${node_list[@]} " =~ " ${testbed} " ]]; then
diff --git a/utils/test/declaration/addtestcase.php b/utils/test/declaration/addtestcase.php
deleted file mode 100644 (file)
index 0e5bed6..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-function sendPostData($url, $post){
-  $ch = curl_init($url);
-  $headers= array('Accept: application/json','Content-Type: application/json');
-  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
-  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
-  curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
-  curl_setopt($ch, CURLOPT_POSTFIELDS,$post);
-  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
-  $result = curl_exec($ch);
-  curl_close($ch);
-  return $result;
-}
-
-if(isset($_REQUEST['url'])){
-   $url=$_REQUEST['url'];
-}
-if(isset($_REQUEST['name'])){
-   $name=$_REQUEST['name'];
-}
-if(isset($_REQUEST['desc'])){
-   $desc=$_REQUEST['desc'];
-}
-if(isset($_REQUEST['project'])){
-
-   $url_send=$_REQUEST['project'];
-   $url_send="http://testresults.opnfv.org:80/test/api/v1/projects/".$url_send."/cases";
-   $str_data=array('url'=>$url,'name'=>$name,'description'=>$desc);
-   $str_data=json_encode($str_data);
-   $res=sendPostData($url_send, $str_data);
-   echo '<div class="alert alert-success"> <strong>Success!</strong> Added New test Case  </div>';
-
-}else{
-
-   echo '<div class="alert alert-danger"> <strong>Error!</strong> Failed to Add New test Case  </div>';
-
-}
-
-?>
-
diff --git a/utils/test/declaration/index.php b/utils/test/declaration/index.php
deleted file mode 100644 (file)
index b2c5d03..0000000
+++ /dev/null
@@ -1,221 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-  <title>OPNFV DashBoard</title>
-  <meta charset="utf-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
-  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
-  <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
-<script>
-$(function() {
-
-  $('form#new_testcase').on('submit', function(){
-    var selected = $('select#sel_pro2').find("option:selected").val();
-    var uri = $('input#uri').val();
-    var name = $('input#name').val();
-    var desc = $('textarea#desc').val();
-    var new_url="http://testresults.opnfv.org:80/test/api/v1/projects/"+selected+"/cases";
-    $.post("addtestcase.php", {"project":selected,"url":uri,"name":name,"description":desc}, function(result){
-        $("div#result").html(result);
-    });
-  });
-
-});
-
-$(function() {
-
-  $('select#sel1').on('change', function(){
-    var selected = $(this).find("option:selected").val();
-    var new_url="http://testresults.opnfv.org:80/test/api/v1/projects/"+selected+"/cases";
-    //$.post('testcases.php', {project: selected});
-    console.log(selected);
-    $.post("testcases.php", {project: selected}, function(result){
-        $("div#4a").html(result);
-    });
-
-  });
-
-});
-</script>
-<style>
-body {
-  padding : 10px ;
-}
-
-#exTab1 .tab-content {
-  color : black;
-  padding : 5px 15px;
-}
-
-#exTab2 h3 {
-  color : white;
-  background-color: #428bca;
-  padding : 5px 15px;
-}
-
-/* remove border radius for the tab */
-
-#exTab1 .nav-pills > li > a {
-  border-radius: 0;
-}
-
-/* change border radius for the tab , apply corners on top*/
-
-#exTab3 .nav-pills > li > a {
-  border-radius: 4px 4px 0 0 ;
-}
-
-#exTab3 .tab-content {
-  color : white;
-  background-color: #428bca;
-  padding : 5px 15px;
-}
-
-</style>
-</head>
-<body>
-
-<div class="container">
-  <h1>OPNFV DASHBOARD: </h1></div>
-<div id="exTab1" class="container">
-  <ul class="nav nav-pills">
-    <li class="active">
-      <a href="#1a" data-toggle="tab">PODS</a>
-    </li>
-    <li><a href="#2a" data-toggle="tab">PROJECTS</a>
-    </li>
-    <li><a href="#3a" data-toggle="tab">TESTCASES</a>
-    </li>
-    <li><a href="#5a" data-toggle="tab">ADD TESTCASE</a>
-    </li>
-    <li><a href="http://testresults.opnfv.org/kibana_dashboards/" >RESULTS</a>
-    </li>
-  </ul>
-  <div class="tab-content clearfix">
-    <div class="tab-pane active" id="1a">
-       <table class="table table-striped">
-       <thead>
-    <tr>
-      <th>#</th>
-      <th>Pod Name</th>
-      <th>Creation Date</th>
-      <th>Role</th>
-      <th>Mode</th>
-    </tr>
-  </thead>
-       <?php
-       $url = "http://testresults.opnfv.org:80/test/api/v1/pods";
-        $response = file_get_contents($url);
-       $data = json_decode($response);
-       $pods = $data->pods;
-       $i=1;
-       foreach ( $pods as $pod ){
-
-               $column_str="";
-               $column_str="<tr><td>".$i."</td>";
-               $column_str=$column_str."<td>".$pod->name."</td>";
-               $column_str= $column_str."<td>".$pod->creation_date."</td>";
-               $column_str= $column_str."<td>".$pod->role."</td>";
-               $column_str= $column_str."<td>".$pod->mode."</td>";
-               $column_str= $column_str."</tr>";
-               echo $column_str;
-               $i=$i+1;
-       }
-       ?>
-       </table>
-    </div>
-    <div class="tab-pane" id="2a">
- <table class="table table-striped">
-        <thead>
-    <tr>
-      <th>#</th>
-      <th>Project</th>
-      <th>Creation Date</th>
-    </tr>
-  </thead>
- <?php
-        $url = "http://testresults.opnfv.org:80/test/api/v1/projects";
-        $response = file_get_contents($url);
-        $data = json_decode($response);
-       $projects=$data->projects;
-       $i=0;
-       foreach ( $projects as $project ){
-
-                $column_str="";
-                $column_str="<tr><td>".$i."</td>";
-                $column_str=$column_str."<td>".$project->name."</td>";
-                $column_str= $column_str."<td>".$project->creation_date."</td>";
-                $column_str= $column_str."</tr>";
-                echo $column_str;
-                $i=$i+1;
-        }
-?>
-       </table>
-    </div>
-    <div class="tab-pane" id="3a">
-<div class="form-group">
-  <label for="sel1">Select list:</label>
-  <select class="form-control" id="sel1">
-<?php
-       $url = "http://testresults.opnfv.org:80/test/api/v1/projects";
-        $response = file_get_contents($url);
-        $data = json_decode($response);
-        $projects=$data->projects;
-        $i=0;
-       $firstvalue=$projects[0]->name;
-        foreach ( $projects as $project ){
-                $column_str="";
-                $column_str="<option>".$project->name."</option>";
-                echo $column_str;
-        }
-
-?>
-</select>
-</div>
-    <div class="tab-pane" id="4a">
-       <?php
-               require "testcases.php";
-       ?>
-    </div>
-    </div>
-    <div class="tab-pane" id="5a">
-       <form role="form" id="new_testcase">
-<div class="form-group">
-  <label for="sel1">Select list:</label>
-  <select class="form-control" id="sel_pro2">
-<?php
-        $url = "http://testresults.opnfv.org:80/test/api/v1/projects";
-        $response = file_get_contents($url);
-        $data = json_decode($response);
-        $projects=$data->projects;
-        $i=0;
-        $firstvalue=$projects[0]->name;
-        foreach ( $projects as $project ){
-                $column_str="";
-                $column_str="<option>".$project->name."</option>";
-                echo $column_str;
-        }
-?>
-</select>
-</div>
-<div class="form-group"> <!-- Name field -->
-               <label class="control-label " for="name">TestCase URI</label>
-               <input class="form-control" id="uri" name="uri" type="text"/>
-       </div>
-<div class="form-group"> <!-- Name field -->
-               <label class="control-label " for="name">TestCase Name</label>
-               <input class="form-control" id="name" name="name" type="text"/>
-       </div>
-<div class="form-group"> <!-- Name field -->
-               <label class="control-label " for="name">Description</label>
-       <textarea class="form-control" rows="5" id="desc"></textarea>
-       </div>
-  <button type="submit" class="btn btn-default">Submit</button>
-</form>
-    </div>
-<div class="container" id="result"></div>
-  </div>
-</div>
-</body>
-</html>
diff --git a/utils/test/declaration/testcases.php b/utils/test/declaration/testcases.php
deleted file mode 100644 (file)
index 2064580..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-       if(isset($_REQUEST['project'])){
-           $selected=$_REQUEST['project'];
-       }
-       else{
-            $url = "http://testresults.opnfv.org:80/test/api/v1/projects";
-            $response = file_get_contents($url);
-            $data = json_decode($response);
-            $projects=$data->projects;
-           $selected=$projects[0]->name;
-       }
-       $new_url="http://testresults.opnfv.org:80/test/api/v1/projects/".$selected."/cases";
-        $response = file_get_contents($new_url);
-        $data = json_decode($response);
-        $testcases=$data->testcases;
-        $i=0;
-        $column_str="";
-        $column_str=$column_str."<table class=\"table table-striped\"><tr>";
-        $column_str=$column_str."<th>#</th><th>Test Case Name</th>";
-        $column_str=$column_str."<th>Creation Date</th>";
-        $column_str=$column_str."<th>Description</th></tr>";
-        foreach ( $testcases as $testcase ){
-               $i=$i+1;
-               $column_str=$column_str."<tr>";
-               $column_str=$column_str."<td>".$i."</td>";
-               $column_str=$column_str."<td>".$testcase->name."</td>";
-               $column_str=$column_str."<td>".$testcase->creation_date."</td>";
-               $column_str=$column_str."<td>".$testcase->description."</td>";
-               $column_str=$column_str."</tr>";
-
-       }
-        $column_str=$column_str."</table>";
-        echo $column_str;
-
-?>
-
index b0272e6..86513e0 100644 (file)
@@ -48,5 +48,5 @@ RUN git clone https://gerrit.opnfv.org/gerrit/releng /home/releng
 
 WORKDIR /home/releng/utils/test/testapi/
 RUN pip install -r requirements.txt
-RUN python setup.py install
+RUN bash install.sh
 CMD ["bash", "docker/start-server.sh"]
diff --git a/utils/test/testapi/htmlize/doc-build.sh b/utils/test/testapi/htmlize/doc-build.sh
new file mode 100644 (file)
index 0000000..e492c97
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+# Create virtual environment
+source $WORKSPACE/testapi_venv/bin/activate
+
+# Install Pre-requistics
+pip install requests
+
+python ./utils/test/testapi/htmlize/htmlize.py -o ${WORKSPACE}/
index d24ae05..dc3aa86 100644 (file)
@@ -13,5 +13,3 @@ if [ $proc_number -gt 0 ]; then
     echo "Kill opnfv-testapi server $procs"
     ps -ef | grep opnfv-testapi | grep -v grep | awk '{print $2}' | xargs kill -kill &>/dev/null
 fi
-
-deactivate
index 67158f2..e79ac56 100644 (file)
@@ -9,9 +9,6 @@
 virtualenv testapi_venv
 source testapi_venv/bin/activate
 
-# Install Pre-requisites
-pip install requests
-
 # Swgger Codegen Tool
 url="http://repo1.maven.org/maven2/io/swagger/swagger-codegen-cli/2.2.1/swagger-codegen-cli-2.2.1.jar"
 
index 383565d..4cf1988 100644 (file)
@@ -7,19 +7,21 @@ export PATH=$PATH:/usr/local/bin/
 
 project=$PROJECT
 workspace=$WORKSPACE
-artifact_dir="functest/docs"
+artifact_dir="$project/docs"
 
 set +e
 gsutil&>/dev/null
 if [ $? != 0 ]; then
     echo "Not possible to push results to artifact: gsutil not installed"
+    exit 1
 else
     gsutil ls gs://artifacts.opnfv.org/"$project"/ &>/dev/null
     if [ $? != 0 ]; then
         echo "Not possible to push results to artifact: gsutil not installed."
+        exit 1
     else
         echo "Uploading document to artifact $artifact_dir"
         gsutil cp "$workspace"/index.html gs://artifacts.opnfv.org/"$artifact_dir"/testapi.html >/dev/null 2>&1
-        echo "Document can be found at http://artifacts.opnfv.org/functest/docs/testapi.html"
+        echo "Document can be found at http://artifacts.opnfv.org/releng/docs/testapi.html"
     fi
 fi
index 75754d8..7bf3d5d 100644 (file)
@@ -1,3 +1,4 @@
+from opnfv_testapi.common.constants import HTTP_FORBIDDEN
 from opnfv_testapi.resources.handlers import GenericApiHandler
 from opnfv_testapi.resources.scenario_models import Scenario
 from opnfv_testapi.tornado_swagger import swagger
@@ -29,10 +30,23 @@ class ScenariosCLHandler(GenericScenarioHandler):
         """
             @description: create a new scenario by name
             @param body: scenario to be created
-            @type body: L{string}
+            @type body: L{ScenarioCreateRequest}
+            @in body: body
             @rtype: L{CreateResponse}
+            @return 200: scenario is created.
+            @raise 403: scenario already exists
+            @raise 400:  body or name not provided
         """
-        pass
+        def query(data):
+            return {'name': data.name}
+
+        def error(data):
+            message = '{} already exists as a scenario'.format(data.name)
+            return HTTP_FORBIDDEN, message
+
+        miss_checks = ['name']
+        db_checks = [(self.table, False, query, error)]
+        self._create(miss_checks=miss_checks, db_checks=db_checks)
 
 
 class ScenarioGURHandler(GenericScenarioHandler):
index 0748a37..b4bb363 100644 (file)
@@ -60,6 +60,17 @@ class ScenarioInstaller(models.ModelBase):
         self.versions = versions if versions else list()
 
 
+@swagger.model()
+class ScenarioCreateRequest(models.ModelBase):
+    """
+        @property installers:
+        @ptype installers: C{list} of L{ScenarioInstaller}
+    """
+    def __init__(self, name='', installers=None):
+        self.name = name
+        self.installers = installers if installers else list()
+
+
 @swagger.model()
 class Scenario(models.ModelBase):
     """
@@ -69,7 +80,7 @@ class Scenario(models.ModelBase):
     def __init__(self, name='', create_date='', _id='', installers=None):
         self.name = name
         self._id = _id
-        self.create_date = create_date
+        self.creation_date = create_date
         self.installers = installers if installers else list()
 
 
diff --git a/utils/test/testapi/opnfv_testapi/tests/unit/scenario-create.json b/utils/test/testapi/opnfv_testapi/tests/unit/scenario-create.json
new file mode 100644 (file)
index 0000000..eba8b6c
--- /dev/null
@@ -0,0 +1,38 @@
+{
+  "name": "nosdn-nofeature-ha",
+  "installers":
+  [
+    {
+      "installer": "apex",
+      "versions":
+      [
+        {
+          "owner": "Luke",
+          "version": "master",
+          "projects":
+          [
+            {
+              "project": "functest",
+              "customs": [ "healthcheck", "vping_ssh"],
+              "scores":
+              [
+                {
+                  "date": "2017-01-08 22:46:44",
+                  "score": "12/14"
+                }
+
+              ],
+              "trust_indicators": []
+            },
+            {
+              "project": "yardstick",
+              "customs": [],
+              "scores": [],
+              "trust_indicators": []
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
index ff1a193..9343ab2 100644 (file)
@@ -47,11 +47,11 @@ class TestBase(AsyncHTTPTestCase):
         return self.create_help(self.basePath, req, *args)
 
     def create_help(self, uri, req, *args):
-        if req:
-            req = req.format()
+        if req and not isinstance(req, str):
+            req = json.dumps(req.format())
         res = self.fetch(self._update_uri(uri, *args),
                          method='POST',
-                         body=json.dumps(req),
+                         body=req if req else json.dumps(None),
                          headers=self.headers)
 
         return self._get_return(res, self.create_res)
@@ -123,9 +123,17 @@ class TestBase(AsyncHTTPTestCase):
         self.assertIn(self.basePath, body.href)
 
     def assert_create_body(self, body, req=None, *args):
+        import inspect
         if not req:
             req = self.req_d
-        new_args = args + tuple([req.name])
+        resource_name = ''
+        if inspect.isclass(req):
+            resource_name = req.name
+        elif isinstance(req, dict):
+            resource_name = req['name']
+        elif isinstance(req, str):
+            resource_name = json.loads(req)['name']
+        new_args = args + tuple([resource_name])
         self.assertIn(self._get_uri(*new_args), body.href)
 
     @staticmethod
@@ -134,3 +142,4 @@ class TestBase(AsyncHTTPTestCase):
         fake_pymongo.projects.clear()
         fake_pymongo.testcases.clear()
         fake_pymongo.results.clear()
+        fake_pymongo.scenarios.clear()
diff --git a/utils/test/testapi/opnfv_testapi/tests/unit/test_scenario.py b/utils/test/testapi/opnfv_testapi/tests/unit/test_scenario.py
new file mode 100644 (file)
index 0000000..8e82781
--- /dev/null
@@ -0,0 +1,55 @@
+import json
+import os
+
+from opnfv_testapi.common.constants import HTTP_BAD_REQUEST
+from opnfv_testapi.common.constants import HTTP_FORBIDDEN
+from opnfv_testapi.common.constants import HTTP_OK
+from opnfv_testapi.resources.scenario_models import ScenarioCreateRequest
+from test_testcase import TestBase
+
+
+class TestScenarioBase(TestBase):
+    def setUp(self):
+        super(TestScenarioBase, self).setUp()
+        self.basePath = '/api/v1/scenarios'
+        self.load_request('scenario-create.json')
+
+    def tearDown(self):
+        pass
+
+    def assert_body(self, project, req=None):
+        pass
+
+    def load_request(self, f_req):
+        with open(os.path.join(os.path.dirname(__file__), f_req), 'r') as f:
+            self.req_d = json.dumps(json.load(f))
+            f.close()
+
+
+class TestScenarioCreate(TestScenarioBase):
+    def test_withoutBody(self):
+        (code, body) = self.create()
+        self.assertEqual(code, HTTP_BAD_REQUEST)
+
+    def test_emptyName(self):
+        req_empty = ScenarioCreateRequest('')
+        (code, body) = self.create(req_empty)
+        self.assertEqual(code, HTTP_BAD_REQUEST)
+        self.assertIn('name missing', body)
+
+    def test_noneName(self):
+        req_none = ScenarioCreateRequest(None)
+        (code, body) = self.create(req_none)
+        self.assertEqual(code, HTTP_BAD_REQUEST)
+        self.assertIn('name missing', body)
+
+    def test_success(self):
+        (code, body) = self.create_d()
+        self.assertEqual(code, HTTP_OK)
+        self.assert_create_body(body)
+
+    def test_alreadyExist(self):
+        self.create_d()
+        (code, body) = self.create_d()
+        self.assertEqual(code, HTTP_FORBIDDEN)
+        self.assertIn('already exists', body)