35b7f08c04b8e1c9f35f1146d96153f77d4c09b5
[releng/builder.git] / jjb / integration / include-raw-integration-configure-clustering.sh
1 echo "#################################################"
2 echo "##         Configure Cluster and Start         ##"
3 echo "#################################################"
4
5 AKKACONF=/tmp/${BUNDLEFOLDER}/configuration/initial/akka.conf
6 MODULESCONF=/tmp/${BUNDLEFOLDER}/configuration/initial/modules.conf
7 MODULESHARDSCONF=/tmp/${BUNDLEFOLDER}/configuration/initial/module-shards.conf
8 JOLOKIACONF=/tmp/${BUNDLEFOLDER}/deploy/jolokia.xml
9
10 # Utility function for joining strings.
11 function join {
12     delim=',\n\t\t'
13     final=$1; shift
14
15     for str in $* ; do
16         final=${final}${delim}${str}
17     done
18
19     echo ${final}
20 }
21
22 # Create the strings for data and rpc seed nodes
23 # First create various arrays with one element per controller.
24 # Then merge each array using the join utility defined above.
25
26 for i in `seq 1 ${NUM_ODL_SYSTEM}` ; do
27     CONTROLLERIP=ODL_SYSTEM_${i}_IP
28     data_seed_nodes[$i]=\\\"akka.tcp:\\/\\/opendaylight-cluster-data@${!CONTROLLERIP}:2550\\\"
29     rpc_seed_nodes[$i]=\\\"akka.tcp:\\/\\/odl-cluster-rpc@${!CONTROLLERIP}:2551\\\"
30     member_names[$i]=\\\"member-${i}\\\"
31 done
32
33 data_seed_list=$(join ${data_seed_nodes[@]})
34 rpc_seed_list=$(join ${rpc_seed_nodes[@]})
35 member_name_list=$(join ${member_names[@]})
36
37 # echo ${data_seed_list}
38 # echo ${rpc_seed_list}
39 # echo ${member_name_list}
40
41 # Create the configuration script to be run on controllers.
42 cat > ${WORKSPACE}/configuration-script.sh <<EOF
43
44 CONTROLLERID="member-\$1"
45 CONTROLLERIP=\$2
46
47 echo "Configuring hostname in akka.conf"
48 sed -i -e "s:{{HOST}}:\${CONTROLLERIP}:" ${AKKACONF}
49
50 echo "Configuring data seed nodes in akka.conf"
51 sed -i -e "s/{{{DS_SEED_NODES}}}/[${data_seed_list}]/g" ${AKKACONF}
52
53 echo "Configuring rpc seed nodes in akka.conf"
54 sed -i -e "s/{{{RPC_SEED_NODES}}}/[${rpc_seed_list}]/g" ${AKKACONF}
55
56 echo "Define unique name in akka.conf"
57 sed -i -e "s/{{MEMBER_NAME}}/\${CONTROLLERID}/g" ${AKKACONF}
58
59 echo "Define replication type in module-shards.conf"
60 sed -i -e "s/{{{REPLICAS_1}}}/[${member_name_list}]/g" ${MODULESHARDSCONF}
61 sed -i -e "s/{{{REPLICAS_2}}}/[${member_name_list}]/g" ${MODULESHARDSCONF}
62 sed -i -e "s/{{{REPLICAS_3}}}/[${member_name_list}]/g" ${MODULESHARDSCONF}
63 sed -i -e "s/{{{REPLICAS_4}}}/[${member_name_list}]/g" ${MODULESHARDSCONF}
64
65 echo "Dump akka.conf"
66 cat ${AKKACONF}
67
68 echo "Dump modules.conf"
69 cat ${MODULESCONF}
70
71 echo "Dump module-shards.conf"
72 cat ${MODULESHARDSCONF}
73
74 echo "Starting controller..."
75 /tmp/${BUNDLEFOLDER}/bin/start
76
77 EOF
78
79 # Copy over the configuration script and configuration files to each controller
80 # Execute the configuration script on each controller.
81 for i in `seq 1 ${NUM_ODL_SYSTEM}`
82 do
83     CONTROLLERIP=ODL_SYSTEM_${i}_IP
84     echo "Configuring member-${i} with IP address ${!CONTROLLERIP}"
85     ssh ${!CONTROLLERIP} "mkdir /tmp/${BUNDLEFOLDER}/configuration/initial"
86     scp  ${WORKSPACE}/test/tools/clustering/cluster-deployer/templates/multi-node-test/akka.conf.template ${!CONTROLLERIP}:${AKKACONF}
87     scp  ${WORKSPACE}/test/tools/clustering/cluster-deployer/templates/multi-node-test/modules.conf.template ${!CONTROLLERIP}:${MODULESCONF}
88     scp  ${WORKSPACE}/test/tools/clustering/cluster-deployer/templates/multi-node-test/module-shards.conf.template ${!CONTROLLERIP}:${MODULESHARDSCONF}
89     scp  ${WORKSPACE}/test/tools/clustering/cluster-deployer/templates/multi-node-test/jolokia.xml.template ${!CONTROLLERIP}:${JOLOKIACONF}
90     scp  ${WORKSPACE}/configuration-script.sh    ${!CONTROLLERIP}:/tmp/
91     ssh ${!CONTROLLERIP} "bash /tmp/configuration-script.sh ${i} ${!CONTROLLERIP}"
92 done
93
94 # vim: ts=4 sw=4 sts=4 et ft=sh :
95