3 # Copyright (c) 2015 Brocade Communications Systems, Inc. and others. All rights reserved.
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
11 echo "#################################################"
12 echo "## Configure Cluster and Start ##"
13 echo "#################################################"
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
20 # Create the list of controllers from the CONTROLLER_LIST variable
21 ODL_SYSTEM_IPS=( ${ODL_SYSTEM_IP_LIST//,/ } )
23 # Utility function for joining strings.
29 final=${final}${delim}${str}
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.
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}\\\"
45 data_seed_list=$(join ${data_seed_nodes[@]})
46 rpc_seed_list=$(join ${rpc_seed_nodes[@]})
47 member_name_list=$(join ${member_names[@]})
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}
55 # Create the configuration script to be run on controllers.
56 cat > ${WORKSPACE}/configuration-script.sh <<EOF
58 CONTROLLERID="member-\$1"
61 echo "Configuring hostname in akka.conf"
62 sed -i -e "s:{{HOST}}:\${CONTROLLERIP}:" ${AKKACONF}
64 echo "Configuring data seed nodes in akka.conf"
65 sed -i -e "s/{{{DS_SEED_NODES}}}/[${data_seed_list}]/g" ${AKKACONF}
67 echo "Configuring rpc seed nodes in akka.conf"
68 sed -i -e "s/{{{RPC_SEED_NODES}}}/[${rpc_seed_list}]/g" ${AKKACONF}
70 echo "Define unique name in akka.conf"
71 sed -i -e "s/{{MEMBER_NAME}}/\${CONTROLLERID}/g" ${AKKACONF}
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}
82 echo "Dump modules.conf"
85 echo "Dump module-shards.conf"
86 cat ${MODULESHARDSCONF}
88 echo "Starting controller..."
89 /tmp/${BUNDLEFOLDER}/bin/start
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[@]}"
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]}"
107 # vim: ts=4 sw=4 sts=4 et ft=sh :