]> git.nbdom.net Git - nb.git/commitdiff
bin/ovh-api
authorDevops <sys@15gifts.com>
Fri, 7 Jul 2017 15:34:43 +0000 (16:34 +0100)
committerDevops <sys@15gifts.com>
Fri, 7 Jul 2017 15:34:43 +0000 (16:34 +0100)
bin/ovh-api

index ce271ae19980b6521e59e2f0ee3e9ef1c1bfc876..f511c6905cb0551d6639e1c5742f843bb64b3e6c 100755 (executable)
@@ -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;
 }