summaryrefslogtreecommitdiffstats
path: root/build/select_closest_fuel_mirror.py
diff options
context:
space:
mode:
authorStefan K. Berg <stefan.k.berg@ericsson.com>2016-01-22 13:15:02 +0100
committerStefan Berg <stefan.k.berg@ericsson.com>2016-01-22 12:17:23 +0000
commit49ccd1f337d09cc84b168afd970acaa2aaceff25 (patch)
treecdb3bfbde9dec4f4aa4a8dbdb376395d67ae3453 /build/select_closest_fuel_mirror.py
parent75ea26d80833b74586aeb71b1b06279c6408d754 (diff)
Select closest Fuel mirror as measured by ping
Select the (hopefully) geographically closest Fuel mirror to speed up the build time. Change-Id: I586d90ae58a9c22b1cf60df1bdb907c0e97486fa Signed-off-by: Stefan K. Berg <stefan.k.berg@ericsson.com>
Diffstat (limited to 'build/select_closest_fuel_mirror.py')
-rwxr-xr-xbuild/select_closest_fuel_mirror.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/build/select_closest_fuel_mirror.py b/build/select_closest_fuel_mirror.py
new file mode 100755
index 000000000..0fdc69eac
--- /dev/null
+++ b/build/select_closest_fuel_mirror.py
@@ -0,0 +1,35 @@
+#!/usr/bin/python
+##############################################################################
+# Copyright (c) 2016 Ericsson AB and others.
+# stefan.k.berg@ericsson.com
+# jonas.bjurel@ericsson.com
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+# Select closest fuel mirror based on latency measured with ping.
+# Failsafe: The us1 mirror
+
+from subprocess import Popen,PIPE
+import re
+from operator import itemgetter
+
+mirrors = [ "us1", "cz1" ]
+FNULL = open('/dev/null', 'w')
+try:
+ re_avg = re.compile(r'.* = [^/]*/([^/]*).*')
+
+ pingtime = {}
+ for mirror in mirrors:
+ fqdn = "mirror.seed-"+mirror+".fuel-infra.org"
+ pingtime[fqdn] = 0
+ pipe = Popen("ping -c 3 " + fqdn + " | tail -1",shell = True, stdout=PIPE, stderr=FNULL)
+ avg = pipe.communicate()[0]
+ pipe.stdout.close()
+ pingtime[fqdn] = float(re_avg.split(avg)[1])
+
+ print sorted(pingtime.items(), key=itemgetter(1))[0][0]
+except:
+ print "mirror.seed-"+mirrors[0]+".fuel-infra.org"