summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scripts/VyattaClusterConfig.pm8
-rwxr-xr-xscripts/vyatta-update-cluster.pl13
2 files changed, 18 insertions, 3 deletions
diff --git a/scripts/VyattaClusterConfig.pm b/scripts/VyattaClusterConfig.pm
index 08c31de..a7ce914 100644
--- a/scripts/VyattaClusterConfig.pm
+++ b/scripts/VyattaClusterConfig.pm
@@ -169,6 +169,14 @@ sub check_interfaces {
if ($? >> 8) {
return "interface $_ does not exist";
}
+ my $link = `ip link show $_ | grep $_`;
+ if (($link =~ /NO-CARRIER/) || !($link =~ /,UP/)) {
+ return "interface $_ is not connected";
+ }
+ system("ip addr show dev $_ |grep 'inet ' |grep -q 'scope global'");
+ if ($? >> 8) {
+ return "interface $_ is not configured";
+ }
}
return undef;
}
diff --git a/scripts/vyatta-update-cluster.pl b/scripts/vyatta-update-cluster.pl
index 56545e5..ada461f 100755
--- a/scripts/vyatta-update-cluster.pl
+++ b/scripts/vyatta-update-cluster.pl
@@ -74,8 +74,15 @@ foreach (@init_services) {
# restart clustering.
# using "stop" + "start" ("restart" will cause a long wait).
# (may need to change to "restart".)
-system("$HA_INIT stop");
-system("$HA_INIT start");
-
+print "Starting clustering...";
+system("$HA_INIT stop >&/dev/null");
+system("$HA_INIT start >&/dev/null");
+if ($? >> 8) {
+ print "\nError: Clustering failed to start.\n";
+ print "Please make sure all clustering interfaces are functional\n";
+ print "and retry the commit.\n";
+ exit 1;
+}
+print " Done\n";
exit 0;