Add ci scripts for vstf tu cases.
[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     #get testing ipaddress
40     tester_testing_ip=`nova list | grep "vstf-tester" | grep "bottlenecks-testing" | awk -F'bottlenecks-testing=' '{print $2}' | awk '{print $1}'`
41     target_testing_ip=`nova list | grep "vstf-target" | grep "bottlenecks-testing" | awk -F'bottlenecks-testing=' '{print $2}' | awk '{print $1}'`
42     echo "tester_testing_ip = ${tester_testing_ip}"
43     echo "target_testing_ip = ${target_testing_ip}"
44     
45     #config ip for the testing plane
46     ssh-keygen -f "/home/jenkins-ci/.ssh/known_hosts" -R ${target_control_public_ip}
47     sshpass -p root ssh -o StrictHostKeyChecking=no root@${target_control_public_ip} "ifconfig eth1 ${target_testing_ip}/24;sleep 4"
48     ssh-keygen -f "/home/jenkins-ci/.ssh/known_hosts" -R ${tester_control_public_ip}
49     sshpass -p root ssh -o StrictHostKeyChecking=no root@${tester_control_public_ip} "ifconfig eth1 ${tester_testing_ip}/24;sleep 4"
50     #ping with each other
51     ssh-keygen -f "/home/jenkins-ci/.ssh/known_hosts" -R ${target_control_public_ip}
52     sshpass -p root ssh -o StrictHostKeyChecking=no root@${target_control_public_ip} "ping -c 10 ${tester_testing_ip}"
53     
54     ssh-keygen -f "/home/jenkins-ci/.ssh/known_hosts" -R ${tester_control_public_ip}
55     sshpass -p root ssh -o StrictHostKeyChecking=no root@${tester_control_public_ip} "ping -c 10 ${target_testing_ip}"
56
57     local ipaddr=""
58     for ipaddr in ${manager_control_private_ip} ${manager_control_public_ip} ${target_control_private_ip} \
59                   ${target_control_public_ip} ${tester_control_private_ip} ${tester_control_public_ip}
60     do
61         if [ "${ipaddr}x" == "x" ]
62         then
63             echo "[ERROR]The ipaddress is null ,get ip from heat output failed"
64             exit 1
65         fi
66     done
67
68     return 0
69 }
70
71 function fn_generate_amqp(){
72     local node_type=$1
73     if [ "${node_type}" == "manager" ]
74     then
75         return 0
76     elif [ "${node_type}" == "target" -o "${node_type}" == "tester" ]
77     then
78         echo "[rabbit]" > ./vstf-${node_type}.ini
79         echo "user=guest" >> ./vstf-${node_type}.ini
80         echo "passwd=guest" >> ./vstf-${node_type}.ini
81         echo "host=${manager_control_private_ip}" >> ./vstf-${node_type}.ini
82         echo "port=${RABBITMQ_PORT}" >> ./vstf-${node_type}.ini
83         echo "id=\"${node_type}\"" >> ./vstf-${node_type}.ini
84     else
85         echo "[ERROR]node type ${node_type} does not exist"
86         exit 1
87     fi
88     return 0
89 }
90
91 function fn_provision_agent_file(){
92
93     #apt-get -y install expect
94     #manager
95     fn_generate_amqp "manager"
96     
97     #target
98     fn_generate_amqp "target"
99     #scp_cmd ${target_control_public_ip} ${VM_TARGET_USER} ${VM_TARGET_PASSWD} "./vstf-target.ini" "/etc/vstf/amqp/amqp.ini" "file"
100     ssh-keygen -f "/home/jenkins-ci/.ssh/known_hosts" -R ${target_control_public_ip}
101     sshpass -p root scp -o StrictHostKeyChecking=no "./vstf-target.ini" root@${target_control_public_ip}:/etc/vstf/amqp/amqp.ini
102     #tester
103     fn_generate_amqp "tester"
104     #scp_cmd ${tester_control_public_ip} ${VM_TESTER_USER} ${VM_TESTER_PASSWD} "./vstf-tester.ini" "/etc/vstf/amqp/amqp.ini" "file"
105     ssh-keygen -f "/home/jenkins-ci/.ssh/known_hosts" -R ${tester_control_public_ip}
106     sshpass -p root scp -o StrictHostKeyChecking=no "./vstf-tester.ini" root@${tester_control_public_ip}:/etc/vstf/amqp/amqp.ini
107
108     return 0
109 }
110
111 function fn_launch_vstf_process(){
112
113     #launch manager
114     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}"
115     #run_cmd ${manager_control_public_ip} ${VM_MANAGER_USER} ${VM_MANAGER_PASSWD} "${manager_cmd}"
116     ssh-keygen -f "/home/jenkins-ci/.ssh/known_hosts" -R ${manager_control_public_ip}
117     sshpass -p root ssh -o StrictHostKeyChecking=no root@${manager_control_public_ip} "ifconfig -a"
118     sshpass -p root ssh -o StrictHostKeyChecking=no root@${manager_control_public_ip} "${manager_cmd}"
119     
120     #launch target agent
121     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"
122     #run_cmd ${target_control_public_ip} ${VM_TARGET_USER} ${VM_TARGET_PASSWD} "${target_cmd}"
123     ssh-keygen -f "/home/jenkins-ci/.ssh/known_hosts" -R ${target_control_public_ip}
124     sshpass -p root ssh -o StrictHostKeyChecking=no root@${target_control_public_ip} "ifconfig -a"
125     sshpass -p root ssh -o StrictHostKeyChecking=no root@${target_control_public_ip} "${target_cmd}"
126     
127     #launch tester agent
128     #run_cmd ${tester_control_public_ip} ${VM_TESTER_USER} ${VM_TESTER_PASSWD} "${target_cmd}"
129     ssh-keygen -f "/home/jenkins-ci/.ssh/known_hosts" -R ${tester_control_public_ip}
130     sshpass -p root ssh -o StrictHostKeyChecking=no root@${tester_control_public_ip} "ifconfig -a"
131     sshpass -p root ssh -o StrictHostKeyChecking=no root@${tester_control_public_ip} "${target_cmd}"
132
133     return 0
134 }
135
136 function main(){
137     fn_parser_ipaddress
138     fn_provision_agent_file
139     fn_launch_vstf_process
140     cmd="rabbitmqctl list_queues"
141     sleep 20
142     #${manager_control_public_ip} ${VM_MANAGER_USER} ${VM_MANAGER_PASSWD} "${cmd}"
143     ssh-keygen -f "/home/jenkins-ci/.ssh/known_hosts" -R ${manager_control_public_ip}
144     sshpass -p root ssh -o StrictHostKeyChecking=no root@${manager_control_public_ip} "${cmd}"
145     return 0
146 }
147
148 main
149 set +x