[lxc-devel] [PATCH 3/3] lxc-fedora.in: Fix fetching of the fedora-release rpm

Tuomas Suutari tuomas.suutari at gmail.com
Wed Oct 26 14:29:43 UTC 2011


The hardcoded URL seems to be broken and 404 error was not
checked. Now the mirror is selected from mirrorlist (instead of
hardcoding to funet.fi) and fetch errors are checked.

Also added a retry loop (with 3 tries) to find a working mirror, since
some of the mirrors are not OK.

Signed-off-by: Tuomas Suutari <tuomas.suutari at gmail.com>
---
 templates/lxc-fedora.in |   26 ++++++++++++++++++++++++--
 1 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/templates/lxc-fedora.in b/templates/lxc-fedora.in
index 1e8fff2..e7f42a6 100644
--- a/templates/lxc-fedora.in
+++ b/templates/lxc-fedora.in
@@ -115,8 +115,30 @@ download_fedora()
     echo "Downloading fedora minimal ..."
     YUM="yum --installroot $INSTALL_ROOT -y --nogpgcheck"
     PKG_LIST="yum initscripts passwd rsyslog vim-minimal dhclient chkconfig rootfiles policycoreutils"
-    RELEASE_URL="http://ftp.funet.fi/pub/mirrors/fedora.redhat.com/pub/fedora/linux/releases/$release/Everything/$arch/os/Packages/fedora-release-$release-1.noarch.rpm"
-    curl $RELEASE_URL > $INSTALL_ROOT/fedora-release-$release.noarch.rpm
+    MIRRORLIST_URL="http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$release&arch=$arch"
+
+    DOWNLOAD_OK=no
+    for trynumber in 1 2 3; do
+        [ $trynumber != 1 ] && echo "Trying again..."
+        MIRROR_URL=$(curl -s -S -f "$MIRRORLIST_URL" | head -n2 | tail -n1)
+        if [ $? -ne 0 ] || [ -z "$MIRROR_URL" ]; then
+            echo "Failed to get a mirror"
+            continue
+        fi
+        RELEASE_URL="$MIRROR_URL/Packages/fedora-release-$release-1.noarch.rpm"
+        echo "Fetching from $RELEASE_URL"
+        curl -f "$RELEASE_URL" > $INSTALL_ROOT/fedora-release-$release.noarch.rpm
+        if [ $? -ne 0 ]; then
+            echo "Failed to download fedora release rpm"
+            continue
+        fi
+        DOWNLOAD_OK=yes
+        break
+    done
+    if [ $DOWNLOAD_OK != yes ]; then
+        echo "Aborting"
+        return 1
+    fi
 
     mkdir -p $INSTALL_ROOT/var/lib/rpm
     rpm --root $INSTALL_ROOT  --initdb
-- 
1.7.5.4





More information about the lxc-devel mailing list