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 echo "Creating openstack credentials .."
25 if [ -d $RELENG_REPO_DIR ]; then
26 rm -rf ${RELENG_REPO_DIR}
28 mkdir -p ${RELENG_REPO_DIR}
29 git config --global http.sslVerify false
30 git clone ${RELENG_REPO} ${RELENG_REPO_DIR}
32 # Create openstack credentials
33 $RELENG_REPO_DIR/utils/fetch_os_creds.sh \
35 -i ${INSTALLER_TYPE} -a ${INSTALLER_IP}
40 chmod 600 $KEY_PATH/bottlenecks_key
42 echo "Bottlenecks env prepare end $(date)"
45 wait_heat_stack_complete() {
49 status=$(heat stack-list | grep bottlenecks | awk '{print $6}')
50 if [ x$status = x"CREATE_COMPLETE" ]; then
51 echo "bottlenecks stacke create complete"
52 heat stack-show bottlenecks
53 nova list | grep rubbos_
55 elif [ x$status = x"CREATE_FAILED" ]; then
56 echo "bottlenecks stacke create failed !!!"
57 heat stack-show bottlenecks
61 #if [ $BOTTLENECKS_DEBUG = True ]; then
63 heat stack-show bottlenecks
64 nova list | grep rubbos_
65 for i in $(nova list | grep rubbos_ | grep ERROR | awk '{print $2}')
72 if [[ $retry -ge $1 ]];then
73 echo "Heat stack create timeout, status $status !!!"
79 wait_rubbos_control_ok() {
80 control_ip=$(nova list | grep rubbos_control | awk '{print $13}')
83 until timeout 3s ssh $ssh_args ubuntu@$control_ip "exit" >/dev/null 2>&1
85 echo "retry connect rubbos control $retry"
88 if [[ $retry -ge $1 ]];then
89 echo "rubbos control start timeout !!!"
93 ssh $ssh_args ubuntu@$control_ip "uname -a"
96 bottlenecks_check_instance_ok()
98 echo "Bottlenecks check instance ok start $(date)"
100 wait_heat_stack_complete 120
101 wait_rubbos_control_ok 300
102 nova list | grep rubbos_
103 if [ $BOTTLENECKS_DEBUG = True ]; then
107 for i in rubbos_benchmark rubbos_client1 rubbos_client2 rubbos_client3 \
108 rubbos_client4 rubbos_control rubbos_httpd rubbos_mysql1 rubbos_tomcat1
111 nova console-log $i | tail -n 2 | grep Cloud-init | grep finished
115 if [ $i = rubbos_tomcat1 ]; then
116 echo "all vm Cloud-init finished!"
125 echo "Bottlenecks check instance ok end $(date)"
128 bottlenecks_create_instance()
130 echo "Bottlenecks create instance using heat template start $(date)"
132 echo "upload keypair"
133 nova keypair-add --pub_key $KEY_PATH/bottlenecks_key.pub $KEY_NAME
136 nova flavor-create $FLAVOR_NAME 200 4096 20 1
138 echo "use heat template to create stack"
140 heat stack-create bottlenecks -f ${TEMPLATE_NAME} \
141 -P "image=$IMAGE_NAME;key_name=$KEY_NAME;public_net=$EXTERNAL_NET;flavor=$FLAVOR_NAME"
143 echo "Bottlenecks create instance using heat template end $(date)"
146 bottlenecks_rubbos_wait_finish()
148 echo "Start checking rubbos running status..."
152 ssh $ssh_args ubuntu@$control_ip "FILE=/tmp/rubbos_finished; if [ -f \$FILE ]; then exit 0; else exit 1; fi"
154 echo "Rubbos test case successfully finished :)"
157 echo "Rubbos running $retry ..."
160 if [[ $retry -ge $1 ]]; then
161 echo "Rubbos test case timeout :("
167 bottlenecks_rubbos_run()
170 control_ip=$(nova list | grep rubbos_control | awk '{print $13}')
171 for i in rubbos_benchmark rubbos_client1 rubbos_client2 rubbos_client3 \
172 rubbos_client4 rubbos_control rubbos_httpd rubbos_mysql1 \
175 ip=$(nova list | grep $i | awk '{print $12}' | awk -F [=,] '{print $2}')
176 echo "$i=$ip" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
179 nameserver_ip=$(grep -m 1 '^nameserver' \
180 /etc/resolv.conf | awk '{ print $2 '})
181 echo "nameserver_ip=$nameserver_ip" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
183 echo "GERRIT_REFSPEC_DEBUG=$GERRIT_REFSPEC_DEBUG" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
185 echo "NODE_NAME=$NODE_NAME" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
186 echo "INSTALLER_TYPE=$INSTALLER_TYPE" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
187 echo "BOTTLENECKS_VERSION=$BOTTLENECKS_VERSION" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
188 echo "BOTTLENECKS_DB_TARGET=$BOTTLENECKS_DB_TARGET" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
189 echo "PACKAGE_URL=$PACKAGE_URL" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
192 $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup \
193 ubuntu@$control_ip:/tmp
195 ubuntu@$control_ip "bash /tmp/vm_dev_setup/setup_env.sh" &
197 bottlenecks_rubbos_wait_finish 200
199 if [ x"$GERRIT_REFSPEC_DEBUG" != x ]; then
200 # TODO fix hard coded path
202 ubuntu@$control_ip:"/bottlenecks/rubbos/rubbos_results/2015-01-20T081237-0700.tgz" /tmp
205 rm -rf $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
208 bottlenecks_cleanup()
210 echo "Bottlenecks cleanup start $(date)"
212 if heat stack-list; then
213 for stack in $(heat stack-list | grep -e bottlenecks | awk '{print $2}'); do
214 echo "clean up stack $stack"
215 heat stack-delete $stack || true
220 if glance image-list; then
221 for image in $(glance image-list | grep -e $IMAGE_NAME | awk '{print $2}'); do
222 echo "clean up image $image"
223 glance image-delete $image || true
227 if nova keypair-list; then
228 for key in $(nova keypair-list | grep -e $KEY_NAME | awk '{print $2}'); do
229 echo "clean up key $key"
230 nova keypair-delete $key || true
234 if nova flavor-list; then
235 for flavor in $(nova flavor-list | grep -e $FLAVOR_NAME | awk '{print $2}'); do
236 echo "clean up flavor $flavor"
237 nova flavor-delete $flavor || true
241 echo "Bottlenecks cleanup end $(date)"
244 bottlenecks_load_bottlenecks_image()
246 echo "Bottlenecks load image start $(date)"
248 curl --connect-timeout 10 -o /tmp/bottlenecks-trusty-server.img $IMAGE_URL -v
250 result=$(glance image-create \
252 --disk-format qcow2 \
253 --container-format bare \
254 --file /tmp/bottlenecks-trusty-server.img)
257 rm -rf /tmp/bottlenecks-trusty-server.img
259 IMAGE_ID_BOTTLENECKS=$(echo "$result" | grep " id " | awk '{print $(NF-1)}')
260 if [ -z "$IMAGE_ID_BOTTLENECKS" ]; then
261 echo 'failed to upload bottlenecks image to openstack'
265 echo "bottlenecks image end id: $IMAGE_ID_BOTTLENECKS $(date)"
270 echo "main start $(date)"
272 BOTTLENECKS_DEBUG=True
273 BOTTLENECKS_REPO=https://gerrit.opnfv.org/gerrit/bottlenecks
274 BOTTLENECKS_REPO_DIR=/tmp/opnfvrepo/bottlenecks
275 RELENG_REPO=https://gerrit.opnfv.org/gerrit/releng
276 RELENG_REPO_DIR=/tmp/opnfvrepo/releng
277 IMAGE_NAME=bottlenecks-trusty-server
278 KEY_PATH=$BOTTLENECKS_REPO_DIR/utils/infra_setup/bottlenecks_key
279 HOT_PATH=$BOTTLENECKS_REPO_DIR/utils/infra_setup/heat_template
280 KEY_NAME=bottlenecks-key
281 FLAVOR_NAME=bottlenecks-flavor
282 TEMPLATE_NAME=bottlenecks_rubbos_hot.yaml
283 ssh_args="-o StrictHostKeyChecking=no -o BatchMode=yes -i $KEY_PATH/bottlenecks_key"
284 : ${EXTERNAL_NET:='net04_ext'}
285 : ${PACKAGE_URL:='http://artifacts.opnfv.org/bottlenecks'}
286 : ${NODE_NAME:='opnfv-jump-2'}
287 : ${INSTALLER_TYPE:='fuel'}
288 : ${INSTALLER_IP:='10.20.0.2'}
289 : ${BOTTLENECKS_VERSION:='master'}
290 : ${BOTTLENECKS_DB_TARGET:='213.77.62.197'}
291 IMAGE_URL=${PACKAGE_URL}/rubbos/bottlenecks-trusty-server.img
293 bottlenecks_env_prepare
296 bottlenecks_load_bottlenecks_image
297 bottlenecks_create_instance
298 bottlenecks_check_instance_ok
299 bottlenecks_rubbos_run
301 echo "main end $(date)"