set -ex
+GERRIT_REFSPEC_DEBUG=$1
+
bottlenecks_env_prepare()
{
if [ -d $BOTTLENECKS_REPO_DIR ]; then
mkdir -p ${BOTTLENECKS_REPO_DIR}
git config --global http.sslVerify false
git clone ${BOTTLENECKS_REPO} ${BOTTLENECKS_REPO_DIR}
+ if [ x"$GERRIT_REFSPEC_DEBUG" != x ]; then
+ cd ${BOTTLENECKS_REPO_DIR}
+ git fetch $BOTTLENECKS_REPO $GERRIT_REFSPEC_DEBUG && git checkout FETCH_HEAD
+ cd -
+ fi
source $BOTTLENECKS_REPO_DIR/rubbos/rubbos_scripts/1-1-1/scripts/env_preparation.sh
+ chmod 600 $KEY_PATH/bottlenecks_key
+}
+
+wait_heat_stack_complete() {
+ retry=0
+ while true
+ do
+ status=$(heat stack-list | grep bottlenecks | awk '{print $6}')
+ if [ x$status = x"CREATE_COMPLETE" ]; then
+ echo "bottlenecks stacke create complete"
+ heat stack-show bottlenecks
+ nova list | grep rubbos_
+ break;
+ elif [ x$status = x"CREATE_FAILED" ]; then
+ echo "bottlenecks stacke create failed !!!"
+ heat stack-show bottlenecks
+ exit 1
+ fi
+
+ if [ $BOTTLENECKS_DEBUG = True ]; then
+ heat stack-show bottlenecks
+ nova list | grep rubbos_
+ for i in $(nova list | grep rubbos_ | grep ERROR | awk '{print $2}')
+ do
+ nova show $i
+ done
+ fi
+ sleep 1
+ let retry+=1
+ if [[ $retry -ge $1 ]];then
+ echo "Heat stack create timeout, status $status !!!"
+ exit 1
+ fi
+ done
+}
+
+wait_rubbos_control_ok() {
+ control_ip=$(nova list | grep rubbos_control | awk '{print $13}')
+
+ retry=0
+ until timeout 3s ssh $ssh_args ec2-user@$control_ip "exit" >/dev/null 2>&1
+ do
+ echo "retry connect rubbos control $retry"
+ sleep 1
+ let retry+=1
+ if [[ $retry -ge $1 ]];then
+ echo "rubbos control start timeout !!!"
+ exit 1
+ fi
+ done
+ ssh $ssh_args ec2-user@$control_ip "uname -a"
+}
+
+bottlenecks_check_instance_ok()
+{
+ echo "check instance"
+
+ wait_heat_stack_complete 120
+ wait_rubbos_control_ok 300
+ nova list | grep rubbos_
+ if [ $BOTTLENECKS_DEBUG = True ]; then
+ date
+ while true
+ do
+ for i in rubbos_benchmark rubbos_client1 rubbos_client2 rubbos_client3 \
+ rubbos_client4 rubbos_control rubbos_httpd rubbos_mysql1 rubbos_tomcat1
+ do
+ echo "logging $i"
+ nova console-log $i | tail -n 2 | grep Cloud-init | grep finished
+ if [ $? != 0 ]; then
+ break
+ fi
+ if [ $i = rubbos_tomcat1 ]; then
+ echo "all vm Cloud-init finished!"
+ date
+ return
+ fi
+ done
+ sleep 10
+ done
+ fi
}
bottlenecks_create_instance()
nova keypair-add --pub_key $KEY_PATH/bottlenecks_key.pub $KEY_NAME
echo "create flavor"
- nova flavor-create $FLAVOR_NAME 200 2048 10 1
+ nova flavor-create $FLAVOR_NAME 200 4096 20 4
echo "use heat template to create stack"
cd $HOT_PATH
heat stack-create bottlenecks -f ${TEMPLATE_NAME} \
-P "image=$IMAGE_NAME;key_name=$KEY_NAME;public_net=$PUBLIC_NET_NAME;flavor=$FLAVOR_NAME"
- heat stack-list
- heat stack-show bottlenecks
- nova list
- nova list | grep rubbos_control
-}
-
-bottlenecks_rubbos_cirros_run()
-{
- echo "Run Rubbos based on cirros image"
- control_ip=$(nova list | grep rubbos_control | awk '{print $13}')
- for i in rubbos_benchmark rubbos_client1 rubbos_client2 rubbos_client3 \
- rubbos_client4 rubbos_control rubbos_httpd rubbos_mysql1 \
- rubbos_tomcat1
- do
- ip=$(nova list | grep $i | awk '{print $12}' | awk -F [=,] '{print $2}')
- echo "$i=$ip" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
- done
-
- chmod 600 $KEY_PATH/bottlenecks_key
- ssh -i $KEY_PATH/bottlenecks_key \
- -o StrictHostKeyChecking=no \
- -o BatchMode=yes cirros@$control_ip "uname -a"
- scp -r -i $KEY_PATH/bottlenecks_key \
- -o StrictHostKeyChecking=no -o BatchMode=yes \
- $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup \
- cirros@$control_ip:/tmp
- ssh -i $KEY_PATH/bottlenecks_key \
- -o StrictHostKeyChecking=no \
- -o BatchMode=yes cirros@$control_ip "bash /tmp/vm_dev_setup/setup_env.sh"
-
- rm -rf $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
}
bottlenecks_rubbos_run()
echo "$i=$ip" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
done
- chmod 600 $KEY_PATH/bottlenecks_key
- ssh -i $KEY_PATH/bottlenecks_key \
- -o StrictHostKeyChecking=no \
- -o BatchMode=yes root@$control_ip "uname -a"
- scp -r -i $KEY_PATH/bottlenecks_key \
- -o StrictHostKeyChecking=no -o BatchMode=yes \
+ nameserver_ip=$(grep -m 1 '^nameserver' \
+ /etc/resolv.conf | awk '{ print $2 '})
+ echo "nameserver_ip=$nameserver_ip" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
+
+ echo "GERRIT_REFSPEC_DEBUG=$GERRIT_REFSPEC_DEBUG" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
+
+ scp $ssh_args -r \
$BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup \
- root@$control_ip:/tmp
- ssh -i $KEY_PATH/bottlenecks_key \
- -o StrictHostKeyChecking=no \
- -o BatchMode=yes root@$control_ip "bash /tmp/vm_dev_setup/setup_env.sh"
+ ec2-user@$control_ip:/tmp
+ ssh $ssh_args \
+ ec2-user@$control_ip "bash /tmp/vm_dev_setup/setup_env.sh"
rm -rf $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
}
fi
}
-bottlenecks_load_cirros_image()
-{
- echo "load cirros image"
-
- wget http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img -O \
- /tmp/bottlenecks-cirros.img
-
- result=$(glance image-create \
- --name $IMAGE_NAME \
- --disk-format qcow2 \
- --container-format bare \
- --file /tmp/bottlenecks-cirros.img)
- echo "$result"
-
- rm -rf /tmp/bottlenecks-cirros.img
-
- IMAGE_ID_BOTTLENECKS=$(echo "$result" | grep " id " | awk '{print $(NF-1)}')
- if [ -z "$IMAGE_ID_BOTTLENECKS" ]; then
- echo 'failed to upload bottlenecks image to openstack'
- exit 1
- fi
-
- echo "bottlenecks image id: $IMAGE_ID_BOTTLENECKS"
-}
-
bottlenecks_load_bottlenecks_image()
{
echo "load bottlenecks image"
{
echo "create instances with heat template"
+ BOTTLENECKS_DEBUG=True
BOTTLENECKS_REPO=https://gerrit.opnfv.org/gerrit/bottlenecks
BOTTLENECKS_REPO_DIR=/tmp/opnfvrepo/bottlenecks
IMAGE_URL=http://artifacts.opnfv.org/bottlenecks/rubbos/bottlenecks-trusty-server.img
+ #IMAGE_URL=https://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img
IMAGE_NAME=bottlenecks-trusty-server
KEY_PATH=$BOTTLENECKS_REPO_DIR/utils/infra_setup/bottlenecks_key
HOT_PATH=$BOTTLENECKS_REPO_DIR/utils/infra_setup/heat_template
FLAVOR_NAME=bottlenecks-flavor
TEMPLATE_NAME=bottlenecks_rubbos_hot.yaml
PUBLIC_NET_NAME=net04_ext
+ ssh_args="-o StrictHostKeyChecking=no -o BatchMode=yes -i $KEY_PATH/bottlenecks_key"
bottlenecks_env_prepare
bottlenecks_cleanup
- bottlenecks_load_cirros_image
- bottlenecks_create_instance
- sleep 120
- bottlenecks_rubbos_cirros_run
- bottlenecks_cleanup
bottlenecks_load_bottlenecks_image
bottlenecks_create_instance
- sleep 600
+ bottlenecks_check_instance_ok
bottlenecks_rubbos_run
bottlenecks_cleanup
}