[virt-tools-list] [virt-manager PATCH] virtinst: early detect ftp connection errors
Giuseppe Scrivano
gscrivan at redhat.com
Mon Apr 14 13:11:58 UTC 2014
It fixes two problems:
i) "ftp://" was accepted as valid URL but then it causes this
exception:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.7/ftplib.py", line 387, in login
resp = self.sendcmd('USER ' + user)
File "/usr/lib64/python2.7/ftplib.py", line 243, in sendcmd
self.putcmd(cmd)
File "/usr/lib64/python2.7/ftplib.py", line 178, in putcmd
self.putline(line)
File "/usr/lib64/python2.7/ftplib.py", line 173, in putline
self.sock.sendall(line)
AttributeError: 'NoneType' object has no attribute 'sendall'
ii) only a cryptic error message "Unable to complete install: '[Errno
-2] Name or service not known'" was showed to users when the DNS
lookup failed. The exception is now intercepted and decorated with
more information.
Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1086554
Signed-off-by: Giuseppe Scrivano <gscrivan at redhat.com>
---
virtinst/urlfetcher.py | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/virtinst/urlfetcher.py b/virtinst/urlfetcher.py
index 7075929..3f2744b 100644
--- a/virtinst/urlfetcher.py
+++ b/virtinst/urlfetcher.py
@@ -151,9 +151,16 @@ class _FTPImageFetcher(_URIImageFetcher):
self.ftp = None
def prepareLocation(self):
- url = urlparse.urlparse(self._make_path(""))
- self.ftp = ftplib.FTP(url[1])
- self.ftp.login()
+ try:
+ url = urlparse.urlparse(self._make_path(""))
+ if not url[1]:
+ raise ValueError(_("Invalid install location"))
+ self.ftp = ftplib.FTP(url[1])
+ self.ftp.login()
+ except Exception, e:
+ raise ValueError(_("Opening URL %s failed: %s.") %
+ (self.location, str(e)))
+
def hasFile(self, filename):
path = self._make_path(filename)
--
1.9.0
More information about the virt-tools-list
mailing list