From: Stefan K. Berg <stefan.k.berg@ericsson.com>
Date: Fri, 22 Jan 2016 12:15:02 +0000 (+0100)
Subject: Select closest Fuel mirror as measured by ping
X-Git-Tag: colorado.1.rc1~267^2
X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=commitdiff_plain;h=49ccd1f337d09cc84b168afd970acaa2aaceff25;p=fuel.git

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>
---

diff --git a/build/Makefile b/build/Makefile
index 678d9667a..74ed63495 100644
--- a/build/Makefile
+++ b/build/Makefile
@@ -49,7 +49,7 @@ export MIRROR_UBUNTU_URL := $(shell ./f_isoroot/f_repobuild/select_ubuntu_repo.s
 export MIRROR_UBUNTU := $(shell echo "$(MIRROR_UBUNTU_URL)" | cut -d'/' -f3 )
 export MIRROR_UBUNTU_ROOT := $(shell echo -n '/' ; echo "$(MIRROR_UBUNTU_URL)" | cut -d'/' -f4-)
 
-export LATEST_MIRROR_ID_URL := http://mirror.seed-us1.fuel-infra.org
+export LATEST_MIRROR_ID_URL := http://$(shell ./select_closest_fuel_mirror.py)
 
 export MIRROR_MOS_UBUNTU := $(shell echo "$(LATEST_MIRROR_ID_URL)" | cut -d'/' -f3)
 export LATEST_TARGET_UBUNTU := $(shell curl -sSf "$(MIRROR_MOS_UBUNTU)/mos-repos/ubuntu/8.0.target.txt" | head -1)
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"