Merge "infra: bifrost: Upload build logs to artifacts.opnfv.org"
authorFatih Degirmenci <fatih.degirmenci@ericsson.com>
Tue, 17 Jan 2017 11:34:18 +0000 (11:34 +0000)
committerGerrit Code Review <gerrit@opnfv.org>
Tue, 17 Jan 2017 11:34:18 +0000 (11:34 +0000)
73 files changed:
jjb/3rd_party_ci/create-apex-vms.sh
jjb/3rd_party_ci/download-netvirt-artifact.sh
jjb/3rd_party_ci/install-netvirt.sh
jjb/3rd_party_ci/postprocess-netvirt.sh
jjb/apex/apex.yml
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-deploy.sh
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/dovetail/dovetail-artifacts-upload.sh
jjb/dovetail/dovetail-ci-jobs.yml
jjb/dovetail/dovetail-run.sh
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-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/qtip/qtip-ci-jobs.yml
jjb/releng/opnfv-docker.yml
jjb/releng/opnfv-docs.yml
jjb/releng/opnfv-lint.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/installer_adapters/InstallerHandler.py
modules/opnfv/installer_adapters/daisy/DaisyAdapter.py [new file with mode: 0644]
modules/opnfv/installer_adapters/daisy/__init__.py [new file with mode: 0644]
modules/opnfv/utils/Credentials.py
modules/opnfv/utils/constants.py
utils/fetch_os_creds.sh
utils/jenkins-jnlp-connect.sh
utils/test/reporting/functest/template/index-status-tmpl.html
utils/test/reporting/functest/template/index-tempest-tmpl.html
utils/test/reporting/functest/template/index-vims-tmpl.html
utils/test/reporting/reporting.yaml
utils/test/testapi/docker/Dockerfile
utils/test/testapi/htmlize/finish.sh
utils/test/testapi/htmlize/prepare.sh
utils/test/testapi/opnfv_testapi/resources/handlers.py
utils/test/testapi/opnfv_testapi/resources/scenario_handlers.py [new file with mode: 0644]
utils/test/testapi/opnfv_testapi/resources/scenario_models.py [new file with mode: 0644]
utils/test/testapi/opnfv_testapi/router/url_mappings.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/*
 
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 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 70731b5..5c1bded 100644 (file)
          - 'os-nosdn-nofeature-ha-ipv6'
          - 'os-nosdn-ovs-noha'
          - 'os-nosdn-fdio-noha'
-         - 'os-odl_l3-bgpvpn-ha'
-         - 'os-odl_l2-fdio-noha'
+         - 'os-nosdn-fdio-ha'
          - 'os-odl_l2-fdio-ha'
+         - 'os-odl_l2-netvirt_gbp_fdio-noha'
          - 'os-odl_l2-sfc-noha'
          - 'os-odl_l3-nofeature-ha'
+         - 'os-odl_l3-bgpvpn-ha'
+         - 'os-odl_l3-fdio-noha'
+         - 'os-odl_l3-fdio-ha'
+         - 'os-odl_l3-fdio_dvr-noha'
+         - 'os-odl_l3-fdio_dvr-ha'
          - 'os-onos-nofeature-ha'
 
     platform:
 
     builders:
         - trigger-builds:
-          - project: 'apex-deploy-baremetal-os-odl_l2-nofeature-ha-{stream}'
+          - project: 'apex-deploy-baremetal-os-odl_l3-nofeature-ha-{stream}'
             predefined-parameters:
               OPNFV_CLEAN=yes
             git-revision: false
         - trigger-builds:
           - project: 'cperf-apex-intel-pod2-daily-{stream}'
             predefined-parameters:
-              DEPLOY_SCENARIO=os-odl_l2-nofeature-ha
+              DEPLOY_SCENARIO=os-odl_l3-nofeature-ha
             block: true
             same-node: true
 
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 4afe40e..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}'
             pwd
             cd src
             ./install_build_deps.sh
-            sudo make clobber
-            sudo make
+            make clobber
+            make
 
 - job-template:
     name: 'barometer-daily-{stream}'
             pwd
             cd src
             ./install_build_deps.sh
-            sudo make clobber
-            sudo make
+            make clobber
+            make
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 c8d6159..f89d04e 100644 (file)
@@ -38,6 +38,10 @@ else
     export NETWORK_CONF_FILE=network.yml
 fi
 
+if [[ "$NODE_NAME" =~ "intel-pod8" ]]; then
+    export OS_MGMT_NIC=em4
+fi
+
 if [[ "$NODE_NAME" =~ "-virtual" ]]; then
     export NETWORK_CONF=$CONFDIR/vm_environment/$NODE_NAME/${NETWORK_CONF_FILE}
     export DHA_CONF=$CONFDIR/vm_environment/${DEPLOY_SCENARIO}.yml
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 79dee84..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'
                 failed: true
                 unstable: true
                 notbuilt: true
+            silent-start: true
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 b5d8fcf..b23deca 100755 (executable)
@@ -16,6 +16,7 @@ echo "dovetail: pull and save the images"
 cd ${CACHE_DIR}
 sudo docker pull ${DOCKER_REPO_NAME}:${DOCKER_TAG}
 sudo docker save -o ${STORE_FILE_NAME} ${DOCKER_REPO_NAME}:${DOCKER_TAG}
+sudo chmod og+rw ${STORE_FILE_NAME}
 
 OPNFV_ARTIFACT_VERSION=$(date -u +"%Y-%m-%d_%H-%M-%S")
 GS_UPLOAD_LOCATION="${STORE_URL}/${OPNFV_ARTIFACT_VERSION}"
index 2b6ab76..08eb5a5 100644 (file)
         - shell:
             !include-raw: ./dovetail-run.sh
 
-
-- builder:
-    name: dovetail-fetch-os-creds
-    builders:
-        - shell:
-            !include-raw: ../../utils/fetch_os_creds.sh
-
 - builder:
     name: dovetail-cleanup
     builders:
index 4082c34..0a2f156 100755 (executable)
@@ -57,7 +57,7 @@ if [ -z ${container_id} ]; then
     docker ps -a
     exit 1
 fi
-echo "COntainer Start: docker start ${container_id}"
+echo "Container Start: docker start ${container_id}"
 docker start ${container_id}
 sleep 5
 docker ps >${redirect}
@@ -66,9 +66,12 @@ if [ $(docker ps | grep "opnfv/dovetail:${DOCKER_TAG}" | wc -l) == 0 ]; then
     exit 1
 fi
 
-exec_cmd="python ${DOVETAIL_REPO_DIR}/dovetail/run.py --testsuite ${TESTSUITE} -d true"
-echo "Container exec command: ${exec_cmd}"
-docker exec ${container_id} ${exec_cmd}
+list_cmd="dovetail list ${TESTSUITE}"
+run_cmd="dovetail run --testsuite ${TESTSUITE} -d true"
+echo "Container exec command: ${list_cmd}"
+docker exec $container_id ${list_cmd}
+echo "Container exec command: ${run_cmd}"
+docker exec $container_id ${run_cmd}
 
 sudo cp -r ${DOVETAIL_REPO_DIR}/results ./
 #To make sure the file owner is jenkins, for the copied results files in the above line
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 30ebb95..39a1b1b 100644 (file)
             name: GIT_BASE
             default: https://gerrit.opnfv.org/gerrit/$PROJECT
             description: 'Git URL to use on this Jenkins Slave'
+- parameter:
+    name: 'odl-netvirt-virtual-intel-defaults'
+    parameters:
+        - label:
+            name: SLAVE_LABEL
+            default: 'odl-netvirt-virtual-intel'
+        - string:
+            name: GIT_BASE
+            default: https://gerrit.opnfv.org/gerrit/$PROJECT
+            description: 'Git URL to use on this Jenkins Slave'
 #####################################################
 # These slaves are just dummy slaves for sandbox jobs
 #####################################################
index 5f25ff8..cbe21e2 100644 (file)
             timeout: 10
             wipe-workspace: true
 
+    triggers:
+        - '{project}-gerrit-trigger':
+            branch: '{branch}'
+
     builders:
         - bifrost-set-name
         - bifrost-build
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 b83014e..69cb32b 100644 (file)
@@ -39,7 +39,7 @@
 - job-template:
     name: 'qtip-{installer}-{pod}-daily-{stream}'
 
-    disabled: false
+    disabled: true
 
     parameters:
         - project-parameter:
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 1a2eb5e..95d464c 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}'
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 e353ef3..dc5bdb9 100644 (file)
@@ -11,9 +11,10 @@ from opnfv.installer_adapters.fuel.FuelAdapter import FuelAdapter
 from opnfv.installer_adapters.apex.ApexAdapter import ApexAdapter
 from opnfv.installer_adapters.compass.CompassAdapter import CompassAdapter
 from opnfv.installer_adapters.joid.JoidAdapter import JoidAdapter
+from opnfv.installer_adapters.daisy.DaisyAdapter import DaisyAdapter
 
 
-INSTALLERS = ["fuel", "apex", "compass", "joid"]
+INSTALLERS = ["fuel", "apex", "compass", "joid", "daisy"]
 
 
 class InstallerHandler:
@@ -38,6 +39,8 @@ class InstallerHandler:
             self.InstallerAdapter = CompassAdapter(self.installer_ip)
         elif self.installer == INSTALLERS[3]:
             self.InstallerAdapter = JoidAdapter(self.installer_ip)
+        elif self.installer == INSTALLERS[4]:
+            self.InstallerAdapter = DaisyAdapter(self.installer_ip)
         else:
             print("Installer %s is  not valid. "
                   "Please use one of the followings: %s"
diff --git a/modules/opnfv/installer_adapters/daisy/DaisyAdapter.py b/modules/opnfv/installer_adapters/daisy/DaisyAdapter.py
new file mode 100644 (file)
index 0000000..9b06f4c
--- /dev/null
@@ -0,0 +1,32 @@
+##############################################################################
+# Copyright (c) 2016 Ericsson AB and others.
+# Author: Jose Lausuch (jose.lausuch@ericsson.com)
+# 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
+##############################################################################
+
+
+class DaisyAdapter:
+
+    def __init__(self, installer_ip):
+        self.installer_ip = installer_ip
+
+    def get_deployment_info(self):
+        pass
+
+    def get_nodes(self):
+        pass
+
+    def get_controller_ips(self):
+        pass
+
+    def get_compute_ips(self):
+        pass
+
+    def get_file_from_installer(self, origin, target, options=None):
+        pass
+
+    def get_file_from_controller(self, origin, target, ip=None, options=None):
+        pass
diff --git a/modules/opnfv/installer_adapters/daisy/__init__.py b/modules/opnfv/installer_adapters/daisy/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
index 1882692..6441b84 100644 (file)
@@ -47,7 +47,7 @@ class Credentials(object):
                                                     password)
 
     def __check_installer_name(self, installer):
-        if installer not in ("apex", "compass", "fuel", "joid"):
+        if installer not in ("apex", "compass", "daisy", "fuel", "joid"):
             return os.EX_CONFIG
         else:
             return os.EX_OK
@@ -69,6 +69,10 @@ class Credentials(object):
         # TODO
         pass
 
+    def __fetch_creds_daisy(self, target_path):
+        # TODO
+        pass
+
     def __fetch_creds_fuel(self, target_path):
         creds_file = '/root/openrc'
         try:
@@ -95,6 +99,8 @@ class Credentials(object):
             self.__fetch_creds_apex(target_path)
         elif self.installer == "compass":
             self.__fetch_creds_compass(target_path)
+        elif self.installer == "daisy":
+            self.__fetch_creds_daisy(target_path)
         elif self.installer == "fuel":
             self.__fetch_creds_fuel(target_path)
         elif self.installer == "joid":
index 29f0d02..ed83488 100644 (file)
@@ -7,9 +7,18 @@
 # which accompanies this distribution, and is available at
 # http://www.apache.org/licenses/LICENSE-2.0
 
-INSTALLERS = ['apex', 'fuel', 'compass', 'joid']
+INSTALLERS = ['apex', 'fuel', 'compass', 'joid', "daisy"]
 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 ecc571d..3667dbe 100755 (executable)
@@ -104,18 +104,13 @@ if [ "$installer_type" == "fuel" ]; then
     #This file contains the mgmt keystone API, we need the public one for our rc file
     admin_ip=$(cat $dest_path | grep "OS_AUTH_URL" | sed 's/^.*\=//' | sed "s/^\([\"']\)\(.*\)\1\$/\2/g" | sed s'/\/$//')
     public_ip=$(sshpass -p r00tme ssh $ssh_options root@${installer_ip} \
-        "ssh ${controller_ip} 'source openrc; openstack endpoint list --long'" \
-        | grep $admin_ip | sed 's/ /\n/g' | grep ^http | head -1) &> /dev/null
+        "ssh ${controller_ip} 'source openrc; openstack endpoint list'" \
+        | grep keystone | grep public | sed 's/ /\n/g' | grep ^http | head -1) &> /dev/null
         #| grep http | head -1 | cut -d '|' -f 4 | sed 's/v1\/.*/v1\//' | sed 's/ //g') &> /dev/null
     #NOTE: this is super ugly sed 's/v1\/.*/v1\//'OS_AUTH_URL
     # but sometimes the output of endpoint-list is like this: http://172.30.9.70:8004/v1/%(tenant_id)s
     # Fuel virtual need a fix
 
-    if [ "$DEPLOY_TYPE" == "virt" ]; then
-        echo "INFO: Changing: internalURL -> publicURL in openrc"
-        sed -i 's/internalURL/publicURL/' $dest_path
-    fi
-
 elif [ "$installer_type" == "apex" ]; then
     verify_connectivity $installer_ip
 
@@ -196,13 +191,6 @@ if [ ! -f $dest_path ]; then
     error "There has been an error retrieving the credentials"
 fi
 
-if [ "$public_ip" != "" ]; 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
-fi
-
-
-
 echo "-------- Credentials: --------"
 cat $dest_path
 
index 9751a90..be9fe18 100755 (executable)
@@ -95,18 +95,30 @@ main () {
         makemonit () {
             echo "Writing the following as monit config:"
         cat << EOF | tee $monitconfdir/jenkins
+check directory jenkins_piddir path /var/run/$jenkinsuser
+if does not exist then exec "/usr/bin/mkdir -p /var/run/$jenkinsuser"
+if failed uid $jenkinsuser then exec "/usr/bin/chown $jenkinsuser /var/run/$jenkinsuser"
+if failed gid $jenkinsuser then exec "/usr/bin/chown :$jenkinsuser /var/run/$jenkinsuser"
+
 check process jenkins with pidfile /var/run/$jenkinsuser/jenkins_jnlp_pid
 start program = "/usr/bin/sudo -u $jenkinsuser /bin/bash -c 'cd $jenkinshome; export started_monit=true; $0 $@' with timeout 60 seconds"
 stop program = "/bin/bash -c '/bin/kill \$(/bin/cat /var/run/$jenkinsuser/jenkins_jnlp_pid)'"
+depends on jenkins_piddir
 EOF
         }
 
         if [[ -f $monitconfdir/jenkins ]]; then
             #test for diff
             if [[ "$(diff $monitconfdir/jenkins <(echo "\
+check directory jenkins_piddir path /var/run/$jenkinsuser
+if does not exist then exec \"/usr/bin/mkdir -p /var/run/$jenkinsuser\"
+if failed uid $jenkinsuser then exec \"/usr/bin/chown $jenkinsuser /var/run/$jenkinsuser\"
+if failed gid $jenkinsuser then exec \"/usr/bin/chown :$jenkinsuser /var/run/$jenkinsuser\"
+
 check process jenkins with pidfile /var/run/$jenkinsuser/jenkins_jnlp_pid
 start program = \"/usr/bin/sudo -u $jenkinsuser /bin/bash -c 'cd $jenkinshome; export started_monit=true; $0 $@' with timeout 60 seconds\"
-stop program = \"/bin/bash -c '/bin/kill \$(/bin/cat /var/run/$jenkinsuser/jenkins_jnlp_pid)'\"\
+stop program = \"/bin/bash -c '/bin/kill \$(/bin/cat /var/run/$jenkinsuser/jenkins_jnlp_pid)'\"
+depends on jenkins_piddir\
 ") )" ]]; then
                 echo "Updating monit config..."
                 makemonit $@
index 094bbf8..52046c3 100644 (file)
@@ -72,6 +72,7 @@ $(document).ready(function (){
             <li class="active"><a href="../../index.html">Home</a></li>
             <li><a href="status-apex.html">Apex</a></li>
             <li><a href="status-compass.html">Compass</a></li>
+            <li><a href="status-daisy.html">Daisy</a></li>
             <li><a href="status-fuel.html">Fuel</a></li>
             <li><a href="status-joid.html">Joid</a></li>
           </ul>
index db48307..3a22227 100644 (file)
@@ -24,6 +24,7 @@
             <li class="active"><a href="../../index.html">Home</a></li>
             <li><a href="tempest-apex.html">Apex</a></li>
             <li><a href="tempest-compass.html">Compass</a></li>
+            <li><a href="tempest-daisy.html">Daisy</a></li>
             <li><a href="tempest-fuel.html">Fuel</a></li>
             <li><a href="tempest-joid.html">Joid</a></li>
           </ul>
index 033c8ab..cd51607 100644 (file)
@@ -24,6 +24,7 @@
             <li class="active"><a href="../../index.html">Home</a></li>
             <li><a href="vims-fuel.html">Fuel</a></li>
             <li><a href="vims-compass.html">Compass</a></li>
+            <li><a href="vims-daisy.html">Daisy</a></li>
             <li><a href="vims-joid.html">JOID</a></li>
             <li><a href="vims-apex.html">APEX</a></li>
           </ul>
index 447d6e1..fa98626 100644 (file)
@@ -4,6 +4,7 @@ general:
         - compass
         - fuel
         - joid
+        - daisy
 
     versions:
         - master
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"]
index dc3aa86..d24ae05 100644 (file)
@@ -13,3 +13,5 @@ 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 3c265aa..67158f2 100644 (file)
@@ -26,5 +26,3 @@ cd utils/test/testapi/
 pip install -r requirements.txt
 ./install.sh
 opnfv-testapi -c ../../../testapi_venv/etc/opnfv_testapi/config.ini &
-
-deactivate
index f1ad15e..9fc5d6b 100644 (file)
@@ -43,6 +43,7 @@ class GenericApiHandler(RequestHandler):
         self.db_pods = 'pods'
         self.db_testcases = 'testcases'
         self.db_results = 'results'
+        self.db_scenarios = 'scenarios'
 
     def prepare(self):
         if self.request.method != "GET" and self.request.method != "DELETE":
diff --git a/utils/test/testapi/opnfv_testapi/resources/scenario_handlers.py b/utils/test/testapi/opnfv_testapi/resources/scenario_handlers.py
new file mode 100644 (file)
index 0000000..7bf3d5d
--- /dev/null
@@ -0,0 +1,75 @@
+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
+
+
+class GenericScenarioHandler(GenericApiHandler):
+    def __init__(self, application, request, **kwargs):
+        super(GenericScenarioHandler, self).__init__(application,
+                                                     request,
+                                                     **kwargs)
+        self.table = self.db_scenarios
+        self.table_cls = Scenario
+
+
+class ScenariosCLHandler(GenericScenarioHandler):
+    @swagger.operation(nickname="List scenarios by queries")
+    def get(self):
+        """
+            @description: Retrieve scenario(s).
+            @notes: Retrieve scenario(s)
+            @return 200: all scenarios consist with query,
+                         empty list if no scenario is found
+            @rtype: L{Scenarios}
+        """
+        self._list()
+
+    @swagger.operation(nickname="Create a new scenario")
+    def post(self):
+        """
+            @description: create a new scenario by name
+            @param body: scenario to be created
+            @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
+        """
+        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):
+    @swagger.operation(nickname='Get the scenario by name')
+    def get(self, name):
+        """
+            @description: get a single scenario by name
+            @rtype: L{Scenario}
+            @return 200: scenario exist
+            @raise 404: scenario not exist
+        """
+        pass
+
+    @swagger.operation(nickname="Update the scenario by name")
+    def put(self, name):
+        """
+            @description: update a single scenario by name
+            @param body: fields to be updated
+            @type body: L{string}
+            @in body: body
+            @rtype: L{Scenario}
+            @return 200: update success
+            @raise 404: scenario not exist
+            @raise 403: nothing to update
+        """
+        pass
diff --git a/utils/test/testapi/opnfv_testapi/resources/scenario_models.py b/utils/test/testapi/opnfv_testapi/resources/scenario_models.py
new file mode 100644 (file)
index 0000000..b4bb363
--- /dev/null
@@ -0,0 +1,98 @@
+import models
+from opnfv_testapi.tornado_swagger import swagger
+
+
+@swagger.model()
+class ScenarioTI(models.ModelBase):
+    def __init__(self, date=None, status='silver'):
+        self.date = date
+        self.status = status
+
+
+@swagger.model()
+class ScenarioScore(models.ModelBase):
+    def __init__(self, date=None, score=''):
+        self.date = date
+        self.score = score
+
+
+@swagger.model()
+class ScenarioProject(models.ModelBase):
+    """
+        @property customs:
+        @ptype customs: C{list} of L{string}
+        @property scores:
+        @ptype scores: C{list} of L{ScenarioScore}
+        @property trust_indicators:
+        @ptype trust_indicators: C{list} of L{ScenarioTI}
+    """
+    def __init__(self,
+                 name='',
+                 customs=None,
+                 scores=None,
+                 trust_indicators=None):
+        self.name = name
+        self.customs = customs
+        self.scores = scores
+        self.trust_indicator = trust_indicators
+
+
+@swagger.model()
+class ScenarioVersion(models.ModelBase):
+    """
+        @property projects:
+        @ptype projects: C{list} of L{ScenarioProject}
+    """
+    def __init__(self, version, projects=None):
+        self.version = version
+        self.projects = projects
+
+
+@swagger.model()
+class ScenarioInstaller(models.ModelBase):
+    """
+        @property versions:
+        @ptype versions: C{list} of L{ScenarioVersion}
+    """
+    def __init__(self, installer=None, owner=None, versions=None):
+        self.installer = installer
+        self.owner = owner
+        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):
+    """
+        @property installers:
+        @ptype installers: C{list} of L{ScenarioInstaller}
+    """
+    def __init__(self, name='', create_date='', _id='', installers=None):
+        self.name = name
+        self._id = _id
+        self.creation_date = create_date
+        self.installers = installers if installers else list()
+
+
+@swagger.model()
+class Scenarios(models.ModelBase):
+    """
+        @property scenarios:
+        @ptype scenarios: C{list} of L{Scenario}
+    """
+    def __init__(self):
+        self.scenarios = list()
+
+    @staticmethod
+    def attr_parser():
+        return {'scenarios': Scenario}
index eb648ec..0ae3c31 100644 (file)
@@ -14,7 +14,8 @@ from opnfv_testapi.resources.project_handlers import ProjectCLHandler, \
     ProjectGURHandler
 from opnfv_testapi.resources.result_handlers import ResultsCLHandler, \
     ResultsGURHandler
-
+from opnfv_testapi.resources.scenario_handlers import ScenariosCLHandler
+from opnfv_testapi.resources.scenario_handlers import ScenarioGURHandler
 
 mappings = [
     # GET /versions => GET API version
@@ -45,4 +46,8 @@ mappings = [
     # (project, case, and pod)
     (r"/api/v1/results", ResultsCLHandler),
     (r"/api/v1/results/([^/]+)", ResultsGURHandler),
+
+    # scenarios
+    (r"/api/v1/scenarios", ScenariosCLHandler),
+    (r"/api/v1/scenarios/([^/]+)", ScenarioGURHandler),
 ]
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)