summaryrefslogtreecommitdiffstats
path: root/tests/utils
diff options
context:
space:
mode:
Diffstat (limited to 'tests/utils')
-rw-r--r--tests/utils/cloudify-setup.sh153
-rw-r--r--tests/utils/tacker-setup.sh121
2 files changed, 175 insertions, 99 deletions
diff --git a/tests/utils/cloudify-setup.sh b/tests/utils/cloudify-setup.sh
index e5cb637..387ccbf 100644
--- a/tests/utils/cloudify-setup.sh
+++ b/tests/utils/cloudify-setup.sh
@@ -19,11 +19,12 @@
# Status: this is a work in progress, under test.
#
# How to use:
-# $ bash cloudify-setup.sh [cloudify-cli|cloudify-manager] [ 1 || 2 ]
+# $ bash cloudify-setup.sh [cloudify-cli|cloudify-manager] [init|setup|clean]
# cloudify-cli: use Cloudify CLI
# cloudify-manager: use Cloudify Manager
-# 1: Initial setup of the docker container
-# 2: Setup of the Cloudify Manager in the docker container
+# init: Initialize docker container
+# setup: Setup of Cloudify in the docker container
+# clean: Clean
function setenv () {
if [ "$dist" == "Ubuntu" ]; then
@@ -88,26 +89,28 @@ function get_external_net () {
}
dist=`grep DISTRIB_ID /etc/*-release | awk -F '=' '{print $2}'`
-if [ "$2" == "1" ]; then
- echo "$0: Copy this script to /tmp/cloudify"
- mkdir /tmp/cloudify
- cp $0 /tmp/cloudify/.
- chmod 755 /tmp/cloudify/*.sh
-
- echo "$0: Setup admin-openrc.sh"
- setenv
- echo "$0: Setup container"
- if [ "$dist" == "Ubuntu" ]; then
- # xenial is needed for python 3.5
- sudo docker pull ubuntu:xenial
- sudo service docker start
-# sudo docker run -it -v ~/git/joid/ci/cloud/admin-openrc.sh:/root/admin-openrc.sh -v ~/cloudify/cloudify-setup.sh:/root/cloudify-setup.sh ubuntu:xenial /bin/bash
- sudo docker run -it -d -v /tmp/cloudify/:/tmp/cloudify ubuntu:xenial /bin/bash
- exit 0
- else
- # Centos
- echo "Centos-based install"
- sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
+case "$2" in
+ "init")
+ # STEP 1: Create the container and launch it
+ echo "$0: Copy this script to /tmp/cloudify"
+ mkdir /tmp/cloudify
+ cp $0 /tmp/cloudify/.
+ chmod 755 /tmp/cloudify/*.sh
+
+ echo "$0: Setup admin-openrc.sh"
+ setenv
+ echo "$0: Setup container"
+ if [ "$dist" == "Ubuntu" ]; then
+ # xenial is needed for python 3.5
+ sudo docker pull ubuntu:xenial
+ sudo service docker start
+# sudo docker run -it -v ~/git/joid/ci/cloud/admin-openrc.sh:/root/admin-openrc.sh -v ~/cloudify/cloudify-setup.sh:/root/cloudify-setup.sh ubuntu:xenial /bin/bash
+ sudo docker run -it -d -v /tmp/cloudify/:/tmp/cloudify --name cloudify ubuntu:xenial /bin/bash
+ exit 0
+ else
+ # Centos
+ echo "Centos-based install"
+ sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
@@ -115,56 +118,66 @@ enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
- sudo yum install -y docker-engine
- # xenial is needed for python 3.5
- sudo docker pull ubuntu:xenial
- sudo service docker start
-# sudo docker run -it -v ~/git/joid/ci/cloud/admin-openrc.sh:/root/admin-openrc.sh -v ~/cloudify/cloudify-setup.sh:/root/cloudify-setup.sh ubuntu:xenial /bin/bash
- sudo docker run -i -t -d -v /tmp/cloudify/:/tmp/cloudify ubuntu:xenial /bin/bash
- exit 0
- fi
-else
- if [ "$2" == "2" ]; then
- echo "$0: Install dependencies - OS specific"
- if [ "$dist" == "Ubuntu" ]; then
- apt-get update
- apt-get install -y python
- apt-get install -y python-dev
- apt-get install -y python-pip
- apt-get install -y wget
- apt-get install -y openssh-server
- apt-get install -y git
-# apt-get install -y apg git gcc python-dev libxml2 libxslt1-dev libzip-dev
-# pip install --upgrade pip virtualenv setuptools pbr tox
+ sudo yum install -y docker-engine
+ # xenial is needed for python 3.5
+ sudo docker pull ubuntu:xenial
+ sudo service docker start
+# sudo docker run -it -v ~/git/joid/ci/cloud/admin-openrc.sh:/root/admin-openrc.sh -v ~/cloudify/cloudify-setup.sh:/root/cloudify-setup.sh ubuntu:xenial /bin/bash
+ sudo docker run -i -t -d -v /tmp/cloudify/:/tmp/cloudify ubuntu:xenial /bin/bash
fi
- else
- echo "usage: bash cloudify-setup.sh [ 1 || 2 ]"
- echo "1: Initial setup of the docker container"
- echo "2: Setup of the Cloudify Manager in the docker container"
+ exit 0
+ ;;
+ "setup")
+ ;;
+ "clean")
+ source /tmp/cloudify/admin-openrc.sh
+
+ id=($(neutron port-list|grep -v "+"|grep -v id|awk '{print $2}')); for id in ${id[@]}; do neutron port-delete ${id}; done
+ fip=($(neutron floatingip-list|grep -v "+"|grep -v id|awk '{print $2}')); for id in ${fip[@]}; do neutron floatingip-delete ${id}; done
+ sid=($(openstack server list|grep -v "+"|grep -v id|awk '{print $2}')); for id in ${sid[@]}; do openstack server delete ${id}; done
+ sid=($(openstack security group list|grep security_group_local_security_group|awk '{print $2}')); for id in ${sid[@]}; do openstack security group delete ${id}; done
+ sid=($(openstack router list|grep cloudify_mgmt_router|awk '{print $2}')); for id in ${sid[@]}; do openstack router delete ${id}; done
+ sudo docker stop $(sudo docker ps -a | awk "/cloudify/ { print \$1 }")
+ sudo docker rm $(sudo docker ps -a | awk "/cloudify/ { print \$1 }")
+ exit 0
+ ;;
+ *)
+ echo "usage: $ bash cloudify-setup.sh [cloudify-cli|cloudify-manager] [init|setup|clean]"
+ echo "cloudify-cli: use Cloudify CLI"
+ echo "cloudify-manager: use Cloudify Manager"
+ echo "init: Initialize docker container"
+ echo "setup: Setup of Cloudify in the docker container"
+ echo "clean: Clean"
exit 1
- fi
+esac
+
+echo "$0: Install dependencies - OS specific"
+if [ "$dist" == "Ubuntu" ]; then
+ apt-get update
+ apt-get install -y python
+ apt-get install -y python-dev
+ apt-get install -y python-pip
+ apt-get install -y wget
+ apt-get install -y openssh-server
+ apt-get install -y git
+# apt-get install -y apg git gcc python-dev libxml2 libxslt1-dev libzip-dev
+# pip install --upgrade pip virtualenv setuptools pbr tox
fi
cd ~
echo "$0: Install dependencies - generic"
-pip install --upgrade pip virtualenv
-
-echo "$0: Upgrage pip again - needs to be the latest version due to errors found in earlier testing"
-pip install --upgrade pip
+pip install --upgrade pip setuptools
echo "$0: install python-openstackclient python-glanceclient"
pip install --upgrade python-openstackclient python-glanceclient python-neutronclient
+pip install --upgrade python-neutronclient
echo "$0: cleanup any previous install attempt"
if [ -d "~/cloudify" ]; then rm -rf ~/cloudify; fi
if [ -d "~/cloudify-manager" ]; then rm -rf ~/cloudify-manager; fi
rm ~/get-cloudify.py
-echo "$0: Create virtualenv"
-virtualenv ~/cloudify/venv
-source ~/cloudify/venv/bin/activate
-
echo "$0: Get Cloudify"
wget http://gigaspaces-repository-eu.s3.amazonaws.com/org/cloudify3/get-cloudify.py
python get-cloudify.py --upgrade
@@ -175,6 +188,8 @@ cfy init
echo "$0: Setup admin-openrc.sh"
source /tmp/cloudify/admin-openrc.sh
+get_external_net
+
if [ "$1" == "cloudify-manager" ]; then
echo "$0: Prepare the Cloudify Manager prerequisites and data"
mkdir -p ~/cloudify-manager
@@ -220,7 +235,6 @@ if [ "$1" == "cloudify-manager" ]; then
sed -i -- "s/flavor_id: ''/flavor_id: '$flavor'/g" openstack-manager-blueprint-inputs.yaml
echo "$0: Setup external_network_name"
- get_external_net
sed -i -- "s/external_network_name: ''/external_network_name: '$EXTERNAL_NETWORK_NAME'/g" openstack-manager-blueprint-inputs.yaml
# By default, only the cloudify-management-router is setup as DNS server, and it was failing to resolve internet domain names, which was blocking download of needed resources
@@ -236,10 +250,6 @@ if [ "$1" == "cloudify-manager" ]; then
else
echo "$0: Prepare the Cloudify CLI prerequisites and data"
- echo "$0: Install Cloudify OpenStack Plugin"
- cd /tmp/cloudify
- git clone https://github.com/cloudify-cosmo/cloudify-openstack-plugin.git
-
echo "Create management network"
if [ $(neutron net-list | awk "/ cloudify_mgmt / { print \$2 }") ]; then
echo "$0: cloudify_mgmt network exists"
@@ -258,25 +268,24 @@ else
echo "$0: Add router interface for cloudify_mgmt network"
neutron router-interface-add cloudify_mgmt_router subnet=cloudify_mgmt
+ echo "$0: Install Cloudify OpenStack Plugin"
+# pip install https://github.com/cloudify-cosmo/cloudify-openstack-plugin/archive/1.4.zip
+ cd /tmp/cloudify
+ if [ -d "cloudify-openstack-plugin" ]; then rm -rf cloudify-openstack-plugin; fi
+ git clone https://github.com/cloudify-cosmo/cloudify-openstack-plugin.git
+ git checkout 1.4
echo "$0: Patch plugin.yaml to reference management network"
- sed -i -- ":a;N;\$!ba;s/management_network_name:\n default: ''/management_network_name:\n default: 'cloudify_mgmt'/" /tmp/cloudify/cloudify-openstack-plugin/plugin.yaml
-
+ sed -i -- ":a;N;\$!ba;s/management_network_name:\n default: ''/management_network_name:\n default: 'cloudify_mgmt'/" /tmp/cloudify/cloudify-openstack-plugin/plugin.yaml
cd cloudify-openstack-plugin
python setup.py build
python setup.py install
- cd ..
echo "$0: Install Cloudify Fabric (SSH) Plugin"
+ cd /tmp/cloudify
+ if [ -d "cloudify-fabric-plugin" ]; then rm -rf cloudify-fabric-plugin; fi
git clone https://github.com/cloudify-cosmo/cloudify-fabric-plugin.git
cd cloudify-fabric-plugin
python setup.py build
python setup.py install
cd ..
-
- echo "$0: Install Cloudify Diamond Plugin"
- git clone https://github.com/cloudify-cosmo/cloudify-diamond-plugin.git
- cd cloudify-diamond-plugin
- python setup.py build
- python setup.py install
- cd ..
fi
diff --git a/tests/utils/tacker-setup.sh b/tests/utils/tacker-setup.sh
index 3037131..4e60632 100644
--- a/tests/utils/tacker-setup.sh
+++ b/tests/utils/tacker-setup.sh
@@ -19,11 +19,12 @@
# Status: this is a work in progress, under test.
#
# How to use:
-# $ bash tacker-setup.sh [tacker-cli|tacker-api] [ 1 || 2 ]
+# $ bash tacker-setup.sh [tacker-cli|tacker-api] [init|setup|clean]
# tacker-cli: use Tacker CLI
# tacker-api: use Tacker RESTful API
-# 1: Initial setup of the docker container
-# 2: Setup of Tacker in the docker container
+# init: Initialize docker container
+# setup: Setup of Tacker in the docker container
+# clean: Clean
function setenv () {
if [ "$dist" == "Ubuntu" ]; then
@@ -91,7 +92,7 @@ function get_external_net () {
dist=`grep DISTRIB_ID /etc/*-release | awk -F '=' '{print $2}'`
case "$2" in
- "1")
+ "init")
# STEP 1: Create the Tacker container and launch it
echo "$0: Copy this script to /tmp/tacker"
mkdir /tmp/tacker
@@ -106,7 +107,7 @@ case "$2" in
# xenial is needed for python 3.5
sudo docker pull ubuntu:xenial
sudo service docker start
- sudo docker run -it -d -v /tmp/tacker/:/tmp/tacker ubuntu:xenial /bin/bash
+ sudo docker run -it -d -v /tmp/tacker/:/tmp/tacker --name tacker ubuntu:xenial /bin/bash
else
# Centos
echo "Centos-based install"
@@ -122,16 +123,27 @@ EOF
# xenial is needed for python 3.5
sudo docker pull ubuntu:xenial
sudo service docker start
- sudo docker run -i -t -d -v /tmp/tacker/:/tmp/tacker ubuntu:xenial /bin/bash
+ sudo docker run -i -t -d -v /tmp/tacker/:/tmp/tacker --name tacker ubuntu:xenial /bin/bash
+ echo $(sudo docker ps -a | awk "/tacker/ { print \$1 }")
fi
exit 0
;;
- "2")
+ "setup")
+ ;;
+ "clean")
+ source /tmp/tacker/admin-openrc.sh
+ openstack endpoint delete $(openstack endpoint list | awk "/tacker/ { print \$2 }")
+ openstack user delete $(openstack user list | awk "/tacker/ { print \$2 }")
+ openstack service delete $(openstack service list | awk "/tacker/ { print \$2 }")
+ sudo docker stop $(sudo docker ps -a | awk "/tacker/ { print \$1 }")
+ sudo docker rm $(sudo docker ps -a | awk "/tacker/ { print \$1 }")
+ exit 0
;;
*)
- echo "usage: bash tacker-setup.sh [tacker-cli|tacker-api] [ 1 || 2 ]"
- echo "1: Initial setup of the docker container"
- echo "2: Setup of Tacker in the docker container"
+ echo "usage: bash tacker-setup.sh [tacker-cli|tacker-api] [init|setup|clean]"
+ echo "init: Initialize docker container"
+ echo "setup: Setup of Tacker in the docker container"
+ echo "clean: remove Tacker service"
exit 1
esac
@@ -147,10 +159,14 @@ if [ "$dist" == "Ubuntu" ]; then
apt-get install -y openssh-server
apt-get install -y git
apt-get install -y apg
+ apt-get install -y libffi-dev
+ apt-get install -y libssl-dev
export MYSQL_PASSWORD=$(/usr/bin/apg -n 1 -m 16 -c cl_seed)
+ echo $MYSQL_PASSWORD >~/mysql
debconf-set-selections <<< 'mysql-server mysql-server/root_password password '$MYSQL_PASSWORD
debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password '$MYSQL_PASSWORD
apt-get -q -y install mysql-server python-mysqldb
+ service mysql restart
fi
cd /tmp/tacker
@@ -158,24 +174,17 @@ cd /tmp/tacker
echo "$0: create Tacker database"
mysql --user=root --password=$MYSQL_PASSWORD -e "CREATE DATABASE tacker; GRANT ALL PRIVILEGES ON tacker.* TO 'root@localhost' IDENTIFIED BY '"$MYSQL_PASSWORD"'; GRANT ALL PRIVILEGES ON tacker.* TO 'root'@'%' IDENTIFIED BY '"$MYSQL_PASSWORD"';"
-echo "$0: Install dependencies - generic"
-pip install --upgrade pip virtualenv
-
echo "$0: Upgrage pip again - needs to be the latest version due to errors found in earlier testing"
-pip install --upgrade
+pip install --upgrade pip
echo "$0: install python-openstackclient python-glanceclient"
pip install --upgrade python-openstackclient python-glanceclient python-neutronclient keystonemiddleware
-echo "$0: Create virtualenv"
-virtualenv /tmp/tacker/venv
-source /tmp/tacker/venv/bin/activate
-
echo "$0: Setup admin-openrc.sh"
source /tmp/tacker/admin-openrc.sh
echo "$0: Setup Tacker user in OpenStack"
-openstack user create --password tacker tacker
+openstack user create --project services --password tacker tacker
openstack role add --project services --user tacker admin
echo "$0: Create Tacker service in OpenStack"
@@ -214,19 +223,22 @@ sed -i -- 's/# auth_strategy = keystone/auth_strategy = keystone/' /usr/local/et
sed -i -- 's/# debug = False/debug = True/' /usr/local/etc/tacker/tacker.conf
sed -i -- 's/# use_syslog = False/use_syslog = False/' /usr/local/etc/tacker/tacker.conf
sed -i -- 's~# state_path = /var/lib/tacker~state_path = /var/lib/tacker~' /usr/local/etc/tacker/tacker.conf
-sed -i -- 's/password = service-password/password=tacker/' /usr/local/etc/tacker/tacker.conf
-sed -i -- "s~auth_url = http://<KEYSTONE_IP>:35357~auth_url = http://$KEYSTONE_HOST:35357~" /usr/local/etc/tacker/tacker.conf
+sed -i -- "s/project_name = service/project_name = services/g" /usr/local/etc/tacker/tacker.conf
+sed -i -- "s/password = service-password/password = tacker/" /usr/local/etc/tacker/tacker.conf
+sed -i -- "s/username = tacker/username = tacker/" /usr/local/etc/tacker/tacker.conf
+sed -i -- "s~auth_url = http://127.0.0.1:35357~auth_url = http://$KEYSTONE_HOST:35357~" /usr/local/etc/tacker/tacker.conf
sed -i -- "s~identity_uri = http://127.0.0.1:5000~# identity_uri = http://127.0.0.1:5000~" /usr/local/etc/tacker/tacker.conf
-sed -i -- "s~auth_uri = http://<KEYSTONE_IP>:5000~auth_uri = http://$KEYSTONE_HOST:5000~" /usr/local/etc/tacker/tacker.conf
+sed -i -- "s~auth_uri = http://127.0.0.1:5000~auth_uri = http://$KEYSTONE_HOST:5000~" /usr/local/etc/tacker/tacker.conf
# Not sure what the effect of the next line is, given that we are running as root
#sed -i -- "s~# root_helper = sudo~root_helper = sudo /usr/local/bin/tacker-rootwrap /usr/local/etc/tacker/rootwrap.conf~" /usr/local/etc/tacker/tacker.conf
-sed -i -- "s~# connection = mysql://root:pass@127.0.0.1:3306/tacker~connection = mysql://root:$MYSQL_PASSWORD@$ip:3306/tacker?charset=utf8~" /usr/local/etc/tacker/tacker.conf
-sed -i -- ":a;N;$!ba;s~password = service-password\nusername = nova\nauth_url = http://127.0.0.1:35357~password = $OS_PASSWORD\nauth_url = http://$NOVA_HOST:35357~g" /usr/local/etc/tacker/tacker.conf
+sed -i -- "s~# connection = mysql://root:pass@127.0.0.1:3306/tacker~connection = mysql://root:$MYSQL_PASSWORD@localhost:3306/tacker?charset=utf8~" /usr/local/etc/tacker/tacker.conf
sed -i -- "s~heat_uri = http://localhost:8004/v1~heat_uri = http://$HEAT_HOST:8004/v1~" /usr/local/etc/tacker/tacker.conf
sed -i -- "s~# api_paste_config = api-paste.ini~api_paste_config = /tmp/tacker/tacker/etc/tacker/api-paste.ini~" /usr/local/etc/tacker/tacker.conf
+sed -i -- "s/# bind_host = 0.0.0.0/bind_host = $ip/" /usr/local/etc/tacker/tacker.conf
+sed -i -- "s/# bind_port = 8888/bind_port = 9890/" /usr/local/etc/tacker/tacker.conf
echo "$0: Populate Tacker database"
-/tmp/tacker/venv/bin/tacker-db-manage --config-file /etc/tacker/tacker.conf upgrade head
+/usr/local/bin/tacker-db-manage --config-file /usr/local/etc/tacker/tacker.conf upgrade head
echo "$0: Install Tacker Client"
cd /tmp/tacker
@@ -247,6 +259,61 @@ python setup.py install
#service apache2 restart
echo "$0: Start the Tacker Server"
-python /tmp/tacker/venv/bin/tacker-server --config-file /usr/local/etc/tacker/tacker.conf --log-file /var/log/tacker/tacker.log
+python /usr/local/bin/tacker-server --config-file /usr/local/etc/tacker/tacker.conf --log-file /var/log/tacker/tacker.log & disown
+
+echo "$0: Register default VIM"
+cd /tmp/tacker
+cat <<EOF >vim-config.yaml
+auth_url: $OS_AUTH_URL
+username: $OS_USERNAME
+password: $OS_PASSWORD
+project_name: admin
+EOF
+tacker vim-register --config-file vim-config.yaml --description OpenStack --name VIM0
+
+echo "$0: Prepare Tacker test network environment"
+
+echo "Create management network"
+if [ $(neutron net-list | awk "/ tacker_mgmt / { print \$2 }") ]; then
+ echo "$0: tacker_mgmt network exists"
+else
+ neutron net-create tacker_mgmt
+ echo "$0: Create management subnet"
+ neutron subnet-create tacker_mgmt 192.168.200.0/24 --name tacker_mgmt --gateway 192.168.200.1 --enable-dhcp --allocation-pool start=192.168.200.2,end=192.168.200.254 --dns-nameserver 8.8.8.8
+fi
+
+echo "$0: Create router for cloudify_mgmt network"
+if [ $(neutron router-list | awk "/ tacker_mgmt / { print \$2 }") ]; then
+ echo "$0: tacker_mgmt router exists"
+else
+ neutron router-create tacker_mgmt_router
+ echo "$0: Add router interface for cloudify_mgmt network"
+ neutron router-interface-add tacker_mgmt_router subnet=tacker_mgmt
+fi
+
+echo "Create private network"
+if [ $(neutron net-list | awk "/ tacker_private / { print \$2 }") ]; then
+ echo "$0: tacker_private network exists"
+else
+ neutron net-create tacker_private
+ echo "$0: Create private subnet"
+ neutron subnet-create tacker_private 192.168.201.0/24 --name tacker_private --gateway 192.168.201.1 --enable-dhcp --allocation-pool start=192.168.201.2,end=192.168.201.254 --dns-nameserver 8.8.8.8
+fi
+
+echo "$0: Create router for cloudify_private network"
+if [ $(neutron router-list | awk "/ tacker_private / { print \$2 }") ]; then
+ echo "$0: tacker_private router exists"
+else
+ neutron router-create tacker_private_router
+ echo "$0: Create router gateway for cloudify_private network"
+ neutron router-gateway-set tacker_private_router $EXTERNAL_NETWORK_NAME
+ echo "$0: Add router interface for cloudify_private network"
+ neutron router-interface-add tacker_private_router subnet=tacker_private
+fi
+
+echo "$0: Create image cirros-0.3.4-x86_64-uec"
+image=$(openstack image list | awk "/ cirros-0.3.4-x86_64-uec / { print \$2 }")
+if [ -z $image ]; then glance --os-image-api-version 1 image-create --name cirros-0.3.4-x86_64-uec --disk-format qcow2 --location http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img --container-format bare
+fi
+
-# Registering default VIM: deferrred