SDN-C Multi-site High-availability - Auto-failover
Change-Id: I4e028b31ce7a60154d2c04c63431c5ea996de8f8
Signed-off-by: Mohammadreza Pasandideh <mohammadreza.pasandideh@amdocs.com>
Issue-ID: SDNC-213
diff --git a/kubernetes/sdnc/sdnc-prom/resources/bin/switchVoting.sh b/kubernetes/sdnc/sdnc-prom/resources/bin/switchVoting.sh
new file mode 100755
index 0000000..f13196e
--- /dev/null
+++ b/kubernetes/sdnc/sdnc-prom/resources/bin/switchVoting.sh
@@ -0,0 +1,110 @@
+#/bin/sh
+
+# Copyright © 2018 Amdocs
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set -e
+primary=${SDNC_IS_PRIMARY_CLUSTER:-true}
+
+url=http://sdnc:8282/restconf/operations/cluster-admin:change-member-voting-states-for-all-shards
+username="${ODL_USERNAME:-{{.Values.odl.restconf.username}}}"
+password="${ODL_PASSWORD:-{{.Values.odl.restconf.password}}}"
+LOGFILE="/app/geo.log"
+enableDebugLogging=true
+
+debugLog(){
+ if [ "$enableDebugLogging" == true ]; then
+ if [ $# -eq 0 ]; then
+ echo "" >> $LOGFILE
+ else
+ echo $( date ) $@ >> $LOGFILE
+ fi
+ fi
+}
+
+
+if [ "$primary" = "true" ]; then
+ votingState='
+{
+ "input": {
+ "member-voting-state": [
+ {
+ "member-name": "member-1",
+ "voting": true
+ },
+ {
+ "member-name": "member-2",
+ "voting": true
+ },
+ {
+ "member-name": "member-3",
+ "voting": true
+ },
+ {
+ "member-name": "member-4",
+ "voting": false
+ },
+ {
+ "member-name": "member-5",
+ "voting": false
+ },
+ {
+ "member-name": "member-6",
+ "voting": false
+ }
+ ]
+ }
+}'
+else
+ votingState='
+{
+ "input": {
+ "member-voting-state": [
+ {
+ "member-name": "member-1",
+ "voting": false
+ },
+ {
+ "member-name": "member-2",
+ "voting": false
+ },
+ {
+ "member-name": "member-3",
+ "voting": false
+ },
+ {
+ "member-name": "member-4",
+ "voting": true
+ },
+ {
+ "member-name": "member-5",
+ "voting": true
+ },
+ {
+ "member-name": "member-6",
+ "voting": true
+ }
+ ]
+ }
+}'
+fi
+
+status=$(curl -s -u $username:$password -o /dev/null -H "Content-Type: application/json" -H "Accept: application/json" -X POST -d "$votingState" -w "%{http_code}\n" $url 2> /dev/null)
+if [ $status -ne 200 ];then
+ debugLog "Switch voting failed. status: $status ,username: $username ,password: $password ,votingState: $votingState ,url:$url "
+ echo "failure"
+else
+ echo "success"
+fi
+