Hi Mark, Thank you for your contribution. I noticed that the indentation in your patch is not multiple of four. You can check this by running `./setup.py pylint`. On 31/03/18 17:12, Mark Hamzy wrote:
If --location is an ftp url with a username and password then virt-install fails to install with an error: ERROR Error validating install location: Opening URL u failed: 530 Login incorrect.. --- virtinst/urlfetcher.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/virtinst/urlfetcher.py b/virtinst/urlfetcher.py index da59a476..8bf24e08 100644 --- a/virtinst/urlfetcher.py +++ b/virtinst/urlfetcher.py @@ -207,13 +207,20 @@ class _FTPURLFetcher(_URLFetcher): return try: - parsed = urllib.parse.urlparse(self.location) - self._ftp = ftplib.FTP() - self._ftp.connect(parsed.hostname, parsed.port or 0) - self._ftp.login() - # Force binary mode - self._ftp.voidcmd("TYPE I") - except Exception as e: + parsed = urllib.parse.urlparse(self.location) + self._ftp = ftplib.FTP() The+ from urllib2 import unquote urllib2 module has been split across several
modules in Python 3 named urllib.request and urllib.error In this case, `urllib.request` has been imported in the beginning of the file, so we can just use it with `urllib.request.unquote()` Note that from the next release virt-manager will be Python 3 only. `parsed` has already been assigned value above, no need to do it again here.+ parsed = urlparse.urlparse(self.location) Also the urlparse module was renamed to urllib.parse
in Python 3.
Here we can keep only the 2nd assignment and there is no need to use decode.+ username = parsed.username or '' + username = unquote(username).decode('utf8') (See https://docs.python.org/3/library/urllib.parse.html#urllib.parse.unquote) For example: username = urllib.request.unquote(parsed.username) Same here.+ password = parsed.password or '' + password = unquote(password).decode('utf8') There is no need to create a new instance of the FTP class here with `ftplib.FTP(parsed.hostname, username, password)`.+ self._ftp = ftplib.FTP(parsed.hostname, username, password) + self._ftp.connect(parsed.hostname, parsed.port or 0) The connect() call is sufficient to provide the values for username and password. + self._ftp.login(username, password) + # Force binary mode + self._ftp.voidcmd("TYPE I") + except Exception as e: raise ValueError(_("Opening URL %s failed: %s.") % (self.location, str(e))) Radostin |
_______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list