From a7290df65c4b0e7ad7cdbb6db6da7db00f107745 Mon Sep 17 00:00:00 2001 From: Devops Date: Fri, 7 Jul 2017 16:34:43 +0100 Subject: [PATCH] bin/ovh-api --- bin/ovh-api | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/bin/ovh-api b/bin/ovh-api index ce271ae1..f511c690 100755 --- a/bin/ovh-api +++ b/bin/ovh-api @@ -65,7 +65,7 @@ if ($Opt{'ip-routed'}) { if ($Opt{'ip-is-routed'}) { my @routed = ip_routed($Opt{'ip-is-routed'}); my $localhost = hostname(); - exit ! grep {$_ eq $localhost} @routed; + exit ! grep {$_ eq $localhost} map {$_->[0]} grep {$_->[1] eq 'master'} @routed; } # Query @@ -89,15 +89,17 @@ sub ip_routed { my $ip = shift @_; my $rec = query("/ip/$ip") or exit 1; my @routed; + my %dbl; if ($rec->{type} =~ /^(failover|dedicated)$/) { - push @routed, $rec->{routedTo}{serviceName}; + push @routed, [ $rec->{routedTo}{serviceName}, 'master' ]; } elsif ($rec->{type} eq 'loadBalancing') { my $frontends = query("/ipLoadbalancing/ip-$ip/frontend") or exit 1; for my $frontend_id (@$frontends) { + my $frontend = query("/ipLoadbalancing/ip-$ip/frontend/$frontend_id") or exit 1; #next if $frontend->{defaultBackendId}; next if $frontend->{disabled} ne 'false'; @@ -108,20 +110,28 @@ sub ip_routed { my $servers = query("/ipLoadbalancing/ip-$ip/".$frontend->{type}."/farm/$farm_id/server") or exit 1; for my $id_server (@$servers) { my $server = query("/ipLoadbalancing/ip-$ip/".$frontend->{type}."/farm/$farm_id/server/$id_server") or exit 1; - next if $server->{backup} or $server->{status} ne 'active'; + + next if $server->{status} ne 'active'; + next if $dbl{$server->{address}}++; #use Data::Dumper; warn Dumper($server); - push @routed,ip_routed($server->{address}); + my $routed = ip_routed($server->{address}); + + my $status = lc($server->{serverState}[0]{status}); + $status = 'slave' if $server->{backup} and $status eq 'up'; + + $routed->[0][1] = $status if $status ne 'up'; + + #next if $server->{backup}; + push @routed,@$routed; } - } + } # servers - } + } # farms - } + } # frontends - my %dbl; - @routed = grep {!$dbl{$_}++} @routed; return wantarray ? @routed : \@routed; } -- 2.47.3