From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
Date: Sun, 8 May 2016 22:37:43 +0200
Subject: [PATCH] f_repobuild: Repeat mirror build up to ten times.

OPNFV ISO build uses fuel-mirror to create a local Ubuntu
partial mirror in nailgun.

Work around temporary mirror issue (e.g. during rsync) by
retrying mirror build up to 10 times.

Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
---
 build/f_isoroot/f_repobuild/Makefile         |  6 +++++-
 build/f_isoroot/f_repobuild/fuel_mirror_loop | 26 ++++++++++++++++++++++++++
 2 files changed, 31 insertions(+), 1 deletion(-)
 create mode 100755 build/f_isoroot/f_repobuild/fuel_mirror_loop

diff --git a/build/f_isoroot/f_repobuild/Makefile b/build/f_isoroot/f_repobuild/Makefile
index 5e7157b..9abe9bb 100644
--- a/build/f_isoroot/f_repobuild/Makefile
+++ b/build/f_isoroot/f_repobuild/Makefile
@@ -23,6 +23,9 @@ export OPENSTACK_VERSION
 .PHONY: all
 all: nailgun
 
+nailgun_mirror:
+	sudo fuel-mirror --debug --config ./opnfv-config.yaml create --group ubuntu --pattern=ubuntu
+
 nailgun:
 	sudo apt-get install -y git libxml2-dev libxslt-dev python-dev  python-pip libz-dev libyaml-dev createrepo python-yaml
 	# python-debian from Ubuntu can't parse foreign arch relationships, use pip
@@ -35,7 +38,8 @@ nailgun:
 	sudo pip install ./fuel-mirror
 	sudo pip install ./fuel-mirror/contrib/fuel_mirror
 	./opnfv_mirror_conf.py
-	sudo fuel-mirror --debug --config ./opnfv-config.yaml create --group ubuntu --pattern=ubuntu
+	# Repeat mirror build up to ten times
+	sudo -E ./fuel_mirror_loop
 	sudo chmod -R 755 /var/www/nailgun
 	cp -Rp /var/www/nailgun .
 	# On the end we want to have ubuntu repository in mirrors/ubuntu directory
diff --git a/build/f_isoroot/f_repobuild/fuel_mirror_loop b/build/f_isoroot/f_repobuild/fuel_mirror_loop
new file mode 100755
index 0000000..f123cf2
--- /dev/null
+++ b/build/f_isoroot/f_repobuild/fuel_mirror_loop
@@ -0,0 +1,26 @@
+#!/bin/bash
+##############################################################################
+# Copyright (c) 2016 Ericsson AB and others.
+# Copyright (c) 2016 Enea AB and others.
+# 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
+##############################################################################
+
+maxcount=10
+cnt=0
+rc=1
+while [ $cnt -lt $maxcount ] && [ $rc -ne 0 ]
+do
+    cnt=$[cnt + 1]
+    echo -e "\n\n\n*** Starting mirror build attempt # $cnt"
+    make nailgun_mirror
+    rc=$?
+    if [ $rc -ne 0 ]; then
+        echo "### Mirror build failed with rc $rc ###"
+    else
+        echo "### Mirror build successful at attempt # $cnt"
+    fi
+done
+exit $rc