5 bottlenecks_env_prepare()
7 echo "Bottlenecks env prepare start $(date)"
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 cd ${BOTTLENECKS_REPO_DIR}
18 git fetch $BOTTLENECKS_REPO $GERRIT_REFSPEC_DEBUG && git checkout FETCH_HEAD
22 source $BOTTLENECKS_REPO_DIR/rubbos/rubbos_scripts/1-1-1/scripts/env_preparation.sh
23 chmod 600 $KEY_PATH/bottlenecks_key
25 echo "Bottlenecks env prepare end $(date)"
28 wait_heat_stack_complete() {
32 status=$(heat stack-list | grep bottlenecks | awk '{print $6}')
33 if [ x$status = x"CREATE_COMPLETE" ]; then
34 echo "bottlenecks stacke create complete"
35 heat stack-show bottlenecks
36 nova list | grep rubbos_
38 elif [ x$status = x"CREATE_FAILED" ]; then
39 echo "bottlenecks stacke create failed !!!"
40 heat stack-show bottlenecks
44 #if [ $BOTTLENECKS_DEBUG = True ]; then
46 heat stack-show bottlenecks
47 nova list | grep rubbos_
48 for i in $(nova list | grep rubbos_ | grep ERROR | awk '{print $2}')
55 if [[ $retry -ge $1 ]];then
56 echo "Heat stack create timeout, status $status !!!"
62 wait_rubbos_control_ok() {
63 control_ip=$(nova list | grep rubbos_control | awk '{print $13}')
66 until timeout 3s ssh $ssh_args ec2-user@$control_ip "exit" >/dev/null 2>&1
68 echo "retry connect rubbos control $retry"
71 if [[ $retry -ge $1 ]];then
72 echo "rubbos control start timeout !!!"
76 ssh $ssh_args ec2-user@$control_ip "uname -a"
79 bottlenecks_check_instance_ok()
81 echo "Bottlenecks check instance ok start $(date)"
83 wait_heat_stack_complete 120
84 wait_rubbos_control_ok 300
85 nova list | grep rubbos_
86 if [ $BOTTLENECKS_DEBUG = True ]; then
90 for i in rubbos_benchmark rubbos_client1 rubbos_client2 rubbos_client3 \
91 rubbos_client4 rubbos_control rubbos_httpd rubbos_mysql1 rubbos_tomcat1
94 nova console-log $i | tail -n 2 | grep Cloud-init | grep finished
98 if [ $i = rubbos_tomcat1 ]; then
99 echo "all vm Cloud-init finished!"
108 echo "Bottlenecks check instance ok end $(date)"
111 bottlenecks_create_instance()
113 echo "Bottlenecks create instance using heat template start $(date)"
115 echo "upload keypair"
116 nova keypair-add --pub_key $KEY_PATH/bottlenecks_key.pub $KEY_NAME
119 nova flavor-create $FLAVOR_NAME 200 4096 20 4
121 echo "use heat template to create stack"
123 heat stack-create bottlenecks -f ${TEMPLATE_NAME} \
124 -P "image=$IMAGE_NAME;key_name=$KEY_NAME;public_net=$PUBLIC_NET_NAME;flavor=$FLAVOR_NAME"
126 echo "Bottlenecks create instance using heat template end $(date)"
129 bottlenecks_rubbos_wait_finish()
131 echo "Start checking rubbos running status..."
135 ssh $ssh_args ec2-user@$control_ip "FILE=/tmp/rubbos_finished; if [ -f \$FILE ]; then exit 0; else exit 1; fi"
137 echo "Rubbos test case successfully finished :)"
140 echo "Rubbos running $retry ..."
143 if [[ $retry -ge $1 ]]; then
144 echo "Rubbos test case timeout :("
150 bottlenecks_rubbos_run()
153 control_ip=$(nova list | grep rubbos_control | awk '{print $13}')
154 for i in rubbos_benchmark rubbos_client1 rubbos_client2 rubbos_client3 \
155 rubbos_client4 rubbos_control rubbos_httpd rubbos_mysql1 \
158 ip=$(nova list | grep $i | awk '{print $12}' | awk -F [=,] '{print $2}')
159 echo "$i=$ip" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
162 nameserver_ip=$(grep -m 1 '^nameserver' \
163 /etc/resolv.conf | awk '{ print $2 '})
164 echo "nameserver_ip=$nameserver_ip" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
166 echo "GERRIT_REFSPEC_DEBUG=$GERRIT_REFSPEC_DEBUG" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
168 echo "POD_NAME=$POD_NAME" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
169 echo "INSTALLER_TYPE=$INSTALLER_TYPE" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
170 echo "BOTTLENECKS_VERSION=$BOTTLENECKS_VERSION" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
171 echo "BOTTLENECKS_DB_TARGET=$BOTTLENECKS_DB_TARGET" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
174 $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup \
175 ec2-user@$control_ip:/tmp
177 ec2-user@$control_ip "bash /tmp/vm_dev_setup/setup_env.sh" &
179 bottlenecks_rubbos_wait_finish 200
181 rm -rf $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
184 bottlenecks_cleanup()
186 echo "Bottlenecks cleanup start $(date)"
188 if heat stack-list; then
189 for stack in $(heat stack-list | grep -e bottlenecks | awk '{print $2}'); do
190 echo "clean up stack $stack"
191 heat stack-delete $stack || true
196 if glance image-list; then
197 for image in $(glance image-list | grep -e $IMAGE_NAME | awk '{print $2}'); do
198 echo "clean up image $image"
199 glance image-delete $image || true
203 if nova keypair-list; then
204 for key in $(nova keypair-list | grep -e $KEY_NAME | awk '{print $2}'); do
205 echo "clean up key $key"
206 nova keypair-delete $key || true
210 if nova flavor-list; then
211 for flavor in $(nova flavor-list | grep -e $FLAVOR_NAME | awk '{print $2}'); do
212 echo "clean up flavor $flavor"
213 nova flavor-delete $flavor || true
217 echo "Bottlenecks cleanup end $(date)"
220 bottlenecks_load_bottlenecks_image()
222 echo "Bottlenecks load image start $(date)"
224 curl --connect-timeout 10 -o /tmp/bottlenecks-trusty-server.img $IMAGE_URL -v
226 result=$(glance image-create \
228 --disk-format qcow2 \
229 --container-format bare \
230 --file /tmp/bottlenecks-trusty-server.img)
233 rm -rf /tmp/bottlenecks-trusty-server.img
235 IMAGE_ID_BOTTLENECKS=$(echo "$result" | grep " id " | awk '{print $(NF-1)}')
236 if [ -z "$IMAGE_ID_BOTTLENECKS" ]; then
237 echo 'failed to upload bottlenecks image to openstack'
241 echo "bottlenecks image end id: $IMAGE_ID_BOTTLENECKS $(date)"
246 echo "main start $(date)"
248 BOTTLENECKS_DEBUG=True
249 BOTTLENECKS_REPO=https://gerrit.opnfv.org/gerrit/bottlenecks
250 BOTTLENECKS_REPO_DIR=/tmp/opnfvrepo/bottlenecks
251 IMAGE_URL=http://artifacts.opnfv.org/bottlenecks/rubbos/bottlenecks-trusty-server.img
252 #IMAGE_URL=https://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img
253 IMAGE_NAME=bottlenecks-trusty-server
254 KEY_PATH=$BOTTLENECKS_REPO_DIR/utils/infra_setup/bottlenecks_key
255 HOT_PATH=$BOTTLENECKS_REPO_DIR/utils/infra_setup/heat_template
256 KEY_NAME=bottlenecks-key
257 FLAVOR_NAME=bottlenecks-flavor
258 TEMPLATE_NAME=bottlenecks_rubbos_hot.yaml
259 PUBLIC_NET_NAME=net04_ext
260 ssh_args="-o StrictHostKeyChecking=no -o BatchMode=yes -i $KEY_PATH/bottlenecks_key"
261 : ${POD_NAME:='opnfv-jump-2'}
262 : ${INSTALLER_TYPE:='fuel'}
263 : ${BOTTLENECKS_VERSION:='master'}
264 : ${BOTTLENECKS_DB_TARGET:='213.77.62.197'}
266 bottlenecks_env_prepare
269 bottlenecks_load_bottlenecks_image
270 bottlenecks_create_instance
271 bottlenecks_check_instance_ok
272 bottlenecks_rubbos_run
274 echo "main end $(date)"