JIRA: BOTTLENECKS-29
[bottlenecks.git] / utils / infra_setup / heat_template / vstf_heat_template / launch_vstf.sh
1 #!/bin/bash
2
3 set -x
4
5 STACK_NAME="vstf"
6 VM_MANAGER_USER="root"
7 VM_MANAGER_PASSWD="root"
8 VM_TARGET_USER="root"
9 VM_TARGET_PASSWD="root"
10 VM_TESTER_USER="root"
11 VM_TESTER_PASSWD="root"
12 RABBITMQ_PORT="5672"
13
14 #load func
15 source ./ssh.sh
16 source ./scp.sh
17
18 function fn_parser_ipaddress(){
19     #parser and get output ipaddress
20     manager_control_private_ip=`heat output-show ${STACK_NAME} manager_control_private_ip | sed 's/\"//g'`
21     manager_control_public_ip=`heat output-show ${STACK_NAME} manager_control_public_ip | sed 's/\"//g'`
22     echo "manager_control_private_ip = ${manager_control_private_ip}"
23     ping -c 5 ${manager_control_private_ip}
24     echo "manager_control_public_ip = ${manager_control_public_ip}"
25     ping -c 5 ${manager_control_public_ip}
26     target_control_private_ip=`heat output-show ${STACK_NAME} target_control_private_ip | sed 's/\"//g'`
27     target_control_public_ip=`heat output-show ${STACK_NAME} target_control_public_ip | sed 's/\"//g'`
28     echo "target_control_private_ip = ${target_control_private_ip}"
29     ping -c 5 ${target_control_private_ip}
30     echo "target_control_public_ip = ${target_control_public_ip}"
31     ping -c 5 ${target_control_public_ip}
32     tester_control_private_ip=`heat output-show ${STACK_NAME} tester_control_private_ip | sed 's/\"//g'`
33     tester_control_public_ip=`heat output-show ${STACK_NAME} tester_control_public_ip | sed 's/\"//g'`
34     echo "tester_control_private_ip = ${tester_control_private_ip}"
35     ping -c 5 ${tester_control_private_ip}
36     echo "tester_control_public_ip = ${tester_control_public_ip}"
37     ping -c 5 ${tester_control_public_ip}
38
39     local ipaddr=""
40     for ipaddr in ${manager_control_private_ip} ${manager_control_public_ip} ${target_control_private_ip} \
41                   ${target_control_public_ip} ${tester_control_private_ip} ${tester_control_public_ip}
42     do
43         if [ "${ipaddr}x" == "x" ]
44         then
45             echo "[ERROR]The ipaddress is null ,get ip from heat output failed"
46             exit 1
47         fi
48     done
49
50     return 0
51 }
52
53 function fn_generate_amqp(){
54     local node_type=$1
55     if [ "${node_type}" == "manager" ]
56     then
57         return 0
58     elif [ "${node_type}" == "target" -o "${node_type}" == "tester" ]
59     then
60         echo "[rabbit]" > ./vstf-${node_type}.ini
61         echo "user=guest" >> ./vstf-${node_type}.ini
62         echo "passwd=guest" >> ./vstf-${node_type}.ini
63         echo "host=${manager_control_private_ip}" >> ./vstf-${node_type}.ini
64         echo "port=${RABBITMQ_PORT}" >> ./vstf-${node_type}.ini
65         echo "id=\"${node_type}\"" >> ./vstf-${node_type}.ini
66     else
67         echo "[ERROR]node type ${node_type} does not exist"
68         exit 1
69     fi
70     return 0
71 }
72
73 function fn_provision_agent_file(){
74
75     apt-get -y install expect
76     #manager
77     fn_generate_amqp "manager"
78
79     #target
80     fn_generate_amqp "target"
81     #scp_cmd ${target_control_public_ip} ${VM_TARGET_USER} ${VM_TARGET_PASSWD} "./vstf-target.ini" "/etc/vstf/amqp/amqp.ini" "file"
82
83     #tester
84     fn_generate_amqp "tester"
85     #scp_cmd ${tester_control_public_ip} ${VM_TESTER_USER} ${VM_TESTER_PASSWD} "./vstf-tester.ini" "/etc/vstf/amqp/amqp.ini" "file"
86
87     return 0
88 }
89
90 function fn_launch_vstf_process(){
91
92     #launch manager
93     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}"
94     run_cmd ${manager_control_public_ip} ${VM_MANAGER_USER} ${VM_MANAGER_PASSWD} "${manager_cmd}"
95
96     #launch target agent
97     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"
98     run_cmd ${target_control_public_ip} ${VM_TARGET_USER} ${VM_TARGET_PASSWD} "${target_cmd}"
99
100     #launch tester agent
101     run_cmd ${tester_control_public_ip} ${VM_TESTER_USER} ${VM_TESTER_PASSWD} "${target_cmd}"
102
103     return 0
104 }
105
106 function main(){
107     fn_parser_ipaddress
108     fn_provision_agent_file
109     #fn_launch_vstf_process
110     return 0
111 }
112
113 main
114 set +x