5 GERRIT_REFSPEC_DEBUG=$1
7 bottlenecks_env_prepare()
9 if [ -d $BOTTLENECKS_REPO_DIR ]; then
10 rm -rf ${BOTTLENECKS_REPO_DIR}
13 mkdir -p ${BOTTLENECKS_REPO_DIR}
14 git config --global http.sslVerify false
15 git clone ${BOTTLENECKS_REPO} ${BOTTLENECKS_REPO_DIR}
16 if [ x"$GERRIT_REFSPEC_DEBUG" != x ]; then
17 git fetch $BOTTLENECKS_REPO $GERRIT_REFSPEC_DEBUG && git checkout FETCH_HEAD
20 source $BOTTLENECKS_REPO_DIR/rubbos/rubbos_scripts/1-1-1/scripts/env_preparation.sh
21 chmod 600 $KEY_PATH/bottlenecks_key
24 wait_heat_stack_complete() {
28 status=$(heat stack-list | grep bottlenecks | awk '{print $6}')
29 if [ x$status = x"CREATE_COMPLETE" ]; then
30 echo "bottlenecks stacke create complete"
31 heat stack-show bottlenecks
34 echo "bottlenecks stack status $status"
37 if [[ $retry -ge $1 ]];then
38 echo "Heat stack create timeout!!!"
44 wait_rubbos_control_ok() {
45 control_ip=$(nova list | grep rubbos_control | awk '{print $13}')
48 until timeout 1s ssh $ssh_args ec2-user@$control_ip "exit" >/dev/null 2>&1
50 echo "retry connect rubbos control $retry"
53 if [[ $retry -ge $1 ]];then
54 echo "rubbos control start timeout !!!"
58 ssh $ssh_args ec2-user@$control_ip "uname -a"
61 bottlenecks_check_instance_ok()
65 wait_heat_stack_complete 120
66 wait_rubbos_control_ok 300
67 nova list | grep rubbos_
70 bottlenecks_create_instance()
72 echo "create bottlenecks instance using heat template"
75 nova keypair-add --pub_key $KEY_PATH/bottlenecks_key.pub $KEY_NAME
78 nova flavor-create $FLAVOR_NAME 200 2048 10 1
80 echo "use heat template to create stack"
82 heat stack-create bottlenecks -f ${TEMPLATE_NAME} \
83 -P "image=$IMAGE_NAME;key_name=$KEY_NAME;public_net=$PUBLIC_NET_NAME;flavor=$FLAVOR_NAME"
86 bottlenecks_rubbos_run()
89 control_ip=$(nova list | grep rubbos_control | awk '{print $13}')
90 for i in rubbos_benchmark rubbos_client1 rubbos_client2 rubbos_client3 \
91 rubbos_client4 rubbos_control rubbos_httpd rubbos_mysql1 \
94 ip=$(nova list | grep $i | awk '{print $12}' | awk -F [=,] '{print $2}')
95 echo "$i=$ip" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
98 nameserver_ip=$(grep -m 1 '^nameserver' \
99 /etc/resolv.conf | awk '{ print $2 '})
100 echo "nameserver_ip=$nameserver_ip" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
102 echo "GERRIT_REFSPEC_DEBUG=$GERRIT_REFSPEC_DEBUG" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
105 $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup \
106 ec2-user@$control_ip:/tmp
108 ec2-user@$control_ip "bash /tmp/vm_dev_setup/setup_env.sh"
110 rm -rf $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
113 bottlenecks_cleanup()
115 echo "clean up bottlenecks images and keys"
117 if heat stack-list; then
118 for stack in $(heat stack-list | grep -e bottlenecks | awk '{print $2}'); do
119 echo "clean up stack $stack"
120 heat stack-delete $stack || true
125 if glance image-list; then
126 for image in $(glance image-list | grep -e $IMAGE_NAME | awk '{print $2}'); do
127 echo "clean up image $image"
128 glance image-delete $image || true
132 if nova keypair-list; then
133 for key in $(nova keypair-list | grep -e $KEY_NAME | awk '{print $2}'); do
134 echo "clean up key $key"
135 nova keypair-delete $key || true
139 if nova flavor-list; then
140 for flavor in $(nova flavor-list | grep -e $FLAVOR_NAME | awk '{print $2}'); do
141 echo "clean up flavor $flavor"
142 nova flavor-delete $flavor || true
147 bottlenecks_load_bottlenecks_image()
149 echo "load bottlenecks image"
151 curl --connect-timeout 10 -o /tmp/bottlenecks-trusty-server.img $IMAGE_URL -v
153 result=$(glance image-create \
155 --disk-format qcow2 \
156 --container-format bare \
157 --file /tmp/bottlenecks-trusty-server.img)
160 rm -rf /tmp/bottlenecks-trusty-server.img
162 IMAGE_ID_BOTTLENECKS=$(echo "$result" | grep " id " | awk '{print $(NF-1)}')
163 if [ -z "$IMAGE_ID_BOTTLENECKS" ]; then
164 echo 'failed to upload bottlenecks image to openstack'
168 echo "bottlenecks image id: $IMAGE_ID_BOTTLENECKS"
173 echo "create instances with heat template"
175 BOTTLENECKS_REPO=https://gerrit.opnfv.org/gerrit/bottlenecks
176 BOTTLENECKS_REPO_DIR=/tmp/opnfvrepo/bottlenecks
177 #IMAGE_URL=http://artifacts.opnfv.org/bottlenecks/rubbos/bottlenecks-trusty-server.img
178 IMAGE_URL=https://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img
179 IMAGE_NAME=bottlenecks-trusty-server
180 KEY_PATH=$BOTTLENECKS_REPO_DIR/utils/infra_setup/bottlenecks_key
181 HOT_PATH=$BOTTLENECKS_REPO_DIR/utils/infra_setup/heat_template
182 KEY_NAME=bottlenecks-key
183 FLAVOR_NAME=bottlenecks-flavor
184 TEMPLATE_NAME=bottlenecks_rubbos_hot.yaml
185 PUBLIC_NET_NAME=net04_ext
186 ssh_args="-o StrictHostKeyChecking=no -o BatchMode=yes -i $KEY_PATH/bottlenecks_key"
188 bottlenecks_env_prepare
190 bottlenecks_load_bottlenecks_image
191 bottlenecks_create_instance
192 bottlenecks_check_instance_ok
193 bottlenecks_rubbos_run