summaryrefslogtreecommitdiffstats
path: root/tests/vHello_Tacker.sh
diff options
context:
space:
mode:
authorBryan Sullivan <bryan.sullivan@att.com>2017-01-22 19:03:40 -0800
committerBryan Sullivan <bryan.sullivan@att.com>2017-01-23 08:31:54 -0800
commit0fa11c3ca480d11ca43f8accd94a2427742c7103 (patch)
treee82b02db4ca298e337cd7712a27a020540184f63 /tests/vHello_Tacker.sh
parent36d8a91bc1be3d2c5e7fccfd847110cedcd0a848 (diff)
Update for Danube/Newton, support Devstack testing.
JIRA: MODELS-23 tacker-setup.sh: Update comments and usage. Remove OPNFV-specific env setup, add openrc and Heat host params. Add OSC setup from github branch. Install ping in tacker container. Setup tacker as mysql user vs root. Move tacker user cleanup to setup() function. Update git branch to Newton. Uncomment tox generation of tacker.conf.sample. Update tacker.conf for newton. Address tacker bug (?) in vim-config.yaml. Add more vim-config.yaml fields found to be needed in testing. Update tacker commands for changes to "--name" parameter. Move tacker container cleanup to vHello_Tacker.sh. vHello_Tacker.sh: Update comments and usage. Update admin-openrc.sh setup. Update calls to tacker-setup.sh for new params. Add TODOs for things. Improve test for JuJu command use. Fix bugs in assertion tests. Add devstack local.conf to utils/devstack Change-Id: I31fdb6be8f198cc245c259378922650bae095496 Signed-off-by: Bryan Sullivan <bryan.sullivan@att.com>
Diffstat (limited to 'tests/vHello_Tacker.sh')
-rw-r--r--tests/vHello_Tacker.sh118
1 files changed, 71 insertions, 47 deletions
diff --git a/tests/vHello_Tacker.sh b/tests/vHello_Tacker.sh
index 669ee3b..b89eb9c 100644
--- a/tests/vHello_Tacker.sh
+++ b/tests/vHello_Tacker.sh
@@ -24,24 +24,36 @@
# Mitaka.
#
# Pre-State:
-# models-joid-001 | models-apex-001 (installation of OPNFV system)
+# This test can be run in either an OPNFV environment, or an plain OpenStack
+# environment (e.g. Devstack).
+# For Devstack running in a VM on the host, you must first enable the host to
+# access the VMs running under Devstack:
+# 1) In devstack VM:
+# $ sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
+# Sub the primary interface of your devstack VM for ens3, as needed.
+# 2) On the host (e.g linux):
+# $ sudo route add -net 172.24.0.0/16 gw 192.168.122.112
+# Sub your devstack Public network subnet for 172.24.0.0/16, and
+# your devstack VM IP address on the host for 192.168.122.112
+# For OPNFV-based tests, pre-requisites are
+# 1) models-joid-001 | models-apex-001 (installation of OPNFV system)
#
# Test Steps and Assertions:
-# 1) bash vHello_Tacker.sh tacker-cli setup|start|run|stop|clean]
+# 1) bash vHello_Tacker.sh setup <openrc>
# models-tacker-001 (Tacker installation in a docker container on the jumphost)
# models-nova-001 (Keypair creation)
-# 2) bash vHello_Tacker.sh tacker-cli start
+# 2) bash vHello_Tacker.sh start
# models-tacker-002 (VNFD creation)
# models-tacker-003 (VNF creation)
# models-tacker-vnfd-001 (config_drive creation)
# models-tacker-vnfd-002 (artifacts creation)
# models-tacker-vnfd-003 (user_data creation)
# models-vhello-001 (vHello VNF creation)
-# 3) bash vHello_Tacker.sh tacker-cli stop
+# 3) bash vHello_Tacker.sh stop
# models-tacker-004 (VNF deletion)
# models-tacker-005 (VNFD deletion)
# models-tacker-vnfd-004 (artifacts deletion)
-# 4) bash vHello_Tacker.sh tacker-cli clean
+# 4) bash vHello_Tacker.sh clean
# TODO: add assertions
#
# Post-State:
@@ -51,19 +63,19 @@
# After step 3, the VNF is deleted and the system returned to step 1 post-state.
# After step 4, the system returned to test pre-state.
#
-# Cleanup: bash vHello_Tacker.sh tacker-cli clean
+# Cleanup: bash vHello_Tacker.sh clean
#
# How to use:
# $ git clone https://gerrit.opnfv.org/gerrit/models
# $ cd models/tests
-# $ bash vHello_Tacker.sh [tacker-cli|tacker-api] [setup|start|run|stop|clean]
-# tacker-cli: use Tacker CLI
-# tacker-api: use Tacker RESTful API (not yet implemented)
+# $ bash vHello_Tacker.sh [setup|start|run|stop|clean] [<openrc>] [<heat_host>]
# setup: setup test environment
-# start: install blueprint and run test
# run: setup test environment and run test
+# start: install blueprint and run test
# stop: stop test and uninstall blueprint
# clean: cleanup after test
+# <openrc>: include for setup|run as location of OpenStack openrc file
+# <heat_host>: include for setup|run as IP address of the Heat service
trap 'fail' ERR
@@ -123,23 +135,38 @@ setup () {
mkdir -p /tmp/tacker
chmod 777 /tmp/tacker/
cp $0 /tmp/tacker/.
+ cp $1 /tmp/tacker/admin-openrc.sh
+ source /tmp/tacker/admin-openrc.sh
+ echo "export HEAT_HOST=$2" >>/tmp/tacker/admin-openrc.sh
+ echo "export KEYSTONE_HOST=$(echo $OS_AUTH_URL | awk -F'[/]' '{print $3}')" >>/tmp/tacker/admin-openrc.sh
chmod 755 /tmp/tacker/*.sh
echo "$0: $(date) tacker-setup part 1"
- bash utils/tacker-setup.sh $1 init
+ bash utils/tacker-setup.sh init
+ if [ $? -eq 1 ]; then fail; fi
echo "$0: $(date) tacker-setup part 2"
- CONTAINER=$(sudo docker ps -l | awk "/tacker/ { print \$1 }")
+# TODO: find a generic way to set extension_drivers = port_security in ml2_conf.ini
+ # On the neutron service host, update ml2_conf.ini and and restart neutron service
+ # sed -i -- 's~#extension_drivers =~extension_drivers = port_security~' /etc/neutron/plugins/ml2/ml2_conf.ini
+ # For devstack, set in local.conf per http://docs.openstack.org/developer/devstack/guides/neutron.html
+ # Q_ML2_PLUGIN_EXT_DRIVERS=port_security
+
dist=`grep DISTRIB_ID /etc/*-release | awk -F '=' '{print $2}'`
if [ "$dist" == "Ubuntu" ]; then
- echo "$0: $(date) JOID workaround for Colorado - enable ML2 port security"
- juju set neutron-api enable-ml2-port-security=true
+ dpkg -l juju
+ if [[ $? -eq 0 ]]; then
+ echo "$0: $(date) JOID workaround for Colorado - enable ML2 port security"
+ juju set neutron-api enable-ml2-port-security=true
+ fi
echo "$0: $(date) Execute tacker-setup.sh in the container"
- sudo docker exec -it $CONTAINER /bin/bash /tmp/tacker/tacker-setup.sh $1 setup
+ sudo docker exec -it tacker /bin/bash /tmp/tacker/tacker-setup.sh setup
+ if [ $? -eq 1 ]; then fail; fi
else
echo "$0: $(date) Execute tacker-setup.sh in the container"
- sudo docker exec -i -t $CONTAINER /bin/bash /tmp/tacker/tacker-setup.sh $1 setup
+ sudo docker exec -i -t tacker /bin/bash /tmp/tacker/tacker-setup.sh setup
+ if [ $? -eq 1 ]; then fail; fi
fi
assert "models-tacker-001 (Tacker installation in a docker container on the jumphost)" true
@@ -150,7 +177,9 @@ setup () {
echo "$0: $(date) copy tosca-vnfd-hello-world-tacker to blueprints folder"
cp -r blueprints/tosca-vnfd-hello-world-tacker /tmp/tacker/blueprints
+}
+start() {
echo "$0: $(date) setup OpenStack CLI environment"
source /tmp/tacker/admin-openrc.sh
@@ -164,22 +193,20 @@ setup () {
echo "$0: $(date) Inject public key into blueprint"
pubkey=$(cat /tmp/tacker/vHello.pub)
sed -i -- "s~<pubkey>~$pubkey~" /tmp/tacker/blueprints/tosca-vnfd-hello-world-tacker/blueprint.yaml
-}
-
-start() {
- echo "$0: $(date) setup OpenStack CLI environment"
- source /tmp/tacker/admin-openrc.sh
echo "$0: $(date) Get external network for Floating IP allocations"
+ get_floating_net
echo "$0: $(date) create VNFD"
cd /tmp/tacker/blueprints/tosca-vnfd-hello-world-tacker
- tacker vnfd-create --vnfd-file blueprint.yaml --name hello-world-tacker
+ # newton: NAME (was "--name") is now a positional parameter
+ tacker vnfd-create --vnfd-file blueprint.yaml hello-world-tacker
if [ $? -eq 1 ]; then fail; fi
assert "models-tacker-002 (VNFD creation)" true
echo "$0: $(date) create VNF"
- tacker vnf-create --vnfd-name hello-world-tacker --name hello-world-tacker
+ # newton: NAME (was "--name") is now a positional parameter
+ tacker vnf-create --vnfd-name hello-world-tacker hello-world-tacker
if [ $? -eq 1 ]; then fail; fi
echo "$0: $(date) wait for hello-world-tacker to go ACTIVE"
@@ -187,7 +214,7 @@ start() {
while [[ -z $active ]]
do
active=$(tacker vnf-show hello-world-tacker | grep ACTIVE)
- if [ "$(tacker vnf-show hello-world-tacker | grep -c ERROR)" == "1" ]; then
+ if [ "$(tacker vnf-show hello-world-tacker | grep -c ERROR)" > "0" ]; then
echo "$0: $(date) hello-world-tacker VNF creation failed with state ERROR"
fail
fi
@@ -248,13 +275,15 @@ stop() {
echo "$0: $(date) uninstall vHello blueprint via CLI"
vid=($(tacker vnf-list|grep hello-world-tacker|awk '{print $2}')); for id in ${vid[@]}; do tacker vnf-delete ${id}; done
- assert "models-tacker-004 (VNF deletion)" [[ -z "$(tacker vnf-list|grep hello-world-tacker|awk '{print $2}'))" ]]
+ assert "models-tacker-004 (VNF deletion)" [[ -z "$(tacker vnf-list|grep hello-world-tacker|awk '{print $2}')" ]]
+
+ vid=($(tacker vnfd-list|grep hello-world-tacker|awk '{print $2}')); for id in ${vid[@]}; do try 10 10 "tacker vnfd-delete ${id}"; done
+ assert "models-tacker-005 (VNFD deletion)" [[ -z "$(tacker vnfd-list|grep hello-world-tacker|awk '{print $2}')" ]]
- vid=($(tacker vnfd-list|grep hello-world-tacker|awk '{print $2}')); for id in ${vid[@]}; do tacker vnfd-delete ${id}; done
- assert "models-tacker-005 (VNFD deletion)" [[ -z "$(tacker vnfd-list|grep hello-world-tacker|awk '{print $2}'))" ]]
+ for id in ${sg[@]}; do try 5 5 "openstack security group delete ${id}"; done
iid=($(openstack image list|grep VNFImage|awk '{print $2}')); for id in ${iid[@]}; do openstack image delete ${id}; done
- assert "models-tacker-vnfd-004 (artifacts deletion)" [[ -z "$(openstack image list|grep VNFImage|awk '{print $2}'))" ]]
+ assert "models-tacker-vnfd-004 (artifacts deletion)" [[ -z "$(openstack image list|grep VNFImage|awk '{print $2}')" ]]
# Cleanup for workarounds
fip=($(neutron floatingip-list|grep -v "+"|grep -v id|awk '{print $2}')); for id in ${fip[@]}; do neutron floatingip-delete ${id}; done
@@ -264,52 +293,47 @@ stop() {
}
forward_to_container () {
- echo "$0: $(date) pass $2 command to vHello.sh in tacker container"
+ echo "$0: $(date) pass $1 command to vHello.sh in tacker container"
CONTAINER=$(sudo docker ps -a | awk "/tacker/ { print \$1 }")
- sudo docker exec $CONTAINER /bin/bash /tmp/tacker/vHello_Tacker.sh $1 $2 $2
+ sudo docker exec $CONTAINER /bin/bash /tmp/tacker/vHello_Tacker.sh $1
if [ $? -eq 1 ]; then fail; fi
}
test_start=`date +%s`
dist=`grep DISTRIB_ID /etc/*-release | awk -F '=' '{print $2}'`
-if [[ "$1" == "tacker-api" ]]; then
- echo "$0: $(date) Tacker API use is not yet implemented"
- fail
-fi
-
-case "$2" in
+case "$1" in
setup)
- setup $1
+ setup $2 $3
if [ $? -eq 1 ]; then fail; fi
pass
;;
run)
- setup $1
- forward_to_container $1 start
+ setup $2 $3
+ forward_to_container start
if [ $? -eq 1 ]; then fail; fi
pass
;;
start|stop)
- if [[ $# -eq 2 ]]; then forward_to_container $1 $2
+ if [[ -f /.dockerenv ]]; then
+ $1
else
- # running inside the tacker container, ready to go
- $2 $1
+ forward_to_container $1
fi
if [ $? -eq 1 ]; then fail; fi
pass
;;
clean)
- forward_to_container stop $2
echo "$0: $(date) Uninstall Tacker and test environment"
- bash utils/tacker-setup.sh $1 clean
+ forward_to_container stop
+ sudo docker exec -it tacker /bin/bash /tmp/tacker/tacker-setup.sh clean
+ sudo docker stop tacker
+ sudo docker rm -v tacker
if [ $? -eq 1 ]; then fail; fi
pass
;;
*)
- echo "usage: bash vHello_Tacker.sh [tacker-cli|tacker-api] [setup|start|run|clean]"
- echo "tacker-cli: use Tacker CLI"
- echo "tacker-api: use Tacker RESTful API (not yet implemented)"
+ echo "usage: bash vHello_Tacker.sh [setup|start|run|stop|clean]"
echo "setup: setup test environment"
echo "start: install blueprint and run test"
echo "run: setup test environment and run test"