From 01e2e60a5aba609d219b73f1018f12517a294a64 Mon Sep 17 00:00:00 2001 From: Cedric Bosdonnat Date: Tue, 15 Sep 2020 13:46:06 +0200 Subject: [PATCH] Fix the removed six.itermitems and six.*_type* (#262) * Fix the removed six.itermitems and six.*_type* Upstream py2 to py3 cleanup tool removes a bunch of six calls that we still need when backporting since our Salt minion might still be running on python 2.7. * fixup! Fix the removed six.itermitems and six.*_type* --- salt/_compat.py | 25 ++++++++++++++++--------- salt/modules/virt.py | 11 ++++------- salt/states/virt.py | 1 + salt/utils/xmlutil.py | 3 ++- tests/unit/modules/test_virt.py | 2 +- 5 files changed, 24 insertions(+), 18 deletions(-) diff --git a/salt/_compat.py b/salt/_compat.py index d9425523cf..de100de3fa 100644 --- a/salt/_compat.py +++ b/salt/_compat.py @@ -7,6 +7,7 @@ Salt compatibility code import binascii import logging import sys +import xml.sax.saxutils as saxutils from salt.exceptions import SaltException from salt.ext.six import binary_type, integer_types, string_types, text_type @@ -261,21 +262,25 @@ def ip_address(address): try: return ipaddress.IPv4Address(address) except (ipaddress.AddressValueError, ipaddress.NetmaskValueError) as err: - log.debug('Error while parsing IPv4 address: %s', address) + log.debug("Error while parsing IPv4 address: %s", address) log.debug(err) try: return IPv6AddressScoped(address) except (ipaddress.AddressValueError, ipaddress.NetmaskValueError) as err: - log.debug('Error while parsing IPv6 address: %s', address) + log.debug("Error while parsing IPv6 address: %s", address) log.debug(err) if isinstance(address, bytes): - raise ipaddress.AddressValueError('{} does not appear to be an IPv4 or IPv6 address. ' - 'Did you pass in a bytes (str in Python 2) instead ' - 'of a unicode object?'.format(repr(address))) + raise ipaddress.AddressValueError( + "{} does not appear to be an IPv4 or IPv6 address. " + "Did you pass in a bytes (str in Python 2) instead " + "of a unicode object?".format(repr(address)) + ) - raise ValueError('{} does not appear to be an IPv4 or IPv6 address'.format(repr(address))) + raise ValueError( + "{} does not appear to be an IPv4 or IPv6 address".format(repr(address)) + ) def ip_interface(address): @@ -302,16 +307,18 @@ def ip_interface(address): try: return ipaddress.IPv4Interface(address) except (ipaddress.AddressValueError, ipaddress.NetmaskValueError) as err: - log.debug('Error while getting IPv4 interface for address %s', address) + log.debug("Error while getting IPv4 interface for address %s", address) log.debug(err) try: return ipaddress.IPv6Interface(address) except (ipaddress.AddressValueError, ipaddress.NetmaskValueError) as err: - log.debug('Error while getting IPv6 interface for address %s', address) + log.debug("Error while getting IPv6 interface for address %s", address) log.debug(err) - raise ValueError('{} does not appear to be an IPv4 or IPv6 interface'.format(address)) + raise ValueError( + "{} does not appear to be an IPv4 or IPv6 interface".format(address) + ) if ipaddress: diff --git a/salt/modules/virt.py b/salt/modules/virt.py index ec40f08359..c042738370 100644 --- a/salt/modules/virt.py +++ b/salt/modules/virt.py @@ -88,8 +88,6 @@ import string # pylint: disable=deprecated-module import subprocess import sys import time -from xml.etree import ElementTree -from xml.sax import saxutils import jinja2.exceptions import salt.utils.files @@ -99,8 +97,9 @@ import salt.utils.stringutils import salt.utils.templates import salt.utils.xmlutil as xmlutil import salt.utils.yaml -from salt._compat import ipaddress +from salt._compat import ElementTree, ipaddress, saxutils from salt.exceptions import CommandExecutionError, SaltInvocationError +from salt.ext import six from salt.ext.six.moves import range # pylint: disable=import-error,redefined-builtin from salt.ext.six.moves.urllib.parse import urlparse, urlunparse from salt.utils.virt import check_remote, download_remote @@ -1516,7 +1515,7 @@ def _handle_remote_boot_params(orig_boot): """ saltinst_dir = None new_boot = orig_boot.copy() - keys = orig_boot.keys() + keys = set(orig_boot.keys()) cases = [ {"efi"}, {"kernel", "initrd", "efi"}, @@ -2559,9 +2558,7 @@ def update( # Attaching device if source_file: - ElementTree.SubElement( - updated_disk, "source", attrib={"file": source_file} - ) + ElementTree.SubElement(updated_disk, "source", file=source_file) changes["disk"]["new"] = new_disks diff --git a/salt/states/virt.py b/salt/states/virt.py index b45cf72ed3..df7ebb63e6 100644 --- a/salt/states/virt.py +++ b/salt/states/virt.py @@ -22,6 +22,7 @@ import salt.utils.files import salt.utils.stringutils import salt.utils.versions from salt.exceptions import CommandExecutionError, SaltInvocationError +from salt.ext import six try: import libvirt # pylint: disable=import-error diff --git a/salt/utils/xmlutil.py b/salt/utils/xmlutil.py index b9f047820b..111ca155d4 100644 --- a/salt/utils/xmlutil.py +++ b/salt/utils/xmlutil.py @@ -7,6 +7,7 @@ import string # pylint: disable=deprecated-module from xml.etree import ElementTree import salt.utils.data +from salt.ext import six def _conv_name(x): @@ -160,7 +161,7 @@ def clean_node(parent_map, node, ignored=None): has_text = node.text is not None and node.text.strip() parent = parent_map.get(node) if ( - len(node.attrib.keys() - (ignored or [])) == 0 + len(set(node.attrib.keys()) - set(ignored or [])) == 0 and not list(node) and not has_text ): diff --git a/tests/unit/modules/test_virt.py b/tests/unit/modules/test_virt.py index 4775fec31f..4a4c0395a7 100644 --- a/tests/unit/modules/test_virt.py +++ b/tests/unit/modules/test_virt.py @@ -45,7 +45,7 @@ class LibvirtMock(MagicMock): # pylint: disable=too-many-ancestors """ def __init__(self, msg): - super().__init__(msg) + super(Exception, self).__init__(msg) self.msg = msg def get_error_message(self): -- 2.29.2