virt-manager/virtinst-python2-to-python3-conversion.patch
2018-06-20 17:51:05 +00:00

637 lines
24 KiB
Diff

Index: virt-manager-1.5.1/virt-install
===================================================================
--- virt-manager-1.5.1.orig/virt-install
+++ virt-manager-1.5.1/virt-install
@@ -1,4 +1,4 @@
-#!/usr/bin/env python2
+#!/usr/bin/python3
#
# Copyright 2005-2014 Red Hat, Inc.
#
Index: virt-manager-1.5.1/virtinst/uri.py
===================================================================
--- virt-manager-1.5.1.orig/virtinst/uri.py
+++ virt-manager-1.5.1/virtinst/uri.py
@@ -19,7 +19,7 @@
import logging
import re
-import urllib
+import urllib.request, urllib.parse, urllib.error
from .cli import parse_optstr_tuples
@@ -47,7 +47,7 @@ class URI(object):
"""
def __init__(self, uri):
self.uri = uri
- unquoted_uri = urllib.unquote(uri)
+ unquoted_uri = urllib.parse.unquote(uri)
(self.scheme, self.username, self.hostname,
self.path, self.query, self.fragment) = self._split(unquoted_uri)
Index: virt-manager-1.5.1/virtinst/hostkeymap.py
===================================================================
--- virt-manager-1.5.1.orig/virtinst/hostkeymap.py
+++ virt-manager-1.5.1/virtinst/hostkeymap.py
@@ -20,6 +20,7 @@
import logging
import os
import re
+import functools
_ETC_VCONSOLE = "/etc/vconsole.conf"
@@ -202,7 +203,7 @@ def sanitize_keymap(kt):
return len(b) - len(a)
clean_kt = kt.replace("-", "").replace("_", "")
- sorted_keys = sorted(keytable.keys(), len_cmp)
+ sorted_keys = sorted(list(keytable.keys()), key=functools.cmp_to_key(len_cmp))
for key in sorted_keys:
origkey = key
Index: virt-manager-1.5.1/virtinst/support.py
===================================================================
--- virt-manager-1.5.1.orig/virtinst/support.py
+++ virt-manager-1.5.1/virtinst/support.py
@@ -167,7 +167,7 @@ class _SupportCheck(object):
self.hv_version = hv_version or {}
self.hv_libvirt_version = hv_libvirt_version or {}
- versions = ([self.version] + self.hv_libvirt_version.values())
+ versions = ([self.version] + list(self.hv_libvirt_version.values()))
for vstr in versions:
v = _version_str_to_int(vstr)
if vstr is not None and v != 0 and v < 7009:
Index: virt-manager-1.5.1/virtinst/osdict.py
===================================================================
--- virt-manager-1.5.1.orig/virtinst/osdict.py
+++ virt-manager-1.5.1/virtinst/osdict.py
@@ -79,7 +79,7 @@ def _sort(tosort, sortpref=None, limit_p
retlist = []
sortpref = sortpref or []
- for key, osinfo in tosort.items():
+ for key, osinfo in list(tosort.items()):
# Libosinfo has some duplicate version numbers here, so append .1
# if there's a collision
sortby = osinfo.sortby
@@ -98,12 +98,12 @@ def _sort(tosort, sortpref=None, limit_p
# debian5, debian4, fedora14, fedora13
# rather than
# debian4, debian5, fedora13, fedora14
- for distro_list in distro_mappings.values():
+ for distro_list in list(distro_mappings.values()):
distro_list.sort()
distro_list.reverse()
# Move the sortpref values to the front of the list
- sorted_distro_list = distro_mappings.keys()
+ sorted_distro_list = list(distro_mappings.keys())
sorted_distro_list.sort()
sortpref.reverse()
for prefer in sortpref:
@@ -264,7 +264,7 @@ class _OSDB(object):
"""
sortmap = {}
- for name, osobj in self._all_variants.items():
+ for name, osobj in list(self._all_variants.items()):
if typename and typename != osobj.get_typename():
continue
if only_supported and not osobj.get_supported():
Index: virt-manager-1.5.1/virtinst/guest.py
===================================================================
--- virt-manager-1.5.1.orig/virtinst/guest.py
+++ virt-manager-1.5.1/virtinst/guest.py
@@ -434,7 +434,7 @@ class Guest(XMLBuilder):
domain.undefine()
except Exception:
pass
- raise exc_info[0], exc_info[1], exc_info[2]
+ raise exc_info[0](exc_info[1]).with_traceback(exc_info[2])
if install_xml and install_xml != final_xml:
domain = self.conn.defineXML(final_xml)
@@ -1099,7 +1099,7 @@ class Guest(XMLBuilder):
(str(d), str(addresses[addrstr][addr.function])))
addresses[addrstr][addr.function] = d
- for devs in addresses.values():
+ for devs in list(addresses.values()):
if len(devs) > 1 and 0 in devs:
devs[0].address.multifunction = True
Index: virt-manager-1.5.1/virtinst/distroinstaller.py
===================================================================
--- virt-manager-1.5.1.orig/virtinst/distroinstaller.py
+++ virt-manager-1.5.1/virtinst/distroinstaller.py
@@ -68,7 +68,7 @@ def _sanitize_url(url):
MEDIA_LOCATION_URL,
MEDIA_CDROM_PATH,
MEDIA_CDROM_URL,
- MEDIA_CDROM_IMPLIED) = range(1, 7)
+ MEDIA_CDROM_IMPLIED) = list(range(1, 7))
class DistroInstaller(Installer):
Index: virt-manager-1.5.1/virtinst/cli.py
===================================================================
--- virt-manager-1.5.1.orig/virtinst/cli.py
+++ virt-manager-1.5.1/virtinst/cli.py
@@ -19,7 +19,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301 USA.
-from __future__ import print_function
+
import argparse
import collections
@@ -294,7 +294,7 @@ def _do_creds_authname(creds):
res = cred[retindex]
if credtype == libvirt.VIR_CRED_AUTHNAME:
- res = raw_input(prompt)
+ res = input(prompt)
elif credtype == libvirt.VIR_CRED_PASSPHRASE:
import getpass
res = getpass.getpass(prompt)
@@ -1193,7 +1193,7 @@ class VirtCLIParser(object):
passed an invalid argument such as --disk idontexist=foo
"""
if optdict:
- fail(_("Unknown options %s") % optdict.keys())
+ fail(_("Unknown options %s") % list(optdict.keys()))
def _parse(self, inst):
"""
@@ -1681,7 +1681,7 @@ class ParserBoot(VirtCLIParser):
def _parse(self, inst):
# Build boot order
boot_order = []
- for cliname in self.optdict.keys():
+ for cliname in list(self.optdict.keys()):
if cliname not in inst.os.BOOT_DEVICES:
continue
Index: virt-manager-1.5.1/virtinst/xmlbuilder.py
===================================================================
--- virt-manager-1.5.1.orig/virtinst/xmlbuilder.py
+++ virt-manager-1.5.1/virtinst/xmlbuilder.py
@@ -327,7 +327,7 @@ class XMLChildProperty(property):
def _findpropname(self, xmlbuilder):
if self._propname is None:
- for key, val in xmlbuilder._all_child_props().items():
+ for key, val in list(xmlbuilder._all_child_props().items()):
if val is self:
self._propname = key
break
@@ -475,7 +475,7 @@ class XMLProperty(property):
as in the XMLBuilder class. This is just for debug purposes.
"""
if self._propname is None:
- for key, val in xmlbuilder._all_xml_props().items():
+ for key, val in list(xmlbuilder._all_xml_props().items()):
if val is self:
self._propname = key
break
@@ -832,7 +832,7 @@ class XMLBuilder(object):
self.conn = conn
if self._XML_SANITIZE:
- parsexml = parsexml.decode('ascii', 'ignore').encode('ascii')
+ #parsexml = parsexml.decode('ascii', 'ignore').encode('ascii')
parsexml = "".join([c for c in parsexml if c in string.printable])
self._propstore = {}
@@ -846,7 +846,7 @@ class XMLBuilder(object):
def _initial_child_parse(self):
# Walk the XML tree and hand of parsing to any registered
# child classes
- for xmlprop in self._all_child_props().values():
+ for xmlprop in list(self._all_child_props().values()):
if xmlprop.is_single:
child_class = xmlprop.child_classes[0]
prop_path = xmlprop.get_prop_xpath(self, child_class)
@@ -888,7 +888,7 @@ class XMLBuilder(object):
# XMLChildProperty stores a list in propstore, which dict shallow
# copy won't fix for us.
- for name, value in ret._propstore.items():
+ for name, value in list(ret._propstore.items()):
if not isinstance(value, list):
continue
ret._propstore[name] = [obj.copy() for obj in ret._propstore[name]]
@@ -929,8 +929,8 @@ class XMLBuilder(object):
if leave_stub:
_top_node = _get_xpath_node(self._xmlstate.xml_ctx,
self.get_root_xpath())
- props = self._all_xml_props().values()
- props += self._all_child_props().values()
+ props = list(self._all_xml_props().values())
+ props += list(self._all_child_props().values())
for prop in props:
prop.clear(self)
finally:
@@ -993,7 +993,7 @@ class XMLBuilder(object):
if not hasattr(self.__class__, cachename):
ret = {}
for c in reversed(type.mro(self.__class__)[:-1]):
- for key, val in c.__dict__.items():
+ for key, val in list(c.__dict__.items()):
if isinstance(val, checkclass):
ret[key] = val
setattr(self.__class__, cachename, ret)
@@ -1028,7 +1028,7 @@ class XMLBuilder(object):
def _find_child_prop(self, child_class, return_single=False):
xmlprops = self._all_child_props()
- for xmlprop in xmlprops.values():
+ for xmlprop in list(xmlprops.values()):
if xmlprop.is_single and not return_single:
continue
if child_class in xmlprop.child_classes:
@@ -1087,7 +1087,7 @@ class XMLBuilder(object):
Return a list of all XML child objects with the passed class
"""
ret = []
- for prop in self._all_child_props().values():
+ for prop in list(self._all_child_props().values()):
ret += [obj for obj in util.listify(prop._get(self))
if obj.__class__ == klass]
return ret
@@ -1110,7 +1110,7 @@ class XMLBuilder(object):
xpaths point at their particular element
"""
typecount = {}
- for propname, xmlprop in self._all_child_props().items():
+ for propname, xmlprop in list(self._all_child_props().items()):
for obj in util.listify(getattr(self, propname)):
idxstr = ""
if not xmlprop.is_single:
@@ -1168,7 +1168,7 @@ class XMLBuilder(object):
xmlprops = self._all_xml_props()
childprops = self._all_child_props()
- for prop in xmlprops.values():
+ for prop in list(xmlprops.values()):
prop._set_default(self)
# Set up preferred XML ordering
@@ -1183,7 +1183,7 @@ class XMLBuilder(object):
elif key in childprops:
do_order.insert(0, key)
- for key in childprops.keys():
+ for key in list(childprops.keys()):
if key not in do_order:
do_order.append(key)
Index: virt-manager-1.5.1/virtinst/domcapabilities.py
===================================================================
--- virt-manager-1.5.1.orig/virtinst/domcapabilities.py
+++ virt-manager-1.5.1/virtinst/domcapabilities.py
@@ -166,7 +166,7 @@ class DomainCapabilities(XMLBuilder):
return _("BIOS")
return _("None")
- for arch, patterns in self._uefi_arch_patterns.items():
+ for arch, patterns in list(self._uefi_arch_patterns.items()):
for pattern in patterns:
if re.match(pattern, path):
return (_("UEFI %(arch)s: %(path)s") %
@@ -178,7 +178,7 @@ class DomainCapabilities(XMLBuilder):
"""
Return True if we know how to setup UEFI for the passed arch
"""
- return self.arch in self._uefi_arch_patterns.keys()
+ return self.arch in list(self._uefi_arch_patterns.keys())
def supports_uefi_xml(self):
"""
Index: virt-manager-1.5.1/virtinst/devicedisk.py
===================================================================
--- virt-manager-1.5.1.orig/virtinst/devicedisk.py
+++ virt-manager-1.5.1/virtinst/devicedisk.py
@@ -87,7 +87,7 @@ def _is_dir_searchable(uid, username, pa
logging.debug("Cmd '%s' failed: %s", cmd, err)
return False
- return bool(re.search("user:%s:..x" % username, out))
+ return bool(re.search("user:%s:..x" % username, out.decode()))
class _Host(XMLBuilder):
@@ -453,7 +453,7 @@ class VirtualDisk(VirtualDevice):
digit = 1
seen_valid = True
- gen_t += "%c" % (ord('a') + digit - 1)
+ gen_t += "%c" % int(ord('a') + digit - 1)
return gen_t
@@ -1054,11 +1054,11 @@ class VirtualDisk(VirtualDevice):
def get_target():
first_found = None
- ran = range(maxnode)
+ ran = list(range(maxnode))
if pref_ctrl is not None:
# We assume narrow SCSI bus and libvirt assigning 7
# (1-7, 8-14, etc.) devices per controller
- ran = range(pref_ctrl * 7, (pref_ctrl + 1) * 7)
+ ran = list(range(pref_ctrl * 7, (pref_ctrl + 1) * 7))
for i in ran:
postfix = self.num_to_target(i + 1)
Index: virt-manager-1.5.1/virtinst/storage.py
===================================================================
--- virt-manager-1.5.1.orig/virtinst/storage.py
+++ virt-manager-1.5.1/virtinst/storage.py
@@ -130,7 +130,7 @@ class StoragePool(_StorageObject):
"""
Return list of appropriate pool types
"""
- return StoragePool._descs.keys()
+ return list(StoragePool._descs.keys())
@staticmethod
def get_pool_type_desc(pool_type):
Index: virt-manager-1.5.1/virtinst/devicegraphics.py
===================================================================
--- virt-manager-1.5.1.orig/virtinst/devicegraphics.py
+++ virt-manager-1.5.1/virtinst/devicegraphics.py
@@ -84,7 +84,7 @@ class VirtualGraphics(VirtualDevice):
"""
from . import hostkeymap
- orig_list = hostkeymap.keytable.values()
+ orig_list = list(hostkeymap.keytable.values())
sort_list = []
orig_list.sort()
Index: virt-manager-1.5.1/virtinst/util.py
===================================================================
--- virt-manager-1.5.1.orig/virtinst/util.py
+++ virt-manager-1.5.1/virtinst/util.py
@@ -147,7 +147,7 @@ def generate_name(base, collision_cb, su
else:
return collision_cb(tryname)
- numrange = range(start_num, start_num + 100000)
+ numrange = list(range(start_num, start_num + 100000))
if not force_num:
numrange = [None] + numrange
Index: virt-manager-1.5.1/virtinst/urlfetcher.py
===================================================================
--- virt-manager-1.5.1.orig/virtinst/urlfetcher.py
+++ virt-manager-1.5.1/virtinst/urlfetcher.py
@@ -19,7 +19,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301 USA.
-import ConfigParser
+import configparser
import ftplib
import io
import logging
@@ -27,8 +27,8 @@ import os
import re
import subprocess
import tempfile
-import urllib2
-import urlparse
+import urllib.request, urllib.error, urllib.parse
+import urllib.parse
import requests
@@ -220,9 +220,13 @@ class _FTPURLFetcher(_URLFetcher):
return
try:
- parsed = urlparse.urlparse(self.location)
+ parsed = urllib.parse.urlparse(self.location)
self._ftp = ftplib.FTP()
- self._ftp.connect(parsed.hostname, parsed.port)
+ if parsed.port is None:
+ port = 0
+ else:
+ port = parsed.port
+ self._ftp.connect(parsed.hostname, port)
self._ftp.login()
# Force binary mode
self._ftp.voidcmd("TYPE I")
@@ -234,9 +238,9 @@ class _FTPURLFetcher(_URLFetcher):
"""
Use urllib2 and ftplib to grab the file
"""
- request = urllib2.Request(url)
- urlobj = urllib2.urlopen(request)
- size = self._ftp.size(urlparse.urlparse(url)[2])
+ request = urllib.request.Request(url)
+ urlobj = urllib.request.urlopen(request)
+ size = self._ftp.size(urllib.parse.urlparse(url)[2])
return urlobj, size
@@ -252,7 +256,7 @@ class _FTPURLFetcher(_URLFetcher):
self._ftp = None
def _hasFile(self, url):
- path = urlparse.urlparse(url)[2]
+ path = urllib.parse.urlparse(url)[2]
try:
try:
@@ -277,7 +281,7 @@ class _LocalURLFetcher(_URLFetcher):
return os.path.exists(url)
def _grabber(self, url):
- urlobj = open(url, "r")
+ urlobj = open(url, "rb")
size = os.path.getsize(url)
return urlobj, size
@@ -358,6 +362,7 @@ class _ISOURLFetcher(_URLFetcher):
logging.debug("Running isoinfo: %s", cmd)
output = subprocess.check_output(cmd)
+ output = output.decode()
self._cache_file_list = output.splitlines(False)
@@ -395,14 +400,14 @@ def _grabTreeinfo(fetcher):
return None
try:
- treeinfo = ConfigParser.SafeConfigParser()
+ treeinfo = configparser.SafeConfigParser()
treeinfo.read(tmptreeinfo)
finally:
os.unlink(tmptreeinfo)
try:
treeinfo.get("general", "family")
- except ConfigParser.NoSectionError:
+ except configparser.NoSectionError:
logging.debug("Did not find 'family' section in treeinfo")
return None
@@ -415,11 +420,13 @@ def _distroFromSUSEContent(fetcher, arch
# None if no content, GenericDistro if unknown label type.
try:
cbuf = fetcher.acquireFileContent("content")
+ cbuf = cbuf.decode()
except ValueError:
try:
# If no content file, try media.1/products and media.1/build and create
# a cbuf with enough info for the content file parsing code below to work
pbuf = fetcher.acquireFileContent("media.1/products").strip()
+ pbuf = pbuf.decode()
pbuf = pbuf.split(' ', 1)[1].strip()
# The media.1/products file naming convention changed between SLE11 and SLE12
if pbuf.startswith('SLE'):
@@ -428,6 +435,7 @@ def _distroFromSUSEContent(fetcher, arch
cbuf = "\nDISTRO ," + pbuf.replace('-', ' ')
try:
bbuf = fetcher.acquireFileContent("media.1/build").split('-')
+ bbuf = bbuf.decode()
except:
bbuf = ["x86_64"]
cbuf = cbuf + "\n" + " ".join(bbuf)
@@ -647,7 +655,7 @@ class Distro(object):
try:
kernelpath = self._getTreeinfoMedia("kernel")
initrdpath = self._getTreeinfoMedia("initrd")
- except ConfigParser.NoSectionError:
+ except configparser.NoSectionError:
pass
if not kernelpath or not initrdpath:
@@ -714,6 +722,7 @@ class Distro(object):
# Fetch 'filename' and return True/False if it matches the regex
try:
content = self.fetcher.acquireFileContent(filename)
+ content = content.decode()
except ValueError:
return False
@@ -783,15 +792,15 @@ class GenericDistro(Distro):
self._valid_kernel_path = (
self._getTreeinfoMedia("kernel"),
self._getTreeinfoMedia("initrd"))
- except (ConfigParser.NoSectionError,
- ConfigParser.NoOptionError) as e:
+ except (configparser.NoSectionError,
+ configparser.NoOptionError) as e:
logging.debug(e)
if self.treeinfo.has_section(isoSection):
try:
self._valid_iso_path = self.treeinfo.get(isoSection,
"boot.iso")
- except ConfigParser.NoOptionError as e:
+ except configparser.NoOptionError as e:
logging.debug(e)
if self.type == "xen":
@@ -1477,7 +1486,7 @@ class ALTLinuxDistro(Distro):
# Build list of all *Distro classes
def _build_distro_list():
allstores = []
- for obj in globals().values():
+ for obj in list(globals().values()):
if isinstance(obj, type) and issubclass(obj, Distro) and obj.name:
allstores.append(obj)
Index: virt-manager-1.5.1/virtinst/diskbackend.py
===================================================================
--- virt-manager-1.5.1.orig/virtinst/diskbackend.py
+++ virt-manager-1.5.1/virtinst/diskbackend.py
@@ -391,7 +391,7 @@ class CloneStorageCreator(_StorageCreato
else:
vfs = os.statvfs(os.path.dirname(self._path))
avail = vfs.f_frsize * vfs.f_bavail
- need = long(self._size * 1024 * 1024 * 1024)
+ need = int(self._size * 1024 * 1024 * 1024)
if need > avail:
if self._sparse:
msg = _("The filesystem will not have enough free space"
@@ -411,7 +411,7 @@ class CloneStorageCreator(_StorageCreato
text = (_("Cloning %(srcfile)s") %
{'srcfile': os.path.basename(self._input_path)})
- size_bytes = long(self.get_size() * 1024 * 1024 * 1024)
+ size_bytes = int(self.get_size() * 1024 * 1024 * 1024)
progresscb.start(filename=self._output_path, size=size_bytes,
text=text)
Index: virt-manager-1.5.1/virtinst/progress.py
===================================================================
--- virt-manager-1.5.1.orig/virtinst/progress.py
+++ virt-manager-1.5.1/virtinst/progress.py
@@ -481,7 +481,7 @@ def format_number(number, SI=0, space='
depth = depth + 1
number = number / step
- if isinstance(number, int) or isinstance(number, long):
+ if isinstance(number, int) or isinstance(number, int):
# it's an int or a long, which means it didn't get divided,
# which means it's already short enough
fmt = '%i%s%s'
Index: virt-manager-1.5.1/virtinst/pollhelpers.py
===================================================================
--- virt-manager-1.5.1.orig/virtinst/pollhelpers.py
+++ virt-manager-1.5.1/virtinst/pollhelpers.py
@@ -50,7 +50,7 @@ def _new_poll_helper(origmap, typename,
current[connkey] = origmap[connkey]
del(origmap[connkey])
- return (origmap.values(), new.values(), current.values())
+ return (list(origmap.values()), list(new.values()), list(current.values()))
def _old_poll_helper(origmap, typename,
@@ -108,7 +108,7 @@ def _old_poll_helper(origmap, typename,
except Exception:
logging.exception("Couldn't fetch %s '%s'", typename, name)
- return (origmap.values(), new.values(), current.values())
+ return (list(origmap.values()), list(new.values()), list(current.values()))
def fetch_nets(backend, origmap, build_func):
@@ -143,7 +143,7 @@ def fetch_pools(backend, origmap, build_
for obj in objs:
try:
obj.refresh(0)
- except Exception, e:
+ except Exception as e:
pass
return _new_poll_helper(origmap, name,
@@ -222,7 +222,7 @@ def _old_fetch_vms(backend, origmap, bui
new = {}
# Build list of previous vms with proper id/name mappings
- for vm in origmap.values():
+ for vm in list(origmap.values()):
if vm.is_active():
oldActiveIDs[vm.get_id()] = vm
else:
@@ -285,7 +285,7 @@ def _old_fetch_vms(backend, origmap, bui
except Exception:
logging.exception("Couldn't fetch domain '%s'", name)
- return (origmap.values(), new.values(), current.values())
+ return (list(origmap.values()), list(new.values()), list(current.values()))
def fetch_vms(backend, origmap, build_func):