bugfix for vstf stack name
[bottlenecks.git] / utils / infra_setup / heat_template / vstf_heat_template / launch_vstf.sh
1 #!/bin/bash
2 ##############################################################################
3 # Copyright (c) 2015 Huawei Technologies Co.,Ltd and others.
4 #
5 # All rights reserved. This program and the accompanying materials
6 # are made available under the terms of the Apache License, Version 2.0
7 # which accompanies this distribution, and is available at
8 # http://www.apache.org/licenses/LICENSE-2.0
9 ##############################################################################
10 set -x
11
12 STACK_NAME="bottlenecks_vstf_stack"
13 VM_MANAGER_USER="root"
14 VM_MANAGER_PASSWD="root"
15 VM_TARGET_USER="root"
16 VM_TARGET_PASSWD="root"
17 VM_TESTER_USER="root"
18 VM_TESTER_PASSWD="root"
19 RABBITMQ_PORT="5672"
20
21 #load func
22 #source ./ssh.sh
23 #source ./scp.sh
24
25 function fn_parser_ipaddress(){
26     #parser and get output ipaddress
27     manager_control_private_ip=`heat output-show ${STACK_NAME} manager_control_private_ip | sed 's/\"//g'`
28     manager_control_public_ip=`heat output-show ${STACK_NAME} manager_control_public_ip | sed 's/\"//g'`
29     echo "manager_control_private_ip = ${manager_control_private_ip}"
30     #ping -c 5 ${manager_control_private_ip}
31     echo "manager_control_public_ip = ${manager_control_public_ip}"
32     ping -c 5 ${manager_control_public_ip}
33     target_control_private_ip=`heat output-show ${STACK_NAME} target_control_private_ip | sed 's/\"//g'`
34     target_control_public_ip=`heat output-show ${STACK_NAME} target_control_public_ip | sed 's/\"//g'`
35     echo "target_control_private_ip = ${target_control_private_ip}"
36     #ping -c 5 ${target_control_private_ip}
37     echo "target_control_public_ip = ${target_control_public_ip}"
38     ping -c 5 ${target_control_public_ip}
39     tester_control_private_ip=`heat output-show ${STACK_NAME} tester_control_private_ip | sed 's/\"//g'`
40     tester_control_public_ip=`heat output-show ${STACK_NAME} tester_control_public_ip | sed 's/\"//g'`
41     echo "tester_control_private_ip = ${tester_control_private_ip}"
42     #ping -c 5 ${tester_control_private_ip}
43     echo "tester_control_public_ip = ${tester_control_public_ip}"
44     ping -c 5 ${tester_control_public_ip}
45
46     #get testing ipaddress
47     tester_testing_ip=`nova list | grep "vstf-tester" | grep "bottlenecks-testing" | awk -F'bottlenecks-testing=' '{print $2}' | awk '{print $1}'`
48     target_testing_ip=`nova list | grep "vstf-target" | grep "bottlenecks-testing" | awk -F'bottlenecks-testing=' '{print $2}' | awk '{print $1}'`
49     echo "tester_testing_ip = ${tester_testing_ip}"
50     echo "target_testing_ip = ${target_testing_ip}"
51     
52     #config ip for the testing plane
53     ssh-keygen -f "/home/jenkins-ci/.ssh/known_hosts" -R ${target_control_public_ip}
54     sshpass -p root ssh -o StrictHostKeyChecking=no root@${target_control_public_ip} "ifconfig eth1 ${target_testing_ip}/24;sleep 4"
55     ssh-keygen -f "/home/jenkins-ci/.ssh/known_hosts" -R ${tester_control_public_ip}
56     sshpass -p root ssh -o StrictHostKeyChecking=no root@${tester_control_public_ip} "ifconfig eth1 ${tester_testing_ip}/24;sleep 4"
57     #ping with each other
58     ssh-keygen -f "/home/jenkins-ci/.ssh/known_hosts" -R ${target_control_public_ip}
59     sshpass -p root ssh -o StrictHostKeyChecking=no root@${target_control_public_ip} "ping -c 10 ${tester_testing_ip}"
60     
61     ssh-keygen -f "/home/jenkins-ci/.ssh/known_hosts" -R ${tester_control_public_ip}
62     sshpass -p root ssh -o StrictHostKeyChecking=no root@${tester_control_public_ip} "ping -c 10 ${target_testing_ip}"
63
64     local ipaddr=""
65     for ipaddr in ${manager_control_private_ip} ${manager_control_public_ip} ${target_control_private_ip} \
66                   ${target_control_public_ip} ${tester_control_private_ip} ${tester_control_public_ip}
67     do
68         if [ "${ipaddr}x" == "x" ]
69         then
70             echo "[ERROR]The ipaddress is null ,get ip from heat output failed"
71             exit 1
72         fi
73     done
74
75     return 0
76 }
77
78 function fn_generate_amqp(){
79     local node_type=$1
80     if [ "${node_type}" == "manager" ]
81     then
82         return 0
83     elif [ "${node_type}" == "target" -o "${node_type}" == "tester" ]
84     then
85         echo "[rabbit]" > ./vstf-${node_type}.ini
86         echo "user=guest" >> ./vstf-${node_type}.ini
87         echo "passwd=guest" >> ./vstf-${node_type}.ini
88         echo "host=${manager_control_private_ip}" >> ./vstf-${node_type}.ini
89         echo "port=${RABBITMQ_PORT}" >> ./vstf-${node_type}.ini
90         echo "id=\"${node_type}\"" >> ./vstf-${node_type}.ini
91     else
92         echo "[ERROR]node type ${node_type} does not exist"
93         exit 1
94     fi
95     return 0
96 }
97
98 function fn_provision_agent_file(){
99
100     #apt-get -y install expect
101     #manager
102     fn_generate_amqp "manager"
103     
104     #target
105     fn_generate_amqp "target"
106     #scp_cmd ${target_control_public_ip} ${VM_TARGET_USER} ${VM_TARGET_PASSWD} "./vstf-target.ini" "/etc/vstf/amqp/amqp.ini" "file"
107     ssh-keygen -f "/home/jenkins-ci/.ssh/known_hosts" -R ${target_control_public_ip}
108     sshpass -p root scp -o StrictHostKeyChecking=no "./vstf-target.ini" root@${target_control_public_ip}:/etc/vstf/amqp/amqp.ini
109     #tester
110     fn_generate_amqp "tester"
111     #scp_cmd ${tester_control_public_ip} ${VM_TESTER_USER} ${VM_TESTER_PASSWD} "./vstf-tester.ini" "/etc/vstf/amqp/amqp.ini" "file"
112     ssh-keygen -f "/home/jenkins-ci/.ssh/known_hosts" -R ${tester_control_public_ip}
113     sshpass -p root scp -o StrictHostKeyChecking=no "./vstf-tester.ini" root@${tester_control_public_ip}:/etc/vstf/amqp/amqp.ini
114
115     return 0
116 }
117
118 function fn_launch_vstf_process(){
119
120     #launch manager
121     local manager_cmd="vstf-manager stop;pkill vstf-manager;rm -rf /opt/vstf/vstf-server.pid;vstf-manager start --monitor ${manager_control_private_ip} --port ${RABBITMQ_PORT}"
122     #run_cmd ${manager_control_public_ip} ${VM_MANAGER_USER} ${VM_MANAGER_PASSWD} "${manager_cmd}"
123     ssh-keygen -f "/home/jenkins-ci/.ssh/known_hosts" -R ${manager_control_public_ip}
124     sshpass -p root ssh -o StrictHostKeyChecking=no root@${manager_control_public_ip} "ifconfig -a"
125     sshpass -p root ssh -o StrictHostKeyChecking=no root@${manager_control_public_ip} "${manager_cmd}"
126     
127     #launch target agent
128     local target_cmd="vstf-agent stop;pkill vstf-agent;rm -rf /tmp/esp_rpc_client.pid;vstf-agent start --config_file=/etc/vstf/amqp/amqp.ini"
129     #run_cmd ${target_control_public_ip} ${VM_TARGET_USER} ${VM_TARGET_PASSWD} "${target_cmd}"
130     ssh-keygen -f "/home/jenkins-ci/.ssh/known_hosts" -R ${target_control_public_ip}
131     sshpass -p root ssh -o StrictHostKeyChecking=no root@${target_control_public_ip} "ifconfig -a"
132     sshpass -p root ssh -o StrictHostKeyChecking=no root@${target_control_public_ip} "${target_cmd}"
133     
134     #launch tester agent
135     #run_cmd ${tester_control_public_ip} ${VM_TESTER_USER} ${VM_TESTER_PASSWD} "${target_cmd}"
136     ssh-keygen -f "/home/jenkins-ci/.ssh/known_hosts" -R ${tester_control_public_ip}
137     sshpass -p root ssh -o StrictHostKeyChecking=no root@${tester_control_public_ip} "ifconfig -a"
138     sshpass -p root ssh -o StrictHostKeyChecking=no root@${tester_control_public_ip} "${target_cmd}"
139
140     return 0
141 }
142
143 function main(){
144     fn_parser_ipaddress
145     fn_provision_agent_file
146     fn_launch_vstf_process
147     cmd="rabbitmqctl list_queues"
148     sleep 20
149     #${manager_control_public_ip} ${VM_MANAGER_USER} ${VM_MANAGER_PASSWD} "${cmd}"
150     ssh-keygen -f "/home/jenkins-ci/.ssh/known_hosts" -R ${manager_control_public_ip}
151     sshpass -p root ssh -o StrictHostKeyChecking=no root@${manager_control_public_ip} "${cmd}"
152     return 0
153 }
154
155 main
156 set +x