Chore: Add gerrit maven verify GHA workflow
[sdnc/oam.git] / installation / sdnc / src / main / scripts / configure_geo_cluster.sh
1 #!/bin/bash
2
3 if [ $# -ne 3 ]; then
4    echo "Usage: configure_geo_cluster.sh <member_index{1..6}> <primary_node> <secondary_node>"
5    exit 1
6 fi
7
8 MEMBER_INDEX=$1
9 PRIMARY_NODE=$2
10 SECONDARY_NODE=$3
11 CONF_DIR=/opt/opendaylight/current/configuration/initial
12 AKKACONF=${CONF_DIR}/akka.conf
13 MODULESCONF=${CONF_DIR}/modules.conf
14 MODULESHARDSCONF=${CONF_DIR}/module-shards.conf
15 MY_IP=$(hostname -i)
16 CLUSTER_MASTER=$PRIMARY_NODE
17 PORT_NUMBER=1
18
19 case $MEMBER_INDEX in
20 [1])
21    PORT_NUMBER=4
22    ;;
23 [2])
24    PORT_NUMBER=5
25    ;;
26 [3])
27    PORT_NUMBER=6
28    ;;
29 [4])
30    PORT_NUMBER=4
31    CLUSTER_MASTER=$SECONDARY_NODE
32    ;;
33 [5])
34    PORT_NUMBER=5
35    CLUSTER_MASTER=$SECONDARY_NODE
36    ;;
37 [6])
38    PORT_NUMBER=6
39    CLUSTER_MASTER=$SECONDARY_NODE
40    ;;
41 *)
42    echo "Usage: configure_geo_cluster.sh <primary_node{1..6}> <secondary_node>"
43    exit 1
44    ;;
45 esac
46
47 cat > $MODULESCONF << 'endModules'
48 modules = [
49
50         {
51                 name = "inventory"
52                 namespace = "urn:opendaylight:inventory"
53                 shard-strategy = "module"
54         },
55         {
56                 name = "topology"
57                 namespace = "urn:TBD:params:xml:ns:yang:network-topology"
58                 shard-strategy = "module"
59         },
60         {
61                 name = "toaster"
62                 namespace = "http://netconfcentral.org/ns/toaster"
63                 shard-strategy = "module"
64         }
65
66 endModules
67
68 cat > $MODULESHARDSCONF << 'moduleShards'
69 module-shards = [
70         {
71                 name = "default"
72                 shards = [
73                         {
74                                 name = "default"
75                                 replicas = ["member-1",
76                                 "member-2",
77                                 "member-3",
78                                 "member-4",
79                                 "member-5",
80                                 "member-6"]
81                         }
82                 ]
83         },
84         {
85                 name = "inventory"
86                 shards = [
87                         {
88                                 name="inventory"
89                                 replicas = ["member-1",
90                                 "member-2",
91                                 "member-3",
92                                 "member-4",
93                                 "member-5",
94                                 "member-6"]
95                         }
96                 ]
97         },
98         {
99                 name = "topology"
100                 shards = [
101                         {
102                                 name="topology"
103                                 replicas = ["member-1",
104                                 "member-2",
105                                 "member-3",
106                                 "member-4",
107                                 "member-5",
108                                 "member-6"]
109                         }
110                 ]
111         },
112         {
113                 name = "toaster"
114                 shards = [
115                         {
116                                 name="toaster"
117                                 replicas = ["member-1",
118                                 "member-2",
119                                 "member-3",
120                                 "member-4",
121                                 "member-5",
122                                 "member-6"]
123                         }
124                 ]
125         }
126 ]
127 moduleShards
128
129 cat > $AKKACONF << 'akkaFile'
130
131 odl-cluster-data {
132   akka {
133     remote {
134       artery {
135         enabled = off
136         canonical.hostname = CLUSTER_MASTER 
137         canonical.port = 3026PORT_NUMBER
138       }
139       netty.tcp {
140         bind-hostname = MY_IP
141         bind-port = 2550
142
143         hostname = CLUSTER_MASTER
144         port = 3026PORT_NUMBER
145       }
146       # when under load we might trip a false positive on the failure detector
147       # transport-failure-detector {
148         # heartbeat-interval = 4 s
149         # acceptable-heartbeat-pause = 16s
150       # }
151     }
152
153     cluster {
154       # Remove ".tcp" when using artery.
155       seed-nodes = ["akka.tcp://opendaylight-cluster-data@PRIMARY_NODE:30264",
156                                 "akka.tcp://opendaylight-cluster-data@PRIMARY_NODE:30265",
157                                 "akka.tcp://opendaylight-cluster-data@PRIMARY_NODE:30266",
158                                 "akka.tcp://opendaylight-cluster-data@SECONDARY_NODE:30264",
159                                 "akka.tcp://opendaylight-cluster-data@SECONDARY_NODE:30265",
160                                 "akka.tcp://opendaylight-cluster-data@SECONDARY_NODE:30266"]
161
162       roles = ["member-MEMBER_INDEX"]
163
164     }
165
166     persistence {
167       # By default the snapshots/journal directories live in KARAF_HOME. You can choose to put it somewhere else by
168       # modifying the following two properties. The directory location specified may be a relative or absolute path.
169       # The relative path is always relative to KARAF_HOME.
170
171       # snapshot-store.local.dir = "target/snapshots"
172       # journal.leveldb.dir = "target/journal"
173
174       journal {
175         leveldb {
176           # Set native = off to use a Java-only implementation of leveldb.
177           # Note that the Java-only version is not currently considered by Akka to be production quality.
178
179           # native = off
180         }
181       }
182     }
183   }
184 }
185 akkaFile
186 sed -i "s/CLUSTER_MASTER/${CLUSTER_MASTER}/" $AKKACONF
187 sed -i "s/PORT_NUMBER/${PORT_NUMBER}/" $AKKACONF
188 sed -i "s/MY_IP/${MY_IP}/" $AKKACONF
189 sed -i "s/PRIMARY_NODE/${PRIMARY_NODE}/" $AKKACONF
190 sed -i "s/SECONDARY_NODE/${SECONDARY_NODE}/" $AKKACONF
191 sed -i "s/MEMBER_INDEX/${MEMBER_INDEX}/" $AKKACONF
192 cat $AKKACONF