d0f7af7e2563f27ea14e8ea0349d12b1ce016bd0
[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 if [ ${JDKVERSION} == 'openjdk8' ]; then
75     echo "Setting the JRE Version to 8"
76     # dynamic_verify does not allow sudo, JAVA_HOME should be enough for karaf start.
77     # sudo /usr/sbin/alternatives --set java /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.60-2.b27.el7_1.x86_64/jre/bin/java
78     export JAVA_HOME=/usr/lib/jvm/java-1.8.0
79 elif [ ${JDKVERSION} == 'openjdk7' ]; then
80     echo "Setting the JRE Version to 7"
81     # dynamic_verify does not allow sudo, JAVA_HOME should be enough for karaf start.
82     # sudo /usr/sbin/alternatives --set java /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.85-2.6.1.2.el7_1.x86_64/jre/bin/java
83     export JAVA_HOME=/usr/lib/jvm/java-1.7.0
84 fi
85 echo "JAVA_HOME is \${JAVA_HOME}"
86 # Did you know that in HERE documents, single quote is an ordinary character, but backticks are still executing?
87 JAVA_RESOLVED=\`readlink -e "\${JAVA_HOME}/bin/java"\`
88 echo "Java binary pointed at by JAVA_HOME: \${JAVA_RESOLVED}"
89 echo "JDK default version ..."
90 java -version
91
92 echo "Starting controller..."
93 /tmp/${BUNDLEFOLDER}/bin/start
94
95 EOF
96
97 # Copy over the configuration script and configuration files to each controller
98 # Execute the configuration script on each controller.
99 for i in `seq 1 ${NUM_ODL_SYSTEM}`
100 do
101     CONTROLLERIP=ODL_SYSTEM_${i}_IP
102     echo "Configuring member-${i} with IP address ${!CONTROLLERIP}"
103     ssh ${!CONTROLLERIP} "mkdir /tmp/${BUNDLEFOLDER}/configuration/initial"
104     scp  ${WORKSPACE}/test/tools/clustering/cluster-deployer/templates/multi-node-test/akka.conf.template ${!CONTROLLERIP}:${AKKACONF}
105     scp  ${WORKSPACE}/test/tools/clustering/cluster-deployer/templates/multi-node-test/modules.conf.template ${!CONTROLLERIP}:${MODULESCONF}
106     scp  ${WORKSPACE}/test/tools/clustering/cluster-deployer/templates/multi-node-test/module-shards.conf.template ${!CONTROLLERIP}:${MODULESHARDSCONF}
107     scp  ${WORKSPACE}/test/tools/clustering/cluster-deployer/templates/multi-node-test/jolokia.xml.template ${!CONTROLLERIP}:${JOLOKIACONF}
108     scp  ${WORKSPACE}/configuration-script.sh    ${!CONTROLLERIP}:/tmp/
109     ssh ${!CONTROLLERIP} "bash /tmp/configuration-script.sh ${i} ${!CONTROLLERIP}"
110 done
111
112 # vim: ts=4 sw=4 sts=4 et ft=sh :
113