<tt><font size=2>If --location is an ftp url with a username and password<br>then virt-install fails to install with an error:<br>ERROR Error validating install location: Opening URL u failed: 530 Login
incorrect..<br>---<br> virtinst/urlfetcher.py | 21 ++++++++++++++-------<br> 1 file changed, 14 insertions(+), 7 deletions(-)<br><br>diff --git a/virtinst/urlfetcher.py b/virtinst/urlfetcher.py<br>index da59a476..8bf24e08 100644<br>--- a/virtinst/urlfetcher.py<br>+++ b/virtinst/urlfetcher.py<br>@@ -207,13 +207,20 @@ class _FTPURLFetcher(_URLFetcher):<br>             return<br> <br>         try:<br>-            parsed = urllib.parse.urlparse(self.location)<br>-            self._ftp = ftplib.FTP()<br>-            self._ftp.connect(parsed.hostname,
parsed.port or 0)<br>-            self._ftp.login()<br>-            # Force binary mode<br>-            self._ftp.voidcmd("TYPE
I")<br>-        except Exception as e:<br>+             parsed = urllib.parse.urlparse(self.location)<br>+             self._ftp = ftplib.FTP()<br>+             from urllib2 import unquote<br>+             parsed = urlparse.urlparse(self.location)<br>+             username = parsed.username
or ''<br>+             username = unquote(username).decode('utf8')<br>+             password = parsed.password
or ''<br>+             password = unquote(password).decode('utf8')<br>+             self._ftp = ftplib.FTP(parsed.hostname,
username, password)<br>+             self._ftp.connect(parsed.hostname,
parsed.port or 0)<br>+             self._ftp.login(username, password)<br>+             # Force binary mode<br>+             self._ftp.voidcmd("TYPE
I")<br>+         except Exception as e:<br>             raise ValueError(_("Opening
URL %s failed: %s.") %<br>                    
          (self.location, str(e)))<br> <br>-- <br>2.14.3<br><br></font></tt><br><BR>