Added yaml for Lithium
[releng/builder.git] / jjb / integration / include-raw-integration-configure-clustering-list.sh
1 #!/bin/bash
2 #
3 # Copyright (c) 2015 Brocade Communications Systems, Inc. and others.  All rights reserved.
4 #
5 # This program and the accompanying materials are made available under the
6 # terms of the Eclipse Public License v1.0 which accompanies this distribution,
7 # and is available at http://www.eclipse.org/legal/epl-v10.html
8 #
9
10
11 echo "#################################################"
12 echo "##         Configure Cluster and Start         ##"
13 echo "#################################################"
14
15 AKKACONF=/tmp/${BUNDLEFOLDER}/configuration/initial/akka.conf
16 MODULESCONF=/tmp/${BUNDLEFOLDER}/configuration/initial/modules.conf
17 MODULESHARDSCONF=/tmp/${BUNDLEFOLDER}/configuration/initial/module-shards.conf
18 JOLOKIACONF=/tmp/${BUNDLEFOLDER}/deploy/jolokia.xml
19
20 # Create the list of controllers from the CONTROLLER_LIST variable
21 ODL_SYSTEM_IPS=( ${ODL_SYSTEM_IP_LIST//,/ } )
22
23 # Utility function for joining strings.
24 function join {
25     delim=',\n\t\t'
26     final=$1; shift
27
28     for str in $* ; do
29         final=${final}${delim}${str}
30     done
31
32     echo ${final}
33 }
34
35 # Create the strings for data and rpc seed nodes
36 # First create various arrays with one element per controller.
37 # Then merge each array using the join utility defined above.
38 count=1
39 for ip in ${ODL_SYSTEM_IPS[@]} ; do
40    data_seed_nodes[$count]=\\\"akka.tcp:\\/\\/opendaylight-cluster-data@${ip}:2550\\\"
41    rpc_seed_nodes[$count]=\\\"akka.tcp:\\/\\/odl-cluster-rpc@${ip}:2551\\\"
42    member_names[$count]=\\\"member-${count}\\\"
43    count=$[count + 1]
44 done
45 data_seed_list=$(join ${data_seed_nodes[@]})
46 rpc_seed_list=$(join ${rpc_seed_nodes[@]})
47 member_name_list=$(join ${member_names[@]})
48
49 # echo ${ODL_SYSTEM_IP_LIST}
50 # echo ${ODL_SYSTEM_IPS[@]}
51 # echo ${data_seed_list}
52 # echo ${rpc_seed_list}
53 # echo ${member_name_list}
54
55 # Create the configuration script to be run on controllers.
56 cat > ${WORKSPACE}/configuration-script.sh <<EOF
57
58 CONTROLLERID="member-\$1"
59 CONTROLLERIP=\$2
60
61 echo "Configuring hostname in akka.conf"
62 sed -i -e "s:{{HOST}}:\${CONTROLLERIP}:" ${AKKACONF}
63
64 echo "Configuring data seed nodes in akka.conf"
65 sed -i -e "s/{{{DS_SEED_NODES}}}/[${data_seed_list}]/g" ${AKKACONF}
66
67 echo "Configuring rpc seed nodes in akka.conf"
68 sed -i -e "s/{{{RPC_SEED_NODES}}}/[${rpc_seed_list}]/g" ${AKKACONF}
69
70 echo "Define unique name in akka.conf"
71 sed -i -e "s/{{MEMBER_NAME}}/\${CONTROLLERID}/g" ${AKKACONF}
72
73 echo "Define replication type in module-shards.conf"
74 sed -i -e "s/{{{REPLICAS_1}}}/[${member_name_list}]/g" ${MODULESHARDSCONF}
75 sed -i -e "s/{{{REPLICAS_2}}}/[${member_name_list}]/g" ${MODULESHARDSCONF}
76 sed -i -e "s/{{{REPLICAS_3}}}/[${member_name_list}]/g" ${MODULESHARDSCONF}
77 sed -i -e "s/{{{REPLICAS_4}}}/[${member_name_list}]/g" ${MODULESHARDSCONF}
78
79 echo "Dump akka.conf"
80 cat ${AKKACONF}
81
82 echo "Dump modules.conf"
83 cat ${MODULESCONF}
84
85 echo "Dump module-shards.conf"
86 cat ${MODULESHARDSCONF}
87
88 echo "Starting controller..."
89 /tmp/${BUNDLEFOLDER}/bin/start
90
91 EOF
92
93 # Copy over the configuration script and configuration files to each controller
94 # Execute the configuration script on each controller.
95 for i in "${!ODL_SYSTEM_IPS[@]}"
96 do
97     echo "Configuring member-$((i+1)) with IP address ${ODL_SYSTEM_IPS[$i]}"
98     ssh ${ODL_SYSTEM_IPS[$i]} "mkdir /tmp/${BUNDLEFOLDER}/configuration/initial"
99     scp  ${WORKSPACE}/test/tools/clustering/cluster-deployer/templates/openflow/akka.conf.template ${ODL_SYSTEM_IPS[$i]}:${AKKACONF}
100     scp  ${WORKSPACE}/test/tools/clustering/cluster-deployer/templates/openflow/modules.conf.template ${ODL_SYSTEM_IPS[$i]}:${MODULESCONF}
101     scp  ${WORKSPACE}/test/tools/clustering/cluster-deployer/templates/openflow/module-shards.conf.template ${ODL_SYSTEM_IPS[$i]}:${MODULESHARDSCONF}
102     scp  ${WORKSPACE}/test/tools/clustering/cluster-deployer/templates/openflow/jolokia.xml.template ${ODL_SYSTEM_IPS[$i]}:${JOLOKIACONF}
103     scp  ${WORKSPACE}/configuration-script.sh    ${ODL_SYSTEM_IPS[$i]}:/tmp/
104     ssh ${ODL_SYSTEM_IPS[$i]} "bash /tmp/configuration-script.sh $((i+1)) ${ODL_SYSTEM_IPS[$i]}"
105 done
106
107 # vim: ts=4 sw=4 sts=4 et ft=sh :
108