X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=utils%2Finfra_setup%2Fheat_template%2Fvstf_heat_template%2Fvstf_HOT_create_instance.sh;h=f608e12026c03a807a610a12cd20d55f51902eee;hb=0cb54276e3b9aa3d531e574493206e2e3b5e5018;hp=11df69b8b895948b7b41970df3d3e7a37c7f69ed;hpb=a08f4e7265637f994598f233c7713bfe877cada6;p=bottlenecks.git diff --git a/utils/infra_setup/heat_template/vstf_heat_template/vstf_HOT_create_instance.sh b/utils/infra_setup/heat_template/vstf_heat_template/vstf_HOT_create_instance.sh index 11df69b8..f608e120 100755 --- a/utils/infra_setup/heat_template/vstf_heat_template/vstf_HOT_create_instance.sh +++ b/utils/infra_setup/heat_template/vstf_heat_template/vstf_HOT_create_instance.sh @@ -26,7 +26,146 @@ bottlenecks_env_prepare() source $BOTTLENECKS_REPO_DIR/rubbos/rubbos_scripts/1-1-1/scripts/env_preparation.sh } +vstf_cleanup() +{ + echo "[INFO]Begin to clean up vstf heat-stack ,glance images and keypairs" + #heat stack-delete bottlenecks + sleep 30 + if heat stack-list; then + for stack in $(heat stack-list | grep -e " vstf " | awk '{print $2}'); do + echo "[INFO]clean up stack $stack" + heat stack-delete $stack || true + sleep 30 + done + fi + + glance image-delete ${MANAGER_IMAGE_NAME};glance image-delete "${AGENT_IMAGE_NAME}" + if glance image-list; then + for image in $(glance image-list | grep -e "${MANAGER_IMAGE_NAME}" | awk '{print $2}'); do + echo "[INFO]clean up image $image" + glance image-delete $image || true + done + for image in $(glance image-list | grep -e "${AGENT_IMAGE_NAME}" | awk '{print $2}'); do + echo "[INFO]clean up image $image" + glance image-delete $image || true + done + fi + + if nova keypair-list; then + for key in $(nova keypair-list | grep -e $KEY_NAME | awk '{print $2}'); do + echo "[INFO]clean up key $key" + nova keypair-delete $key || true + done + fi + + #check the default flavor m1.large existing + if nova flavor-list; then + flag=`nova flavor-list | grep "m1.large "` + echo "[INFO]the flavor m1.large num is $flag" + fi + return 0 +} + +vstf_register() +{ + echo "[INFO]download vstf images" + #download vstf-manager and vstf-agent image + #curl --connect-timeout 10 -o /tmp/vstf-manager.img $MANAGER_IMAGE_URL -v + #curl --connect-timeout 10 -o /tmp/vstf-agent.img $AGENT_IMAGE_URL -v + curl --connect-timeout 10 -o /tmp/vstf-manager.img $MANAGER_IMAGE_URL -v + curl --connect-timeout 10 -o /tmp/vstf-agent.img $AGENT_IMAGE_URL -v + #echo "begin to test downloading from vstf directory!!!!!!" + #curl --connect-timeout 10 -o /tmp/vstf-test.txt + #echo "begin to cat /tmp/vstf-test.txt vstf directory!!!!!!" + #cat /tmp/vstf-test.txt + #register + echo "[INFO]register vstf manager and agent images" + result=$(glance image-create \ + --name $MANAGER_IMAGE_NAME \ + --disk-format qcow2 \ + --container-format bare \ + --file /tmp/vstf-manager.img) + echo "Manager image register result $result." + + result=$(glance image-create \ + --name $AGENT_IMAGE_NAME \ + --disk-format qcow2 \ + --container-format bare \ + --file /tmp/vstf-agent.img) + echo "Agent image register result $result." + + glance image-list + + rm -rf /tmp/vstf-manager.img;rm -rf /tmp/vstf-agent.img +} + #vstf logic function here +vstf_create_heat_template() +{ + echo "create vstf instance using heat template" + echo "upload keypair" + nova keypair-add --pub_key $KEY_PATH/bottlenecks_key.pub $KEY_NAME + nova keypair-list + echo "use heat template to create stack" + cd ${HOT_PATH} + heat stack-create vstf -f ${TEMPLATE_NAME} + +} + +wait_heat_stack_complete() +{ + retry=0 + while true + do + status=$(heat stack-list | grep vstf | awk '{print $6}') + if [ x$status = x"CREATE_COMPLETE" ]; then + echo "vstf stacke create complete" + heat stack-show vstf + nova list | grep vstf- + break; + elif [ x$status = x"CREATE_FAILED" ]; then + echo "bottlenecks stacke create failed !!!" + heat stack-show vstf + exit 1 + fi + + if [ "$BOTTLENECKS_DEBUG" == "True" ]; then + heat stack-show vstf + nova list | grep vstf- + for i in $(nova list | grep "vstf-" | grep ERROR | awk '{print $2}') + do + nova show $i + done + fi + sleep 1 + let retry+=1 + if [[ $retry -ge $1 ]];then + echo "Heat vstf stack create timeout, status $status !!!" + exit 1 + fi + done +} + + +vstf_check_instance_ok() +{ + wait_heat_stack_complete 120 + + return 0 +} + +vstf_launch() +{ + cd ${HOT_PATH} + bash -x ./launch_vstf.sh + +} + +vstf_test() +{ + cd ${HOT_PATH} + bash -x ./vstf_test.sh +} main() { @@ -35,9 +174,42 @@ main() BOTTLENECKS_REPO=https://gerrit.opnfv.org/gerrit/bottlenecks BOTTLENECKS_REPO_DIR=/tmp/opnfvrepo_vstf/bottlenecks #vstf parameter here + MANAGER_IMAGE_URL=http://artifacts.opnfv.org/bottlenecks/vstf/vstf-manager.img + AGENT_IMAGE_URL=http://artifacts.opnfv.org/bottlenecks/vstf/vstf-agent.img + MANAGER_IMAGE_URL=http://artifacts.opnfv.org/bottlenecks/rubbos/bottlenecks-trusty-server.img + AGENT_IMAGE_URL=http://artifacts.opnfv.org/bottlenecks/rubbos/bottlenecks-trusty-server.img + MANAGER_IMAGE_NAME="vstf-manager" + AGENT_IMAGE_NAME="vstf-agent" + KEY_PATH=$BOTTLENECKS_REPO_DIR/utils/infra_setup/bottlenecks_key + HOT_PATH=$BOTTLENECKS_REPO_DIR/utils/infra_setup/heat_template/vstf_heat_template + KEY_NAME=vstf-key + #use the default openstack flavor m1.large + FLAVOR_NAME="m1.large" + TEMPLATE_NAME=bottleneck_vstf.yaml + PUBLIC_NET_NAME=net04_ext + #load adminrc bottlenecks_env_prepare + #vstf function here + vstf_cleanup + vstf_register + vstf_create_heat_template + vstf_check_instance_ok + heat stack-list + nova list + sleep 100 + vstf_launch + #sleep 30 + vstf_test + #sleep 10 + #echo "[INFO]bottleneck vstf testsuite done ,results in the directory ${HOT_PATH}/result" + echo "[INFO]Begin to clean up the vstf heat-stack and image" + vstf_cleanup + sleep 30 + heat stack-list + nova list + } main