5 bottlenecks_env_prepare()
7 if [ -d $BOTTLENECKS_REPO_DIR ]; then
8 rm -rf ${BOTTLENECKS_REPO_DIR}
11 mkdir -p ${BOTTLENECKS_REPO_DIR}
12 git config --global http.sslVerify false
13 git clone ${BOTTLENECKS_REPO} ${BOTTLENECKS_REPO_DIR}
15 source $BOTTLENECKS_REPO_DIR/rubbos/rubbos_scripts/1-1-1/scripts/env_preparation.sh
16 chmod 600 $KEY_PATH/bottlenecks_key
19 wait_heat_stack_complete() {
23 status=$(heat stack-list | grep bottlenecks | awk '{print $6}')
24 if [ x$status = x"CREATE_COMPLETE" ]; then
25 echo "bottlenecks stacke create complete"
26 heat stack-show bottlenecks
29 echo "bottlenecks stack status $status"
32 if [[ $retry -ge $1 ]];then
33 echo "Heat stack create timeout!!!"
39 wait_rubbos_control_ok() {
40 control_ip=$(nova list | grep rubbos_control | awk '{print $13}')
43 until timeout 1s ssh $ssh_args ec2-user@$control_ip "exit" >/dev/null 2>&1
45 echo "retry connect rubbos control $retry"
48 if [[ $retry -ge $1 ]];then
49 echo "rubbos control start timeout !!!"
53 ssh $ssh_args ec2-user@$control_ip "uname -a"
56 bottlenecks_check_instance_ok()
60 wait_heat_stack_complete 120
61 wait_rubbos_control_ok 300
62 nova list | grep rubbos_
65 bottlenecks_create_instance()
67 echo "create bottlenecks instance using heat template"
70 nova keypair-add --pub_key $KEY_PATH/bottlenecks_key.pub $KEY_NAME
73 nova flavor-create $FLAVOR_NAME 200 2048 10 1
75 echo "use heat template to create stack"
77 heat stack-create bottlenecks -f ${TEMPLATE_NAME} \
78 -P "image=$IMAGE_NAME;key_name=$KEY_NAME;public_net=$PUBLIC_NET_NAME;flavor=$FLAVOR_NAME"
81 bottlenecks_rubbos_run()
84 control_ip=$(nova list | grep rubbos_control | awk '{print $13}')
85 for i in rubbos_benchmark rubbos_client1 rubbos_client2 rubbos_client3 \
86 rubbos_client4 rubbos_control rubbos_httpd rubbos_mysql1 \
89 ip=$(nova list | grep $i | awk '{print $12}' | awk -F [=,] '{print $2}')
90 echo "$i=$ip" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
93 nameserver_ip=$(grep -m 1 '^nameserver' \
94 /etc/resolv.conf | awk '{ print $2 '})
95 echo "nameserver_ip=$nameserver_ip" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
98 $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup \
99 ec2-user@$control_ip:/tmp
101 ec2-user@$control_ip "bash /tmp/vm_dev_setup/setup_env.sh"
103 rm -rf $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
106 bottlenecks_cleanup()
108 echo "clean up bottlenecks images and keys"
110 if heat stack-list; then
111 for stack in $(heat stack-list | grep -e bottlenecks | awk '{print $2}'); do
112 echo "clean up stack $stack"
113 heat stack-delete $stack || true
118 if glance image-list; then
119 for image in $(glance image-list | grep -e $IMAGE_NAME | awk '{print $2}'); do
120 echo "clean up image $image"
121 glance image-delete $image || true
125 if nova keypair-list; then
126 for key in $(nova keypair-list | grep -e $KEY_NAME | awk '{print $2}'); do
127 echo "clean up key $key"
128 nova keypair-delete $key || true
132 if nova flavor-list; then
133 for flavor in $(nova flavor-list | grep -e $FLAVOR_NAME | awk '{print $2}'); do
134 echo "clean up flavor $flavor"
135 nova flavor-delete $flavor || true
140 bottlenecks_load_bottlenecks_image()
142 echo "load bottlenecks image"
144 curl --connect-timeout 10 -o /tmp/bottlenecks-trusty-server.img $IMAGE_URL -v
146 result=$(glance image-create \
148 --disk-format qcow2 \
149 --container-format bare \
150 --file /tmp/bottlenecks-trusty-server.img)
153 rm -rf /tmp/bottlenecks-trusty-server.img
155 IMAGE_ID_BOTTLENECKS=$(echo "$result" | grep " id " | awk '{print $(NF-1)}')
156 if [ -z "$IMAGE_ID_BOTTLENECKS" ]; then
157 echo 'failed to upload bottlenecks image to openstack'
161 echo "bottlenecks image id: $IMAGE_ID_BOTTLENECKS"
166 echo "create instances with heat template"
168 BOTTLENECKS_REPO=https://gerrit.opnfv.org/gerrit/bottlenecks
169 BOTTLENECKS_REPO_DIR=/tmp/opnfvrepo/bottlenecks
170 #IMAGE_URL=http://artifacts.opnfv.org/bottlenecks/rubbos/bottlenecks-trusty-server.img
171 IMAGE_URL=https://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img
172 IMAGE_NAME=bottlenecks-trusty-server
173 KEY_PATH=$BOTTLENECKS_REPO_DIR/utils/infra_setup/bottlenecks_key
174 HOT_PATH=$BOTTLENECKS_REPO_DIR/utils/infra_setup/heat_template
175 KEY_NAME=bottlenecks-key
176 FLAVOR_NAME=bottlenecks-flavor
177 TEMPLATE_NAME=bottlenecks_rubbos_hot.yaml
178 PUBLIC_NET_NAME=net04_ext
179 ssh_args="-o StrictHostKeyChecking=no -o BatchMode=yes -i $KEY_PATH/bottlenecks_key"
181 bottlenecks_env_prepare
183 bottlenecks_load_bottlenecks_image
184 bottlenecks_create_instance
185 bottlenecks_check_instance_ok
186 bottlenecks_rubbos_run