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
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';
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;
}