From ffe06c6dd812b604d6482e4353d5564fad78bc90 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Mon, 30 Jul 2018 15:52:21 +0800
Subject: [PATCH 4/4] load.py: retry to invoke request with timeout

While networkless, use request to fetch kickstart file from
network, it failed and wait 300s to break, we should retry
to invoke request with timeout explicitly. So if it the
network is up, the fetch works.

Upstream-Status: inappropriate [oe specific]

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
 pykickstart/load.py | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/pykickstart/load.py b/pykickstart/load.py
index ad3bad1..a5cbbc5 100644
--- a/pykickstart/load.py
+++ b/pykickstart/load.py
@@ -21,6 +21,7 @@ import requests
 from requests.auth import HTTPDigestAuth
 from requests.auth import HTTPBasicAuth
 
+import time
 import shutil
 import six
 
@@ -28,6 +29,9 @@ from pykickstart.errors import KickstartError, KickstartAuthError
 from pykickstart.i18n import _
 from requests.exceptions import SSLError, RequestException
 
+import logging
+log = logging.getLogger("anaconda.main")
+
 _is_url = lambda location: '://' in location  # RFC 3986
 
 SSL_VERIFY = False
@@ -73,6 +77,29 @@ def load_to_file(location, destination):
         _copy_file(location, destination)
         return destination
 
+def _access_url(location):
+    status = False
+
+    # Retry 45 times, wait 45s~135s
+    i = 0
+    while i < 45:
+
+        try:
+            request = requests.get(location, verify=SSL_VERIFY, timeout=2)
+        except RequestException as e:
+            log.info("Try '%s' %d times, %s" % (location, i, str(e)))
+            status = False
+            i += 1
+            time.sleep(1)
+            continue
+
+        else:
+            status = True
+            return status
+
+    return status
+
+
 def _get_auth(location, user=None, passwd=None):
 
     auth = None
@@ -94,6 +121,10 @@ def _get_auth(location, user=None, passwd=None):
 
 def _load_url(location, user=None, passwd=None):
     '''Load a location (URL or filename) and return contents as string'''
+
+    if not _access_url(location):
+        raise KickstartError(_("Connection %s failed" % location))
+
     auth = _get_auth(location, user=user, passwd=passwd)
     try:
         request = requests.get(location, verify=SSL_VERIFY, auth=auth)
-- 
2.7.4

