Currently the entire ISO is grabbed, which times out.
Use httplib to connect to the server and just get
the head of the http object.
Signed-off-by: Christy Perez <christy(a)linux.vnet.ibm.com>
---
src/kimchi/utils.py | 23 +++++++++++++++++------
1 file changed, 17 insertions(+), 6 deletions(-)
diff --git a/src/kimchi/utils.py b/src/kimchi/utils.py
index 9ed8802..d8e5f5d 100644
--- a/src/kimchi/utils.py
+++ b/src/kimchi/utils.py
@@ -26,11 +26,11 @@
import re
import subprocess
import traceback
-import urllib2
import xml.etree.ElementTree as ET
+from httplib import HTTPConnection, HTTPException
from multiprocessing import Process, Queue
from threading import Timer
-
+from urlparse import urlparse
from cherrypy.lib.reprconf import Parser
from kimchi.asynctask import AsyncTask
@@ -138,14 +138,25 @@ def import_module(module_name):
return __import__(module_name, globals(), locals(), [''])
+def url_to_fqdn(path):
+ parse_result = urlparse(path)
+ return parse_result.netloc
+
+
def check_url_path(path):
try:
- code = urllib2.urlopen(path).getcode()
- if code != 200:
+ server_name = url_to_fqdn(path)
+ # socket.gaierror could be raised,
+ # which is a child class of IOError
+ conn = HTTPConnection(server_name, timeout=15)
+ # Don't try to get the whole file:
+ conn.request('HEAD', path)
+ response = conn.getresponse()
+ conn.close()
+ if response.status != 200:
return False
- except (urllib2.URLError, ValueError):
+ except (HTTPException, IOError, ValueError):
return False
-
return True
--
1.9.3