summaryrefslogtreecommitdiffstats
path: root/kubernetes/sdnc/sdnc-prom/resources/bin/sdnc.cluster
diff options
context:
space:
mode:
authorBorislav Glozman <Borislav.Glozman@amdocs.com>2018-07-15 12:32:24 +0000
committerGerrit Code Review <gerrit@onap.org>2018-07-15 12:32:24 +0000
commitb8a250d496d7dcdab72b0118164a3f2bb23cb7e4 (patch)
tree160bc55b0bb19203eef6811d0c71032ff2fe7aa3 /kubernetes/sdnc/sdnc-prom/resources/bin/sdnc.cluster
parent310736ba91c4e9f8f8037b2014e3f2ab06112f0b (diff)
parentb642ee553d6dd486fc375755af9da2fdd9c94885 (diff)
Merge "SDN-C Multi-site High-availability - Auto-failover"
Diffstat (limited to 'kubernetes/sdnc/sdnc-prom/resources/bin/sdnc.cluster')
-rwxr-xr-xkubernetes/sdnc/sdnc-prom/resources/bin/sdnc.cluster61
1 files changed, 61 insertions, 0 deletions
diff --git a/kubernetes/sdnc/sdnc-prom/resources/bin/sdnc.cluster b/kubernetes/sdnc/sdnc-prom/resources/bin/sdnc.cluster
new file mode 100755
index 0000000000..76603410d4
--- /dev/null
+++ b/kubernetes/sdnc/sdnc-prom/resources/bin/sdnc.cluster
@@ -0,0 +1,61 @@
+#!/bin/bash
+
+# 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.
+
+# query ODL cluster state
+USERNAME="{{.Values.odl.jolokia.username}}"
+PASSWORD="{{.Values.odl.jolokia.password}}"
+
+count=${SDNC_ODL_COUNT:-1}
+memberStart=0
+if [ "${SDNC_IS_PRIMARY_CLUSTER:-true}" != "true" ];then
+ memberStart=$(( $memberStart + $count ))
+fi
+
+for instance in $(seq $count);do
+ shard=member-$(( $memberStart + $instance ))-shard-default-config
+ mbean=Category=Shards,name=$shard,type=DistributedConfigDatastore
+ url=http://{{.Release.Name}}-sdnc-$(( $instance-1 )).sdnc-cluster.{{.Release.Namespace}}:8181/jolokia/read/org.opendaylight.controller:$mbean
+
+ response=$( curl -s -u $USERNAME:$PASSWORD $url )
+ rc=$?
+ if [ $rc -ne 0 ];then
+ # failed to contact SDN-C instance - try another
+ continue
+ fi
+ status=$( echo -E "$response" | jq -r ".status" )
+ if [ "$status" != "200" ];then
+ # query failed, try another instance
+ continue
+ fi
+
+ voting=$( echo -E "$response" | jq -r ".value.Voting" )
+ case $voting in
+ true)
+ echo "active"
+ exit 0
+ ;;
+ false)
+ echo "standby"
+ exit 0
+ ;;
+ *)
+ echo "Error: Voting status could not be determined."
+ exit 1
+ ;;
+ esac
+done
+echo "Error: Voting status could not be determined."
+exit 1