From 70019f0c67b127e22ff17287c5fb2fa57d5c9bc0 Mon Sep 17 00:00:00 2001 From: blsaws Date: Tue, 6 Sep 2016 16:11:59 -0700 Subject: Updates in further testing JIRA: MODELS-23 Change-Id: I55418cc967fdf5e59d60304d2513dbe1e80b7dcc Signed-off-by: blsaws --- tests/utils/cloudify-setup.sh | 153 ++++++++++++++++++++++-------------------- tests/utils/tacker-setup.sh | 121 +++++++++++++++++++++++++-------- tests/vHello.sh | 12 ++-- 3 files changed, 179 insertions(+), 107 deletions(-) (limited to 'tests') 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://: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://: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 <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 diff --git a/tests/vHello.sh b/tests/vHello.sh index b315e0c..f8453b0 100644 --- a/tests/vHello.sh +++ b/tests/vHello.sh @@ -76,7 +76,6 @@ start() { else git clone https://github.com/blsaws/cloudify-cli-hello-world-example.git cd cloudify-cli-hello-world-example - git checkout 3.4.1-build fi cd /tmp/cloudify/blueprints @@ -128,9 +127,6 @@ ssh_port: 22 EOF fi - echo "$0: activate cloudify Virtualenv" - source ~/cloudify/venv/bin/activate - echo "$0: initialize cloudify environment" cd /tmp/cloudify/blueprints cfy init -r @@ -204,11 +200,11 @@ if [[ "$2" == "setup" ]]; then chmod 755 /tmp/cloudify/*.sh echo "$0: cloudify-setup part 1" - bash utils/cloudify-setup.sh $1 1 + bash utils/cloudify-setup.sh $1 init echo "$0: cloudify-setup part 2" - CONTAINER=$(sudo docker ps -l | awk "/ ubuntu:xenial / { print \$1 }") - sudo docker exec $CONTAINER /tmp/cloudify/cloudify-setup.sh $1 2 + CONTAINER=$(sudo docker ps -l | awk "/cloudify/ { print \$1 }") + sudo docker exec $CONTAINER /tmp/cloudify/cloudify-setup.sh $1 setup if [ $? -eq 1 ]; then fail; fi pass else @@ -218,7 +214,7 @@ else if [[ "$3" == "clean" ]]; then clean $1; fi else echo "$0: pass $2 command to vHello.sh in cloudify container" - CONTAINER=$(sudo docker ps -l | awk "/ ubuntu:xenial / { print \$1 }") + CONTAINER=$(sudo docker ps -a | awk "/cloudify/ { print \$1 }") sudo docker exec $CONTAINER /tmp/cloudify/vHello.sh $1 $2 $2 if [ $? -eq 1 ]; then fail; fi pass -- cgit 1.2.3-korg