diff options
-rw-r--r-- | scripts/VyattaClusterConfig.pm | 8 | ||||
-rwxr-xr-x | scripts/vyatta-update-cluster.pl | 13 |
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; |