7 if git cat-file -e $1^{commit} 2>/dev/null; then
8 # branch, tag or sha1 object
12 git fetch --tags --progress $2 $1
13 git checkout FETCH_HEAD
17 bottlenecks_env_prepare() {
19 echo "Bottlenecks env prepare start $(date)"
20 git config --global http.sslVerify false
22 if [ ! -d $BOTTLENECKS_REPO_DIR ]; then
23 git clone $BOTTLENECKS_REPO $BOTTLENECKS_REPO_DIR
25 cd $BOTTLENECKS_REPO_DIR
26 git checkout master && git pull
27 git_checkout $BOTTLENECKS_BRANCH $BOTTLENECKS_REPO
30 echo "Creating openstack credentials .."
31 if [ ! -d $RELENG_REPO_DIR ]; then
32 git clone $RELENG_REPO $RELENG_REPO_DIR
35 git checkout master && git pull
36 git_checkout $RELENG_BRANCH $RELENG_REPO
39 # Create openstack credentials
40 $RELENG_REPO_DIR/utils/fetch_os_creds.sh \
42 -i ${INSTALLER_TYPE} -a ${INSTALLER_IP}
46 chmod 600 $KEY_PATH/bottlenecks_key
48 echo "Bottlenecks env prepare end $(date)"
52 wait_heat_stack_complete() {
56 status=$(heat stack-list | grep bottlenecks | awk '{print $6}')
57 if [ x$status = x"CREATE_COMPLETE" ]; then
58 echo "bottlenecks stacke create complete"
59 heat stack-show bottlenecks
60 nova list | grep rubbos_
62 elif [ x$status = x"CREATE_FAILED" ]; then
63 echo "bottlenecks stacke create failed !!!"
64 heat stack-show bottlenecks
68 #if [ $BOTTLENECKS_DEBUG = True ]; then
70 heat stack-show bottlenecks
71 nova list | grep rubbos_
72 for i in $(nova list | grep rubbos_ | grep ERROR | awk '{print $2}')
79 if [[ $retry -ge $1 ]];then
80 echo "Heat stack create timeout, status $status !!!"
86 wait_rubbos_control_ok() {
87 control_ip=$(nova list | grep rubbos_control | awk '{print $13}')
90 until timeout 3s ssh $ssh_args ubuntu@$control_ip "exit" >/dev/null 2>&1
92 echo "retry connect rubbos control $retry"
95 if [[ $retry -ge $1 ]];then
96 echo "rubbos control start timeout !!!"
100 ssh $ssh_args ubuntu@$control_ip "uname -a"
103 bottlenecks_check_instance_ok()
105 echo "Bottlenecks check instance ok start $(date)"
107 wait_heat_stack_complete 120
108 wait_rubbos_control_ok 300
109 nova list | grep rubbos_
110 if [ $BOTTLENECKS_DEBUG = True ]; then
114 for i in rubbos_benchmark rubbos_client1 rubbos_client2 rubbos_client3 \
115 rubbos_client4 rubbos_control rubbos_httpd rubbos_mysql1 rubbos_tomcat1
118 nova console-log $i | tail -n 2 | grep Cloud-init | grep finished
122 if [ $i = rubbos_tomcat1 ]; then
123 echo "all vm Cloud-init finished!"
132 echo "Bottlenecks check instance ok end $(date)"
135 bottlenecks_create_instance()
137 echo "Bottlenecks create instance using heat template start $(date)"
139 echo "upload keypair"
140 nova keypair-add --pub_key $KEY_PATH/bottlenecks_key.pub $KEY_NAME
143 nova flavor-create $FLAVOR_NAME 200 4096 20 2
145 echo "use heat template to create stack"
147 heat stack-create bottlenecks -f ${TEMPLATE_NAME} \
148 -P "image=$IMAGE_NAME;key_name=$KEY_NAME;public_net=$EXTERNAL_NET;flavor=$FLAVOR_NAME"
150 echo "Bottlenecks create instance using heat template end $(date)"
153 bottlenecks_rubbos_wait_finish()
155 echo "Start checking rubbos running status..."
159 ssh $ssh_args ubuntu@$control_ip "FILE=/tmp/rubbos_finished; if [ -f \$FILE ]; then exit 0; else exit 1; fi"
161 echo "Rubbos test case successfully finished :)"
164 echo "Rubbos running $retry ..."
167 if [[ $retry -ge $1 ]]; then
168 echo "Rubbos test case timeout :("
174 bottlenecks_rubbos_run()
177 control_ip=$(nova list | grep rubbos_control | awk '{print $13}')
178 for i in rubbos_benchmark rubbos_client1 rubbos_client2 rubbos_client3 \
179 rubbos_client4 rubbos_control rubbos_httpd rubbos_mysql1 \
182 ip=$(nova list | grep $i | awk '{print $12}' | awk -F [=,] '{print $2}')
183 echo "$i=$ip" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
186 nameserver_ip=$(grep -m 1 '^nameserver' \
187 /etc/resolv.conf | awk '{ print $2 '})
188 echo "nameserver_ip=$nameserver_ip" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
190 echo "GERRIT_REFSPEC_DEBUG=$GERRIT_REFSPEC_DEBUG" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
191 echo "BOTTLENECKS_BRANCH=$BOTTLENECKS_BRANCH" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
193 echo "NODE_NAME=$NODE_NAME" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
194 echo "INSTALLER_TYPE=$INSTALLER_TYPE" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
195 echo "BOTTLENECKS_VERSION=$BOTTLENECKS_VERSION" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
196 echo "BOTTLENECKS_DB_TARGET=$BOTTLENECKS_DB_TARGET" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
197 echo "PACKAGE_URL=$PACKAGE_URL" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
200 $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup \
201 ubuntu@$control_ip:/tmp
203 ubuntu@$control_ip "bash /tmp/vm_dev_setup/setup_env.sh" &
205 bottlenecks_rubbos_wait_finish 200
207 if [ x"$GERRIT_REFSPEC_DEBUG" != x ]; then
208 # TODO fix hard coded path
210 ubuntu@$control_ip:"/bottlenecks/rubbos/rubbos_results/2015-01-20T081237-0700.tgz" /tmp
213 rm -rf $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf
216 bottlenecks_cleanup()
218 echo "Bottlenecks cleanup start $(date)"
220 if heat stack-list; then
221 for stack in $(heat stack-list | grep -e bottlenecks | awk '{print $2}'); do
222 echo "clean up stack $stack"
223 heat stack-delete $stack || true
228 if glance image-list; then
229 for image in $(glance image-list | grep -e $IMAGE_NAME | awk '{print $2}'); do
230 echo "clean up image $image"
231 glance image-delete $image || true
235 if nova keypair-list; then
236 for key in $(nova keypair-list | grep -e $KEY_NAME | awk '{print $2}'); do
237 echo "clean up key $key"
238 nova keypair-delete $key || true
242 if nova flavor-list; then
243 for flavor in $(nova flavor-list | grep -e $FLAVOR_NAME | awk '{print $2}'); do
244 echo "clean up flavor $flavor"
245 nova flavor-delete $flavor || true
249 echo "Bottlenecks cleanup end $(date)"
252 bottlenecks_load_bottlenecks_image()
254 echo "Bottlenecks load image start $(date)"
256 curl --connect-timeout 10 -o /tmp/bottlenecks-trusty-server.img $IMAGE_URL -v
258 result=$(glance image-create \
260 --disk-format qcow2 \
261 --container-format bare \
262 --file /tmp/bottlenecks-trusty-server.img)
265 rm -rf /tmp/bottlenecks-trusty-server.img
267 IMAGE_ID_BOTTLENECKS=$(echo "$result" | grep " id " | awk '{print $(NF-1)}')
268 if [ -z "$IMAGE_ID_BOTTLENECKS" ]; then
269 echo 'failed to upload bottlenecks image to openstack'
273 echo "bottlenecks image end id: $IMAGE_ID_BOTTLENECKS $(date)"
278 echo "main start $(date)"
280 : ${BOTTLENECKS_DEBUG:='True'}
281 : ${BOTTLENECKS_REPO:='https://gerrit.opnfv.org/gerrit/bottlenecks'}
282 : ${BOTTLENECKS_REPO_DIR:='/tmp/opnfvrepo/bottlenecks'}
283 : ${BOTTLENECKS_BRANCH:='master'} # branch, tag, sha1 or refspec
284 : ${RELENG_REPO:='https://gerrit.opnfv.org/gerrit/releng'}
285 : ${RELENG_REPO_DIR:='/tmp/opnfvrepo/releng'}
286 : ${RELENG_BRANCH:='master'} # branch, tag, sha1 or refspec
287 : ${IMAGE_NAME:='bottlenecks-trusty-server'}
288 KEY_PATH=$BOTTLENECKS_REPO_DIR/utils/infra_setup/bottlenecks_key
289 HOT_PATH=$BOTTLENECKS_REPO_DIR/utils/infra_setup/heat_template
290 : ${KEY_NAME:='bottlenecks-key'}
291 : ${FLAVOR_NAME:='bottlenecks-flavor'}
292 : ${TEMPLATE_NAME:='bottlenecks_rubbos_hot.yaml'}
293 ssh_args="-o StrictHostKeyChecking=no -o BatchMode=yes -i $KEY_PATH/bottlenecks_key"
294 : ${EXTERNAL_NET:='net04_ext'}
295 : ${PACKAGE_URL:='http://artifacts.opnfv.org/bottlenecks'}
296 : ${NODE_NAME:='opnfv-jump-2'}
297 : ${INSTALLER_TYPE:='fuel'}
298 : ${INSTALLER_IP:='10.20.0.2'}
299 # TODO fix for dashboard
300 : ${BOTTLENECKS_VERSION:='master'}
301 : ${BOTTLENECKS_DB_TARGET:='213.77.62.197'}
302 IMAGE_URL=${PACKAGE_URL}/rubbos/bottlenecks-trusty-server.img
304 bottlenecks_env_prepare
307 bottlenecks_load_bottlenecks_image
308 bottlenecks_create_instance
309 bottlenecks_check_instance_ok
310 bottlenecks_rubbos_run
312 echo "main end $(date)"