summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--jjb/functest/functest-daily-jobs.yml2
-rw-r--r--jjb/joid/joid-daily-jobs.yml22
-rw-r--r--jjb/kvmfornfv/kvmfornfv.yml4
-rw-r--r--jjb/opnfvdocs/docs-post-rtd.sh7
-rw-r--r--jjb/opnfvdocs/opnfvdocs.yml8
-rw-r--r--jjb/qtip/helpers/validate-deploy.sh22
-rw-r--r--jjb/xci/bifrost-cleanup-job.yml14
-rw-r--r--jjb/xci/bifrost-verify-jobs.yml14
-rwxr-xr-xjjb/xci/bifrost-verify.sh2
-rw-r--r--jjb/xci/xci-daily-jobs.yml95
-rwxr-xr-xjjb/xci/xci-deploy.sh92
-rwxr-xr-xjjb/xci/xci-provision.sh42
-rw-r--r--modules/opnfv/utils/ssh_utils.py13
-rw-r--r--prototypes/bifrost/README.md2
-rw-r--r--prototypes/bifrost/playbooks/inventory/group_vars/baremetal53
-rwxr-xr-xprototypes/bifrost/scripts/osa-bifrost-deployment.sh15
-rwxr-xr-xprototypes/bifrost/scripts/test-bifrost-deployment.sh5
-rw-r--r--prototypes/openstack-ansible/file/opnfv-setup-openstack.yml34
-rw-r--r--prototypes/openstack-ansible/playbooks/configure-targethosts.yml (renamed from prototypes/openstack-ansible/playbooks/targethost_configuration.yml)0
-rw-r--r--prototypes/openstack-ansible/playbooks/configure-xcimaster.yml (renamed from prototypes/openstack-ansible/playbooks/jumphost_configuration.yml)25
-rw-r--r--prototypes/openstack-ansible/playbooks/inventory4
-rwxr-xr-xprototypes/openstack-ansible/scripts/osa-deploy.sh136
-rwxr-xr-xprototypes/openstack-ansible/scripts/osa_deploy.sh81
-rw-r--r--prototypes/openstack-ansible/var/ubuntu.yml6
-rwxr-xr-xutils/test/testapi/install.sh3
-rw-r--r--utils/test/testapi/opnfv_testapi/common/config.py9
-rw-r--r--utils/test/testapi/opnfv_testapi/resources/handlers.py6
-rwxr-xr-xutils/test/testapi/run_test.sh14
-rw-r--r--utils/test/testapi/test-requirements.txt5
29 files changed, 550 insertions, 185 deletions
diff --git a/jjb/functest/functest-daily-jobs.yml b/jjb/functest/functest-daily-jobs.yml
index a3268d3e5..e8d14321f 100644
--- a/jjb/functest/functest-daily-jobs.yml
+++ b/jjb/functest/functest-daily-jobs.yml
@@ -205,7 +205,7 @@
- 'suite':
job-timeout: 60
- 'daily':
- job-timeout: 180
+ job-timeout: 240
jobs:
- 'functest-{installer}-{pod}-{testsuite}-{stream}'
diff --git a/jjb/joid/joid-daily-jobs.yml b/jjb/joid/joid-daily-jobs.yml
index 8c69c8310..ec6c868c9 100644
--- a/jjb/joid/joid-daily-jobs.yml
+++ b/jjb/joid/joid-daily-jobs.yml
@@ -163,17 +163,17 @@
# i.e. one tempest smoke ipv6, two vping from functest)
# 4.not used for release criteria or compliance,
# only to debug the dovetail tool bugs with joid
- - trigger-builds:
- - project: 'dovetail-joid-{pod}-debug-{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-joid-{pod}-debug-{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: 'joid-deploy-{pod}-daily-{stream}'
diff --git a/jjb/kvmfornfv/kvmfornfv.yml b/jjb/kvmfornfv/kvmfornfv.yml
index a782ee0fa..78ec32b85 100644
--- a/jjb/kvmfornfv/kvmfornfv.yml
+++ b/jjb/kvmfornfv/kvmfornfv.yml
@@ -79,6 +79,10 @@
branches:
- branch-compare-type: 'ANT'
branch-pattern: '**/{branch}'
+ disable-strict-forbidden-file-verification: 'true'
+ forbidden-file-paths:
+ - compare-type: ANT
+ pattern: 'docs/**|.gitignore'
builders:
- description-setter:
diff --git a/jjb/opnfvdocs/docs-post-rtd.sh b/jjb/opnfvdocs/docs-post-rtd.sh
deleted file mode 100644
index e3dc9b5f0..000000000
--- a/jjb/opnfvdocs/docs-post-rtd.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/bash
-if [ $GERRIT_BRANCH == "master" ]; then
- RTD_BUILD_VERSION=latest
-else
- RTD_BUILD_VERSION=${{GERRIT_BRANCH/\//-}}
-fi
-curl -X POST --data "version_slug=$RTD_BUILD_VERSION" https://readthedocs.org/build/opnfvdocsdemo
diff --git a/jjb/opnfvdocs/opnfvdocs.yml b/jjb/opnfvdocs/opnfvdocs.yml
index 0553cd436..fc825ff64 100644
--- a/jjb/opnfvdocs/opnfvdocs.yml
+++ b/jjb/opnfvdocs/opnfvdocs.yml
@@ -8,8 +8,8 @@
project: '{name}'
jobs:
- - 'opnfvdocs-verify-{stream}'
- - 'opnfvdocs-merge-{stream}'
+ - 'opnfvdocs-verify-shellcheck-{stream}'
+ - 'opnfvdocs-merge-shellcheck-{stream}'
- 'opnfvdocs-daily-{stream}'
stream:
@@ -27,7 +27,7 @@
########################
- job-template:
- name: 'opnfvdocs-verify-{stream}'
+ name: 'opnfvdocs-verify-shellcheck-{stream}'
disabled: '{obj:disabled}'
@@ -72,7 +72,7 @@
- check-bash-syntax
- job-template:
- name: 'opnfvdocs-merge-{stream}'
+ name: 'opnfvdocs-merge-shellcheck-{stream}'
disabled: '{obj:disabled}'
diff --git a/jjb/qtip/helpers/validate-deploy.sh b/jjb/qtip/helpers/validate-deploy.sh
index a73e33c2c..aa07986ce 100644
--- a/jjb/qtip/helpers/validate-deploy.sh
+++ b/jjb/qtip/helpers/validate-deploy.sh
@@ -10,7 +10,9 @@ set -e
envs="INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP}
-e NODE_NAME=${NODE_NAME} -e CI_DEBUG=${CI_DEBUG}"
+ramfs=/tmp/qtip/ramfs
dir_imgstore="${HOME}/imgstore"
+ramfs_volume="$ramfs:/mnt/ramfs"
echo "--------------------------------------------------------"
echo "POD: $NODE_NAME"
@@ -21,7 +23,24 @@ echo "--------------------------------------------------------"
echo "Qtip: Pulling docker image: opnfv/qtip:${DOCKER_TAG}"
docker pull opnfv/qtip:$DOCKER_TAG
-cmd=" docker run -id -e $envs opnfv/qtip:${DOCKER_TAG} /bin/bash"
+# use ramfs to fix docker socket connection issue with overlay mode in centos
+if [ ! -d $ramfs ]; then
+ mkdir -p $ramfs
+fi
+
+if [ ! -z $(df $ramfs | tail -n -1 | grep $ramfs) ]; then
+ sudo mount -t tmpfs -o size=32M tmpfs $ramfs
+fi
+
+# enable contro path in docker
+echo <<EOF > /tmp/ansible.cfg
+[defaults]
+callback_whitelist = profile_tasks
+[ssh_connection]
+control_path=/mnt/ramfs/ansible-ssh-%%h-%%p-%%r
+EOF
+
+cmd=" docker run -id -e $envs -v ${ramfs_volume} opnfv/qtip:${DOCKER_TAG} /bin/bash"
echo "Qtip: Running docker command: ${cmd}"
${cmd}
@@ -32,6 +51,7 @@ if [ $(docker ps | grep 'opnfv/qtip' | wc -l) == 0 ]; then
else
echo "The container ID is: ${container_id}"
QTIP_REPO=/home/opnfv/repos/qtip
+ docker cp /tmp/ansible.cfg ${container_id}:/home/opnfv/.ansible.cfg
# TODO(zhihui_wu): use qtip cli to execute benchmark test in the future
docker exec -t ${container_id} bash -c "cd ${QTIP_REPO}/qtip/runner/ &&
python runner.py -d /home/opnfv/qtip/results/ -b all"
diff --git a/jjb/xci/bifrost-cleanup-job.yml b/jjb/xci/bifrost-cleanup-job.yml
index 571e275da..4e9e2a8d4 100644
--- a/jjb/xci/bifrost-cleanup-job.yml
+++ b/jjb/xci/bifrost-cleanup-job.yml
@@ -88,11 +88,8 @@
trigger-on:
# We only run this when the change is merged or
# abandoned since we don't need the logs anymore
- - patchset-uploaded-event: 'false'
- - change-merged-event: 'true'
- - change-abandoned-event: 'true'
- - change-restored-event: 'false'
- - draft-published-event: 'false'
+ - change-merged-event
+ - change-abandoned-event
# This is an OPNFV maintenance job. We don't want to provide
# feedback on Gerrit
silent: true
@@ -119,11 +116,8 @@
trigger-on:
# We only run this when the change is merged or
# abandoned since we don't need the logs anymore
- - patchset-uploaded-event: 'false'
- - change-merged-event: 'true'
- - change-abandoned-event: 'true'
- - change-restored-event: 'false'
- - draft-published-event: 'false'
+ - change-merged-event
+ - change-abandoned-event
# This is an OPNFV maintenance job. We don't want to provide
# feedback on Gerrit
silent: true
diff --git a/jjb/xci/bifrost-verify-jobs.yml b/jjb/xci/bifrost-verify-jobs.yml
index 33032bc7b..6aea1c4aa 100644
--- a/jjb/xci/bifrost-verify-jobs.yml
+++ b/jjb/xci/bifrost-verify-jobs.yml
@@ -145,6 +145,9 @@
- bifrost-set-name
- bifrost-build
+ wrappers:
+ - bifrost-fix-perms-workspace
+
publishers:
- email:
recipients: fatih.degirmenci@ericsson.com yroblamo@redhat.com mchandras@suse.de jack.morgan@intel.com julienjut@gmail.com
@@ -208,6 +211,17 @@
readable-message: true
#---------------------------
+# wrapper macros
+#---------------------------
+- wrapper:
+ name: bifrost-fix-perms-workspace
+ wrappers:
+ - pre-scm-buildstep:
+ - shell: |
+ #!/bin/bash
+ sudo chown -R $USER $WORKSPACE || exit 1
+
+#---------------------------
# builder macros
#---------------------------
- builder:
diff --git a/jjb/xci/bifrost-verify.sh b/jjb/xci/bifrost-verify.sh
index e0c50907a..762466825 100755
--- a/jjb/xci/bifrost-verify.sh
+++ b/jjb/xci/bifrost-verify.sh
@@ -115,7 +115,7 @@ sudo /bin/cp -rf /opt/releng/prototypes/bifrost/* /opt/bifrost/
cd /opt/bifrost
sudo -E ./scripts/destroy-env.sh
-# provision 3 VMs; jumphost, controller, and compute
+# provision 3 VMs; xcimaster, controller, and compute
cd /opt/bifrost
sudo -E ./scripts/test-bifrost-deployment.sh
diff --git a/jjb/xci/xci-daily-jobs.yml b/jjb/xci/xci-daily-jobs.yml
index c685aa974..f42f86263 100644
--- a/jjb/xci/xci-daily-jobs.yml
+++ b/jjb/xci/xci-daily-jobs.yml
@@ -3,15 +3,22 @@
#--------------------------------
# BRANCH ANCHORS
#--------------------------------
+# the versions stated here default to branches which then later
+# on used for checking out the branches, pulling in head of the branch.
+# but they also allow us to state sha1 so instead of checking out the
+# branches, we can check out sha1 if we want to use locked/specific
+# sha1 or manually enter sha1.
master: &master
stream: master
- openstack-branch: '{stream}'
- opnfv-branch: 'master'
+ openstack-osa-version: '{stream}'
+ openstack-bifrost-version: '{stream}'
+ opnfv-releng-version: 'master'
gs-pathname: ''
ocata: &ocata
stream: ocata
- openstack-branch: 'stable/{stream}'
- opnfv-branch: 'master'
+ openstack-osa-version: 'stable/{stream}'
+ openstack-bifrost-version: 'stable/{stream}'
+ opnfv-releng-version: 'master'
gs-pathname: '/{stream}'
#--------------------------------
# scenarios
@@ -78,15 +85,27 @@
concurrent: false
properties:
- - logrotate-default
- build-blocker:
use-build-blocker: true
blocking-jobs:
- - 'xci-os-.*?-{pod}-daily-.*'
+ - '^xci-os.*'
block-level: 'NODE'
+ - logrotate-default
parameters:
- string:
+ name: OPENSTACK_OSA_VERSION
+ default: '{openstack-osa-version}'
+ - string:
+ name: OPENSTACK_BIFROST_VERSION
+ default: '{openstack-osa-version}'
+ - string:
+ name: OPNFV_RELENG_VERSION
+ default: '{opnfv-releng-version}'
+ - string:
+ name: USE_PROMOTED_VERSIONS
+ default: 'true'
+ - string:
name: DEPLOY_SCENARIO
default: '{scenario}'
- label:
@@ -96,28 +115,43 @@
triggers:
- '{auto-trigger-name}'
+ wrappers:
+ - xci-fix-perms-workspace
+
builders:
- description-setter:
description: "Built on $NODE_NAME"
- trigger-builds:
- project: 'xci-provision-{pod}-{distro}-daily-{stream}'
current-parameters: false
- predefined-parameters:
- DEPLOY_SCENARIO={scenario}
+ predefined-parameters: |
+ OPENSTACK_OSA_VERSION=$OPENSTACK_OSA_VERSION
+ OPENSTACK_BIFROST_VERSION=$OPENSTACK_BIFROST_VERSION
+ OPNFV_RELENG_VERSION=$OPNFV_RELENG_VERSION
+ USE_PROMOTED_VERSIONS=$USE_PROMOTED_VERSIONS
+ DEPLOY_SCENARIO=$DEPLOY_SCENARIO
same-node: true
block: true
- trigger-builds:
- project: 'xci-deploy-{pod}-{distro}-daily-{stream}'
current-parameters: false
- predefined-parameters:
- DEPLOY_SCENARIO={scenario}
+ predefined-parameters: |
+ OPENSTACK_OSA_VERSION=$OPENSTACK_OSA_VERSION
+ OPENSTACK_BIFROST_VERSION=$OPENSTACK_BIFROST_VERSION
+ OPNFV_RELENG_VERSION=$OPNFV_RELENG_VERSION
+ USE_PROMOTED_VERSIONS=$USE_PROMOTED_VERSIONS
+ DEPLOY_SCENARIO=$DEPLOY_SCENARIO
same-node: true
block: true
- trigger-builds:
- project: 'xci-functest-{pod}-{distro}-daily-{stream}'
current-parameters: false
- predefined-parameters:
- DEPLOY_SCENARIO={scenario}
+ predefined-parameters: |
+ OPENSTACK_OSA_VERSION=$OPENSTACK_OSA_VERSION
+ OPENSTACK_BIFROST_VERSION=$OPENSTACK_BIFROST_VERSION
+ OPNFV_RELENG_VERSION=$OPNFV_RELENG_VERSION
+ USE_PROMOTED_VERSIONS=$USE_PROMOTED_VERSIONS
+ DEPLOY_SCENARIO=$DEPLOY_SCENARIO
same-node: true
block: true
block-thresholds:
@@ -137,22 +171,25 @@
concurrent: false
properties:
- - logrotate-default
- build-blocker:
use-build-blocker: true
blocking-jobs:
- - 'xci-provision-.*?-{pod}-daily-.*'
- - 'xci-deploy-.*?-{pod}-daily-.*'
- - 'xci-functest-.*?-{pod}-daily-.*'
+ - '^xci-provision.*'
+ - '^xci-deploy.*'
+ - '^xci-functest.*'
block-level: 'NODE'
+ - logrotate-default
parameters:
- string:
- name: OPENSTACK_BRANCH
- default: '{openstack-branch}'
+ name: OPENSTACK_OSA_VERSION
+ default: '{openstack-osa-version}'
+ - string:
+ name: OPENSTACK_BIFROST_VERSION
+ default: '{openstack-osa-version}'
- string:
- name: OPNFV_BRANCH
- default: '{opnfv-branch}'
+ name: OPNFV_RELENG_VERSION
+ default: '{opnfv-releng-version}'
- string:
name: USE_PROMOTED_VERSIONS
default: 'true'
@@ -177,11 +214,29 @@
- string:
name: CLEAN_DIB_IMAGES
default: 'true'
+ - label:
+ name: SLAVE_LABEL
+ default: '{slave-label}'
+
+ wrappers:
+ - xci-fix-perms-workspace
builders:
- description-setter:
description: "Built on $NODE_NAME - Scenario: $DEPLOY_SCENARIO"
- 'xci-{phase}-builder'
+
+#---------------------------
+# wrapper macros
+#---------------------------
+- wrapper:
+ name: xci-fix-perms-workspace
+ wrappers:
+ - pre-scm-buildstep:
+ - shell: |
+ #!/bin/bash
+ sudo chown -R $USER $WORKSPACE || exit 1
+
#---------------------------
# builder macros
#---------------------------
diff --git a/jjb/xci/xci-deploy.sh b/jjb/xci/xci-deploy.sh
index b97b24e47..87f9ec8db 100755
--- a/jjb/xci/xci-deploy.sh
+++ b/jjb/xci/xci-deploy.sh
@@ -1,3 +1,93 @@
#!/bin/bash
+# SPDX-license-identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2016 Ericsson AB 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
-echo "Deployment via openstack-ansible"
+trap cleanup_and_upload EXIT
+
+function fix_ownership() {
+ if [ -z "${JOB_URL+x}" ]; then
+ echo "Not running as part of Jenkins. Handle the logs manually."
+ else
+ # Make sure cache exists
+ [[ ! -d ${HOME}/.cache ]] && mkdir ${HOME}/.cache
+
+ sudo chown -R jenkins:jenkins $WORKSPACE
+ sudo chown -R jenkins:jenkins ${HOME}/.cache
+ fi
+}
+
+function cleanup_and_upload() {
+ original_exit=$?
+ fix_ownership
+ exit $original_exit
+}
+
+# check distro to see if we support it
+if [[ ! "$DISTRO" =~ (xenial|centos7|suse) ]]; then
+ echo "Distro $DISTRO is not supported!"
+ exit 1
+fi
+
+# remove previously cloned repos
+sudo /bin/rm -rf /opt/openstack-ansible /opt/stack /opt/releng /opt/functest
+
+# Fix up permissions
+fix_ownership
+
+# openstack-ansible enables strict host key checking by default
+export ANSIBLE_HOST_KEY_CHECKING=False
+
+# ensure the versions to checkout are set
+export OPENSTACK_OSA_VERSION=${OPENSTACK_OSA_VERSION:-master}
+export OPNFV_RELENG_VERSION=${OPNFV_RELENG_VERSION:-master}
+
+# log some info
+echo -e "\n"
+echo "***********************************************************************"
+echo "* *"
+echo "* Deploy OpenStack *"
+echo "* *"
+echo " openstack-ansible version: $OPENSTACK_OSA_VERSION"
+echo " releng version: $OPNFV_RELENG_VERSION"
+echo "* *"
+echo "***********************************************************************"
+echo -e "\n"
+# clone releng repo
+sudo git clone --quiet https://gerrit.opnfv.org/gerrit/releng /opt/releng
+cd /opt/releng && sudo git checkout --quiet $OPNFV_RELENG_VERSION
+echo "xci: using openstack-ansible commit"
+git show --oneline -s --pretty=format:'%h - %s (%cr) <%an>'
+
+# display the nodes
+echo "xci: OpenStack nodes"
+cd /opt/bifrost
+source env-vars
+ironic node-list
+
+# this script will be reused for promoting openstack-ansible versions and using
+# promoted openstack-ansible versions as part of xci daily.
+USE_PROMOTED_VERSIONS=${USE_PROMOTED_VERSIONS:-false}
+if [ $USE_PROMOTED_VERSIONS = "true" ]; then
+ echo "TBD: Will use the promoted versions of openstack/opnfv projects"
+fi
+
+cd /opt/releng/prototypes/openstack-ansible/scripts
+sudo -E ./osa-deploy.sh
+
+# log some info
+echo -e "\n"
+echo "***********************************************************************"
+echo "* *"
+echo "* OpenStack deployment is completed! *"
+echo "* *"
+echo "***********************************************************************"
+echo -e "\n"
diff --git a/jjb/xci/xci-provision.sh b/jjb/xci/xci-provision.sh
index 4308c7ef8..a1ba78bf0 100755
--- a/jjb/xci/xci-provision.sh
+++ b/jjb/xci/xci-provision.sh
@@ -43,11 +43,32 @@ sudo /bin/rm -rf /opt/bifrost /opt/openstack-ansible /opt/stack /opt/releng /opt
# Fix up permissions
fix_ownership
-# clone all the repos first and checkout the patch afterwards
-OPENSTACK_BRANCH=${OPENSTACK_BRANCH:-master}
-OPNFV_BRANCH=${OPNFV_BRANCH:-master}
-sudo git clone -b $OPENSTACK_BRANCH https://git.openstack.org/openstack/bifrost /opt/bifrost
-sudo git clone -b $OPNFV_BRANCH https://gerrit.opnfv.org/gerrit/releng /opt/releng
+# ensure the versions to checkout are set
+export OPENSTACK_BIFROST_VERSION=${OPENSTACK_BIFROST_VERSION:-master}
+export OPNFV_RELENG_VERSION=${OPNFV_RELENG_VERSION:-master}
+
+# log some info
+echo -e "\n"
+echo "***********************************************************************"
+echo "* *"
+echo "* Provision OpenStack Nodes *"
+echo "* *"
+echo " bifrost version: $OPENSTACK_BIFROST_VERSION"
+echo " releng version: $OPNFV_RELENG_VERSION"
+echo "* *"
+echo "***********************************************************************"
+echo -e "\n"
+
+# clone the repos and checkout the versions
+sudo git clone --quiet https://git.openstack.org/openstack/bifrost /opt/bifrost
+cd /opt/bifrost && sudo git checkout --quiet $OPENSTACK_BIFROST_VERSION
+echo "xci: using bifrost commit"
+git show --oneline -s --pretty=format:'%h - %s (%cr) <%an>'
+
+sudo git clone --quiet https://gerrit.opnfv.org/gerrit/releng /opt/releng
+cd /opt/releng && sudo git checkout --quiet $OPNFV_RELENG_VERSION
+echo "xci: using releng commit"
+git show --oneline -s --pretty=format:'%h - %s (%cr) <%an>'
# this script will be reused for promoting bifrost versions and using
# promoted bifrost versions as part of xci daily.
@@ -63,7 +84,7 @@ sudo /bin/cp -rf /opt/releng/prototypes/bifrost/* /opt/bifrost/
cd /opt/bifrost
sudo -E ./scripts/destroy-env.sh
-# provision 6 VMs; jumphost, controller00, controller01, controller02, compute00, and compute01
+# provision 6 VMs; xcimaster, controller00, controller01, controller02, compute00, and compute01
cd /opt/bifrost
sudo -E ./scripts/osa-bifrost-deployment.sh
@@ -72,3 +93,12 @@ cd /opt/bifrost
source env-vars
ironic node-list
virsh list
+
+# log some info
+echo -e "\n"
+echo "***********************************************************************"
+echo "* *"
+echo "* OpenStack nodes are provisioned! *"
+echo "* *"
+echo "***********************************************************************"
+echo -e "\n"
diff --git a/modules/opnfv/utils/ssh_utils.py b/modules/opnfv/utils/ssh_utils.py
index d17f5ae81..cbc62c75d 100644
--- a/modules/opnfv/utils/ssh_utils.py
+++ b/modules/opnfv/utils/ssh_utils.py
@@ -15,6 +15,7 @@ import paramiko
from opnfv.utils import opnfv_logger as logger
logger = logger.Logger("SSH utils").getLogger()
+SSH_TIMEOUT = 60
def get_ssh_client(hostname,
@@ -40,11 +41,13 @@ def get_ssh_client(hostname,
client.load_system_host_keys()
client.connect(hostname,
username=username,
- pkey=key)
+ pkey=key,
+ timeout=SSH_TIMEOUT)
else:
client.connect(hostname,
username=username,
- password=password)
+ password=password,
+ timeout=SSH_TIMEOUT)
return client
except Exception as e:
@@ -96,7 +99,8 @@ class ProxyHopClient(paramiko.SSHClient):
self.proxy_ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
self.proxy_ssh.connect(jh_ip,
username=jh_user,
- password=jh_pass)
+ password=jh_pass,
+ timeout=SSH_TIMEOUT)
self.proxy_transport = self.proxy_ssh.get_transport()
def connect(self, hostname, port=22, username='root', password=None,
@@ -126,7 +130,8 @@ class ProxyHopClient(paramiko.SSHClient):
super(ProxyHopClient, self).connect(hostname,
username=username,
pkey=proxy_key,
- sock=self.proxy_channel)
+ sock=self.proxy_channel,
+ timeout=timeout)
os.remove(self.local_ssh_key)
except Exception as e:
logger.error(e)
diff --git a/prototypes/bifrost/README.md b/prototypes/bifrost/README.md
index 0ba49d46d..dc1417a86 100644
--- a/prototypes/bifrost/README.md
+++ b/prototypes/bifrost/README.md
@@ -31,7 +31,7 @@ Please follow that steps:
cd /opt/bifrost
sudo ./scripts/destroy-env.sh
-8. Run deployment script to spin up 3 vms with bifrost: jumphost, controller and compute::
+8. Run deployment script to spin up 3 vms with bifrost: xcimaster, controller and compute::
cd /opt/bifrost
sudo ./scripts/test-bifrost-deployment.sh
diff --git a/prototypes/bifrost/playbooks/inventory/group_vars/baremetal b/prototypes/bifrost/playbooks/inventory/group_vars/baremetal
new file mode 100644
index 000000000..008b04d11
--- /dev/null
+++ b/prototypes/bifrost/playbooks/inventory/group_vars/baremetal
@@ -0,0 +1,53 @@
+---
+# The ironic API URL for bifrost operations. Defaults to localhost.
+# ironic_url: "http://localhost:6385/"
+
+# The network interface that bifrost will be operating on. Defaults
+# to virbr0 in roles, can be overridden here.
+# network_interface: "virbr0"
+
+# The path to the SSH key to be utilized for testing and burn-in
+# to configuration drives. When set, it should be set in both baremetal
+# and localhost groups, however this is only an override to the default.
+
+# workaround for opnfv ci until we can fix non-root use
+ssh_public_key_path: "/root/.ssh/id_rsa.pub"
+
+# Normally this user should be root, however if cirros is used,
+# a user may wish to define a specific user for testing VM
+# connectivity during a test sequence
+testing_user: root
+
+# The default port to download files via. Required for IPA URL generation.
+# Presently the defaults are located in the roles, however if changed both
+# the localhost and baremetal group files must be updated.
+# file_url_port: 8080
+
+# IPA Image parameters. If these are changed, they must be changed in
+# Both localhost and baremetal groups. Presently the defaults
+# in each role should be sufficent for proper operation.
+# ipa_kernel: "{{http_boot_folder}}/coreos_production_pxe.vmlinuz"
+# ipa_ramdisk: "{{http_boot_folder}}/coreos_production_pxe_image-oem.cpio.gz"
+# ipa_kernel_url: "http://{{ hostvars[inventory_hostname]['ansible_' + network_interface]['ipv4']['address'] }}:{{file_url_port}}/coreos_production_pxe.vmlinuz"
+# ipa_ramdisk_url: "http://{{ hostvars[inventory_hostname]['ansible_' + network_interface]['ipv4']['address'] }}:{{file_url_port}}/coreos_production_pxe_image-oem.cpio.gz"
+
+# The http_boot_folder defines the root folder for the webserver.
+# If this setting is changed, it must be applied to both the baremetal
+# and localhost groups. Presently the role defaults are set to the value
+# below.
+# http_boot_folder: /httpboot
+
+# The settings for the name of the image to be deployed along with the
+# on disk location are below. If changed, these settings must be applied
+# to both the baremetal and localhost groups. If the file is already on
+# disk, then the image generation will not take place, otherwise an image
+# will be generated using diskimage-builder.
+# deploy_image_filename: "deployment_image.qcow2"
+# deploy_image: "{{http_boot_folder}}/{{deploy_image_filename}}"
+
+# Under normal circumstances, the os_ironic_node module does not wait for
+# the node to reach active state before continuing with the deployment
+# process. This means we may have to timeout, to figure out a deployment
+# failed. Change wait_for_node_deploy to true to cause bifrost to wait for
+# Ironic to show the instance in Active state.
+wait_for_node_deploy: false
diff --git a/prototypes/bifrost/scripts/osa-bifrost-deployment.sh b/prototypes/bifrost/scripts/osa-bifrost-deployment.sh
index c92bd9d4e..fb66ae9e3 100755
--- a/prototypes/bifrost/scripts/osa-bifrost-deployment.sh
+++ b/prototypes/bifrost/scripts/osa-bifrost-deployment.sh
@@ -18,10 +18,16 @@ ENABLE_VENV="false"
USE_DHCP="false"
USE_VENV="false"
BUILD_IMAGE=true
-export BAREMETAL_DATA_FILE=${BAREMETAL_DATA_FILE:-'/tmp/baremetal.json'}
-export BIFROST_INVENTORY_SOURCE=${BIFROST_INVENTORY_SOURCE:-'/tmp/baremetal.csv'}
PROVISION_WAIT_TIMEOUT=${PROVISION_WAIT_TIMEOUT:-3600}
+# ensure the right inventory files is used based on branch
+CURRENT_BIFROST_BRANCH=$(git rev-parse --abbrev-ref HEAD)
+if [ $CURRENT_BIFROST_BRANCH = "master" ]; then
+ export BIFROST_INVENTORY_SOURCE=${BIFROST_INVENTORY_SOURCE:-'/tmp/baremetal.json'}
+else
+ export BIFROST_INVENTORY_SOURCE=${BIFROST_INVENTORY_SOURCE:-'/tmp/baremetal.csv'}
+fi
+
# Set defaults for ansible command-line options to drive the different
# tests.
@@ -34,7 +40,7 @@ PROVISION_WAIT_TIMEOUT=${PROVISION_WAIT_TIMEOUT:-3600}
# use cirros.
TEST_VM_NUM_NODES=6
-export TEST_VM_NODE_NAMES="jumphost controller00 controller01 controller02 compute00 compute01"
+export TEST_VM_NODE_NAMES="xcimaster controller00 controller01 controller02 compute00 compute01"
export VM_DOMAIN_TYPE="kvm"
# 8 vCPU, 60 GB HDD are minimum equipment
export VM_CPU=${VM_CPU:-8}
@@ -107,8 +113,7 @@ ${ANSIBLE} \
-e test_vm_num_nodes=${TEST_VM_NUM_NODES} \
-e test_vm_memory_size=${VM_MEMORY_SIZE} \
-e enable_venv=${ENABLE_VENV} \
- -e test_vm_domain_type=${VM_DOMAIN_TYPE} \
- -e baremetal_json_file=${BAREMETAL_DATA_FILE}
+ -e test_vm_domain_type=${VM_DOMAIN_TYPE}
# Execute the installation and VM startup test.
${ANSIBLE} \
diff --git a/prototypes/bifrost/scripts/test-bifrost-deployment.sh b/prototypes/bifrost/scripts/test-bifrost-deployment.sh
index 2e33bc164..83cf1cc1b 100755
--- a/prototypes/bifrost/scripts/test-bifrost-deployment.sh
+++ b/prototypes/bifrost/scripts/test-bifrost-deployment.sh
@@ -18,9 +18,8 @@ ENABLE_VENV="false"
USE_DHCP="false"
USE_VENV="false"
BUILD_IMAGE=true
-export BAREMETAL_DATA_FILE=${BAREMETAL_DATA_FILE:-'/tmp/baremetal.json'}
-export BIFROST_INVENTORY_SOURCE=${BIFROST_INVENTORY_SOURCE:-'/tmp/baremetal.csv'}
PROVISION_WAIT_TIMEOUT=${PROVISION_WAIT_TIMEOUT:-3600}
+BAREMETAL_DATA_FILE=${BAREMETAL_DATA_FILE:-'/tmp/baremetal.json'}
# Set defaults for ansible command-line options to drive the different
# tests.
@@ -34,7 +33,7 @@ PROVISION_WAIT_TIMEOUT=${PROVISION_WAIT_TIMEOUT:-3600}
# use cirros.
TEST_VM_NUM_NODES=3
-export TEST_VM_NODE_NAMES="jumphost.opnfvlocal controller00.opnfvlocal compute00.opnfvlocal"
+export TEST_VM_NODE_NAMES="xcimaster controller00 compute00"
export VM_DOMAIN_TYPE="kvm"
export VM_CPU=${VM_CPU:-4}
export VM_DISK=${VM_DISK:-100}
diff --git a/prototypes/openstack-ansible/file/opnfv-setup-openstack.yml b/prototypes/openstack-ansible/file/opnfv-setup-openstack.yml
new file mode 100644
index 000000000..aacdeffb0
--- /dev/null
+++ b/prototypes/openstack-ansible/file/opnfv-setup-openstack.yml
@@ -0,0 +1,34 @@
+---
+# Copyright 2014, Rackspace US, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+- include: os-keystone-install.yml
+- include: os-glance-install.yml
+- include: os-cinder-install.yml
+- include: os-nova-install.yml
+- include: os-neutron-install.yml
+- include: os-heat-install.yml
+- include: os-horizon-install.yml
+- include: os-ceilometer-install.yml
+- include: os-aodh-install.yml
+#NOTE(stevelle) Ensure Gnocchi identities exist before Swift
+- include: os-gnocchi-install.yml
+ when:
+ - gnocchi_storage_driver is defined
+ - gnocchi_storage_driver == 'swift'
+ vars:
+ gnocchi_identity_only: True
+- include: os-swift-install.yml
+- include: os-gnocchi-install.yml
+- include: os-ironic-install.yml
diff --git a/prototypes/openstack-ansible/playbooks/targethost_configuration.yml b/prototypes/openstack-ansible/playbooks/configure-targethosts.yml
index 1f4ad063e..1f4ad063e 100644
--- a/prototypes/openstack-ansible/playbooks/targethost_configuration.yml
+++ b/prototypes/openstack-ansible/playbooks/configure-targethosts.yml
diff --git a/prototypes/openstack-ansible/playbooks/jumphost_configuration.yml b/prototypes/openstack-ansible/playbooks/configure-xcimaster.yml
index 74e97cdd5..fbbde640c 100644
--- a/prototypes/openstack-ansible/playbooks/jumphost_configuration.yml
+++ b/prototypes/openstack-ansible/playbooks/configure-xcimaster.yml
@@ -1,5 +1,5 @@
---
-- hosts: jumphost
+- hosts: xcimaster
remote_user: root
vars_files:
- ../var/ubuntu.yml
@@ -10,10 +10,23 @@
creates: /root/.ssh/id_rsa
- name: fetch public key
fetch: src="/root/.ssh/id_rsa.pub" dest="/"
- - name: remove the directory
- shell: "rm -rf {{OSA_PATH}} {{OSA_ETC_PATH}}"
- - name: git openstack ansible
- shell: "git clone {{OSA_URL}} {{OSA_PATH}} -b {{OSA_BRANCH}}"
+ - name: remove openstack-ansible directories
+ file:
+ path={{ item }}
+ state=absent
+ recurse=no
+ with_items:
+ - "{{OSA_PATH}}"
+ - "{{OSA_ETC_PATH}}"
+ - name: clone openstack-ansible
+ git:
+ repo: "{{OSA_URL}}"
+ dest: "{{OSA_PATH}}"
+ version: "{{OPENSTACK_OSA_VERSION}}"
+ - name: copy opnfv-setup-openstack.yml to /opt/openstack-ansible/playbooks
+ copy:
+ src: ../file/opnfv-setup-openstack.yml
+ dest: "{{OSA_PATH}}/playbooks/opnfv-setup-openstack.yml"
- name: copy /opt/openstack-ansible/etc/openstack_deploy to /etc/openstack_deploy
shell: "/bin/cp -rf {{OSA_PATH}}/etc/openstack_deploy {{OSA_ETC_PATH}}"
- name: bootstrap
@@ -50,4 +63,4 @@
remote_user: root
tasks:
- name: Generate authorized_keys
- shell: "/bin/cat /jumphost/root/.ssh/id_rsa.pub >> ../file/authorized_keys"
+ shell: "/bin/cat /xcimaster/root/.ssh/id_rsa.pub >> ../file/authorized_keys"
diff --git a/prototypes/openstack-ansible/playbooks/inventory b/prototypes/openstack-ansible/playbooks/inventory
index f53da5305..d3768f51c 100644
--- a/prototypes/openstack-ansible/playbooks/inventory
+++ b/prototypes/openstack-ansible/playbooks/inventory
@@ -1,5 +1,5 @@
-[jumphost]
-jumphost ansible_ssh_host=192.168.122.2
+[xcimaster]
+xcimaster ansible_ssh_host=192.168.122.2
[controller]
controller00 ansible_ssh_host=192.168.122.3
diff --git a/prototypes/openstack-ansible/scripts/osa-deploy.sh b/prototypes/openstack-ansible/scripts/osa-deploy.sh
new file mode 100755
index 000000000..ec607443b
--- /dev/null
+++ b/prototypes/openstack-ansible/scripts/osa-deploy.sh
@@ -0,0 +1,136 @@
+#!/bin/bash
+# SPDX-license-identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2016 Huawei Technologies Co.,Ltd 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
+
+export OSA_PATH=/opt/openstack-ansible
+export LOG_PATH=$OSA_PATH/log
+export PLAYBOOK_PATH=$OSA_PATH/playbooks
+export OSA_BRANCH=${OSA_BRANCH:-"master"}
+XCIMASTER_IP="192.168.122.2"
+
+sudo /bin/rm -rf $LOG_PATH
+sudo /bin/mkdir -p $LOG_PATH
+sudo /bin/cp /root/.ssh/id_rsa.pub ../file/authorized_keys
+echo -e '\n' | sudo tee --append ../file/authorized_keys
+
+# log some info
+echo -e "\n"
+echo "***********************************************************************"
+echo "* *"
+echo "* Configure XCI Master *"
+echo "* *"
+echo "* Bootstrap xci-master, configure network, clone openstack-ansible *"
+echo "* Playbooks: configure-xcimaster.yml *"
+echo "* *"
+echo "***********************************************************************"
+echo -e "\n"
+
+cd ../playbooks/
+# this will prepare the jump host
+# git clone the Openstack-Ansible, bootstrap and configure network
+echo "xci: running ansible playbook configure-xcimaster.yml"
+sudo -E ansible-playbook -i inventory configure-xcimaster.yml
+
+echo "XCI Master is configured successfully!"
+
+# log some info
+echo -e "\n"
+echo "***********************************************************************"
+echo "* *"
+echo "* Configure Nodes *"
+echo "* *"
+echo "* Configure network on OpenStack Nodes, configure NFS *"
+echo "* Playbooks: configure-targethosts.yml *"
+echo "* *"
+echo "***********************************************************************"
+echo -e "\n"
+
+# this will prepare the target host
+# such as configure network and NFS
+echo "xci: running ansible playbook configure-targethosts.yml"
+sudo -E ansible-playbook -i inventory configure-targethosts.yml
+
+echo "Nodes are configured successfully!"
+
+# log some info
+echo -e "\n"
+echo "***********************************************************************"
+echo "* *"
+echo "* Set Up OpenStack Nodes *"
+echo "* *"
+echo "* Set up OpenStack Nodes using openstack-ansible *"
+echo "* Playbooks: setup-hosts.yml, setup-infrastructure.yml *"
+echo "* *"
+echo "***********************************************************************"
+echo -e "\n"
+
+# using OpenStack-Ansible deploy the OpenStack
+echo "xci: running ansible playbook setup-hosts.yml"
+sudo -E /bin/sh -c "ssh root@$XCIMASTER_IP openstack-ansible \
+ $PLAYBOOK_PATH/setup-hosts.yml" | \
+ tee $LOG_PATH/setup-hosts.log
+
+# check the result of openstack-ansible setup-hosts.yml
+# if failed, exit with exit code 1
+if grep -q 'failed=1\|unreachable=1' $LOG_PATH/setup-hosts.log; then
+ echo "OpenStack node setup failed!"
+ exit 1
+fi
+
+echo "xci: running ansible playbook setup-infrastructure.yml"
+sudo -E /bin/sh -c "ssh root@$XCIMASTER_IP openstack-ansible \
+ $PLAYBOOK_PATH/setup-infrastructure.yml" | \
+ tee $LOG_PATH/setup-infrastructure.log
+
+# check the result of openstack-ansible setup-infrastructure.yml
+# if failed, exit with exit code 1
+if grep -q 'failed=1\|unreachable=1' $LOG_PATH/setup-infrastructure.log; then
+ echo "OpenStack node setup failed!"
+ exit 1
+fi
+
+echo "OpenStack nodes are setup successfully!"
+
+sudo -E /bin/sh -c "ssh root@$XCIMASTER_IP ansible -i $PLAYBOOK_PATH/inventory/ \
+ galera_container -m shell \
+ -a "mysql -h localhost -e 'show status like \"%wsrep_cluster_%\";'"" \
+ | tee $LOG_PATH/galera.log
+
+if grep -q 'FAILED' $LOG_PATH/galera.log; then
+ echo "Database cluster verification failed!"
+ exit 1
+else
+ echo "Database cluster verification successful!"
+fi
+
+# log some info
+echo -e "\n"
+echo "***********************************************************************"
+echo "* *"
+echo "* Install OpenStack *"
+echo "* Playbooks: opnfv-setup-openstack.yml *"
+echo "* *"
+echo "***********************************************************************"
+echo -e "\n"
+
+echo "xci: running ansible playbook opnfv-setup-openstack.yml"
+sudo -E /bin/sh -c "ssh root@$XCIMASTER_IP openstack-ansible \
+ $PLAYBOOK_PATH/opnfv-setup-openstack.yml" | \
+ tee $LOG_PATH/opnfv-setup-openstack.log
+
+if grep -q 'failed=1\|unreachable=1' $LOG_PATH/opnfv-setup-openstack.log; then
+ echo "OpenStack installation failed!"
+ exit 1
+else
+ echo "OpenStack installation is successfully completed!"
+ exit 0
+fi
diff --git a/prototypes/openstack-ansible/scripts/osa_deploy.sh b/prototypes/openstack-ansible/scripts/osa_deploy.sh
deleted file mode 100755
index 79625d211..000000000
--- a/prototypes/openstack-ansible/scripts/osa_deploy.sh
+++ /dev/null
@@ -1,81 +0,0 @@
-#!/bin/bash
-
-export OSA_PATH=/opt/openstack-ansible
-export LOG_PATH=$OSA_PATH/log
-export PLAYBOOK_PATH=$OSA_PATH/playbooks
-export OSA_BRANCH=${OSA_BRANCH:-"master"}
-JUMPHOST_IP="192.168.122.2"
-
-sudo /bin/rm -rf $LOG_PATH
-sudo /bin/mkdir -p $LOG_PATH
-sudo /bin/cp /root/.ssh/id_rsa.pub ../file/authorized_keys
-sudo echo -e '\n'>>../file/authorized_keys
-
-cd ../playbooks/
-# this will prepare the jump host
-# git clone the Openstack-Ansible, bootstrap and configure network
-sudo ansible-playbook -i inventory jumphost_configuration.yml -vvv
-
-# this will prepare the target host
-# such as configure network and NFS
-sudo ansible-playbook -i inventory targethost_configuration.yml
-
-# using OpenStack-Ansible deploy the OpenStack
-
-echo "set UP Host !"
-sudo /bin/sh -c "ssh root@$JUMPHOST_IP openstack-ansible \
- $PLAYBOOK_PATH/setup-hosts.yml" | \
- tee $LOG_PATH/setup-host.log
-
-#check the result of openstack-ansible setup-hosts.yml
-#if failed, exit with exit code 1
-grep "failed=1" $LOG_PATH/setup-host.log>/dev/null \
- || grep "unreachable=1" $LOG_PATH/setup-host.log>/dev/null
-if [ $? -eq 0 ]; then
- echo "failed setup host!"
- exit 1
-else
- echo "setup host successfully!"
-fi
-
-echo "Set UP Infrastructure !"
-sudo /bin/sh -c "ssh root@$JUMPHOST_IP openstack-ansible \
- $PLAYBOOK_PATH/setup-infrastructure.yml" | \
- tee $LOG_PATH/setup-infrastructure.log
-
-grep "failed=1" $LOG_PATH/setup-infrastructure.log>/dev/null \
- || grep "unreachable=1" $LOG_PATH/setup-infrastructure.log>/dev/null
-if [ $? -eq 0 ]; then
- echo "failed setup infrastructure!"
- exit 1
-else
- echo "setup infrastructure successfully!"
-fi
-
-sudo /bin/sh -c "ssh root@$JUMPHOST_IP ansible -i $PLAYBOOK_PATH/inventory/ \
- galera_container -m shell \
- -a "mysql -h localhost -e 'show status like \"%wsrep_cluster_%\";'"" \
- | tee $LOG_PATH/galera.log
-
-grep "FAILED" $LOG_PATH/galera.log>/dev/null
-if [ $? -eq 0 ]; then
- echo "failed verify the database cluster!"
- exit 1
-else
- echo "verify the database cluster successfully!"
-fi
-
-echo "Set UP OpenStack !"
-sudo /bin/sh -c "ssh root@$JUMPHOST_IP openstack-ansible \
- $PLAYBOOK_PATH/setup-openstack.yml" | \
- tee $LOG_PATH/setup-openstack.log
-
-grep "failed=1" $LOG_PATH/setup-openstack.log>/dev/null \
- || grep "unreachable=1" $LOG_PATH/setup-openstack.log>/dev/null
-if [ $? -eq 0 ]; then
- echo "failed setup openstack!"
- exit 1
-else
- echo "OpenStack successfully deployed!"
- exit 0
-fi
diff --git a/prototypes/openstack-ansible/var/ubuntu.yml b/prototypes/openstack-ansible/var/ubuntu.yml
index 9464384b3..eb595beaa 100644
--- a/prototypes/openstack-ansible/var/ubuntu.yml
+++ b/prototypes/openstack-ansible/var/ubuntu.yml
@@ -2,7 +2,7 @@
OSA_URL: https://git.openstack.org/openstack/openstack-ansible
OSA_PATH: /opt/openstack-ansible
OSA_ETC_PATH: /etc/openstack_deploy
-OSA_BRANCH: "{{ lookup('env','OSA_BRANCH') }}"
+OPENSTACK_OSA_VERSION: "{{ lookup('env','OPENSTACK_OSA_VERSION') }}"
-JUMPHOST_IP: 192.168.122.2
-host_info: {'jumphost':{'MGMT_IP': '172.29.236.10','VLAN_IP': '192.168.122.2', 'STORAGE_IP': '172.29.244.10'},'controller00':{'MGMT_IP': '172.29.236.11','VLAN_IP': '192.168.122.3', 'STORAGE_IP': '172.29.244.11'},'controller01':{'MGMT_IP': '172.29.236.12','VLAN_IP': '192.168.122.4', 'STORAGE_IP': '172.29.244.12'},'controller02':{'MGMT_IP': '172.29.236.13','VLAN_IP': '192.168.122.5', 'STORAGE_IP': '172.29.240.13'},'compute00':{'MGMT_IP': '172.29.236.14','VLAN_IP': '192.168.122.6','VLAN_IP_SECOND': '173.29.241.1','VXLAN_IP': '172.29.240.14', 'STORAGE_IP': '172.29.244.14'},'compute01':{'MGMT_IP': '172.29.236.15','VLAN_IP': '192.168.122.7','VLAN_IP_SECOND': '173.29.241.2','VXLAN_IP': '172.29.240.15', 'STORAGE_IP': '172.29.244.15'}}
+XCIMASTER_IP: 192.168.122.2
+host_info: {'xcimaster':{'MGMT_IP': '172.29.236.10','VLAN_IP': '192.168.122.2', 'STORAGE_IP': '172.29.244.10'},'controller00':{'MGMT_IP': '172.29.236.11','VLAN_IP': '192.168.122.3', 'STORAGE_IP': '172.29.244.11'},'controller01':{'MGMT_IP': '172.29.236.12','VLAN_IP': '192.168.122.4', 'STORAGE_IP': '172.29.244.12'},'controller02':{'MGMT_IP': '172.29.236.13','VLAN_IP': '192.168.122.5', 'STORAGE_IP': '172.29.240.13'},'compute00':{'MGMT_IP': '172.29.236.14','VLAN_IP': '192.168.122.6','VLAN_IP_SECOND': '173.29.241.1','VXLAN_IP': '172.29.240.14', 'STORAGE_IP': '172.29.244.14'},'compute01':{'MGMT_IP': '172.29.236.15','VLAN_IP': '192.168.122.7','VLAN_IP_SECOND': '173.29.241.2','VXLAN_IP': '172.29.240.15', 'STORAGE_IP': '172.29.244.15'}}
diff --git a/utils/test/testapi/install.sh b/utils/test/testapi/install.sh
index c55691aed..bf828b580 100755
--- a/utils/test/testapi/install.sh
+++ b/utils/test/testapi/install.sh
@@ -26,3 +26,6 @@ fi
cp -fr 3rd_party/static opnfv_testapi/tornado_swagger
python setup.py install
rm -fr opnfv_testapi/tornado_swagger/static
+if [ ! -z "$VIRTUAL_ENV" ]; then
+ sed -i -e 's#etc/opnfv_testapi =#/etc/opnfv_testapi =#g' setup.cfg
+fi \ No newline at end of file
diff --git a/utils/test/testapi/opnfv_testapi/common/config.py b/utils/test/testapi/opnfv_testapi/common/config.py
index 105d4fabf..362fca640 100644
--- a/utils/test/testapi/opnfv_testapi/common/config.py
+++ b/utils/test/testapi/opnfv_testapi/common/config.py
@@ -30,7 +30,7 @@ class APIConfig(object):
"""
def __init__(self):
- self._default_config_location = "/etc/opnfv_testapi/config.ini"
+ self._set_default_config()
self.mongo_url = None
self.mongo_dbname = None
self.api_port = None
@@ -39,6 +39,11 @@ class APIConfig(object):
self._parser = None
self.swagger_base_url = None
+ def _set_default_config(self):
+ venv = os.getenv('VIRTUAL_ENV')
+ self._default_config = os.path.join('/' if not venv else venv,
+ 'etc/opnfv_testapi/config.ini')
+
def _get_parameter(self, section, param):
try:
return self._parser.get(section, param)
@@ -66,7 +71,7 @@ class APIConfig(object):
obj = APIConfig()
if config_location is None:
- config_location = obj._default_config_location
+ config_location = obj._default_config
if not os.path.exists(config_location):
raise ParseError("%s not found" % config_location)
diff --git a/utils/test/testapi/opnfv_testapi/resources/handlers.py b/utils/test/testapi/opnfv_testapi/resources/handlers.py
index 8255b526a..15096468c 100644
--- a/utils/test/testapi/opnfv_testapi/resources/handlers.py
+++ b/utils/test/testapi/opnfv_testapi/resources/handlers.py
@@ -92,8 +92,6 @@ class GenericApiHandler(web.RequestHandler):
raise gen.Return(ret)
return wrapper
- @web.asynchronous
- @gen.coroutine
@authenticate
def _create(self, miss_checks, db_checks, **kwargs):
"""
@@ -158,8 +156,6 @@ class GenericApiHandler(web.RequestHandler):
.format(query, self.table))
self.finish_request(self.format_data(data))
- @web.asynchronous
- @gen.coroutine
@authenticate
def _delete(self, query):
data = yield self._eval_db_find_one(query)
@@ -171,8 +167,6 @@ class GenericApiHandler(web.RequestHandler):
yield self._eval_db(self.table, 'remove', query)
self.finish_request()
- @web.asynchronous
- @gen.coroutine
@authenticate
def _update(self, query, db_keys):
if self.json_args is None:
diff --git a/utils/test/testapi/run_test.sh b/utils/test/testapi/run_test.sh
index 4efc7af3b..1e05dd6ba 100755
--- a/utils/test/testapi/run_test.sh
+++ b/utils/test/testapi/run_test.sh
@@ -8,15 +8,17 @@ SCRIPTDIR=`dirname $0`
echo "Running unit tests..."
# Creating virtual environment
-virtualenv $SCRIPTDIR/testapi_venv
-source $SCRIPTDIR/testapi_venv/bin/activate
+if [ ! -z $VIRTUAL_ENV ]; then
+ venv=$VIRTUAL_ENV
+else
+ venv=$SCRIPTDIR/.venv
+ virtualenv $venv
+fi
+source $venv/bin/activate
# Install requirements
pip install -r $SCRIPTDIR/requirements.txt
-pip install coverage
-pip install nose>=1.3.1
-pip install pytest
-pip install mock
+pip install -r $SCRIPTDIR/test-requirements.txt
find . -type f -name "*.pyc" -delete
diff --git a/utils/test/testapi/test-requirements.txt b/utils/test/testapi/test-requirements.txt
index 4633ad637..645687b14 100644
--- a/utils/test/testapi/test-requirements.txt
+++ b/utils/test/testapi/test-requirements.txt
@@ -2,10 +2,7 @@
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
-tox
mock
pytest
-pytest-cov
coverage
-pykwalify
-pip_check_reqs
+nose>=1.3.1