[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