From 2ebefdd68c35222129de0b714e0532d1666dd6ff Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Tue, 15 May 2012 22:34:07 +0100 Subject: [PATCH 1/1] Ignore servers which are down when building a GeoDNS map --- bin/mkgeo | 28 +++++++++++++++++++++++++++- src/tile.openstreetmap | 2 ++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/bin/mkgeo b/bin/mkgeo index bb29fe6..ce98991 100755 --- a/bin/mkgeo +++ b/bin/mkgeo @@ -5,6 +5,8 @@ use warnings; use IO::File; use Math::Trig qw(deg2rad pip2 great_circle_distance); +use JSON::XS; +use LWP::UserAgent; use XML::Writer; use XML::TreeBuilder; use YAML; @@ -13,6 +15,28 @@ my $source = shift @ARGV; my $zone = shift @ARGV; my $servers = YAML::LoadFile("src/${source}"); +my $ua = LWP::UserAgent->new; + +$ua->default_header("App-Key", "2cohi62u5haxvqmypk3ljqqrze1jufrh"); +$ua->credentials("api.pingdom.com:443", "Pingdom API", $ENV{PINGDOM_USERNAME}, $ENV{PINGDOM_PASSWORD}); + +foreach my $server (values %$servers) +{ + $server->{status} = "down"; + + if (my $checkid = $server->{pingdom}) + { + my $response = $ua->get("https://api.pingdom.com/api/2.0/checks/${checkid}"); + + if ($response->is_success) + { + my $check = decode_json($response->content); + + $server->{status} = $check->{check}->{status}; + } + } +} + my %countries = (); my $countries = XML::TreeBuilder->new; @@ -42,6 +66,8 @@ foreach my $country ($countries->look_down("_tag" => "country")) my $priority = $match eq "preferred" ? 20 : 10; my $distance = distance($lat, $lon, $server->{lat}, $server->{lon}); + $priority = $priority * 10 if $server->{status} eq "up"; + # print STDERR "$servername is $match for $name with distance $distance\n"; push @servers, { name => $servername, priority => $priority, distance => $distance }; @@ -88,7 +114,7 @@ foreach my $country (values %countries) $kmlwriter->endTag("Placemark"); } -foreach my $server (grep { $servers->{$_}->{default} }keys %$servers) +foreach my $server (grep { $servers->{$_}->{default} } keys %$servers) { $zonefile->print("Cxx.${zone}:${server}.${zone}:600\n"); } diff --git a/src/tile.openstreetmap b/src/tile.openstreetmap index 4b91b57..d7d0fad 100644 --- a/src/tile.openstreetmap +++ b/src/tile.openstreetmap @@ -2,6 +2,7 @@ london: lat: 51.507222 lon: -0.1275 + pingdom: 546503 default: true preferred: continents: @@ -14,6 +15,7 @@ london: sjobo: lat: 55.632025 lon: 13.70273 + pingdom: 546505 preferred: continents: - EU -- 2.43.2