Merge "KVMFORNFV: Uploading logs to artifacts for debugging."
authorAric Gardner <agardner@linuxfoundation.org>
Tue, 7 Feb 2017 19:36:29 +0000 (19:36 +0000)
committerGerrit Code Review <gerrit@opnfv.org>
Tue, 7 Feb 2017 19:36:29 +0000 (19:36 +0000)
104 files changed:
jjb-sandbox/releng/releng-sandbox-jobs.yml
jjb/3rd_party_ci/install-netvirt.sh
jjb/3rd_party_ci/odl-netvirt.yml
jjb/apex/apex-build.sh
jjb/apex/apex-deploy.sh
jjb/apex/apex-snapshot-create.sh [new file with mode: 0644]
jjb/apex/apex-snapshot-deploy.sh [new file with mode: 0644]
jjb/apex/apex-upload-artifact.sh
jjb/apex/apex.yml
jjb/armband/armband-ci-jobs.yml
jjb/armband/armband-deploy.sh
jjb/armband/armband-download-artifact.sh
jjb/armband/armband-project-jobs.yml
jjb/armband/armband-verify-jobs.yml
jjb/armband/upload-artifacts.sh
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-dovetail-jobs.yml [new file with mode: 0644]
jjb/compass4nfv/compass-project-jobs.yml
jjb/compass4nfv/compass-verify-jobs.yml
jjb/conductor/conductor.yml
jjb/copper/copper.yml
jjb/cperf/cperf-ci-jobs.yml
jjb/daisy4nfv/daisy4nfv-merge-jobs.yml
jjb/daisy4nfv/daisy4nfv-verify-jobs.yml
jjb/doctor/doctor.yml
jjb/domino/domino.yml
jjb/dovetail/dovetail-artifacts-upload.yml
jjb/dovetail/dovetail-ci-jobs.yml
jjb/dovetail/dovetail-project-jobs.yml
jjb/dovetail/dovetail-weekly-jobs.yml
jjb/dpacc/dpacc.yml
jjb/escalator/escalator.yml
jjb/fuel/fuel-daily-jobs.yml
jjb/fuel/fuel-deploy.sh
jjb/fuel/fuel-download-artifact.sh
jjb/fuel/fuel-project-jobs.yml
jjb/fuel/fuel-upload-artifact.sh
jjb/fuel/fuel-verify-jobs-experimental.yml
jjb/fuel/fuel-verify-jobs.yml
jjb/functest/functest-ci-jobs.yml
jjb/functest/functest-exit.sh
jjb/functest/functest-loop.sh
jjb/functest/functest-project-jobs.yml
jjb/functest/functest-suite.sh
jjb/functest/set-functest-env.sh
jjb/global/releng-macros.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/moon/moon.yml
jjb/multisite/fuel-deploy-for-multisite.sh
jjb/multisite/multisite-daily-jobs.yml
jjb/multisite/multisite-verify-jobs.yml
jjb/netready/netready.yml
jjb/octopus/octopus.yml
jjb/onosfw/onosfw.yml
jjb/opera/opera-daily-jobs.yml
jjb/opera/opera-project-jobs.yml
jjb/opera/opera-verify-jobs.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/qtip/qtip-project-jobs.yml
jjb/releng/artifact-cleanup.yml
jjb/releng/opnfv-docker.sh
jjb/releng/opnfv-docker.yml
jjb/releng/opnfv-docs.yml
jjb/releng/opnfv-lint.yml
jjb/releng/releng-ci-jobs.yml
jjb/releng/testapi-automate.yml
jjb/releng/testapi-docker-deploy.sh [new file with mode: 0644]
jjb/securityaudit/opnfv-security-audit.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-daily.sh
jjb/yardstick/yardstick-project-jobs.yml
modules/opnfv/installer_adapters/InstallerHandler.py
modules/opnfv/installer_adapters/apex/ApexAdapter.py
modules/opnfv/installer_adapters/apex/example.py [new file with mode: 0644]
modules/opnfv/utils/SSHUtils.py
prototypes/bifrost/scripts/destroy-env.sh
prototypes/bifrost/scripts/test-bifrost-deployment.sh
utils/push-test-logs.sh
utils/test/testapi/htmlize/htmlize.py
utils/test/vnfcatalogue/assets/Vnf_landing/assets/css/3rd_party/bootstrap.css [new file with mode: 0755]
utils/test/vnfcatalogue/assets/Vnf_landing/assets/css/style.css [new file with mode: 0644]
utils/test/vnfcatalogue/assets/Vnf_landing/assets/images/3rd_party/commits.png [new file with mode: 0644]
utils/test/vnfcatalogue/assets/Vnf_landing/assets/images/logo.png [new file with mode: 0644]
utils/test/vnfcatalogue/assets/Vnf_landing/index.html [new file with mode: 0644]
utils/test/vnfcatalogue/helpers/README.md [new file with mode: 0644]
utils/test/vnfcatalogue/helpers/migrate.js [new file with mode: 0644]
utils/test/vnfcatalogue/helpers/schema.js [new file with mode: 0644]

index adefe36..97fea89 100644 (file)
@@ -13,7 +13,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: 'master'
     scm:
         - git-scm-gerrit
index f111d48..c9aa4c5 100755 (executable)
@@ -2,14 +2,28 @@
 set -e
 
 if [ -z ${WORKSPACE} ]; then
-  echo "WORKSPACE is unset. Please do so."
+  echo "WORKSPACE is unset. Please set."
   exit 1
 fi
 # wipe the WORKSPACE
 /bin/rm -rf $WORKSPACE/*
+set -o errexit
+set -o nounset
+set -o pipefail
+
+SNAP_CACHE=$HOME/snap_cache
 # 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
-./odl_reinstaller.sh --cloner-info $CLONER_INFO --odl-artifact $NETVIRT_ARTIFACT
-popd
\ No newline at end of file
+
+if [ ! -f "$NETVIRT_ARTIFACT" ]; then
+  echo "ERROR: ${NETVIRT_ARTIFACT} specified as NetVirt Artifact, but file does not exist"
+  exit 1
+fi
+
+# TODO (trozet) snapshot should have already been unpacked into cache folder
+# but we really should check the cache here, and not use a single cache folder
+# for when we support multiple jobs on a single slave
+pushd sdnvpn/odl-pipeline/lib > /dev/null
+./odl_reinstaller.sh --pod-config ${SNAP_CACHE}/node.yaml \
+  --odl-artifact ${NETVIRT_ARTIFACT} --ssh-key-file ${SNAP_CACHE}/id_rsa
+popd > /dev/null
index a57bf17..6e25425 100644 (file)
 #####################################
     phase:
         - 'create-apex-vms':
-            slave-label: 'ericsson-virtual5'
+            slave-label: 'odl-netvirt-virtual-intel'
         - 'install-netvirt':
-            slave-label: 'odl-netvirt-virtual'
+            slave-label: 'odl-netvirt-virtual-intel'
         - 'postprocess':
-            slave-label: 'odl-netvirt-virtual'
+            slave-label: 'odl-netvirt-virtual-intel'
 #####################################
 # jobs
 #####################################
@@ -51,7 +51,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - string:
             name: NETVIRT_ARTIFACT
         - gerrit:
             server-name: 'git.opendaylight.org'
             trigger-on:
-                - comment-added-contains-event:
-                    comment-contains-value: 'https://jenkins.opendaylight.org/releng/job/netvirt-patch-test-current-carbon/.*?/ : SUCCESS'
-                - comment-added-contains-event:
-                    comment-contains-value: 'https://jenkins.opendaylight.org/releng/job/netvirt-patch-test-current-carbon/.*?/ : UNSTABLE'
#               - comment-added-contains-event:
#                   comment-contains-value: 'https://jenkins.opendaylight.org/releng/job/netvirt-patch-test-current-carbon/.*?/ : SUCCESS'
#               - comment-added-contains-event:
#                   comment-contains-value: 'https://jenkins.opendaylight.org/releng/job/netvirt-patch-test-current-carbon/.*?/ : UNSTABLE'
                 - comment-added-contains-event:
                     comment-contains-value: 'opnfv-test'
             projects:
@@ -86,7 +85,7 @@
                 - name: 'odl-netvirt-verify-virtual-create-apex-vms-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_ID=$GERRIT_CHANGE_ID
                 - name: 'odl-netvirt-verify-virtual-install-netvirt-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_ID=$GERRIT_CHANGE_ID
             name: functest
             condition: SUCCESSFUL
             projects:
-                - name: 'functest-netvirt-virtual-daily-{stream}'
+                - name: 'functest-netvirt-virtual-suite-{stream}'
                   predefined-parameters: |
-                    RC_FILE_PATH=/home/jenkins/cloner-info/overcloudrc
-                    DEPLOY_SCENARIO=os-odl_l2-bgpvpn-noha
+                    DEPLOY_SCENARIO=os-odl_l3-nofeature-ha
+                    FUNCTEST_SUITE_NAME=healthcheck
                   node-parameters: true
                   kill-phase-on: FAILURE
                   abort-all-job: false
                 - name: 'odl-netvirt-verify-virtual-postprocess-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_ID=$GERRIT_CHANGE_ID
                     NETVIRT_ARTIFACT=$NETVIRT_ARTIFACT
                   node-parameters: true
                   kill-phase-on: FAILURE
-                  abort-all-job: true
+                  abort-all-job: false
 
 - job-template:
     name: 'odl-netvirt-verify-virtual-{phase}-{stream}'
         - build-blocker:
             use-build-blocker: true
             blocking-jobs:
-                - 'odl-netvirt-verify-virtual-install-.*'
-                - 'functest-netvirt-virtual-daily-.*'
+                - 'odl-netvirt-verify-virtual-create-apex-vms-.*'
+                - 'odl-netvirt-verify-virtual-install-netvirt-.*'
+                - 'functest-netvirt-virtual-suite-.*'
                 - 'odl-netvirt-verify-virtual-postprocess-.*'
             block-level: 'NODE'
 
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - '{slave-label}-defaults'
         - '{installer}-defaults'
     name: 'netvirt-verify-create-apex-vms-builder'
     builders:
         - shell:
-            !include-raw: ./create-apex-vms.sh
+            !include-raw: ../apex/apex-snapshot-deploy.sh
 - builder:
     name: 'netvirt-verify-install-netvirt-builder'
     builders:
index ee1dfb5..220d024 100755 (executable)
@@ -12,6 +12,9 @@ echo
 if echo $BUILD_TAG | grep "apex-verify" 1> /dev/null; then
   export OPNFV_ARTIFACT_VERSION=dev${BUILD_NUMBER}
   export BUILD_ARGS="-r $OPNFV_ARTIFACT_VERSION -c $CACHE_DIRECTORY"
+elif echo $BUILD_TAG | grep "csit" 1> /dev/null; then
+  export OPNFV_ARTIFACT_VERSION=csit${BUILD_NUMBER}
+  export BUILD_ARGS="-r $OPNFV_ARTIFACT_VERSION -c $CACHE_DIRECTORY"
 elif [ "$ARTIFACT_VERSION" == "daily" ]; then
   export OPNFV_ARTIFACT_VERSION=$(date -u +"%Y-%m-%d")
   export BUILD_ARGS="-r $OPNFV_ARTIFACT_VERSION -c $CACHE_DIRECTORY --iso"
index 8d5c4cb..9535e7f 100755 (executable)
@@ -15,7 +15,7 @@ if ! rpm -q wget > /dev/null; then
   sudo yum -y install wget
 fi
 
-if [[ $BUILD_DIRECTORY == *verify* ]]; then
+if [[ "$BUILD_DIRECTORY" == *verify* || "$BUILD_DIRECTORY" == *csit* ]]; then
     # Build is from a verify, use local build artifacts (not RPMs)
     cd $WORKSPACE/../${BUILD_DIRECTORY}
     WORKSPACE=$(pwd)
@@ -64,8 +64,8 @@ if [ -z "$DEPLOY_SCENARIO" ]; then
   exit 1
 fi
 
-# use local build for verify
-if [[ "$BUILD_DIRECTORY" == *verify* ]]; then
+# use local build for verify and csit promote
+if [[ "$BUILD_DIRECTORY" == *verify* || "$BUILD_DIRECTORY" == *csit* ]]; then
     if [ ! -e "${WORKSPACE}/build/lib" ]; then
       ln -s ${WORKSPACE}/lib ${WORKSPACE}/build/lib
     fi
@@ -144,7 +144,7 @@ if [ "$OPNFV_CLEAN" == 'yes' ]; then
   else
     clean_opts=''
   fi
-  if [[ "$BUILD_DIRECTORY" == *verify* ]]; then
+  if [[ "$BUILD_DIRECTORY" == *verify* || "$BUILD_DIRECTORY" == *csit* ]]; then
     sudo CONFIG=${CONFIG} LIB=${LIB} ./clean.sh ${clean_opts}
   else
     sudo CONFIG=${CONFIG} LIB=${LIB} opnfv-clean ${clean_opts}
@@ -172,6 +172,9 @@ if [[ "$JOB_NAME" == *virtual* ]]; then
     NETWORK_FILE="${NETWORK_SETTINGS_DIR}/network_settings.yaml"
   fi
   DEPLOY_CMD="${DEPLOY_CMD} -v"
+  if [[ "$JOB_NAME" == *csit* ]]; then
+    DEPLOY_CMD="${DEPLOY_CMD} -e csit-environment.yaml --virtual-computes 2"
+  fi
 else
   # settings for bare metal deployment
   if [ "$IPV6_FLAG" == "True" ]; then
diff --git a/jjb/apex/apex-snapshot-create.sh b/jjb/apex/apex-snapshot-create.sh
new file mode 100644 (file)
index 0000000..5725ac6
--- /dev/null
@@ -0,0 +1,93 @@
+#!/usr/bin/env bash
+##############################################################################
+# Copyright (c) 2016 Tim Rozet (Red Hat) and others.
+#
+# 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 -o errexit
+set -o nounset
+set -o pipefail
+
+SSH_OPTIONS=(-o StrictHostKeyChecking=no -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null -o LogLevel=error)
+
+echo "Creating Apex snapshot..."
+echo "-------------------------"
+echo
+
+# create tmp directory
+tmp_dir=$(pwd)/.tmp
+mkdir -p ${tmp_dir}
+
+# TODO(trozet) remove this after fix goes in for tripleo_inspector to copy these
+pushd ${tmp_dir} > /dev/null
+echo "Copying overcloudrc and ssh key from Undercloud..."
+# Store overcloudrc
+UNDERCLOUD=$(sudo virsh domifaddr undercloud | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+')
+sudo scp ${SSH_OPTIONS[@]} stack@${UNDERCLOUD}:overcloudrc ./
+# Copy out ssh key of stack from undercloud
+sudo scp ${SSH_OPTIONS[@]} stack@${UNDERCLOUD}:.ssh/id_rsa ./
+popd > /dev/null
+
+echo "Gathering introspection information"
+git clone https://gerrit.opnfv.org/gerrit/sdnvpn.git
+pushd sdnvpn/odl-pipeline/lib > /dev/null
+./tripleo_introspector.sh --out-file ${tmp_dir}/node.yaml
+popd > /dev/null
+
+echo "Shutting down nodes"
+# Shut down nodes
+nodes=$(sudo virsh list | grep -Eo "baremetal[0-9]")
+for node in $nodes; do
+  sudo virsh shutdown ${node} --mode acpi
+done
+
+for node in $nodes; do
+  count=0
+  while [ "$count" -lt 10 ]; do
+    sleep 10
+    if sudo virsh list | grep ${node}; then
+       echo "Waiting for $node to shutdown, try $count"
+    else
+       break
+    fi
+    count=$((count+1))
+  done
+
+  if [ "$count" -ge 10 ]; then
+    echo "Node $node failed to shutdown"
+    exit 1
+  fi
+done
+
+echo "Gathering virsh definitions"
+# copy qcow2s, virsh definitions
+for node in $nodes; do
+  cp -f /var/lib/libvirt/images/${node}.qcow2 ./
+  sudo virsh dumpxml ${node} > ${node}.xml
+done
+
+# copy virsh net definitions
+for net in admin api external storage tenant; do
+  sudo virsh net-dumpxml ${net} > ${net}.xml
+done
+
+# tar up artifacts
+DATE=`date +%Y-%m-%d`
+tar czf ../apex-csit-snap-${DATE}.tar.gz .
+popd > /dev/null
+rm -rf ./.tmp
+echo "Snapshot saved as apex-csit-snap-${DATE}.tar.gz"
+
+# update opnfv properties file
+curl -O -L http://$GS_URL/snapshot.properties
+sed -i '/^OPNFV_SNAP_URL=/{h;s#=.*#='${GS_URL}'/apex-csit-snap-'${DATE}'.tar.gz#};${x;/^$/{s##OPNFV_SNAP_URL='${GS_URL}'/apex-csit-snap-'${DATE}'.tar.gz#;H};x}' snapshot.properties
+snap_sha=$(sha512sum apex-csit-snap-${DATE}.tar.gz | cut -d' ' -f1)
+sed -i '/^OPNFV_SNAP_SHA512SUM=/{h;s/=.*/='${snap_sha}'/};${x;/^$/{s//OPNFV_SNAP_SHA512SUM='${snap_sha}'/;H};x}' snapshot.properties
+echo "OPNFV_SNAP_URL=$GS_URL/apex-csit-snap-${DATE}.tar.gz"
+echo "OPNFV_SNAP_SHA512SUM=$(sha512sum apex-csit-snap-${DATE}.tar.gz | cut -d' ' -f1)"
+echo "Updated properties file: "
+cat snapshot.properties
diff --git a/jjb/apex/apex-snapshot-deploy.sh b/jjb/apex/apex-snapshot-deploy.sh
new file mode 100644 (file)
index 0000000..3bb65a0
--- /dev/null
@@ -0,0 +1,154 @@
+#!/usr/bin/env bash
+##############################################################################
+# Copyright (c) 2016 Tim Rozet (Red Hat) and others.
+#
+# 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 -o errexit
+set -o nounset
+set -o pipefail
+
+SSH_OPTIONS=(-o StrictHostKeyChecking=no -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null -o LogLevel=error)
+SNAP_CACHE=$HOME/snap_cache
+
+
+echo "Deploying Apex snapshot..."
+echo "--------------------------"
+echo
+
+echo "Cleaning server"
+git clone https://gerrit.opnfv.org/gerrit/apex.git
+pushd apex/ci > /dev/null
+sudo CONFIG=../build/ LIB=../lib ./clean.sh
+popd > /dev/null
+
+echo "Downloading latest snapshot properties file"
+if ! wget -O $WORKSPACE/opnfv.properties http://$GS_URL/snapshot.properties; then
+  echo "ERROR: Unable to find snapshot.properties at ${GS_URL}...exiting"
+  exit 1
+fi
+
+# find latest check sum
+latest_snap_checksum=$(cat opnfv.properties | grep OPNFV_SNAP_SHA512SUM | awk -F "=" '{print $2}')
+if [ -z "$latest_snap_checksum" ]; then
+  echo "ERROR: checksum of latest snapshot from snapshot.properties is null!"
+  exit 1
+fi
+
+local_snap_checksum=""
+
+# check snap cache directory exists
+if [ -d "$SNAP_CACHE" ]; then
+  latest_snap=$(ls -Art | grep tar.gz | tail -n 1)
+  if [ -n "$latest_snap" ]; then
+    local_snap_checksum=$(sha512sum ${latest_snap} | cut -d' ' -f1)
+  fi
+else
+  mkdir -p ${SNAP_CACHE}
+fi
+
+# compare check sum and download latest snap if not up to date
+if [ "$local_snap_checksum" -ne "$latest_snap_checksum" ]; then
+  snap_url=$(cat opnfv.properties | grep OPNFV_SNAP_URL | awk -F "=" '{print $2}')
+  if [ -z "$snap_url" ]; then
+    echo "ERROR: Snap URL from snapshot.properties is null!"
+    exit 1
+  fi
+  echo "INFO: SHA mismatch, will download latest snapshot"
+  wget --directory-prefix=${SNAP_CACHE}/ ${snap_url}
+  snap_tar=$(basename ${snap_url})
+else
+  snap_tar=${latest_snap}
+fi
+
+echo "INFO: Snapshot to be used is ${snap_tar}"
+
+# create tmp directory and unpack snap
+mkdir -p ./tmp
+pushd ./tmp > /dev/null
+tar xvf ${snap_tar}
+
+# create each network
+virsh_networks=$(ls *.xml | grep -v baremetal)
+
+if [ -z "$virsh_networks" ]; then
+  echo "ERROR: no virsh networks found in snapshot unpack"
+  exit 1
+fi
+
+for network_def in ${virsh_networks}; do
+  sudo virsh net-create ${network_def}
+  network=$(echo ${network_def} | awk -F '.' '{print $1}')
+  if ! sudo virsh net-list | grep ${network}; then
+    sudo virsh net-start ${network}
+  fi
+  echo "Checking if OVS bridge is missing for network: ${network}"
+  if ! ovs-vsctl show | grep "br-${network}"; then
+    ovs-vsctl add-br br-${network}
+    echo "OVS Bridge created: br-${network}"
+    if [ "br-${network}" == 'br-admin' ]; then
+      echo "Configuring IP 192.0.2.99 on br-admin"
+      sudo ip addr add  192.0.2.99/24 dev br-admin
+      sudo ip link set up dev br-admin
+    elif [ "br-${network}" == 'br-external' ]; then
+      echo "Configuring IP 192.168.37.99 on br-external"
+      sudo ip addr add  192.168.37.99/24 dev br-external
+      sudo ip link set up dev br-external
+    fi
+  fi
+done
+
+echo "Virsh networks up: $(virsh net-list)"
+echo "Bringing up Overcloud VMs..."
+virsh_vm_defs=$(ls baremetal*.xml)
+
+if [ -z "$virsh_vm_defs" ]; then
+  echo "ERROR: no virsh VMs found in snapshot unpack"
+  exit 1
+fi
+
+for node_def in ${virsh_vm_defs}; do
+  sudo virsh define ${node_def}
+  node=$(echo ${node_def} | awk -F '.' '{print $1}')
+  sudo cp -f ${node}.qcow2 /var/lib/libvirt/images/
+  sudo virsh start ${node}
+  echo "Node: ${node} started"
+done
+
+echo "Checking overcloudrc"
+if ! stat overcloudrc; then
+  echo "ERROR: overcloudrc does not exist in snap unpack"
+  exit 1
+fi
+
+# copy overcloudrc for functest
+mkdir -p $HOME/cloner-info
+cp -f overcloudrc $HOME/cloner-info/
+
+admin_controller_ip=$(cat overcloudrc | grep -Eo "192.0.2.[0-9]+")
+netvirt_url="http://${admin_controller_ip}:8081/restconf/operational/network-topology:network-topology/topology/netvirt:1"
+
+source overcloudrc
+counter=1
+while [ "$counter" -le 10 ]; do
+  if curl --fail ${admin_controller_ip}:80; then
+    echo "Overcloud Horizon is up...Checking if OpenDaylight NetVirt is up..."
+    if curl --fail ${netvirt_url} > /dev/null; then
+      echo "OpenDaylight is up.  Overcloud deployment complete"
+      exit 0
+    else
+      echo "OpenDaylight not yet up, try ${counter}"
+    fi
+  else
+    echo "Horizon/Apache not yet up, try ${counter}"
+  fi
+  counter=$((counter+1))
+  sleep 60
+done
+
+echo "ERROR: Deployment not up after 10 minutes...exiting."
+exit 1
index 64f13f4..89fd5ed 100755 (executable)
@@ -73,7 +73,17 @@ gsutil cp $WORKSPACE/opnfv.properties gs://$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION
 gsutil cp $WORKSPACE/opnfv.properties gs://$GS_URL/latest.properties > gsutil.latest.log
 }
 
-if gpg2 --list-keys | grep "opnfv-helpdesk@rt.linuxfoundation.org"; then
+uploadsnap () {
+  # Uploads snapshot artifact and updated properties file
+  echo "Uploading snapshot artifacts"
+  gsutil cp $WORKSPACE/apex-csit-snap-`date +%Y-%m-%d`.tar.gz gs://$GS_URL/ > gsutil.iso.log
+  gsutil cp $WORKSPACE/snapshot.properties gs://$GS_URL/snapshot.properties > gsutil.latest.log
+  echo "Upload complete for Snapshot"
+}
+
+if grep csit $WORKSPACE; then
+  uploadsnap
+elif gpg2 --list-keys | grep "opnfv-helpdesk@rt.linuxfoundation.org"; then
   echo "Signing Key avaliable"
   signiso
   uploadiso
index 9733c59..512112e 100644 (file)
@@ -12,6 +12,7 @@
         - 'apex-daily-colorado'
         - 'apex-build-colorado'
         - 'apex-deploy-baremetal-os-odl_l2-fdio-ha-colorado'
+        - 'apex-csit-promote-daily-{stream}'
 
     # stream:    branch with - in place of / (eg. stable-arno)
     # branch:    branch (eg. stable/arno)
          - 'os-odl_l2-sfc-noha'
          - 'os-odl_l3-nofeature-ha'
          - 'os-odl-bgpvpn-ha'
-         - 'os-odl-gluon-ha'
+         - 'os-odl-gluon-noha'
          - 'os-odl_l3-fdio-noha'
          - 'os-odl_l3-fdio-ha'
          - 'os-odl_l3-fdio_dvr-noha'
          - 'os-odl_l3-fdio_dvr-ha'
+         - 'os-odl_l3-csit-noha'
          - 'os-onos-nofeature-ha'
 
     platform:
@@ -61,7 +63,6 @@
             gs-pathname: '{gs-pathname}'
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - string:
             name: GIT_BASE
             gs-pathname: '{gs-pathname}'
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - string:
             name: GIT_BASE
             gs-pathname: '{gs-pathname}'
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - string:
             name: GIT_BASE
             blocking-jobs:
                 - 'apex-daily.*'
                 - 'apex-verify.*'
+                - 'apex-csit.*'
 
     builders:
         - trigger-builds:
             gs-pathname: '{gs-pathname}'
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - string:
             name: GIT_BASE
     parameters:
         - project-parameter:
             project: '{project}'
+            branch: '{branch}'
         - apex-parameter:
             gs-pathname: '{gs-pathname}'
-        - gerrit-parameter:
-            branch: '{branch}'
         - string:
             name: GIT_BASE
             default: https://gerrit.opnfv.org/gerrit/$PROJECT
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - apex-parameter:
             gs-pathname: '{gs-pathname}'
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - apex-parameter:
             gs-pathname: '{gs-pathname}'
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - apex-parameter:
             gs-pathname: '{gs-pathname}'
                 - 'apex-deploy.*'
                 - 'apex-build.*'
                 - 'apex-runner.*'
+                - 'apex-csit.*'
 
     triggers:
         - 'apex-{stream}'
                 build-step-failure-threshold: 'never'
                 failure-threshold: 'never'
                 unstable-threshold: 'FAILURE'
-
-
+        - trigger-builds:
+          - project: 'apex-deploy-baremetal-os-odl-bgpvpn-ha-{stream}'
+            predefined-parameters: |
+              BUILD_DIRECTORY=apex-build-{stream}/.build
+              OPNFV_CLEAN=yes
+            git-revision: true
+            same-node: true
+            block-thresholds:
+                build-step-failure-threshold: 'never'
+            block: true
+        - trigger-builds:
+          - project: 'functest-apex-{daily-slave}-daily-{stream}'
+            predefined-parameters:
+              DEPLOY_SCENARIO=os-odl-bgpvpn-ha
+            block: true
+            same-node: true
+            block-thresholds:
+                build-step-failure-threshold: 'never'
+                failure-threshold: 'never'
+                unstable-threshold: 'FAILURE'
+        - trigger-builds:
+          - project: 'yardstick-apex-{slave}-daily-{stream}'
+            predefined-parameters:
+              DEPLOY_SCENARIO=os-odl-bgpvpn-ha
+            block: true
+            same-node: true
+            block-thresholds:
+                build-step-failure-threshold: 'never'
+                failure-threshold: 'never'
+                unstable-threshold: 'FAILURE'
 # Colorado Build
 - job-template:
     name: 'apex-build-colorado'
     parameters:
         - project-parameter:
             project: '{project}'
+            branch: 'stable/colorado'
         - apex-parameter:
             gs-pathname: '/colorado'
-        - gerrit-parameter:
-            branch: 'stable/colorado'
         - string:
             name: GIT_BASE
             default: https://gerrit.opnfv.org/gerrit/$PROJECT
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: 'stable/colorado'
         - apex-parameter:
             gs-pathname: '/colorado'
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: 'stable/colorado'
         - apex-parameter:
             gs-pathname: '/colorado'
                 failure-threshold: 'never'
                 unstable-threshold: 'FAILURE'
 
+# CSIT promote
+- job-template:
+    name: 'apex-csit-promote-daily-{stream}'
+
+    # Job template for promoting CSIT Snapshots
+    #
+    # Required Variables:
+    #     stream:    branch with - in place of / (eg. stable)
+    #     branch:    branch (eg. stable)
+    node: '{daily-slave}'
+
+    disabled: false
+
+    scm:
+        - git-scm
+
+    parameters:
+        - project-parameter:
+            project: '{project}'
+            branch: '{branch}'
+        - apex-parameter:
+            gs-pathname: '{gs-pathname}'
+
+    properties:
+        - build-blocker:
+            use-build-blocker: true
+            block-level: 'NODE'
+            blocking-jobs:
+                - 'apex-verify.*'
+                - 'apex-deploy.*'
+                - 'apex-build.*'
+                - 'apex-runner.*'
+                - 'apex-daily.*'
+
+    triggers:
+        - timed: '0 12 * * 0'
+
+    builders:
+        - 'apex-build'
+        - trigger-builds:
+          - project: 'apex-deploy-virtual-os-odl_l3-csit-noha-{stream}'
+            predefined-parameters: |
+              BUILD_DIRECTORY=apex-csit-promote-daily-{stream}
+              OPNFV_CLEAN=yes
+            git-revision: false
+            block: true
+            same-node: true
+        - trigger-builds:
+          - project: 'functest-apex-{daily-slave}-suite-{stream}'
+            predefined-parameters: |
+              DEPLOY_SCENARIO=os-odl_l3-nofeature-noha
+              FUNCTEST_SUITE_NAME=tempest_smoke_serial
+            block: true
+            same-node: true
+        - shell:
+            !include-raw-escape: ./apex-snapshot-create.sh
+        - shell:
+            !include-raw-escape: ./apex-upload-artifact.sh
+
 - job-template:
     name: 'apex-gs-clean-{stream}'
 
     parameters:
         - project-parameter:
             project: '{project}'
+            branch: '{branch}'
         - apex-parameter:
             gs-pathname: '{gs-pathname}'
 
index 599a55e..4cb58d9 100644 (file)
     parameters:
         - project-parameter:
             project: '{project}'
+            branch: '{branch}'
         - '{installer}-defaults'
         - '{slave-label}-defaults':
             installer: '{installer}'
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - '{installer}-defaults'
         - '{slave-label}-defaults':
index 4df9acf..adabfca 100755 (executable)
@@ -8,7 +8,6 @@
 # which accompanies this distribution, and is available at
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
-set -o errexit
 set -o nounset
 set -o pipefail
 
@@ -49,8 +48,8 @@ mkdir -p $TMPDIR
 
 cd $WORKSPACE
 if [[ $LAB_CONFIG_URL =~ ^(git|ssh):// ]]; then
-    echo "Cloning securedlab repo ${GIT_BRANCH##origin/}"
-    git clone --quiet --branch ${GIT_BRANCH##origin/} $LAB_CONFIG_URL lab-config
+    echo "Cloning securedlab repo $BRANCH"
+    git clone --quiet --branch $BRANCH $LAB_CONFIG_URL lab-config
     LAB_CONFIG_URL=file://${WORKSPACE}/lab-config
 
     # Source local_env if present, which contains POD-specific config
@@ -73,7 +72,7 @@ FUEL_LOG_FILENAME="${JOB_NAME}_${BUILD_NUMBER}.log.tar.gz"
 
 # Deploy Cache (to enable just create the deploy-cache subdir)
 # NOTE: Only available when ISO files are cached using ISOSTORE mechanism
-DEPLOY_CACHE=${ISOSTORE:-/iso_mount/opnfv_ci}/${GIT_BRANCH##*/}/deploy-cache
+DEPLOY_CACHE=${ISOSTORE:-/iso_mount/opnfv_ci}/${BRANCH##*/}/deploy-cache
 if [[ -d "${DEPLOY_CACHE}" ]]; then
     echo "Deploy cache dir present."
     echo "--------------------------------------------------------"
index ed7897b..e2dd097 100755 (executable)
@@ -38,7 +38,7 @@ ISO_FILE=${WORKSPACE}/opnfv.iso
 # using ISOs for verify & merge jobs from local storage will be enabled later
 if [[ ! "$JOB_NAME" =~ (verify|merge) ]]; then
     # check if we already have the ISO to avoid redownload
-    ISOSTORE=${ISOSTORE:-/iso_mount/opnfv_ci}/${GIT_BRANCH##*/}
+    ISOSTORE=${ISOSTORE:-/iso_mount/opnfv_ci}/${BRANCH##*/}
     if [[ -f "$ISOSTORE/$OPNFV_ARTIFACT" ]]; then
         echo "ISO exists locally. Skipping the download and using the file from ISO store"
         ln -s $ISOSTORE/$OPNFV_ARTIFACT ${ISO_FILE}
index 2a18549..0fb5e4e 100644 (file)
@@ -40,7 +40,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-arm-defaults'
         - '{installer}-defaults'
index 06ded37..05146a3 100644 (file)
@@ -94,7 +94,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-arm-defaults'
         - 'armband-verify-defaults':
                 - name: 'armband-verify-basic-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                 - name: 'armband-verify-build-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                 - name: 'armband-verify-deploy-virtual-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                 - name: 'armband-verify-smoke-test-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - '{slave-label}-defaults'
         - '{installer}-defaults'
index 7059ac3..97987e2 100755 (executable)
@@ -28,7 +28,7 @@ if [[ ! "$JOB_NAME" =~ (verify|merge) ]]; then
     # store ISO locally on NFS first
     ISOSTORE=${ISOSTORE:-/iso_mount/opnfv_ci}
     if [[ -d "$ISOSTORE" ]]; then
-        ISOSTORE=${ISOSTORE}/${GIT_BRANCH##*/}
+        ISOSTORE=${ISOSTORE}/${BRANCH##*/}
         mkdir -p $ISOSTORE
 
         # remove all but most recent 3 ISOs first to keep iso_mount clean & tidy
index c3603a6..9cb7f88 100644 (file)
@@ -28,7 +28,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
 
index 7a5b5e4..6a17e17 100644 (file)
@@ -30,7 +30,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
 
@@ -87,7 +86,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
 
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
 
index 92ec2d8..582f40c 100644 (file)
@@ -95,7 +95,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - '{slave-label}-defaults'
         - '{installer}-defaults'
index 80a972b..535edaf 100644 (file)
@@ -42,7 +42,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
 
@@ -80,7 +79,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
 
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
         - bottlenecks-parameter:
index 754b24e..6c9686a 100644 (file)
     parameters:
         - project-parameter:
             project: '{project}'
+            branch: '{branch}'
         - compass-ci-parameter:
             installer: '{installer}'
             gs-pathname: '{gs-pathname}'
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - compass-ci-parameter:
             installer: '{installer}'
diff --git a/jjb/compass4nfv/compass-dovetail-jobs.yml b/jjb/compass4nfv/compass-dovetail-jobs.yml
new file mode 100644 (file)
index 0000000..0fd2f9e
--- /dev/null
@@ -0,0 +1,209 @@
+- project:
+
+    name: 'compass-dovetail-jobs'
+    installer: 'compass'
+    project: 'compass4nfv'
+#----------------------------------
+# BRANCH ANCHORS
+#----------------------------------
+    colorado: &colorado
+        stream: colorado
+        branch: 'stable/{stream}'
+        gs-pathname: '/{stream}'
+        disabled: false
+        dovetail-branch: master
+#------------------------------------
+# POD, INSTALLER, AND BRANCH MAPPING
+#------------------------------------
+#        CI PODs
+#------------------------------------
+    pod:
+        - baremetal:
+            slave-label: compass-baremetal
+            os-version: 'trusty'
+            <<: *colorado
+#-----------------------------------
+# scenarios
+#-----------------------------------
+    scenario:
+        - 'os-nosdn-nofeature-ha':
+            disabled: false
+            auto-trigger-name: 'dovetail-weekly-trigger'
+
+    jobs:
+        - 'compass-{scenario}-{pod}-weekly-{stream}'
+        - 'compass-deploy-{pod}-weekly-{stream}'
+
+########################
+# job templates
+########################
+- job-template:
+    name: 'compass-{scenario}-{pod}-weekly-{stream}'
+
+    disabled: '{obj:disabled}'
+
+    concurrent: false
+
+    properties:
+        - build-blocker:
+            use-build-blocker: true
+            blocking-jobs:
+                - 'compass-os-.*?-{pod}-daily-.*?'
+                - 'compass-os-.*?-{pod}-weekly-.*?'
+            block-level: 'NODE'
+
+    wrappers:
+        - build-name:
+            name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
+
+    triggers:
+        - '{auto-trigger-name}'
+
+    parameters:
+        - project-parameter:
+            project: '{project}'
+            branch: '{branch}'
+        - compass-ci-parameter:
+            installer: '{installer}'
+            gs-pathname: '{gs-pathname}'
+        - string:
+            name: DEPLOY_SCENARIO
+            default: '{scenario}'
+        - '{slave-label}-defaults'
+        - '{installer}-defaults'
+
+    triggers:
+        - '{auto-trigger-name}'
+
+    builders:
+        - description-setter:
+            description: "POD: $NODE_NAME"
+        - trigger-builds:
+            - project: 'compass-deploy-{pod}-weekly-{stream}'
+              current-parameters: false
+              predefined-parameters: |
+                DEPLOY_SCENARIO={scenario}
+                COMPASS_OS_VERSION={os-version}
+              same-node: true
+              block: true
+        - trigger-builds:
+            - project: 'dovetail-compass-{pod}-compliance_set-weekly-{stream}'
+              current-parameters: false
+              predefined-parameters:
+                DEPLOY_SCENARIO={scenario}
+              block: true
+              same-node: true
+              block-thresholds:
+                build-step-failure-threshold: 'never'
+                failure-threshold: 'never'
+                unstable-threshold: 'FAILURE'
+        - trigger-builds:
+            - project: 'dovetail-compass-{pod}-debug-weekly-{stream}'
+              current-parameters: false
+              predefined-parameters:
+                DEPLOY_SCENARIO={scenario}
+              block: true
+              same-node: true
+              block-thresholds:
+                build-step-failure-threshold: 'never'
+                failure-threshold: 'never'
+                unstable-threshold: 'FAILURE'
+        - trigger-builds:
+            - project: 'dovetail-compass-{pod}-proposed_tests-weekly-{stream}'
+              current-parameters: false
+              predefined-parameters:
+                DEPLOY_SCENARIO={scenario}
+              block: true
+              same-node: true
+              block-thresholds:
+                build-step-failure-threshold: 'never'
+                failure-threshold: 'never'
+                unstable-threshold: 'FAILURE'
+
+- job-template:
+    name: 'compass-deploy-{pod}-weekly-{stream}'
+
+    disabled: false
+
+    concurrent: true
+
+    properties:
+        - logrotate-default
+        - throttle:
+            enabled: true
+            max-total: 4
+            max-per-node: 1
+            option: 'project'
+        - build-blocker:
+            use-build-blocker: true
+            blocking-jobs:
+                - 'compass-deploy-{pod}-daily-.*?'
+                - 'compass-deploy-{pod}-weekly-.*'
+                - 'compass-verify-deploy-.*?'
+            block-level: 'NODE'
+
+    wrappers:
+        - build-name:
+            name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
+        - timeout:
+            timeout: 120
+            abort: true
+
+    parameters:
+        - project-parameter:
+            project: '{project}'
+            branch: '{branch}'
+        - compass-ci-parameter:
+            installer: '{installer}'
+            gs-pathname: '{gs-pathname}'
+        - '{slave-label}-defaults'
+        - '{installer}-defaults'
+
+    scm:
+        - git-scm
+
+    wrappers:
+        - build-name:
+            name: '$BUILD_NUMBER - Scenario: $DEPLOY_SCENARIO'
+
+
+    builders:
+        - description-setter:
+            description: "POD: $NODE_NAME"
+        - shell:
+            !include-raw-escape: ./compass-download-artifact.sh
+        - shell:
+            !include-raw-escape: ./compass-deploy.sh
+
+    publishers:
+        - archive:
+            artifacts: 'ansible.log'
+            allow-empty: 'true'
+            fingerprint: true
+
+########################
+# parameter macros
+########################
+- parameter:
+    name: compass-dovetail-parameter
+    parameters:
+        - string:
+            name: BUILD_DIRECTORY
+            default: $WORKSPACE/build_output
+            description: "Directory where the build artifact will be located upon the completion of the build."
+        - string:
+            name: GS_URL
+            default: '$GS_BASE{gs-pathname}'
+            description: "URL to Google Storage."
+        - choice:
+            name: COMPASS_OPENSTACK_VERSION
+            choices:
+                - 'mitaka'
+
+########################
+# trigger macros
+########################
+- trigger:
+    name: 'compass-os-nosdn-nofeature-ha-baremetal-weekly-colorado-trigger'
+    triggers:
+        - timed: ''
index 75ebdb2..ed0fee6 100644 (file)
@@ -43,7 +43,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - compass-project-parameter:
             installer: '{installer}'
@@ -87,7 +86,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - compass-project-parameter:
             installer: '{installer}'
index f5a54c8..f4df670 100644 (file)
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'compass-virtual-defaults'
         - '{installer}-defaults'
index fccd53e..1d47624 100644 (file)
@@ -28,7 +28,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
 
index 24f65a3..eff66ba 100644 (file)
@@ -28,7 +28,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
 
index 998e3c9..125937e 100644 (file)
@@ -58,7 +58,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - '{pod}-defaults'
         - '{installer}-defaults'
index 1e7bf90..72e25b2 100644 (file)
@@ -79,7 +79,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-defaults'
         - 'daisy4nfv-merge-defaults':
@@ -95,7 +94,7 @@
                 - name: 'daisy4nfv-merge-basic-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                 - name: 'daisy4nfv-merge-build-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                 - name: 'daisy4nfv-merge-deploy-virtual-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                 - name: 'daisy4nfv-merge-smoke-test-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                 - name: 'daisy4nfv-merge-promote-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - '{slave-label}-defaults'
         - 'daisy4nfv-merge-defaults':
index 82532b2..fd36d20 100644 (file)
@@ -83,7 +83,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-defaults'
         - 'daisy4nfv-verify-defaults':
@@ -99,7 +98,7 @@
                 - name: 'daisy4nfv-verify-basic-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                 - name: 'daisy4nfv-verify-build-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                 - name: 'daisy4nfv-verify-deploy-virtual-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                 - name: 'daisy4nfv-verify-smoke-test-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - '{slave-label}-defaults'
         - 'daisy4nfv-verify-defaults':
index 2abb946..2333fca 100644 (file)
@@ -7,7 +7,7 @@
         - master:
             branch: '{stream}'
             gs-pathname: ''
-            docker-tag: 'master'
+            docker-tag: 'latest'
             disabled: false
         - danube:
             branch: 'stable/{stream}'
         - fuel:
             slave-label: 'ool-virtual2'
             pod: 'ool-virtual2'
-        # TODO(r-mibu): enable this once joid is ready
-        #- joid:
-        #    slave-label: 'ool-virtual3'
-        #    pod: 'ool-virtual3'
+        - joid:
+            slave-label: 'ool-virtual3'
+            pod: 'ool-virtual3'
 
     inspector:
         - 'sample'
@@ -51,7 +50,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
 
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
-        - string:
-            name: GIT_BRANCH
-            default: 'origin/{branch}'
-            description: "Override GIT_BRANCH parameter as we need stream name here"
-            #TODO(r-mibu): remove this work around by cleanup *_BRANCH params
         - string:
             name: OS_CREDS
             default: /home/jenkins/openstack.creds
             branch: '{branch}'
 
     builders:
+        - 'clean-workspace-log'
         - 'functest-suite-builder'
         - shell: |
             functest_log="$HOME/opnfv/functest/results/{stream}/{project}.log"
index 532fce6..5fd9db3 100644 (file)
@@ -24,7 +24,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
 
index 1a69356..3d9af5e 100644 (file)
@@ -43,7 +43,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
         - dovetail-parameter:
index 917856b..4d92980 100644 (file)
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - '{SUT}-defaults'
         - '{slave-label}-defaults'
index 9048413..9dc4808 100644 (file)
@@ -28,7 +28,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
 
@@ -65,7 +64,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
 
index c6b3774..66c05e2 100644 (file)
@@ -82,7 +82,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - '{sut}-defaults'
         - '{slave-label}-defaults'
index 27e6635..bc61d74 100644 (file)
@@ -28,7 +28,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
 
index 103a696..2265daf 100644 (file)
@@ -81,7 +81,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-defaults'
         - 'escalator-defaults':
@@ -97,7 +96,7 @@
                 - name: 'escalator-verify-basic-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                 - name: 'escalator-verify-build-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - '{slave-label}-defaults'
         - 'escalator-defaults':
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-defaults'
         - 'escalator-defaults':
                 - name: 'escalator-merge-basic-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                 - name: 'escalator-merge-build-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - '{slave-label}-defaults'
         - 'escalator-defaults':
index e176dac..02267bd 100644 (file)
             auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
         - 'os-nosdn-kvm_ovs-ha':
             auto-trigger-name: 'daily-trigger-disabled'
+        - 'os-nosdn-kvm_ovs_dpdk-ha':
+            auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
+        - 'os-nosdn-kvm_ovs_dpdk_bar-ha':
+            auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
         # NOHA scenarios
         - 'os-nosdn-nofeature-noha':
             auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
             auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
         - 'os-nosdn-ovs-noha':
             auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
+        - 'os-nosdn-kvm_ovs_dpdk-noha':
+            auto-trigger-name: 'fuel-{scenario}-{pod}-daily-{stream}-trigger'
 
     jobs:
         - 'fuel-{scenario}-{pod}-daily-{stream}'
     parameters:
         - project-parameter:
             project: '{project}'
+            branch: '{branch}'
         - '{installer}-defaults'
         - '{slave-label}-defaults':
             installer: '{installer}'
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - '{installer}-defaults'
         - '{slave-label}-defaults':
     name: 'fuel-os-nosdn-ovs-ha-baremetal-daily-master-trigger'
     triggers:
         - timed: '5 20 * * *'
-
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk-ha-baremetal-daily-master-trigger'
+    triggers:
+        - timed: '30 12 * * *'
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-ha-baremetal-daily-master-trigger'
+    triggers:
+        - timed: '30 8 * * *'
 # NOHA Scenarios
 - trigger:
     name: 'fuel-os-nosdn-nofeature-noha-baremetal-daily-master-trigger'
     name: 'fuel-os-nosdn-ovs-noha-baremetal-daily-master-trigger'
     triggers:
         - timed: ''
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk-noha-baremetal-daily-master-trigger'
+    triggers:
+        - timed: '30 16 * * *'
 #-----------------------------------------------
 # Triggers for job running on fuel-baremetal against danube branch
 #-----------------------------------------------
     name: 'fuel-os-nosdn-ovs-ha-baremetal-daily-danube-trigger'
     triggers:
         - timed: '0 20 * * *'
-
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk-ha-baremetal-daily-danube-trigger'
+    triggers:
+        - timed: ''
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-ha-baremetal-daily-danube-trigger'
+    triggers:
+        - timed: ''
 # NOHA Scenarios
 - trigger:
     name: 'fuel-os-nosdn-nofeature-noha-baremetal-daily-danube-trigger'
     name: 'fuel-os-nosdn-ovs-noha-baremetal-daily-danube-trigger'
     triggers:
         - timed: ''
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk-noha-baremetal-daily-danube-trigger'
+    triggers:
+        - timed: ''
 #-----------------------------------------------
 # Triggers for job running on fuel-virtual against master branch
 #-----------------------------------------------
     name: 'fuel-os-nosdn-ovs-ha-virtual-daily-master-trigger'
     triggers:
         - timed: ''
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk-ha-virtual-daily-master-trigger'
+    triggers:
+        - timed: ''
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-ha-virtual-daily-master-trigger'
+    triggers:
+        - timed: ''
 # NOHA Scenarios
 - trigger:
     name: 'fuel-os-nosdn-nofeature-noha-virtual-daily-master-trigger'
     name: 'fuel-os-nosdn-ovs-noha-virtual-daily-master-trigger'
     triggers:
         - timed: '5 9 * * *'
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk-noha-virtual-daily-master-trigger'
+    triggers:
+        - timed: ''
 #-----------------------------------------------
 # Triggers for job running on fuel-virtual against danube branch
 #-----------------------------------------------
     name: 'fuel-os-nosdn-ovs-ha-virtual-daily-danube-trigger'
     triggers:
         - timed: ''
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk-ha-virtual-daily-danube-trigger'
+    triggers:
+        - timed: ''
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-ha-virtual-daily-danube-trigger'
+    triggers:
+        - timed: ''
 # NOHA Scenarios
 - trigger:
     name: 'fuel-os-nosdn-nofeature-noha-virtual-daily-danube-trigger'
     name: 'fuel-os-nosdn-ovs-noha-virtual-daily-danube-trigger'
     triggers:
         - timed: '0 9 * * *'
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk-noha-virtual-daily-danube-trigger'
+    triggers:
+        - timed: ''
 #-----------------------------------------------
 # ZTE POD1 Triggers running against master branch
 #-----------------------------------------------
     name: 'fuel-os-nosdn-ovs-ha-zte-pod1-daily-master-trigger'
     triggers:
         - timed: ''
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk-ha-zte-pod1-daily-master-trigger'
+    triggers:
+        - timed: ''
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-ha-zte-pod1-daily-master-trigger'
+    triggers:
+        - timed: ''
 # NOHA Scenarios
 - trigger:
     name: 'fuel-os-nosdn-nofeature-noha-zte-pod1-daily-master-trigger'
     name: 'fuel-os-nosdn-ovs-noha-zte-pod1-daily-master-trigger'
     triggers:
         - timed: ''
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk-noha-zte-pod1-daily-master-trigger'
+    triggers:
+        - timed: ''
 
 #-----------------------------------------------
 # ZTE POD2 Triggers running against master branch
     name: 'fuel-os-nosdn-ovs-ha-zte-pod2-daily-master-trigger'
     triggers:
         - timed: ''
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk-ha-zte-pod2-daily-master-trigger'
+    triggers:
+        - timed: ''
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-ha-zte-pod2-daily-master-trigger'
+    triggers:
+        - timed: ''
 # NOHA Scenarios
 - trigger:
     name: 'fuel-os-nosdn-nofeature-noha-zte-pod2-daily-master-trigger'
     name: 'fuel-os-nosdn-ovs-noha-zte-pod2-daily-master-trigger'
     triggers:
         - timed: ''
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk-noha-zte-pod2-daily-master-trigger'
+    triggers:
+        - timed: ''
 #-----------------------------------------------
 # ZTE POD3 Triggers running against master branch
 #-----------------------------------------------
     name: 'fuel-os-nosdn-ovs-ha-zte-pod3-daily-master-trigger'
     triggers:
         - timed: ''
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk-ha-zte-pod3-daily-master-trigger'
+    triggers:
+        - timed: ''
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-ha-zte-pod3-daily-master-trigger'
+    triggers:
+        - timed: ''
 # NOHA Scenarios
 - trigger:
     name: 'fuel-os-nosdn-nofeature-noha-zte-pod3-daily-master-trigger'
     name: 'fuel-os-nosdn-ovs-noha-zte-pod3-daily-master-trigger'
     triggers:
         - timed: ''
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk-noha-zte-pod3-daily-master-trigger'
+    triggers:
+        - timed: ''
 #-----------------------------------------------
 # ZTE POD1 Triggers running against danube branch
 #-----------------------------------------------
     name: 'fuel-os-nosdn-ovs-ha-zte-pod1-daily-danube-trigger'
     triggers:
         - timed: ''
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk-ha-zte-pod1-daily-danube-trigger'
+    triggers:
+        - timed: ''
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-ha-zte-pod1-daily-danube-trigger'
+    triggers:
+        - timed: ''
 # NOHA Scenarios
 - trigger:
     name: 'fuel-os-nosdn-nofeature-noha-zte-pod1-daily-danube-trigger'
     name: 'fuel-os-nosdn-ovs-noha-zte-pod1-daily-danube-trigger'
     triggers:
         - timed: ''
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk-noha-zte-pod1-daily-danube-trigger'
+    triggers:
+        - timed: ''
 
 #-----------------------------------------------
 # ZTE POD2 Triggers running against danube branch
     name: 'fuel-os-nosdn-ovs-ha-zte-pod2-daily-danube-trigger'
     triggers:
         - timed: ''
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk-ha-zte-pod2-daily-danube-trigger'
+    triggers:
+        - timed: ''
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-ha-zte-pod2-daily-danube-trigger'
+    triggers:
+        - timed: ''
 # NOHA Scenarios
 - trigger:
     name: 'fuel-os-nosdn-nofeature-noha-zte-pod2-daily-danube-trigger'
     name: 'fuel-os-nosdn-ovs-noha-zte-pod2-daily-danube-trigger'
     triggers:
         - timed: ''
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk-noha-zte-pod2-daily-danube-trigger'
+    triggers:
+        - timed: ''
 #-----------------------------------------------
 # ZTE POD3 Triggers running against danube branch
 #-----------------------------------------------
     name: 'fuel-os-nosdn-ovs-ha-zte-pod3-daily-danube-trigger'
     triggers:
         - timed: ''
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk-ha-zte-pod3-daily-danube-trigger'
+    triggers:
+        - timed: ''
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk_bar-ha-zte-pod3-daily-danube-trigger'
+    triggers:
+        - timed: ''
 # NOHA Scenarios
 - trigger:
     name: 'fuel-os-nosdn-nofeature-noha-zte-pod3-daily-danube-trigger'
     name: 'fuel-os-nosdn-ovs-noha-zte-pod3-daily-danube-trigger'
     triggers:
         - timed: ''
+- trigger:
+    name: 'fuel-os-nosdn-kvm_ovs_dpdk-noha-zte-pod3-daily-danube-trigger'
+    triggers:
+        - timed: ''
index 48b1dac..4efccd6 100755 (executable)
@@ -57,9 +57,9 @@ chmod a+x $TMPDIR
 
 # clone the securedlab repo
 cd $WORKSPACE
-echo "Cloning securedlab repo ${GIT_BRANCH##origin/}"
+echo "Cloning securedlab repo $BRANCH"
 git clone ssh://jenkins-ericsson@gerrit.opnfv.org:29418/securedlab --quiet \
-    --branch ${GIT_BRANCH##origin/}
+    --branch $BRANCH
 
 # log file name
 FUEL_LOG_FILENAME="${JOB_NAME}_${BUILD_NUMBER}.log.tar.gz"
index 2a0f09a..8cc552e 100755 (executable)
@@ -36,7 +36,7 @@ echo "Using $OPNFV_ARTIFACT for deployment"
 # using ISOs for verify & merge jobs from local storage will be enabled later
 if [[ ! "$JOB_NAME" =~ (verify|merge) ]]; then
     # check if we already have the ISO to avoid redownload
-    ISOSTORE="/iso_mount/opnfv_ci/${GIT_BRANCH##*/}"
+    ISOSTORE="/iso_mount/opnfv_ci/${BRANCH##*/}"
     if [[ -f "$ISOSTORE/$OPNFV_ARTIFACT" ]]; then
         echo "ISO exists locally. Skipping the download and using the file from ISO store"
         ln -s $ISOSTORE/$OPNFV_ARTIFACT $WORKSPACE/opnfv.iso
index 390094e..32ad890 100644 (file)
@@ -45,7 +45,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
         - '{installer}-defaults'
@@ -91,7 +90,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
         - '{installer}-defaults'
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'fuel-virtual-defaults':
             installer: '{installer}'
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - '{installer}-defaults'
         - string:
index ca4ba00..d1ac350 100755 (executable)
@@ -23,7 +23,7 @@ nfsstore () {
 # storing ISOs for verify & merge jobs will be done once we get the disk array
 if [[ ! "$JOB_NAME" =~ (verify|merge) ]]; then
     # store ISO locally on NFS first
-    ISOSTORE="/iso_mount/opnfv_ci/${GIT_BRANCH##*/}"
+    ISOSTORE="/iso_mount/opnfv_ci/${BRANCH##*/}"
     if [[ -d "$ISOSTORE" ]]; then
         # remove all but most recent 5 ISOs first to keep iso_mount clean & tidy
         cd $ISOSTORE
index 95d675a..ae64580 100644 (file)
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-defaults'
         - 'fuel-verify-defaults-exp':
                 - name: 'fuel-verify-basic-{stream-exp}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                 - name: 'fuel-verify-build-{stream-exp}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                 - name: 'fuel-verify-deploy-virtual-{stream-exp}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                 - name: 'fuel-verify-smoke-test-{stream-exp}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - '{slave-label}-defaults'
         - '{installer}-defaults'
index 4394897..7f9eff0 100644 (file)
@@ -96,7 +96,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
         - 'fuel-verify-defaults':
                 - name: 'fuel-verify-basic-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                 - name: 'fuel-verify-build-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                 - name: 'fuel-verify-deploy-virtual-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                 - name: 'fuel-verify-smoke-test-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - '{slave-label}-defaults'
         - '{installer}-defaults'
index a688cab..7478e2a 100644 (file)
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - '{installer}-defaults'
         - '{slave-label}-defaults'
index 10edab0..925a3cf 100644 (file)
@@ -1,7 +1,6 @@
 #!/bin/bash
 
-branch=${GIT_BRANCH##*/}
-ret_val_file="${HOME}/opnfv/functest/results/${branch}/return_value"
+ret_val_file="${HOME}/opnfv/functest/results/${BRANCH##*/}/return_value"
 if [ ! -f ${ret_val_file} ]; then
     echo "Return value not found!"
     exit -1
@@ -9,4 +8,4 @@ fi
 
 ret_val=`cat ${ret_val_file}`
 
-exit ${ret_val}
\ No newline at end of file
+exit ${ret_val}
index 4528c00..893c428 100755 (executable)
@@ -3,9 +3,9 @@ set +e
 
 branch=${GIT_BRANCH##*/}
 [[ "$PUSH_RESULTS_TO_DB" == "true" ]] && flags+="-r"
-if [[ ${branch} == *"brahmaputra"* ]]; then
+if [[ "$BRANCH" =~ 'brahmaputra' ]]; then
     cmd="${FUNCTEST_REPO_DIR}/docker/run_tests.sh -s ${flags}"
-elif [[ ${branch} == *"colorado"* ]]; then
+elif [[ "$BRANCH" =~ 'colorado' ]]; then
     cmd="python ${FUNCTEST_REPO_DIR}/ci/run_tests.py -t all ${flags}"
 else
     cmd="python ${FUNCTEST_REPO_DIR}/functest/ci/run_tests.py -t all ${flags}"
@@ -14,7 +14,7 @@ container_id=$(docker ps -a | grep opnfv/functest | awk '{print $1}' | head -1)
 docker exec $container_id $cmd
 
 ret_value=$?
-ret_val_file="${HOME}/opnfv/functest/results/${branch}/return_value"
+ret_val_file="${HOME}/opnfv/functest/results/${BRANCH##*/}/return_value"
 echo ${ret_value}>${ret_val_file}
 
 exit 0
index 6a0768c..42c19a7 100644 (file)
@@ -28,7 +28,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
 
index 9dc8dec..28d7e3d 100755 (executable)
@@ -1,11 +1,10 @@
 #!/bin/bash
 set -e
 
-branch=${GIT_BRANCH##*/}
-echo "Functest: run $FUNCTEST_SUITE_NAME on branch ${branch}"
-if [[ ${branch} == *"brahmaputra"* ]]; then
+echo "Functest: run $FUNCTEST_SUITE_NAME on branch $BRANCH"
+if [[ "$BRANCH" =~ 'brahmaputra' ]]; then
     cmd="${FUNCTEST_REPO_DIR}/docker/run_tests.sh --test $FUNCTEST_SUITE_NAME"
-elif [[ ${branch} == *"colorado"* ]]; then
+elif [[ "$BRANCH" =~ 'colorado' ]]; then
     cmd="python ${FUNCTEST_REPO_DIR}/ci/run_tests.py -t $FUNCTEST_SUITE_NAME"
 else
     cmd="functest testcase run $FUNCTEST_SUITE_NAME"
index 583ce80..afd656f 100755 (executable)
@@ -56,8 +56,7 @@ DEPLOY_TYPE=baremetal
 
 echo "Functest: Start Docker and prepare environment"
 
-branch=${GIT_BRANCH##*/}
-dir_result="${HOME}/opnfv/functest/results/${branch}"
+dir_result="${HOME}/opnfv/functest/results/${BRANCH##*/}"
 mkdir -p ${dir_result}
 sudo rm -rf ${dir_result}/*
 results_vol="-v ${dir_result}:/home/opnfv/functest/results"
@@ -96,9 +95,9 @@ if [ $(docker ps | grep "opnfv/functest:${DOCKER_TAG}" | wc -l) == 0 ]; then
     echo "The container opnfv/functest with ID=${container_id} has not been properly started. Exiting..."
     exit 1
 fi
-if [[ ${branch} == *"brahmaputra"* ]]; then
+if [[ "$BRANCH" =~ 'brahmaputra' ]]; then
     cmd="${FUNCTEST_REPO_DIR}/docker/prepare_env.sh"
-elif [[ ${branch} == *"colorado"* ]]; then
+elif [[ "$BRANCH" =~ 'colorado' ]]; then
     cmd="python ${FUNCTEST_REPO_DIR}/ci/prepare_env.py start"
 else
     cmd="python ${FUNCTEST_REPO_DIR}/functest/ci/prepare_env.py start"
index 60fa22d..06152fe 100644 (file)
             name: GS_BASE_PROXY
             default: build.opnfv.org/artifacts.opnfv.org/$PROJECT
             description: "URL to Google Storage proxy"
-
-- parameter:
-    name: gerrit-parameter
-    parameters:
+        - string:
+            name: BRANCH
+            default: '{branch}'
+            description: "JJB configured BRANCH parameter (e.g. master, stable/danube)"
         - string:
             name: GERRIT_BRANCH
             default: '{branch}'
-            description: "JJB configured GERRIT_BRANCH parameter"
+            description: "JJB configured GERRIT_BRANCH parameter (deprecated)"
 
 - property:
     name: logrotate-default
@@ -51,7 +51,7 @@
             credentials-id: '$SSH_CREDENTIAL_ID'
             url: '$GIT_BASE'
             branches:
-                - 'origin/$GERRIT_BRANCH'
+                - 'origin/$BRANCH'
             timeout: 15
 
 - scm:
@@ -68,9 +68,9 @@
         - timed: ''
 
 - trigger:
-    name: 'weekly-trigger-disabled'
+    name: 'dovetail-weekly-trigger'
     triggers:
-        - timed: ''
+        - timed: 'H H * * 0'
 
 # NOTE: unused macro, but we may use this for some jobs.
 - trigger:
               sed -r -i '4,$s/^/ /g' lint.log
             fi
 
+- builder:
+    name: clean-workspace-log
+    builders:
+        - shell: |
+            find $WORKSPACE -type f -print -name '*.log' | xargs rm -f
+
 - publisher:
     name: archive-artifacts
     publishers:
index 4c106fc..c99023e 100644 (file)
@@ -55,6 +55,7 @@
 - defaults:
     name: vm_defaults
     vm-disk: '30'
+    vm-disk-cache: 'unsafe'
     vm-memory: '4096'
     vm-cpu: '2'
 
         - string:
             name: VM_DISK
             default: '{vm-disk}'
+        - string:
+            name: VM_DISK_CACHE
+            default: '{vm-disk-cache}'
         - string:
             name: VM_MEMORY
             default: '{vm-memory}'
             url: '$PROJECT_REPO'
             refspec: '$GERRIT_REFSPEC'
             branches:
-                - 'origin/$GERRIT_BRANCH'
+                - 'origin/$BRANCH'
             skip-tag: true
             choosing-strategy: 'gerrit'
             timeout: 10
index da54c52..a6745cd 100644 (file)
@@ -28,7 +28,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
 
index ad1a76f..b28dd60 100644 (file)
     parameters:
         - project-parameter:
             project: '{project}'
+            branch: '{branch}'
         - '{installer}-defaults'
         - '{slave-label}-defaults':
             installer: '{installer}'
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - '{installer}-defaults'
         - '{slave-label}-defaults':
index 23e21e9..7b8ce77 100644 (file)
@@ -94,7 +94,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'joid-virtual-defaults'
 
                 - name: 'joid-verify-basic-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                 - name: 'joid-verify-deploy-virtual-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
                 - name: 'joid-verify-smoke-test-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                     GERRIT_CHANGE_COMMIT_MESSAGE=$GERRIT_CHANGE_COMMIT_MESSAGE
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - '{installer}-defaults'
         - '{slave-label}-defaults'
index 9857f6a..522e971 100644 (file)
@@ -57,7 +57,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
 
@@ -91,7 +90,7 @@
                 - name: 'kvmfornfv-verify-build-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                   node-parameters: false
                 - name: 'kvmfornfv-verify-test-{stream}'
                   current-parameters: false
                   predefined-parameters: |
-                    GERRIT_BRANCH=$GERRIT_BRANCH
+                    BRANCH=$BRANCH
                     GERRIT_REFSPEC=$GERRIT_REFSPEC
                     GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER
                   node-parameters: false
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - '{slave-label}-defaults'
         - 'kvmfornfv-defaults':
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
         - 'kvmfornfv-defaults':
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
         - 'kvmfornfv-defaults':
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - '{slave-label}-defaults'
         - 'kvmfornfv-defaults':
index 15c3dde..a318bc5 100644 (file)
@@ -17,7 +17,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
 
index fab9ace..d8b4051 100755 (executable)
@@ -22,7 +22,7 @@ export TERM="vt220"
 
 # get the latest successful job console log and extract the properties filename
 FUEL_DEPLOY_BUILD_URL="https://build.opnfv.org/ci/job/fuel-deploy-virtual-daily-master/lastSuccessfulBuild/consoleText"
-FUEL_PROPERTIES_FILE=$(curl -s -L ${FUEL_DEPLOY_URL} | grep 'ISO:' | awk '{print $2}' | sed 's/iso/properties/g')
+FUEL_PROPERTIES_FILE=$(curl -s -L ${FUEL_DEPLOY_BUILD_URL} | grep 'ISO:' | awk '{print $2}' | sed 's/iso/properties/g')
 if [[ -z "FUEL_PROPERTIES_FILE" ]]; then
     echo "Unable to extract the url to Fuel ISO properties from ${FUEL_DEPLOY_URL}"
     exit 1
@@ -39,8 +39,6 @@ echo "Using ${OPNFV_ARTIFACT_URL/*\/} for deployment"
 echo "Downloading the ISO using the link http://$OPNFV_ARTIFACT_URL"
 curl -L -s -o $WORKSPACE/opnfv.iso http://$OPNFV_ARTIFACT_URL > gsutil.iso.log 2>&1
 
-echo "Checking out $OPNFV_GIT_SHA1"
-git checkout $OPNFV_GIT_SHA1 --quiet
 
 # set deployment parameters
 DEPLOY_SCENARIO="os-nosdn-nofeature-noha"
@@ -69,6 +67,13 @@ mkdir -p $TMPDIR
 chmod a+x $HOME
 chmod a+x $TMPDIR
 
+# clone fuel repo and checkout the sha1 that corresponds to the ISO
+echo "Cloning fuel repo"
+git clone https://gerrit.opnfv.org/gerrit/p/fuel.git fuel
+cd $WORKSPACE/fuel
+echo "Checking out $OPNFV_GIT_SHA1"
+git checkout $OPNFV_GIT_SHA1 --quiet
+
 # clone the securedlab repo
 cd $WORKSPACE
 echo "Cloning securedlab repo ${GIT_BRANCH##origin/}"
@@ -79,7 +84,7 @@ git clone ssh://jenkins-ericsson@gerrit.opnfv.org:29418/securedlab --quiet \
 FUEL_LOG_FILENAME="${JOB_NAME}_${BUILD_NUMBER}.log.tar.gz"
 
 # construct the command
-DEPLOY_COMMAND="sudo $WORKSPACE/ci/deploy.sh -b file://$WORKSPACE/securedlab \
+DEPLOY_COMMAND="sudo $WORKSPACE/fuel/ci/deploy.sh -b file://$WORKSPACE/securedlab \
     -l $LAB_NAME -p $POD_NAME -s $DEPLOY_SCENARIO -i file://$WORKSPACE/opnfv.iso \
     -H -B $BRIDGE -S $TMPDIR -L $WORKSPACE/$FUEL_LOG_FILENAME"
 
index 15c885d..6b022fd 100644 (file)
@@ -24,7 +24,7 @@
             branch: '{stream}'
             gs-pathname: ''
             disabled: false
-            timed: '#@midnight'
+            timed: '@midnight'
 
 - job-template:
     name: 'multisite-kingbird-virtual-daily-{stream}'
@@ -38,6 +38,7 @@
     parameters:
         - project-parameter:
             project: '{project}'
+            branch: '{branch}'
         - choice:
             name: FRESH_INSTALL
             choices:
     parameters:
         - project-parameter:
             project: '{project}'
+            branch: '{branch}'
         - string:
             name: KINGBIRD_LOG_FILE
             default: $WORKSPACE/kingbird.log
-        - gerrit-parameter:
-            branch: '{branch}'
         - 'fuel-defaults'
         - '{slave-label}-defaults'
         - choice:
             !include-raw-escape: ./fuel-deploy-for-multisite.sh
         - shell: |
             #!/bin/bash
+
             echo "This is where we deploy fuel, extract passwords and save into file"
-            $WORKSPACE/tools/keystone/run.sh -t controller -r $WORKSPACE/tools/keystone/fetchpass.sh -o servicepass.ini
+
+            cd $WORKSPACE/tools/keystone/
+            ./run.sh -t controller -r fetchpass.sh -o servicepass.ini
 
 - builder:
     name: 'multisite-fuel-deploy-regiontwo-virtual-builder'
             #!/bin/bash
 
             echo "This is where we deploy fuel, extract publicUrl, privateUrl, and adminUrl and save into file"
-            $WORKSPACE/tools/keystone/run.sh -t controller -r $WORKSPACE/tools/keystone/endpoint.sh -o endpoints.ini
+
+            cd $WORKSPACE/tools/keystone/
+            ./run.sh -t controller -r endpoint.sh -o endpoints.ini
 - builder:
     name: 'multisite-register-endpoints-builder'
     builders:
             #!/bin/bash
 
             echo "This is where we register RegionTwo in RegionOne keystone using endpoints.ini"
-            $WORKSPACE/tools/keystone/run.sh -t controller -r $WORKSPACE/tools/keystone/region.sh -d $WORKSPACE/endpoints.ini
+
+            cd $WORKSPACE/tools/keystone/
+            ./run.sh -t controller -r region.sh -d $WORKSPACE/endpoints.ini
 - builder:
     name: 'multisite-update-auth-builder'
     builders:
             #!/bin/bash
 
             echo "This is where we read passwords from servicepass.ini and replace passwords in RegionTwo"
-            $WORKSPACE/tools/keystone/run.sh -t controller -r $WORKSPACE/tools/keystone/writepass.sh -d $WORKSPACE/servicepass.ini
-            $WORKSPACE/tools/keystone/run.sh -t compute -r $WORKSPACE/tools/keystone/writepass.sh -d $WORKSPACE/servicepass.ini
+
+            cd $WORKSPACE/tools/keystone/
+            ./run.sh -t controller -r writepass.sh -d $WORKSPACE/servicepass.ini
+            ./run.sh -t compute -r writepass.sh -d $WORKSPACE/servicepass.ini
 - builder:
     name: 'multisite-kingbird-deploy-virtual-builder'
     builders:
             #!/bin/bash
 
             echo "This is where we install kingbird"
-            $WORKSPACE/tools/kingbird/deploy.sh
+            cd $WORKSPACE/tools/kingbird
+            ./deploy.sh
 ########################
 # publisher macros
 ########################
index fdcc8d5..5ecfafb 100644 (file)
@@ -32,7 +32,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
 
index 3d043f9..382434a 100644 (file)
@@ -21,7 +21,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
     scm:
         - git-scm-gerrit
@@ -65,7 +64,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
         - 'netready-parameter':
index b820ecb..cb66112 100644 (file)
@@ -27,7 +27,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
 
index d3a8454..13c9671 100644 (file)
@@ -31,7 +31,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
 
@@ -72,7 +71,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
 
@@ -96,7 +94,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
         - string:
index b075544..f1ea1aa 100644 (file)
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'huawei-virtual7-defaults'
-        - 'compass-defaults'
-        - 'opera-compass-parameter'
 
     builders:
         - description-setter:
             condition: SUCCESSFUL
             projects:
                 - name: 'compass-deploy-virtual-daily-{stream}'
-                  current-parameters: true
+                  current-parameters: false
+                  predefined-parameters: |
+                    DEPLOY_SCENARIO=os-nosdn-openo-noha
+                    COMPASS_OS_VERSION=xenial
                   node-parameters: true
                   kill-phase-on: FAILURE
                   abort-all-job: true
@@ -93,7 +93,7 @@
 #            condition: SUCCESSFUL
 #            projects:
 #                - name: 'functest-compass-baremetal-suite-{stream}'
-#                  current-parameters: true
+#                  current-parameters: false
 #                  predefined-parameters:
 #                    FUNCTEST_SUITE_NAME=opera
 #                  node-parameters: true
             #!/bin/bash
             echo "Hello world!"
 
-########################
-# parameter macros
-########################
-- parameter:
-    name: opera-compass-parameter
-    parameters:
-        - string:
-            name: BUILD_DIRECTORY
-            default: $WORKSPACE/build_output
-            description: "Directory where the build artifact will be located upon the completion of the build."
-        - string:
-            name: GS_URL
-            default: '$GS_BASE{gs-pathname}'
-            description: "URL to Google Storage."
-        - choice:
-            name: COMPASS_OPENSTACK_VERSION
-            choices:
-                - 'newton'
-        - string:
-            name: DEPLOY_SCENARIO
-            default: 'os-nosdn-openo-noha'
-        - string:
-            name: COMPASS_OS_VERSION
-            default: 'xenial'
index 19c9a88..38efbc1 100644 (file)
@@ -31,9 +31,8 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - 'opnfv-build-ubuntu-defaults'
-        - gerrit-parameter:
             branch: '{branch}'
+        - 'opnfv-build-ubuntu-defaults'
 
     scm:
         - git-scm
index d936cde..b7b5cb3 100644 (file)
@@ -84,7 +84,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'huawei-pod7-defaults'
 
index cf7bae5..1295033 100644 (file)
@@ -34,7 +34,6 @@
     parameters:
         - project-parameter:
             project: $GERRIT_PROJECT
-        - gerrit-parameter:
             branch: '{branch}'
         - string:
             name: GIT_CLONE_BASE
@@ -75,7 +74,6 @@
     parameters:
         - project-parameter:
             project: $GERRIT_PROJECT
-        - gerrit-parameter:
             branch: '{branch}'
         - string:
             name: GIT_CLONE_BASE
     parameters:
         - project-parameter:
             project: '{project}'
+            branch: '{branch}'
         - string:
             name: GS_URL
             default: '$GS_BASE{gs-pathname}'
             name: GIT_CLONE_BASE
             default: ssh://gerrit.opnfv.org:29418
             description: "Used for overriding the GIT URL coming from parameters macro."
-        - string:
-            name: GERRIT_BRANCH
-            default: '{branch}'
-            description: 'Specify the branch in this way in order to be able to use build-opnfv-composite-docs builder.'
 
     scm:
         - git-scm
     builders:
         - build-html-and-pdf-docs-output
 #        - upload-generated-docs-to-opnfv-artifacts
-
index 9b2adf3..937a367 100644 (file)
@@ -26,7 +26,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-centos-defaults'
         - string:
@@ -73,7 +72,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-centos-defaults'
         - string:
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-centos-defaults'
         - string:
index de5587e..69fcefc 100644 (file)
@@ -28,7 +28,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
 
index dbf1b92..6dae9f3 100644 (file)
@@ -28,7 +28,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
 
index fba5741..b380d8c 100644 (file)
@@ -28,7 +28,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
 
index a0af6f4..a5aa302 100644 (file)
@@ -28,7 +28,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
 
index b83014e..38f9955 100644 (file)
@@ -44,7 +44,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - '{installer}-defaults'
         - '{pod}-defaults'
index a9c8251..00455f8 100644 (file)
@@ -23,7 +23,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
 
index e10d5de..2d02056 100644 (file)
@@ -27,7 +27,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
 
     scm:
index e26727a..40669bc 100644 (file)
@@ -60,14 +60,13 @@ if [ ! -f ./Dockerfile ]; then
 fi
 
 # Get tag version
-branch="${GIT_BRANCH##origin/}"
-echo "Current branch: $branch"
+echo "Current branch: $BRANCH"
 
-if [[ "$branch" == "master" ]]; then
+if [[ "$BRANCH" == "master" ]]; then
     DOCKER_TAG="latest"
 else
     if [[ "$RELEASE_VERSION" != "" ]]; then
-        release=$(echo $branch|sed 's/.*\///')
+        release=${BRANCH##*/}
         DOCKER_TAG=${release}.${RELEASE_VERSION}
         # e.g. colorado.1.0, colorado.2.0, colorado.3.0
     else
@@ -79,7 +78,7 @@ fi
 echo "Building docker image: $DOCKER_REPO_NAME:$DOCKER_TAG"
 echo "--------------------------------------------------------"
 echo
-cmd="docker build --no-cache -t $DOCKER_REPO_NAME:$DOCKER_TAG --build-arg BRANCH=$branch ."
+cmd="docker build --no-cache -t $DOCKER_REPO_NAME:$DOCKER_TAG --build-arg BRANCH=$BRANCH ."
 
 echo ${cmd}
 ${cmd}
index 87b0362..cb9b4d4 100644 (file)
@@ -87,7 +87,6 @@
     parameters: &parameters
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
         - string:
index 6224ca9..f4b2501 100644 (file)
@@ -35,7 +35,6 @@
     parameters:
         - project-parameter:
             project: $GERRIT_PROJECT
-        - gerrit-parameter:
             branch: '{branch}'
 
     scm:
@@ -77,7 +76,6 @@
     parameters:
         - project-parameter:
             project: $GERRIT_PROJECT
-        - gerrit-parameter:
             branch: '{branch}'
         - string:
             name: GS_URL
index 590790f..4de47e8 100644 (file)
@@ -33,7 +33,6 @@
     parameters:
         - project-parameter:
             project: $GERRIT_PROJECT
-        - gerrit-parameter:
             branch: '{branch}'
 
     scm:
@@ -76,7 +75,6 @@
     parameters:
         - project-parameter:
             project: $GERRIT_PROJECT
-        - gerrit-parameter:
             branch: '{branch}'
         - node:
             name: SLAVE_NAME
index 626daff..ecc8730 100644 (file)
@@ -13,7 +13,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: 'master'
     scm:
         - git-scm-gerrit
@@ -64,7 +63,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: 'master'
 
     scm:
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: 'master'
 
     scm:
index 8332f5b..8cb4acb 100644 (file)
@@ -4,8 +4,16 @@
         - master:
             branch: '{stream}'
             gs-pathname: ''
+
+    phase:
+        - 'docker-update'
+        - 'docker-deploy':
+            slave-label: 'testresults'
+        - 'generate-doc'
+
     jobs:
         - 'testapi-automate-{stream}'
+        - 'testapi-automate-{phase}-{stream}'
         - 'testapi-verify-{stream}'
 
     project: 'releng'
 
     slave-label: 'testresults'
 
+    parameters:
+        - project-parameter:
+            project: '{project}'
+            branch: '{branch}'
+
     scm:
         - git-scm
 
@@ -30,7 +43,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
 
                     healthy: 50
                     unhealthy: 40
                     failing: 30
+        - 'email-publisher'
 
 - job-template:
     name: 'testapi-automate-{stream}'
 
+    project-type: multijob
+
+    properties:
+        - throttle:
+            enabled: true
+            max-total: 1
+            max-per-node: 1
+            option: 'project'
+
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - string:
             name: DOCKER_TAG
     scm:
         - git-scm
 
+    wrappers:
+        - ssh-agent-wrapper
+        - timeout:
+            timeout: 360
+            fail: true
+
     triggers:
         - gerrit:
             server-name: 'gerrit.opnfv.org'
                     branch-pattern: '**/{branch}'
                 file-paths:
                   - compare-type: 'ANT'
-                    pattern: 'utils/**'
+                    pattern: 'utils/test/testapi/**'
+
+    builders:
+        - description-setter:
+            description: "Built on $NODE_NAME"
+        - multijob:
+            name: docker-update
+            condition: SUCCESSFUL
+            projects:
+                - name: 'testapi-automate-docker-update-{stream}'
+                  current-parameters: true
+                  kill-phase-on: FAILURE
+                  abort-all-job: true
+        - multijob:
+            name: docker-deploy
+            condition: SUCCESSFUL
+            projects:
+                - name: 'testapi-automate-docker-deploy-{stream}'
+                  current-parameters: false
+                  predefined-parameters: |
+                    GIT_BASE=$GIT_BASE
+                  node-label-name: SLAVE_LABEL
+                  node-label: testresults
+                  kill-phase-on: FAILURE
+                  abort-all-job: true
+        - multijob:
+            name: generate-doc
+            condition: SUCCESSFUL
+            projects:
+                - name: 'testapi-automate-generate-doc-{stream}'
+                  current-parameters: true
+                  kill-phase-on: FAILURE
+                  abort-all-job: true
+
+    publishers:
+        - 'email-publisher'
+
+- job-template:
+    name: 'testapi-automate-{phase}-{stream}'
+
+    properties:
+        - throttle:
+            enabled: true
+            max-per-node: 1
+            option: 'project'
+
+    parameters:
+        - project-parameter:
+            project: '{project}'
+            branch: '{branch}'
+        - string:
+            name: DOCKER_TAG
+            default: "latest"
+            description: "Tag name for testapi docker image"
+
+    wrappers:
+        - ssh-agent-wrapper
+        - timeout:
+            timeout: 120
+            fail: true
+
+    scm:
+        - git-scm
 
     builders:
-        - docker-update
-        - testapi-doc-build
-        - upload-doc-artifact
+        - description-setter:
+            description: "Built on $NODE_NAME"
+        - 'testapi-automate-{phase}-macro'
 
 ################################
 # job builders
             bash ./jjb/releng/testapi-backup-mongodb.sh
 
 - builder:
-    name: run-unit-tests
+    name: 'run-unit-tests'
     builders:
         - shell: |
             bash ./utils/test/testapi/run_test.sh
 
 - builder:
-    name: docker-update
+    name: 'testapi-automate-docker-update-macro'
     builders:
         - shell: |
             bash ./jjb/releng/testapi-docker-update.sh
 
 - builder:
-    name: testapi-doc-build
+    name: 'testapi-automate-generate-doc-macro'
+    builders:
+        - 'testapi-doc-build'
+        - 'upload-doc-artifact'
+
+- builder:
+    name: 'testapi-doc-build'
     builders:
         - shell: |
             bash ./utils/test/testapi/htmlize/doc-build.sh
 
 - builder:
-    name: upload-doc-artifact
+    name: 'upload-doc-artifact'
     builders:
         - shell: |
             bash ./utils/test/testapi/htmlize/push-doc-artifact.sh
+
+- builder:
+    name: 'testapi-automate-docker-deploy-macro'
+    builders:
+        - shell: |
+            bash ./jjb/releng/testapi-docker-deploy.sh
+
+################################
+# job publishers
+################################
+
+- publisher:
+    name: 'email-publisher'
+    publishers:
+        - email:
+            recipients: rohitsakala@gmail.com serena.feng.711@gmail.com
+            notify-every-unstable-build: false
+            send-to-individuals: true
diff --git a/jjb/releng/testapi-docker-deploy.sh b/jjb/releng/testapi-docker-deploy.sh
new file mode 100644 (file)
index 0000000..04d71f7
--- /dev/null
@@ -0,0 +1,81 @@
+#!/bin/bash
+
+function check() {
+
+    # Verify hosted
+    sleep 5
+    cmd=`curl -s --head  --request GET http://testresults.opnfv.org/auto/swagger/spec | grep '200 OK' > /dev/null`
+    rc=$?
+    echo $rc
+
+    if [[ $rc == 0 ]]
+    then
+        return 0
+    else
+        return 1
+    fi
+
+}
+
+echo "Getting contianer Id of the currently running one"
+contId=$(sudo docker ps | grep "opnfv/testapi:latest" | awk '{print $1}')
+
+echo "Pulling the latest image"
+sudo docker pull opnfv/testapi:latest
+
+echo "Deleting old containers of opnfv/testapi:old"
+sudo docker ps -a | grep "opnfv/testapi" | grep "old" | awk '{print $1}' | xargs -r sudo docker rm -f
+
+echo "Deleting old images of opnfv/testapi:latest"
+sudo docker images | grep "opnfv/testapi" | grep "old" | awk '{print $3}' | xargs -r sudo docker rmi -f
+
+
+if [[ -z "$contId" ]]
+then
+    echo "No running testapi container"
+
+    echo "Removing stopped testapi containers in the previous iterations"
+    sudo docker ps -f status=exited | grep "opnfv_testapi" | awk '{print $1}' | xargs -r sudo docker rm -f
+else
+    echo $contId
+
+    echo "Get the image id of the currently running conatiner"
+    currImgId=$(sudo docker ps | grep "$contId" | awk '{print $2}')
+    echo $currImgId
+
+    if [[ -z "$currImgId" ]]
+    then
+        echo "No image id found for the container id"
+        exit 1
+    fi
+
+    echo "Changing current image tag to old"
+    sudo docker tag "$currImgId" opnfv/testapi:old
+
+    echo "Removing stopped testapi containers in the previous iteration"
+    sudo docker ps -f status=exited | grep "opnfv_testapi" | awk '{print $1}' | xargs -r sudo docker rm -f
+
+    echo "Renaming the running container name to opnfv_testapi as to identify it."
+    sudo docker rename $contId opnfv_testapi
+
+    echo "Stop the currently running container"
+    sudo docker stop $contId
+fi
+
+echo "Running a container with the new image"
+sudo docker run -dti -p "8711:8000" -e "mongodb_url=mongodb://172.17.0.1:27017" -e "swagger_url=http://testresults.opnfv.org/auto" opnfv/testapi:latest
+
+if check; then
+    echo "TestResults Hosted."
+else
+    echo "TestResults Hosting Failed"
+    if [[ $(sudo docker images | grep "opnfv/testapi" | grep "old" | awk '{print $3}') ]]; then
+        echo "Running old Image"
+        sudo docker run -dti -p "8711:8000" -e "mongodb_url=mongodb://172.17.0.1:27017" -e "swagger_url=http://testresults.opnfv.org/auto" opnfv/testapi:old
+        exit 1
+    fi
+fi
+
+# Echo Images and Containers
+sudo docker images
+sudo docker ps -a
index 680be20..732df89 100644 (file)
@@ -27,7 +27,6 @@
     parameters:
         - project-parameter:
             project: $GERRIT_PROJECT
-        - gerrit-parameter:
             branch: '{branch}'
 
     scm:
index 8f42f8c..a04a9f4 100644 (file)
@@ -28,7 +28,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - string:
             name: GIT_BASE
@@ -89,8 +88,7 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
-            branch: 'master'
+            branch: '{branch}'
         - string:
             name: GIT_BASE
             default: https://gerrit.opnfv.org/gerrit/$PROJECT
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'intel-pod9-defaults'
 
index c129f49..450599e 100644 (file)
@@ -24,7 +24,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
     scm:
         - git-scm-gerrit
index 50937bb..9364837 100644 (file)
@@ -30,7 +30,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'intel-pod3-defaults'
 
@@ -73,7 +72,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - '{slave-label}-defaults'
 
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - '{slave-label}-defaults'
 
index 709592a..2c3dda9 100644 (file)
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - '{installer}-defaults'
         - '{slave-label}-defaults'
index da9042b..f769e9c 100755 (executable)
@@ -31,14 +31,14 @@ fi
 opts="--privileged=true --rm"
 envs="-e INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP} \
     -e NODE_NAME=${NODE_NAME} -e EXTERNAL_NETWORK=${EXTERNAL_NETWORK} \
-    -e YARDSTICK_BRANCH=${GIT_BRANCH##origin/} -e DEPLOY_SCENARIO=${DEPLOY_SCENARIO}"
+    -e YARDSTICK_BRANCH=${BRANCH} -e DEPLOY_SCENARIO=${DEPLOY_SCENARIO}"
 
 # Pull the image with correct tag
 echo "Yardstick: Pulling image opnfv/yardstick:${DOCKER_TAG}"
 docker pull opnfv/yardstick:$DOCKER_TAG >$redirect
 
 # map log directory
-branch=${GIT_BRANCH##*/}
+branch=${BRANCH##*/}
 dir_result="${HOME}/opnfv/yardstick/results/${branch}"
 mkdir -p ${dir_result}
 sudo rm -rf ${dir_result}/*
index f328164..bbfa152 100644 (file)
@@ -33,7 +33,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
 
@@ -70,7 +69,6 @@
     parameters:
         - project-parameter:
             project: '{project}'
-        - gerrit-parameter:
             branch: '{branch}'
         - 'opnfv-build-ubuntu-defaults'
         - string:
             set -o errexit
             set -o pipefail
 
+            sudo apt-get install -y build-essential python-dev python3-dev
+
             echo "Running unit tests..."
             cd $WORKSPACE
-            virtualenv $WORKSPACE/yardstick_venv
-            source $WORKSPACE/yardstick_venv/bin/activate
-
-            # install python packages
-            sudo apt-get install -y build-essential python-dev python-pip python-pkg-resources
-            easy_install -U setuptools==33.1.1
-            easy_install -U pip
-            pip install -r requirements.txt || pip install -r tests/ci/requirements.txt
-            pip install -e .
-
-            # unit tests
-            ./run_tests.sh
-
-            deactivate
+            tox
index dc5bdb9..6c43a46 100644 (file)
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
+# Copyright (c) 2017 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
@@ -23,18 +23,22 @@ class InstallerHandler:
                  installer,
                  installer_ip,
                  installer_user,
-                 installer_pwd=None):
+                 installer_pwd=None,
+                 private_key_file=None):
         self.installer = installer.lower()
         self.installer_ip = installer_ip
         self.installer_user = installer_user
         self.installer_pwd = installer_pwd
+        self.private_key_file = private_key_file
 
         if self.installer == INSTALLERS[0]:
             self.InstallerAdapter = FuelAdapter(self.installer_ip,
                                                 self.installer_user,
                                                 self.installer_pwd)
         elif self.installer == INSTALLERS[1]:
-            self.InstallerAdapter = ApexAdapter(self.installer_ip)
+            self.InstallerAdapter = ApexAdapter(installer_ip=self.installer_ip,
+                                                user=self.installer_user,
+                                                pkey_file=self.private_key_file)
         elif self.installer == INSTALLERS[2]:
             self.InstallerAdapter = CompassAdapter(self.installer_ip)
         elif self.installer == INSTALLERS[3]:
index 17a27b1..29637d7 100644 (file)
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 
+import os
+import re
+
+import opnfv.utils.SSHUtils as ssh_utils
+import opnfv.utils.OPNFVLogger as logger
+
 
 class ApexAdapter:
 
-    def __init__(self, installer_ip):
+    def __init__(self, installer_ip, pkey_file, user="stack"):
         self.installer_ip = installer_ip
+        self.installer_user = user
+        self.pkey_file = pkey_file
+        self.installer_connection = ssh_utils.get_ssh_client(
+            self.installer_ip,
+            self.installer_user,
+            pkey_file=self.pkey_file)
+        self.logger = logger.Logger("ApexHandler").getLogger()
 
-    def get_deployment_info(self):
-        pass
+    def runcmd_apex_installer(self, cmd):
+        _, stdout, stderr = (self.installer_connection.exec_command(cmd))
+        error = stderr.readlines()
+        if len(error) > 0:
+            self.logger.error("error %s" % ''.join(error))
+            return error
+        output = ''.join(stdout.readlines())
+        return output
 
     def get_nodes(self):
-        pass
+        nodes = []
+        output = self.runcmd_apex_installer(
+            "source /home/stack/stackrc;nova list")
+        lines = output.rsplit('\n')
+        if len(lines) < 4:
+            self.logger.info("No nodes found in the deployment.")
+            return None
+
+        for line in lines:
+            if 'controller' in line:
+                roles = "controller"
+            elif 'compute' in line:
+                roles = "compute"
+            else:
+                continue
+            if 'Daylight' in line:
+                roles = + ", OpenDaylight"
+            fields = line.split('|')
+            dict = {"id": re.sub('[!| ]', '', fields[1]),
+                    "roles": roles,
+                    "name": re.sub('[!| ]', '', fields[2]),
+                    "status": re.sub('[!| ]', '', fields[3]),
+                    "ip": re.sub('[!| ctlplane=]', '', fields[6])}
+            nodes.append(dict)
+
+        return nodes
+
+    def get_deployment_info(self):
+        str = "Deployment details:\n"
+        str += "\tINSTALLER:   Apex\n"
+        str += ("\tSCENARIO:    %s\n" %
+                os.getenv('DEPLOY_SCENARIO', 'Unknown'))
+        sdn = "None"
+
+        nodes = self.get_nodes()
+        if nodes is None:
+            self.logger.info("No nodes found in the deployment.")
+            return
+        num_nodes = len(nodes)
+        num_controllers = 0
+        num_computes = 0
+        for node in nodes:
+            if 'controller' in node['roles']:
+                num_controllers += 1
+            if 'compute' in node['roles']:
+                num_computes += 1
+            if 'Daylight' in node['name']:
+                sdn = 'OpenDaylight'
+
+        ha = str(num_controllers >= 3)
+
+        str += "\tHA:          %s\n" % ha
+        str += "\tNUM.NODES:   %s\n" % num_nodes
+        str += "\tCONTROLLERS: %s\n" % num_controllers
+        str += "\tCOMPUTES:    %s\n" % num_computes
+        str += "\tSDN CONTR.:  %s\n\n" % sdn
+
+        str += "\tNODES:\n"
+        for node in nodes:
+            str += ("\t  ID:     %s\n" % node['id'])
+            str += ("\t  Name:   %s\n" % node['name'])
+            str += ("\t  Roles:  %s\n" % node['roles'])
+            str += ("\t  Status: %s\n" % node['status'])
+            str += ("\t  IP:     %s\n\n" % node['ip'])
+
+        return str
+
+    def get_controller_ips(self, options=None):
+        nodes = self.get_nodes()
+        controllers = []
+        for node in nodes:
+            if "controller" in node["roles"]:
+                controllers.append(node['ip'])
+        return controllers
+
+    def get_compute_ips(self, options=None):
+        nodes = self.get_nodes()
+        computes = []
+        for node in nodes:
+            if "compute" in node["roles"]:
+                computes.append(node['ip'])
+        return computes
 
-    def get_controller_ips(self):
-        pass
+    def get_file_from_installer(self, remote_path, local_path, options=None):
+        self.logger.debug("Fetching %s from Undercloud %s" %
+                          (remote_path, self.installer_ip))
+        get_file_result = ssh_utils.get_file(self.installer_connection,
+                                             remote_path,
+                                             local_path)
+        if get_file_result is None:
+            self.logger.error("SFTP failed to retrieve the file.")
+            return 1
+        self.logger.info("%s successfully copied from Undercloud to %s" %
+                         (remote_path, local_path))
 
-    def get_compute_ips(self):
-        pass
+    def get_file_from_controller(self,
+                                 remote_path,
+                                 local_path,
+                                 ip=None,
+                                 options=None):
+        if ip is None:
+            controllers = self.get_controller_ips()
+            ip = controllers[0]
 
-    def get_file_from_installer(self, origin, target, options=None):
-        pass
+        connection = ssh_utils.get_ssh_client(ip,
+                                              'heat-admin',
+                                              pkey_file=self.pkey_file)
 
-    def get_file_from_controller(self, origin, target, ip=None, options=None):
-        pass
+        get_file_result = ssh_utils.get_file(connection,
+                                             remote_path,
+                                             local_path)
+        if get_file_result is None:
+            self.logger.error("SFTP failed to retrieve the file.")
+            return 1
+        self.logger.info("%s successfully copied from %s to %s" %
+                         (remote_path, ip, local_path))
diff --git a/modules/opnfv/installer_adapters/apex/example.py b/modules/opnfv/installer_adapters/apex/example.py
new file mode 100644 (file)
index 0000000..c8c4737
--- /dev/null
@@ -0,0 +1,16 @@
+# This is an example of usage of this Tool
+# Author: Jose Lausuch (jose.lausuch@ericsson.com)
+
+import opnfv.installer_adapters.InstallerHandler as ins_handler
+
+apex_handler = ins_handler.InstallerHandler(installer='apex',
+                                            installer_ip='192.168.122.135',
+                                            installer_user='stack',
+                                            private_key_file='/root/.ssh/id_rsa')
+apex_handler.get_file_from_installer(
+    '/home/stack/overcloudrc', './overcloudrc')
+
+print("\n%s\n" % apex_handler.get_deployment_info())
+
+apex_handler.get_file_from_controller(
+    '/etc/resolv.conf', './resolv.conf')
index 16e34c3..e0a830c 100644 (file)
@@ -16,7 +16,11 @@ import os
 logger = OPNFVLogger.Logger('SSHUtils').getLogger()
 
 
-def get_ssh_client(hostname, username, password=None, proxy=None):
+def get_ssh_client(hostname,
+                   username,
+                   password=None,
+                   proxy=None,
+                   pkey_file=None):
     client = None
     try:
         if proxy is None:
@@ -26,14 +30,21 @@ def get_ssh_client(hostname, username, password=None, proxy=None):
             client.configure_jump_host(proxy['ip'],
                                        proxy['username'],
                                        proxy['password'])
-
         if client is None:
             raise Exception('Could not connect to client')
 
         client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
-        client.connect(hostname,
-                       username=username,
-                       password=password)
+        if pkey_file is not None:
+            key = paramiko.RSAKey.from_private_key_file(pkey_file)
+            client.load_system_host_keys()
+            client.connect(hostname,
+                           username=username,
+                           pkey=key)
+        else:
+            client.connect(hostname,
+                           username=username,
+                           password=password)
+
         return client
     except Exception, e:
         logger.error(e)
@@ -66,6 +77,7 @@ class ProxyHopClient(paramiko.SSHClient):
     '''
     Connect to a remote server using a proxy hop
     '''
+
     def __init__(self, *args, **kwargs):
         self.logger = OPNFVLogger.Logger("ProxyHopClient").getLogger()
         self.proxy_ssh = None
index cdc55df..b73092b 100755 (executable)
@@ -14,24 +14,23 @@ if [[ $(whoami) != "root" ]]; then
     exit 1
 fi
 
-virsh destroy jumphost.opnfvlocal || true
-virsh destroy controller00.opnfvlocal || true
-virsh destroy compute00.opnfvlocal || true
-virsh undefine jumphost.opnfvlocal || true
-virsh undefine controller00.opnfvlocal || true
-virsh undefine compute00.opnfvlocal || true
-
-service ironic-conductor stop
-
-echo "removing from database"
-mysql -u root ironic --execute "truncate table ports;"
-mysql -u root ironic --execute "delete from node_tags;"
-mysql -u root ironic --execute "delete from nodes;"
-mysql -u root ironic --execute "delete from conductors;"
+# Delete all VMs on the slave since proposed patchsets
+# may leave undesired VM leftovers
+for vm in $(virsh list --all --name); do
+    virsh destroy $vm || true
+    virsh undefine $vm || true
+done
+
+service ironic-conductor stop || true
+
+echo "removing ironic database"
+if $(which mysql &> /dev/null); then
+    mysql -u root ironic --execute "drop database ironic;"
+fi
 echo "removing leases"
 [[ -e /var/lib/misc/dnsmasq/dnsmasq.leases ]] && > /var/lib/misc/dnsmasq/dnsmasq.leases
 echo "removing logs"
-rm -rf /var/log/libvirt/baremetal_logs/*.log
+rm -rf /var/log/libvirt/baremetal_logs/*
 
 # clean up dib images only if requested explicitly
 CLEAN_DIB_IMAGES=${CLEAN_DIB_IMAGES:-false}
@@ -48,6 +47,6 @@ rm -rf /var/lib/libvirt/images/*.qcow2
 echo "restarting services"
 service dnsmasq restart || true
 service libvirtd restart
-service ironic-api restart
-service ironic-conductor start
-service ironic-inspector restart
+service ironic-api restart || true 
+service ironic-conductor start || true
+service ironic-inspector restart || true
index 90f014c..914a906 100755 (executable)
@@ -36,6 +36,7 @@ export TEST_VM_NODE_NAMES="jumphost.opnfvlocal controller00.opnfvlocal compute00
 export VM_DOMAIN_TYPE="kvm"
 export VM_CPU=${VM_CPU:-4}
 export VM_DISK=${VM_DISK:-100}
+export VM_DISK_CACHE=${VM_DISK_CACHE:-unsafe}
 TEST_PLAYBOOK="test-bifrost-infracloud.yaml"
 USE_INSPECTOR=true
 USE_CIRROS=false
index 265ca61..ed6825b 100644 (file)
@@ -15,7 +15,7 @@ export PATH=$PATH:/usr/local/bin/
 git_sha1="$(git rev-parse HEAD)"
 res_build_date=${1:-$(date -u +"%Y-%m-%d_%H-%M-%S")}
 project=$PROJECT
-branch=${GIT_BRANCH##*/}
+branch=${BRANCH##*/}
 testbed=$NODE_NAME
 dir_result="${HOME}/opnfv/$project/results/${branch}"
 # src: https://wiki.opnfv.org/display/INF/Hardware+Infrastructure
index 075e31f..70976d2 100644 (file)
@@ -39,12 +39,12 @@ if __name__ == '__main__':
     parser.add_argument('-ru', '--resource-listing-url',
                         type=str,
                         required=False,
-                        default='http://testresults.opnfv.org/test/swagger/spec.json',
+                        default='http://testresults.opnfv.org/auto/swagger/spec.json',
                         help='Resource Listing Spec File')
     parser.add_argument('-au', '--api-declaration-url',
                         type=str,
                         required=False,
-                        default='http://testresults.opnfv.org/test/swagger/spec',
+                        default='http://testresults.opnfv.org/auto/swagger/spec',
                         help='API Declaration Spec File')
     parser.add_argument('-o', '--output-directory',
                         required=True,
diff --git a/utils/test/vnfcatalogue/assets/Vnf_landing/assets/css/3rd_party/bootstrap.css b/utils/test/vnfcatalogue/assets/Vnf_landing/assets/css/3rd_party/bootstrap.css
new file mode 100755 (executable)
index 0000000..b9c2396
--- /dev/null
@@ -0,0 +1,1299 @@
+/*!
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
+ * Copyright 2011-2017 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+/*!
+ * Generated using the Bootstrap Customizer (http://getbootstrap.com/customize/?id=73eb1273dd80c57866adeff88f30374f)
+ * Config saved to config.json and https://gist.github.com/73eb1273dd80c57866adeff88f30374f
+ */
+/*!
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
+html {
+  font-family: sans-serif;
+  -ms-text-size-adjust: 100%;
+  -webkit-text-size-adjust: 100%;
+}
+body {
+  margin: 0;
+}
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+  display: block;
+}
+audio,
+canvas,
+progress,
+video {
+  display: inline-block;
+  vertical-align: baseline;
+}
+audio:not([controls]) {
+  display: none;
+  height: 0;
+}
+[hidden],
+template {
+  display: none;
+}
+a {
+  background-color: transparent;
+}
+a:active,
+a:hover {
+  outline: 0;
+}
+abbr[title] {
+  border-bottom: 1px dotted;
+}
+b,
+strong {
+  font-weight: bold;
+}
+dfn {
+  font-style: italic;
+}
+h1 {
+  font-size: 2em;
+  margin: 0.67em 0;
+}
+mark {
+  background: #ff0;
+  color: #000;
+}
+small {
+  font-size: 80%;
+}
+sub,
+sup {
+  font-size: 75%;
+  line-height: 0;
+  position: relative;
+  vertical-align: baseline;
+}
+sup {
+  top: -0.5em;
+}
+sub {
+  bottom: -0.25em;
+}
+img {
+  border: 0;
+}
+svg:not(:root) {
+  overflow: hidden;
+}
+figure {
+  margin: 1em 40px;
+}
+hr {
+  -webkit-box-sizing: content-box;
+     -moz-box-sizing: content-box;
+          box-sizing: content-box;
+  height: 0;
+}
+pre {
+  overflow: auto;
+}
+code,
+kbd,
+pre,
+samp {
+  font-family: monospace, monospace;
+  font-size: 1em;
+}
+button,
+input,
+optgroup,
+select,
+textarea {
+  color: inherit;
+  font: inherit;
+  margin: 0;
+}
+button {
+  overflow: visible;
+}
+button,
+select {
+  text-transform: none;
+}
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+  -webkit-appearance: button;
+  cursor: pointer;
+}
+button[disabled],
+html input[disabled] {
+  cursor: default;
+}
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+  border: 0;
+  padding: 0;
+}
+input {
+  line-height: normal;
+}
+input[type="checkbox"],
+input[type="radio"] {
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+  padding: 0;
+}
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+  height: auto;
+}
+input[type="search"] {
+  -webkit-appearance: textfield;
+  -webkit-box-sizing: content-box;
+     -moz-box-sizing: content-box;
+          box-sizing: content-box;
+}
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+fieldset {
+  border: 1px solid #c0c0c0;
+  margin: 0 2px;
+  padding: 0.35em 0.625em 0.75em;
+}
+legend {
+  border: 0;
+  padding: 0;
+}
+textarea {
+  overflow: auto;
+}
+optgroup {
+  font-weight: bold;
+}
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+td,
+th {
+  padding: 0;
+}
+/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
+@media print {
+  *,
+  *:before,
+  *:after {
+    background: transparent !important;
+    color: #000 !important;
+    -webkit-box-shadow: none !important;
+            box-shadow: none !important;
+    text-shadow: none !important;
+  }
+  a,
+  a:visited {
+    text-decoration: underline;
+  }
+  a[href]:after {
+    content: " (" attr(href) ")";
+  }
+  abbr[title]:after {
+    content: " (" attr(title) ")";
+  }
+  a[href^="#"]:after,
+  a[href^="javascript:"]:after {
+    content: "";
+  }
+  pre,
+  blockquote {
+    border: 1px solid #999;
+    page-break-inside: avoid;
+  }
+  thead {
+    display: table-header-group;
+  }
+  tr,
+  img {
+    page-break-inside: avoid;
+  }
+  img {
+    max-width: 100% !important;
+  }
+  p,
+  h2,
+  h3 {
+    orphans: 3;
+    widows: 3;
+  }
+  h2,
+  h3 {
+    page-break-after: avoid;
+  }
+  .navbar {
+    display: none;
+  }
+  .btn > .caret,
+  .dropup > .btn > .caret {
+    border-top-color: #000 !important;
+  }
+  .label {
+    border: 1px solid #000;
+  }
+  .table {
+    border-collapse: collapse !important;
+  }
+  .table td,
+  .table th {
+    background-color: #fff !important;
+  }
+  .table-bordered th,
+  .table-bordered td {
+    border: 1px solid #ddd !important;
+  }
+}
+* {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+*:before,
+*:after {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+html {
+  font-size: 10px;
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+body {
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 14px;
+  line-height: 1.42857143;
+  color: #333333;
+  background-color: #ffffff;
+}
+input,
+button,
+select,
+textarea {
+  font-family: inherit;
+  font-size: inherit;
+  line-height: inherit;
+}
+a {
+  color: #337ab7;
+  text-decoration: none;
+}
+a:hover,
+a:focus {
+  color: #23527c;
+  text-decoration: underline;
+}
+a:focus {
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+figure {
+  margin: 0;
+}
+img {
+  vertical-align: middle;
+}
+.img-responsive {
+  display: block;
+  max-width: 100%;
+  height: auto;
+}
+.img-rounded {
+  border-radius: 6px;
+}
+.img-thumbnail {
+  padding: 4px;
+  line-height: 1.42857143;
+  background-color: #ffffff;
+  border: 1px solid #dddddd;
+  border-radius: 4px;
+  -webkit-transition: all 0.2s ease-in-out;
+  -o-transition: all 0.2s ease-in-out;
+  transition: all 0.2s ease-in-out;
+  display: inline-block;
+  max-width: 100%;
+  height: auto;
+}
+.img-circle {
+  border-radius: 50%;
+}
+hr {
+  margin-top: 20px;
+  margin-bottom: 20px;
+  border: 0;
+  border-top: 1px solid #eeeeee;
+}
+.sr-only {
+  position: absolute;
+  width: 1px;
+  height: 1px;
+  margin: -1px;
+  padding: 0;
+  overflow: hidden;
+  clip: rect(0, 0, 0, 0);
+  border: 0;
+}
+.sr-only-focusable:active,
+.sr-only-focusable:focus {
+  position: static;
+  width: auto;
+  height: auto;
+  margin: 0;
+  overflow: visible;
+  clip: auto;
+}
+[role="button"] {
+  cursor: pointer;
+}
+.container {
+  margin-right: auto;
+  margin-left: auto;
+  padding-left: 15px;
+  padding-right: 15px;
+}
+@media (min-width: 768px) {
+  .container {
+    width: 750px;
+  }
+}
+@media (min-width: 992px) {
+  .container {
+    width: 970px;
+  }
+}
+@media (min-width: 1200px) {
+  .container {
+    width: 1170px;
+  }
+}
+.container-fluid {
+  margin-right: auto;
+  margin-left: auto;
+  padding-left: 15px;
+  padding-right: 15px;
+}
+.row {
+  margin-left: -15px;
+  margin-right: -15px;
+}
+.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
+  position: relative;
+  min-height: 1px;
+  padding-left: 15px;
+  padding-right: 15px;
+}
+.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
+  float: left;
+}
+.col-xs-12 {
+  width: 100%;
+}
+.col-xs-11 {
+  width: 91.66666667%;
+}
+.col-xs-10 {
+  width: 83.33333333%;
+}
+.col-xs-9 {
+  width: 75%;
+}
+.col-xs-8 {
+  width: 66.66666667%;
+}
+.col-xs-7 {
+  width: 58.33333333%;
+}
+.col-xs-6 {
+  width: 50%;
+}
+.col-xs-5 {
+  width: 41.66666667%;
+}
+.col-xs-4 {
+  width: 33.33333333%;
+}
+.col-xs-3 {
+  width: 25%;
+}
+.col-xs-2 {
+  width: 16.66666667%;
+}
+.col-xs-1 {
+  width: 8.33333333%;
+}
+.col-xs-pull-12 {
+  right: 100%;
+}
+.col-xs-pull-11 {
+  right: 91.66666667%;
+}
+.col-xs-pull-10 {
+  right: 83.33333333%;
+}
+.col-xs-pull-9 {
+  right: 75%;
+}
+.col-xs-pull-8 {
+  right: 66.66666667%;
+}
+.col-xs-pull-7 {
+  right: 58.33333333%;
+}
+.col-xs-pull-6 {
+  right: 50%;
+}
+.col-xs-pull-5 {
+  right: 41.66666667%;
+}
+.col-xs-pull-4 {
+  right: 33.33333333%;
+}
+.col-xs-pull-3 {
+  right: 25%;
+}
+.col-xs-pull-2 {
+  right: 16.66666667%;
+}
+.col-xs-pull-1 {
+  right: 8.33333333%;
+}
+.col-xs-pull-0 {
+  right: auto;
+}
+.col-xs-push-12 {
+  left: 100%;
+}
+.col-xs-push-11 {
+  left: 91.66666667%;
+}
+.col-xs-push-10 {
+  left: 83.33333333%;
+}
+.col-xs-push-9 {
+  left: 75%;
+}
+.col-xs-push-8 {
+  left: 66.66666667%;
+}
+.col-xs-push-7 {
+  left: 58.33333333%;
+}
+.col-xs-push-6 {
+  left: 50%;
+}
+.col-xs-push-5 {
+  left: 41.66666667%;
+}
+.col-xs-push-4 {
+  left: 33.33333333%;
+}
+.col-xs-push-3 {
+  left: 25%;
+}
+.col-xs-push-2 {
+  left: 16.66666667%;
+}
+.col-xs-push-1 {
+  left: 8.33333333%;
+}
+.col-xs-push-0 {
+  left: auto;
+}
+.col-xs-offset-12 {
+  margin-left: 100%;
+}
+.col-xs-offset-11 {
+  margin-left: 91.66666667%;
+}
+.col-xs-offset-10 {
+  margin-left: 83.33333333%;
+}
+.col-xs-offset-9 {
+  margin-left: 75%;
+}
+.col-xs-offset-8 {
+  margin-left: 66.66666667%;
+}
+.col-xs-offset-7 {
+  margin-left: 58.33333333%;
+}
+.col-xs-offset-6 {
+  margin-left: 50%;
+}
+.col-xs-offset-5 {
+  margin-left: 41.66666667%;
+}
+.col-xs-offset-4 {
+  margin-left: 33.33333333%;
+}
+.col-xs-offset-3 {
+  margin-left: 25%;
+}
+.col-xs-offset-2 {
+  margin-left: 16.66666667%;
+}
+.col-xs-offset-1 {
+  margin-left: 8.33333333%;
+}
+.col-xs-offset-0 {
+  margin-left: 0%;
+}
+@media (min-width: 768px) {
+  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
+    float: left;
+  }
+  .col-sm-12 {
+    width: 100%;
+  }
+  .col-sm-11 {
+    width: 91.66666667%;
+  }
+  .col-sm-10 {
+    width: 83.33333333%;
+  }
+  .col-sm-9 {
+    width: 75%;
+  }
+  .col-sm-8 {
+    width: 66.66666667%;
+  }
+  .col-sm-7 {
+    width: 58.33333333%;
+  }
+  .col-sm-6 {
+    width: 50%;
+  }
+  .col-sm-5 {
+    width: 41.66666667%;
+  }
+  .col-sm-4 {
+    width: 33.33333333%;
+  }
+  .col-sm-3 {
+    width: 25%;
+  }
+  .col-sm-2 {
+    width: 16.66666667%;
+  }
+  .col-sm-1 {
+    width: 8.33333333%;
+  }
+  .col-sm-pull-12 {
+    right: 100%;
+  }
+  .col-sm-pull-11 {
+    right: 91.66666667%;
+  }
+  .col-sm-pull-10 {
+    right: 83.33333333%;
+  }
+  .col-sm-pull-9 {
+    right: 75%;
+  }
+  .col-sm-pull-8 {
+    right: 66.66666667%;
+  }
+  .col-sm-pull-7 {
+    right: 58.33333333%;
+  }
+  .col-sm-pull-6 {
+    right: 50%;
+  }
+  .col-sm-pull-5 {
+    right: 41.66666667%;
+  }
+  .col-sm-pull-4 {
+    right: 33.33333333%;
+  }
+  .col-sm-pull-3 {
+    right: 25%;
+  }
+  .col-sm-pull-2 {
+    right: 16.66666667%;
+  }
+  .col-sm-pull-1 {
+    right: 8.33333333%;
+  }
+  .col-sm-pull-0 {
+    right: auto;
+  }
+  .col-sm-push-12 {
+    left: 100%;
+  }
+  .col-sm-push-11 {
+    left: 91.66666667%;
+  }
+  .col-sm-push-10 {
+    left: 83.33333333%;
+  }
+  .col-sm-push-9 {
+    left: 75%;
+  }
+  .col-sm-push-8 {
+    left: 66.66666667%;
+  }
+  .col-sm-push-7 {
+    left: 58.33333333%;
+  }
+  .col-sm-push-6 {
+    left: 50%;
+  }
+  .col-sm-push-5 {
+    left: 41.66666667%;
+  }
+  .col-sm-push-4 {
+    left: 33.33333333%;
+  }
+  .col-sm-push-3 {
+    left: 25%;
+  }
+  .col-sm-push-2 {
+    left: 16.66666667%;
+  }
+  .col-sm-push-1 {
+    left: 8.33333333%;
+  }
+  .col-sm-push-0 {
+    left: auto;
+  }
+  .col-sm-offset-12 {
+    margin-left: 100%;
+  }
+  .col-sm-offset-11 {
+    margin-left: 91.66666667%;
+  }
+  .col-sm-offset-10 {
+    margin-left: 83.33333333%;
+  }
+  .col-sm-offset-9 {
+    margin-left: 75%;
+  }
+  .col-sm-offset-8 {
+    margin-left: 66.66666667%;
+  }
+  .col-sm-offset-7 {
+    margin-left: 58.33333333%;
+  }
+  .col-sm-offset-6 {
+    margin-left: 50%;
+  }
+  .col-sm-offset-5 {
+    margin-left: 41.66666667%;
+  }
+  .col-sm-offset-4 {
+    margin-left: 33.33333333%;
+  }
+  .col-sm-offset-3 {
+    margin-left: 25%;
+  }
+  .col-sm-offset-2 {
+    margin-left: 16.66666667%;
+  }
+  .col-sm-offset-1 {
+    margin-left: 8.33333333%;
+  }
+  .col-sm-offset-0 {
+    margin-left: 0%;
+  }
+}
+@media (min-width: 992px) {
+  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
+    float: left;
+  }
+  .col-md-12 {
+    width: 100%;
+  }
+  .col-md-11 {
+    width: 91.66666667%;
+  }
+  .col-md-10 {
+    width: 83.33333333%;
+  }
+  .col-md-9 {
+    width: 75%;
+  }
+  .col-md-8 {
+    width: 66.66666667%;
+  }
+  .col-md-7 {
+    width: 58.33333333%;
+  }
+  .col-md-6 {
+    width: 50%;
+  }
+  .col-md-5 {
+    width: 41.66666667%;
+  }
+  .col-md-4 {
+    width: 33.33333333%;
+  }
+  .col-md-3 {
+    width: 25%;
+  }
+  .col-md-2 {
+    width: 16.66666667%;
+  }
+  .col-md-1 {
+    width: 8.33333333%;
+  }
+  .col-md-pull-12 {
+    right: 100%;
+  }
+  .col-md-pull-11 {
+    right: 91.66666667%;
+  }
+  .col-md-pull-10 {
+    right: 83.33333333%;
+  }
+  .col-md-pull-9 {
+    right: 75%;
+  }
+  .col-md-pull-8 {
+    right: 66.66666667%;
+  }
+  .col-md-pull-7 {
+    right: 58.33333333%;
+  }
+  .col-md-pull-6 {
+    right: 50%;
+  }
+  .col-md-pull-5 {
+    right: 41.66666667%;
+  }
+  .col-md-pull-4 {
+    right: 33.33333333%;
+  }
+  .col-md-pull-3 {
+    right: 25%;
+  }
+  .col-md-pull-2 {
+    right: 16.66666667%;
+  }
+  .col-md-pull-1 {
+    right: 8.33333333%;
+  }
+  .col-md-pull-0 {
+    right: auto;
+  }
+  .col-md-push-12 {
+    left: 100%;
+  }
+  .col-md-push-11 {
+    left: 91.66666667%;
+  }
+  .col-md-push-10 {
+    left: 83.33333333%;
+  }
+  .col-md-push-9 {
+    left: 75%;
+  }
+  .col-md-push-8 {
+    left: 66.66666667%;
+  }
+  .col-md-push-7 {
+    left: 58.33333333%;
+  }
+  .col-md-push-6 {
+    left: 50%;
+  }
+  .col-md-push-5 {
+    left: 41.66666667%;
+  }
+  .col-md-push-4 {
+    left: 33.33333333%;
+  }
+  .col-md-push-3 {
+    left: 25%;
+  }
+  .col-md-push-2 {
+    left: 16.66666667%;
+  }
+  .col-md-push-1 {
+    left: 8.33333333%;
+  }
+  .col-md-push-0 {
+    left: auto;
+  }
+  .col-md-offset-12 {
+    margin-left: 100%;
+  }
+  .col-md-offset-11 {
+    margin-left: 91.66666667%;
+  }
+  .col-md-offset-10 {
+    margin-left: 83.33333333%;
+  }
+  .col-md-offset-9 {
+    margin-left: 75%;
+  }
+  .col-md-offset-8 {
+    margin-left: 66.66666667%;
+  }
+  .col-md-offset-7 {
+    margin-left: 58.33333333%;
+  }
+  .col-md-offset-6 {
+    margin-left: 50%;
+  }
+  .col-md-offset-5 {
+    margin-left: 41.66666667%;
+  }
+  .col-md-offset-4 {
+    margin-left: 33.33333333%;
+  }
+  .col-md-offset-3 {
+    margin-left: 25%;
+  }
+  .col-md-offset-2 {
+    margin-left: 16.66666667%;
+  }
+  .col-md-offset-1 {
+    margin-left: 8.33333333%;
+  }
+  .col-md-offset-0 {
+    margin-left: 0%;
+  }
+}
+@media (min-width: 1200px) {
+  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
+    float: left;
+  }
+  .col-lg-12 {
+    width: 100%;
+  }
+  .col-lg-11 {
+    width: 91.66666667%;
+  }
+  .col-lg-10 {
+    width: 83.33333333%;
+  }
+  .col-lg-9 {
+    width: 75%;
+  }
+  .col-lg-8 {
+    width: 66.66666667%;
+  }
+  .col-lg-7 {
+    width: 58.33333333%;
+  }
+  .col-lg-6 {
+    width: 50%;
+  }
+  .col-lg-5 {
+    width: 41.66666667%;
+  }
+  .col-lg-4 {
+    width: 33.33333333%;
+  }
+  .col-lg-3 {
+    width: 25%;
+  }
+  .col-lg-2 {
+    width: 16.66666667%;
+  }
+  .col-lg-1 {
+    width: 8.33333333%;
+  }
+  .col-lg-pull-12 {
+    right: 100%;
+  }
+  .col-lg-pull-11 {
+    right: 91.66666667%;
+  }
+  .col-lg-pull-10 {
+    right: 83.33333333%;
+  }
+  .col-lg-pull-9 {
+    right: 75%;
+  }
+  .col-lg-pull-8 {
+    right: 66.66666667%;
+  }
+  .col-lg-pull-7 {
+    right: 58.33333333%;
+  }
+  .col-lg-pull-6 {
+    right: 50%;
+  }
+  .col-lg-pull-5 {
+    right: 41.66666667%;
+  }
+  .col-lg-pull-4 {
+    right: 33.33333333%;
+  }
+  .col-lg-pull-3 {
+    right: 25%;
+  }
+  .col-lg-pull-2 {
+    right: 16.66666667%;
+  }
+  .col-lg-pull-1 {
+    right: 8.33333333%;
+  }
+  .col-lg-pull-0 {
+    right: auto;
+  }
+  .col-lg-push-12 {
+    left: 100%;
+  }
+  .col-lg-push-11 {
+    left: 91.66666667%;
+  }
+  .col-lg-push-10 {
+    left: 83.33333333%;
+  }
+  .col-lg-push-9 {
+    left: 75%;
+  }
+  .col-lg-push-8 {
+    left: 66.66666667%;
+  }
+  .col-lg-push-7 {
+    left: 58.33333333%;
+  }
+  .col-lg-push-6 {
+    left: 50%;
+  }
+  .col-lg-push-5 {
+    left: 41.66666667%;
+  }
+  .col-lg-push-4 {
+    left: 33.33333333%;
+  }
+  .col-lg-push-3 {
+    left: 25%;
+  }
+  .col-lg-push-2 {
+    left: 16.66666667%;
+  }
+  .col-lg-push-1 {
+    left: 8.33333333%;
+  }
+  .col-lg-push-0 {
+    left: auto;
+  }
+  .col-lg-offset-12 {
+    margin-left: 100%;
+  }
+  .col-lg-offset-11 {
+    margin-left: 91.66666667%;
+  }
+  .col-lg-offset-10 {
+    margin-left: 83.33333333%;
+  }
+  .col-lg-offset-9 {
+    margin-left: 75%;
+  }
+  .col-lg-offset-8 {
+    margin-left: 66.66666667%;
+  }
+  .col-lg-offset-7 {
+    margin-left: 58.33333333%;
+  }
+  .col-lg-offset-6 {
+    margin-left: 50%;
+  }
+  .col-lg-offset-5 {
+    margin-left: 41.66666667%;
+  }
+  .col-lg-offset-4 {
+    margin-left: 33.33333333%;
+  }
+  .col-lg-offset-3 {
+    margin-left: 25%;
+  }
+  .col-lg-offset-2 {
+    margin-left: 16.66666667%;
+  }
+  .col-lg-offset-1 {
+    margin-left: 8.33333333%;
+  }
+  .col-lg-offset-0 {
+    margin-left: 0%;
+  }
+}
+.clearfix:before,
+.clearfix:after,
+.container:before,
+.container:after,
+.container-fluid:before,
+.container-fluid:after,
+.row:before,
+.row:after {
+  content: " ";
+  display: table;
+}
+.clearfix:after,
+.container:after,
+.container-fluid:after,
+.row:after {
+  clear: both;
+}
+.center-block {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+}
+.pull-right {
+  float: right !important;
+}
+.pull-left {
+  float: left !important;
+}
+.hide {
+  display: none !important;
+}
+.show {
+  display: block !important;
+}
+.invisible {
+  visibility: hidden;
+}
+.text-hide {
+  font: 0/0 a;
+  color: transparent;
+  text-shadow: none;
+  background-color: transparent;
+  border: 0;
+}
+.hidden {
+  display: none !important;
+}
+.affix {
+  position: fixed;
+}
+@-ms-viewport {
+  width: device-width;
+}
+.visible-xs,
+.visible-sm,
+.visible-md,
+.visible-lg {
+  display: none !important;
+}
+.visible-xs-block,
+.visible-xs-inline,
+.visible-xs-inline-block,
+.visible-sm-block,
+.visible-sm-inline,
+.visible-sm-inline-block,
+.visible-md-block,
+.visible-md-inline,
+.visible-md-inline-block,
+.visible-lg-block,
+.visible-lg-inline,
+.visible-lg-inline-block {
+  display: none !important;
+}
+@media (max-width: 767px) {
+  .visible-xs {
+    display: block !important;
+  }
+  table.visible-xs {
+    display: table !important;
+  }
+  tr.visible-xs {
+    display: table-row !important;
+  }
+  th.visible-xs,
+  td.visible-xs {
+    display: table-cell !important;
+  }
+}
+@media (max-width: 767px) {
+  .visible-xs-block {
+    display: block !important;
+  }
+}
+@media (max-width: 767px) {
+  .visible-xs-inline {
+    display: inline !important;
+  }
+}
+@media (max-width: 767px) {
+  .visible-xs-inline-block {
+    display: inline-block !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm {
+    display: block !important;
+  }
+  table.visible-sm {
+    display: table !important;
+  }
+  tr.visible-sm {
+    display: table-row !important;
+  }
+  th.visible-sm,
+  td.visible-sm {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm-block {
+    display: block !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm-inline {
+    display: inline !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm-inline-block {
+    display: inline-block !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md {
+    display: block !important;
+  }
+  table.visible-md {
+    display: table !important;
+  }
+  tr.visible-md {
+    display: table-row !important;
+  }
+  th.visible-md,
+  td.visible-md {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md-block {
+    display: block !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md-inline {
+    display: inline !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md-inline-block {
+    display: inline-block !important;
+  }
+}
+@media (min-width: 1200px) {
+  .visible-lg {
+    display: block !important;
+  }
+  table.visible-lg {
+    display: table !important;
+  }
+  tr.visible-lg {
+    display: table-row !important;
+  }
+  th.visible-lg,
+  td.visible-lg {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 1200px) {
+  .visible-lg-block {
+    display: block !important;
+  }
+}
+@media (min-width: 1200px) {
+  .visible-lg-inline {
+    display: inline !important;
+  }
+}
+@media (min-width: 1200px) {
+  .visible-lg-inline-block {
+    display: inline-block !important;
+  }
+}
+@media (max-width: 767px) {
+  .hidden-xs {
+    display: none !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .hidden-sm {
+    display: none !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .hidden-md {
+    display: none !important;
+  }
+}
+@media (min-width: 1200px) {
+  .hidden-lg {
+    display: none !important;
+  }
+}
+.visible-print {
+  display: none !important;
+}
+@media print {
+  .visible-print {
+    display: block !important;
+  }
+  table.visible-print {
+    display: table !important;
+  }
+  tr.visible-print {
+    display: table-row !important;
+  }
+  th.visible-print,
+  td.visible-print {
+    display: table-cell !important;
+  }
+}
+.visible-print-block {
+  display: none !important;
+}
+@media print {
+  .visible-print-block {
+    display: block !important;
+  }
+}
+.visible-print-inline {
+  display: none !important;
+}
+@media print {
+  .visible-print-inline {
+    display: inline !important;
+  }
+}
+.visible-print-inline-block {
+  display: none !important;
+}
+@media print {
+  .visible-print-inline-block {
+    display: inline-block !important;
+  }
+}
+@media print {
+  .hidden-print {
+    display: none !important;
+  }
+}
diff --git a/utils/test/vnfcatalogue/assets/Vnf_landing/assets/css/style.css b/utils/test/vnfcatalogue/assets/Vnf_landing/assets/css/style.css
new file mode 100644 (file)
index 0000000..a37340c
--- /dev/null
@@ -0,0 +1,252 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Kumar Rishabh and others.
+ *
+ * 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
+ *******************************************************************************/
+@import url('https://fonts.googleapis.com/css?family=Muli:300,400,600,700,800');
+*
+{
+  color: #333333;
+  font-family: 'Muli', sans-serif;
+}
+*:focus
+{
+    outline: none;
+}
+html,
+body
+{
+  margin: 0;
+  padding: 0;
+  background: #ffffff;
+  font-family: 'Muli', sans-serif;
+}
+header
+{
+  padding: 10px 35px 0 0px;
+}
+header ul
+{
+  list-style: none;
+  display: inline-block;
+}
+header ul li
+{
+  display: inline-block;
+}
+header .logo
+{
+  background: url(../images/logo.png) no-repeat;
+  background-size: cover;
+  width: 155px;
+  height: 34px;
+  display: inline-block;
+  margin-right: 20px;
+  margin-left: 0;
+  float: left;
+}
+header ul li.links
+{
+  margin: 7px 10px 0 0;
+}
+header ul li > a,
+.content ul.most-menu li.items a
+{
+  color: #333333;
+  font-weight: 800;
+  font-size: 14px;
+  letter-spacing: 0.6px;
+  font-family: 'Muli', sans-serif;
+}
+header ul.navigation-right
+{
+  float: right;
+  padding-top: 8px;
+}
+header ul.navigation-right li.signup > a
+{
+  border: 2px solid #333333;
+  border-radius: 4px;
+  font-size: 13px;
+  font-weigt: 700;
+  padding: 9px 15px;
+}
+header ul.navigation-right li.signin > a
+{
+  border-bottom: 2px solid #333333;
+  font-size: 13px;
+  font-weight: 700;
+  padding: 9px 2px;
+}
+header ul.navigation-right li.option
+{
+  font-weight: 800;
+  padding: 0 10px;
+}
+header ul li > a:hover,
+header ul.navigation-right li.signin > a:hover,
+header ul.navigation-right li.signup > a:hover,
+header ul li > a:focus,
+header ul.navigation-right li.signin > a:focus,
+header ul.navigation-right li.signup > a:focus,
+.content ul.most-menu li a:hover,
+.content ul.most-menu li a:focus
+{
+  text-decoration: none;
+  cursor: pointer;
+  color: #333333;
+}
+header ul.navigation-right li.signup > a:hover
+{
+  background: #333333;
+  color: #ffffff;
+}
+.search-box
+{
+  text-align: center;
+  padding: 100px 0;
+}
+.search-box h1
+{
+  font-size: 30px;
+  letter-spacing: 2px;
+  color: #333333;
+  font-weight: 600;
+}
+form.search-form
+{
+  padding: 10px 20px;
+}
+form.search-form input.search-input
+{
+  font-weight: 400;
+  margin: 30px 0;
+  height: 80px;
+  padding: 10px 30px;
+  max-width: 800px;
+  width: 70%;
+  border-radius: 5px;
+  border: 2px solid #333333;
+  box-shadow: 0 0 15px 1px rgba(0,0,0,0.50);
+  color: #333333;
+  font-size: 22px;
+}
+form.search-form button.search-button
+{
+  padding: 18px 35px;
+  background: #FFF572;
+  border: 0;
+  box-shadow: 0 0 15px 1px #958F40;
+  border-radius: 1px;
+  font-size: 20px;
+  color: #393E41;
+  letter-spacing: 1px;
+  border-radius: 5px;
+  font-weight: 600;
+}
+form.search-form input:focus
+{
+  outline: none;
+}
+form.search-form input::-webkit-input-placeholder
+{
+  font-weight: 400;
+  letter-spacing: 1px;
+    color: #333333;
+}
+form.search-form input::-moz-placeholder
+{
+  font-weight: 400;
+  letter-spacing: 1px;
+    color: #333333;
+}
+form.search-form input:-moz-placeholder
+{
+  font-weight: 400;
+  letter-spacing: 5px;
+  color: #333333;
+}
+form.search-form input:-ms-input-placeholder
+{
+  font-weight: 400;
+  letter-spacing: 1px;
+  color: #333333;
+}
+.content
+{
+  height: 500px;
+  background: #f9f9f9;
+  padding: 10px 0;
+}
+.content ul.most-menu
+{
+  list-style: none;
+  text-align: center;
+  padding-bottom: 10px;
+}
+.content ul.most-menu li.items
+{
+  display: inline-block;
+  margin-right: 5px;
+  padding: 15px 25px;
+}
+.content ul.most-menu li.active
+{
+  background: #FFF572;
+}
+.content-box
+{
+  overflow: hidden;
+  padding: 20px 0 50px 0;
+  display: flex;
+  justify-content: center;
+  background: #FFFFFF;
+  box-shadow: 0 2px 3px 0 rgba(0,0,0,0.50);
+  border-bottom: 2px solid #8B19A2;
+  margin-bottom: 30px;
+}
+.content-data
+{
+  align-self: center;
+}
+.content-data h1.content-title
+{
+  font-size: 25px;
+  color: #000000;
+  letter-spacing: 1.2px;
+}
+.content-data .box
+{
+  padding: 10px 0;
+  height: 90px;
+  text-align: center;
+  border: 2px solid #4D4D4D;
+  border-radius: 2px;
+}
+.content-data .commit-icon
+{
+  width: 23px;
+  height: 16px;
+}
+.content-data .box h3.commits
+{
+  text-align: center;
+  font-size: 12px;
+  color: #333333;
+  letter-spacing: 0.03px;
+}
+footer
+{
+  font-size: 12px;
+  font-weight: 800;
+  color: #333333;
+  text-align: center;
+  padding: 20px;
+}
+.space-10
+{
+  height: 10px;
+}
diff --git a/utils/test/vnfcatalogue/assets/Vnf_landing/assets/images/3rd_party/commits.png b/utils/test/vnfcatalogue/assets/Vnf_landing/assets/images/3rd_party/commits.png
new file mode 100644 (file)
index 0000000..1247621
Binary files /dev/null and b/utils/test/vnfcatalogue/assets/Vnf_landing/assets/images/3rd_party/commits.png differ
diff --git a/utils/test/vnfcatalogue/assets/Vnf_landing/assets/images/logo.png b/utils/test/vnfcatalogue/assets/Vnf_landing/assets/images/logo.png
new file mode 100644 (file)
index 0000000..fe18194
Binary files /dev/null and b/utils/test/vnfcatalogue/assets/Vnf_landing/assets/images/logo.png differ
diff --git a/utils/test/vnfcatalogue/assets/Vnf_landing/index.html b/utils/test/vnfcatalogue/assets/Vnf_landing/index.html
new file mode 100644 (file)
index 0000000..5aebd46
--- /dev/null
@@ -0,0 +1,145 @@
+<!--
+ Copyright (c) 2017 Kumar Rishabh and others.
+
+  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
+-->
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <title>Document</title>
+  <link rel="stylesheet" href="assets/css/3rd_party/bootstrap.css">
+  <link rel="stylesheet" href="assets/css/style.css">
+</head>
+<body>
+<header>
+  <ul class="navigation">
+    <li class="logo"></li>
+    <li class="links"><a href="#">Projects</a></li>
+    <li class="links"><a href="#">People</a></li>
+    <li class="links"><a href="#">About</a></li>
+  </ul>
+  <ul class="navigation-right">
+    <li class="signup"><a href="#">Sign up</a></li>
+    <li class="option">or</li>
+    <li class="signin"><a href="#">Sign in</a></li>
+  </ul>
+</header>
+<div class="search-box">
+  <h1>VNF Catalogue</h1>
+  <form class="search-form">
+    <input type="text" placeholder="Search..." class="search-input">
+    <div class="space-10"></div>
+    <button type="submit" value="Search" class="search-button">Search</button>
+  </form>
+</div>
+<div class="content">
+<ul class="most-menu">
+  <li class="items active"><a href="#">Most Popular</a></li>
+  <li class="items"><a href="#">Most Active</a></li>
+  <li class="items"><a href="#">Most Active Contributions</a></li>
+</ul>
+<div class="container">
+  <div class="row">
+    <div class="box-container">
+      <div class="col-md-3">
+        <div class="content-box">
+          <div class="content-data">
+            <h1 class="content-title">AAA</h1>
+            <div class="box">
+              <img src="assets/images/3rd_party/commits.png" class="commit-icon">
+              <h3 class="commits">4,845<br>commits</h3>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+          <div class="col-md-3">
+        <div class="content-box">
+          <div class="content-data">
+            <h1 class="content-title">AAA</h1>
+            <div class="box">
+              <img src="assets/images/3rd_party/commits.png" class="commit-icon">
+              <h3 class="commits">4,845<br>commits</h3>
+            </div>
+          </div>
+        </div>
+      </div>
+      <div class="col-md-3">
+        <div class="content-box">
+          <div class="content-data">
+            <h1 class="content-title">AAA</h1>
+            <div class="box">
+              <img src="assets/images/3rd_party/commits.png" class="commit-icon">
+              <h3 class="commits">4,845<br>commits</h3>
+            </div>
+          </div>
+        </div>
+      </div>
+    <div class="col-md-3">
+      <div class="content-box">
+        <div class="content-data">
+          <h1 class="content-title">AAA</h1>
+          <div class="box">
+            <img src="assets/images/3rd_party/commits.png" class="commit-icon">
+            <h3 class="commits">4,845<br>commits</h3>
+          </div>
+        </div>
+      </div>
+    </div>
+          <div class="col-md-3">
+        <div class="content-box">
+          <div class="content-data">
+            <h1 class="content-title">AAA</h1>
+            <div class="box">
+              <img src="assets/images/3rd_party/commits.png" class="commit-icon">
+              <h3 class="commits">4,845<br>commits</h3>
+            </div>
+          </div>
+        </div>
+      </div>
+            <div class="col-md-3">
+        <div class="content-box">
+          <div class="content-data">
+            <h1 class="content-title">AAA</h1>
+            <div class="box">
+              <img src="assets/images/3rd_party/commits.png" class="commit-icon">
+              <h3 class="commits">4,845<br>commits</h3>
+            </div>
+          </div>
+        </div>
+      </div>
+    <div class="col-md-3">
+      <div class="content-box">
+        <div class="content-data">
+          <h1 class="content-title">AAA</h1>
+          <div class="box">
+            <img src="assets/images/3rd_party/commits.png" class="commit-icon">
+            <h3 class="commits">4,845<br>commits</h3>
+          </div>
+        </div>
+      </div>
+    </div>
+          <div class="col-md-3">
+        <div class="content-box">
+          <div class="content-data">
+            <h1 class="content-title">AAA</h1>
+            <div class="box">
+              <img src="assets/images/3rd_party/commits.png" class="commit-icon">
+              <h3 class="commits">4,845<br>commits</h3>
+            </div>
+          </div>
+        </div>
+    </div>
+  </div>
+</div>
+<footer>
+  &copy; 2017 OPNFV
+</footer>
+</div>
+</body>
+</html>
diff --git a/utils/test/vnfcatalogue/helpers/README.md b/utils/test/vnfcatalogue/helpers/README.md
new file mode 100644 (file)
index 0000000..6c0ca78
--- /dev/null
@@ -0,0 +1,22 @@
+# Helper Directory
+
+## Helper to migrate database
+
+First make sure nodejs and mysql are installed. Then use
+
+```bash
+npm install bookshelf mysql knex when lodash --save
+```
+
+Create a database named **vnf_catalogue**.
+Enter the mysql credentials in migrate.js.
+
+Then use
+
+```bash
+node migrate
+```
+
+If successful the script will return success message. The current script is
+idempotent is nature, if run twice it will just return error and write nothing.
+
diff --git a/utils/test/vnfcatalogue/helpers/migrate.js b/utils/test/vnfcatalogue/helpers/migrate.js
new file mode 100644 (file)
index 0000000..ec20905
--- /dev/null
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Kumar Rishabh(penguinRaider) and others.
+ *
+ * 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
+ *******************************************************************************/
+
+var knex = require('knex')({
+    client: 'mysql',
+    connection: {
+        host     : 'localhost',
+        user     : '*',
+        password : '*',
+        database : 'vnf_catalogue',
+        charset  : 'utf8'
+    }
+});
+var Schema = require('./schema');
+var sequence = require('when/sequence');
+var _ = require('lodash');
+function createTable(tableName) {
+    return knex.schema.createTable(tableName, function (table) {
+    var column;
+    var columnKeys = _.keys(Schema[tableName]);
+    _.each(columnKeys, function (key) {
+        if (Schema[tableName][key].type === 'text' && Schema[tableName][key].hasOwnProperty('fieldtype')) {
+        column = table[Schema[tableName][key].type](key, Schema[tableName][key].fieldtype);
+        }
+        else if (Schema[tableName][key].type === 'string' && Schema[tableName][key].hasOwnProperty('maxlength')) {
+        column = table[Schema[tableName][key].type](key, Schema[tableName][key].maxlength);
+        }
+        else {
+        column = table[Schema[tableName][key].type](key);
+        }
+        if (Schema[tableName][key].hasOwnProperty('nullable') && Schema[tableName][key].nullable === true) {
+        column.nullable();
+        }
+        else {
+        column.notNullable();
+        }
+        if (Schema[tableName][key].hasOwnProperty('primary') && Schema[tableName][key].primary === true) {
+        column.primary();
+        }
+        if (Schema[tableName][key].hasOwnProperty('unique') && Schema[tableName][key].unique) {
+        column.unique();
+        }
+        if (Schema[tableName][key].hasOwnProperty('unsigned') && Schema[tableName][key].unsigned) {
+        column.unsigned();
+        }
+        if (Schema[tableName][key].hasOwnProperty('references')) {
+        column.references(Schema[tableName][key].references);
+        }
+        if (Schema[tableName][key].hasOwnProperty('defaultTo')) {
+        column.defaultTo(Schema[tableName][key].defaultTo);
+        }
+    });
+    });
+}
+function createTables () {
+    var tables = [];
+    var tableNames = _.keys(Schema);
+    tables = _.map(tableNames, function (tableName) {
+    return function () {
+        return createTable(tableName);
+    };
+    });
+    return sequence(tables);
+}
+createTables()
+.then(function() {
+    console.log('Tables created!!');
+    process.exit(0);
+})
+.catch(function (error) {
+    throw error;
+});
diff --git a/utils/test/vnfcatalogue/helpers/schema.js b/utils/test/vnfcatalogue/helpers/schema.js
new file mode 100644 (file)
index 0000000..2aaf99a
--- /dev/null
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Kumar Rishabh(penguinRaider) and others.
+ *
+ * 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
+ *******************************************************************************/
+var Schema = {
+    photo: {
+        photo_id: {type: 'increments', nullable: false, primary: true},
+        photo_url: {type: 'string', maxlength: 254, nullable: false}
+    },
+    user: {
+        user_id: {type: 'increments', nullable: false, primary: true},
+        user_name: {type: 'string', maxlength: 254, nullable: false},
+        password: {type: 'string', maxlength: 150, nullable: false},
+        email_id: {type: 'string', maxlength: 254, nullable: false, unique: true, validations: {isEmail: true}},
+        photo_id: {type: 'integer', nullable: true, unsigned: true, references: 'photo.photo_id'},
+        company: {type: 'string', maxlength: 254, nullable: false},
+        introduction: {type: 'string', maxlength: 510, nullable: false},
+        last_login: {type: 'dateTime', nullable: true},
+        created_at: {type: 'dateTime', nullable: false},
+    },
+    vnf: {
+        vnf_id: {type: 'increments', nullable: false, primary: true},
+        vnf_name: {type: 'string', maxlength: 254, nullable: false},
+        repo_url: {type: 'string', maxlength: 254, nullable: false},
+        photo_id: {type: 'integer', nullable: true, unsigned: true, references: 'photo.photo_id'},
+        submitter_id: {type: 'integer', nullable: false, unsigned: true, references: 'user.user_id'},
+        lines_of_code: {type: 'integer', nullable: true, unsigned: true},
+        versions: {type: 'integer', nullable: true, unsigned: true},
+        no_of_developers: {type: 'integer', nullable: true, unsigned: true},
+    },
+    tag: {
+        tag_id: {type: 'increments', nullable: false, primary: true},
+        name: {type: 'string', maxlength: 150, nullable: false}
+    },
+    vnf_tags: {
+        vnf_tag_id: {type: 'increments', nullable: false, primary: true},
+        tag_id: {type: 'integer', nullable: false, unsigned: true, references: 'tag.tag_id'},
+        vnf_id: {type: 'integer', nullable: false, unsigned: true, references: 'vnf.vnf_id'},
+    },
+    vnf_contributors: {
+        vnf_contributors_id: {type: 'increments', nullable: false, primary: true},
+        user_id: {type: 'integer', nullable: false, unsigned: true, references: 'user.user_id'},
+        vnf_id: {type: 'integer', nullable: false, unsigned: true, references: 'vnf.vnf_id'},
+        created_at: {type: 'dateTime', nullable: false},
+    }
+};
+module.exports = Schema;