Multi-site High-availability Manual Failover (PoC)
[sdnc/oam.git] / installation / sdnc / src / main / scripts / sdnc.failover
diff --git a/installation/sdnc/src/main/scripts/sdnc.failover b/installation/sdnc/src/main/scripts/sdnc.failover
new file mode 100755 (executable)
index 0000000..b002ae6
--- /dev/null
@@ -0,0 +1,65 @@
+#!/usr/bin/perl -s\r
+use strict;\r
+\r
+my $keyWord_standby = "standby";\r
+my $keyWord_active = "active";\r
+my $keyWord_true = "true";\r
+my $keyWord_false = "false";\r
+my $keyWord_success = "success";\r
+my $keyWord_failure = "failure";\r
+my $file_cluster = "sdnc.cluster";\r
+my $file_switchVoting = "switchVoting.sh";\r
+my $file_isPrimaryCluster = "sdnc.isPrimaryCluster";\r
+\r
+if ((!(-e $file_cluster)) || (!(-e $file_switchVoting))|| (!(-e $file_isPrimaryCluster))) {\r
+  # file not exist.\r
+  print qq|$keyWord_failure\n|;\r
+  exit 1;\r
+}\r
+\r
+my $roleRes = qx("./$file_isPrimaryCluster");\r
+my $clusterRes = qx("./$file_cluster");\r
+\r
+if ( index ($clusterRes, $keyWord_standby) != -1) {\r
+       # We are at standby side\r
+       if ( index ($roleRes, $keyWord_false) != -1) {\r
+          # We are at Secondary cluster\r
+          sub_activate_secondary();\r
+    } elsif ( index ($roleRes, $keyWord_true) != -1) {\r
+       # We are at Primary cluster\r
+          sub_activate_primary();\r
+    } else {\r
+      # Error.\r
+      print qq|$keyWord_failure\n|;\r
+      exit 1;          \r
+       }       \r
+} elsif ( index ($clusterRes, $keyWord_active) != -1) {\r
+    # We are at active side    \r
+       if ( index ($roleRes, $keyWord_false) != -1) {\r
+          # We are at Secondary cluster\r
+          sub_activate_primary();\r
+    } elsif ( index ($roleRes, $keyWord_true) != -1)  {\r
+       # We are at Primary cluster\r
+          sub_activate_secondary();\r
+    } else {\r
+      # Error.\r
+      print qq|$keyWord_failure\n|;\r
+      exit 1;          \r
+       }       \r
+} else {\r
+   # Error.\r
+  print qq|$keyWord_failure\n|;\r
+  exit 1;   \r
+}\r
+\r
+sub sub_activate_primary {\r
+               #Switching voting in Primary cluster \r
+        system("./$file_switchVoting primary");\r
+           print qq|$keyWord_success\n|;\r
+}\r
+\r
+sub sub_activate_secondary {\r
+               #Switching voting in secondary cluster\r
+        system("./$file_switchVoting secondary");\r
+           print qq|$keyWord_success\n|;\r
+}\r