5 GERRIT_REFSPEC_DEBUG=$1
7 bottlenecks_env_prepare()
9 echo "Bottlenecks env prepare start $(date)"
11 if [ -d $BOTTLENECKS_REPO_DIR ]; then
12 rm -rf ${BOTTLENECKS_REPO_DIR}
15 mkdir -p ${BOTTLENECKS_REPO_DIR}
16 git config --global http.sslVerify false
17 git clone ${BOTTLENECKS_REPO} ${BOTTLENECKS_REPO_DIR}
18 if [ x"$GERRIT_REFSPEC_DEBUG" != x ]; then
19 cd ${BOTTLENECKS_REPO_DIR}
20 git fetch $BOTTLENECKS_REPO $GERRIT_REFSPEC_DEBUG && git checkout FETCH_HEAD
24 source $BOTTLENECKS_REPO_DIR/rubbos/rubbos_scripts/1-1-1/scripts/env_preparation.sh
25 chmod 600 $KEY_PATH/bottlenecks_key
27 echo "Bottlenecks env prepare end $(date)"
30 wait_heat_stack_complete() {
34 status=$(heat stack-list | grep bottlenecks | awk '{print $6}')
35 if [ x$status = x"CREATE_COMPLETE" ]; then
36 echo "bottlenecks stacke create complete"
37 heat stack-show bottlenecks
38 nova list | grep rubbos_
40 elif [ x$status = x"CREATE_FAILED" ]; then
41 echo "bottlenecks stacke create failed !!!"
42 heat stack-show bottlenecks
46 #if [ $BOTTLENECKS_DEBUG = True ]; then
48 heat stack-show bottlenecks
49 nova list | grep rubbos_
50 for i in $(nova list | grep rubbos_ | grep ERROR | awk '{print $2}')
57 if [[ $retry -ge $1 ]];then
58 echo "Heat stack create timeout, status $status !!!"
64 wait_rubbos_control_ok() {
65 control_ip=$(nova list | grep rubbos_control | awk '{print $13}')
68 until timeout 3s ssh $ssh_args ec2-user@$control_ip "exit" >/dev/null 2>&1
70 echo "retry connect rubbos control $retry"
73 if [[ $retry -ge $1 ]];then
74 echo "rubbos control start timeout !!!"
78 ssh $ssh_args ec2-user@$control_ip "uname -a"
81 bottlenecks_check_instance_ok()
83 echo "Bottlenecks check instance ok start $(date)"
85 wait_heat_stack_complete 120
86 wait_rubbos_control_ok 300
87 nova list | grep rubbos_
88 if [ $BOTTLENECKS_DEBUG = True ]; then
92 for i in rubbos_benchmark rubbos_client1 rubbos_client2 rubbos_client3 \
93 rubbos_client4 rubbos_control rubbos_httpd rubbos_mysql1 rubbos_tomcat1
96 nova console-log $i | tail -n 2 | grep Cloud-init | grep finished
100 if [ $i = rubbos_tomcat1 ]; then
101 echo "all vm Cloud-init finished!"
110 echo "Bottlenecks check instance ok end $(date)"
113 bottlenecks_create_instance()
115 echo "Bottlenecks create instance using heat template start $(date)"
117 echo "upload keypair"
118 nova keypair-add --pub_key $KEY_PATH/bottlenecks_key.pub $KEY_NAME
121 nova flavor-create $FLAVOR_NAME 200 4096 20 4
123 echo "use heat template to create stack"
125 heat stack-create bottlenecks -f ${TEMPLATE_NAME} \
126 -P "image=$IMAGE_NAME;key_name=$KEY_NAME;public_net=$PUBLIC_NET_NAME;flavor=$FLAVOR_NAME"
128 echo "Bottlenecks create instance using heat template end $(date)"
131 bottlenecks_rubbos_wait_finish()
133 echo "Start checking rubbos running status..."
137 ssh $ssh_args ec2-user@$control_ip "FILE=/tmp/rubbos_finished; if [ -f \$FILE ]; then exit 0; else exit 1; fi"
139 echo "Rubbos test case successfully finished :)"
142 echo "Rubbos running $retry ..."
145 if [[ $retry -ge $1 ]]; then
146 echo "Rubbos test case timeout :("
152 bottlenecks_rubbos_run()
155 control_ip=$(nova list | grep rubbos_control | awk '{print $13}')
156 for i in rubbos_benchmark rubbos_client1 rubbos_client2 rubbos_client3 \
157 rubbos_client4 rubbos_control rubbos_httpd rubbos_mysql1 \
160 ip=$(nova list | grep $i | awk '{print $12}' | awk -F [=,] '{print $2}')
161 echo "$i=$ip" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
164 nameserver_ip=$(grep -m 1 '^nameserver' \
165 /etc/resolv.conf | awk '{ print $2 '})
166 echo "nameserver_ip=$nameserver_ip" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
168 echo "GERRIT_REFSPEC_DEBUG=$GERRIT_REFSPEC_DEBUG" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
171 $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup \
172 ec2-user@$control_ip:/tmp
174 ec2-user@$control_ip "bash /tmp/vm_dev_setup/setup_env.sh" &
176 bottlenecks_rubbos_wait_finish 80
178 rm -rf $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
181 bottlenecks_cleanup()
183 echo "Bottlenecks cleanup start $(date)"
185 if heat stack-list; then
186 for stack in $(heat stack-list | grep -e bottlenecks | awk '{print $2}'); do
187 echo "clean up stack $stack"
188 heat stack-delete $stack || true
193 if glance image-list; then
194 for image in $(glance image-list | grep -e $IMAGE_NAME | awk '{print $2}'); do
195 echo "clean up image $image"
196 glance image-delete $image || true
200 if nova keypair-list; then
201 for key in $(nova keypair-list | grep -e $KEY_NAME | awk '{print $2}'); do
202 echo "clean up key $key"
203 nova keypair-delete $key || true
207 if nova flavor-list; then
208 for flavor in $(nova flavor-list | grep -e $FLAVOR_NAME | awk '{print $2}'); do
209 echo "clean up flavor $flavor"
210 nova flavor-delete $flavor || true
214 echo "Bottlenecks cleanup end $(date)"
217 bottlenecks_load_bottlenecks_image()
219 echo "Bottlenecks load image start $(date)"
221 curl --connect-timeout 10 -o /tmp/bottlenecks-trusty-server.img $IMAGE_URL -v
223 result=$(glance image-create \
225 --disk-format qcow2 \
226 --container-format bare \
227 --file /tmp/bottlenecks-trusty-server.img)
230 rm -rf /tmp/bottlenecks-trusty-server.img
232 IMAGE_ID_BOTTLENECKS=$(echo "$result" | grep " id " | awk '{print $(NF-1)}')
233 if [ -z "$IMAGE_ID_BOTTLENECKS" ]; then
234 echo 'failed to upload bottlenecks image to openstack'
238 echo "bottlenecks image end id: $IMAGE_ID_BOTTLENECKS $(date)"
243 echo "main start $(date)"
245 BOTTLENECKS_DEBUG=True
246 BOTTLENECKS_REPO=https://gerrit.opnfv.org/gerrit/bottlenecks
247 BOTTLENECKS_REPO_DIR=/tmp/opnfvrepo/bottlenecks
248 IMAGE_URL=http://artifacts.opnfv.org/bottlenecks/rubbos/bottlenecks-trusty-server.img
249 #IMAGE_URL=https://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img
250 IMAGE_NAME=bottlenecks-trusty-server
251 KEY_PATH=$BOTTLENECKS_REPO_DIR/utils/infra_setup/bottlenecks_key
252 HOT_PATH=$BOTTLENECKS_REPO_DIR/utils/infra_setup/heat_template
253 KEY_NAME=bottlenecks-key
254 FLAVOR_NAME=bottlenecks-flavor
255 TEMPLATE_NAME=bottlenecks_rubbos_hot.yaml
256 PUBLIC_NET_NAME=net04_ext
257 ssh_args="-o StrictHostKeyChecking=no -o BatchMode=yes -i $KEY_PATH/bottlenecks_key"
259 bottlenecks_env_prepare
262 bottlenecks_load_bottlenecks_image
263 bottlenecks_create_instance
264 bottlenecks_check_instance_ok
265 bottlenecks_rubbos_run
267 echo "main end $(date)"