Hello community, here is the log from the commit of package salt for openSUSE:Factory checked in at 2019-12-23 22:36:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/salt (Old) and /work/SRC/openSUSE:Factory/.salt.new.6675 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "salt" Mon Dec 23 22:36:23 2019 rev:97 rq:756034 version:2019.2.2 Changes: -------- --- /work/SRC/openSUSE:Factory/salt/salt.changes 2019-12-07 15:19:33.215760651 +0100 +++ /work/SRC/openSUSE:Factory/.salt.new.6675/salt.changes 2019-12-23 22:38:28.889847320 +0100 @@ -1,0 +2,59 @@ +Thu Dec 12 10:21:15 UTC 2019 - Pablo Suárez Hernández <pablo.suarezhernan...@suse.com> + +- Add missing bugzilla references: + Properly handle colons in inline dicts with yamlloader (bsc#1095651) + Fix corrupt public key with m2crypto python3 (bsc#1099323) + Add missing dateutils import (bsc#1099945) + Fix UnicodeDecodeError using is_binary check (bsc#1100225) + Prevent payload crash on decoding binary data (bsc#1100697) + Fix file.blockreplace to avoid throwing IndexError (bsc#1101812) + Add API log rotation on SUSE package (bsc#1102218) + Fix wrong recurse behavior on for linux_acl.present (bsc#1106164) + Handle anycast IPv6 addresses on network.routes (bsc#1114474) + Crontab module fix: file attributes option missing (bsc#1114824) + Add metadata to accepted keyword arguments (bsc#1122680) + Bugfix: properly refresh pillars (bsc#1125015) + +------------------------------------------------------------------- +Wed Dec 11 14:27:24 UTC 2019 - Mihai Dincă <mihai.di...@suse.com> + +- xfs: do not fail if type is not present (bsc#1153611) + +- Added: + * xfs-do-not-fails-if-type-is-not-present.patch + +------------------------------------------------------------------- +Tue Dec 10 12:56:45 UTC 2019 - Pablo Suárez Hernández <pablo.suarezhernan...@suse.com> + +- Don't use __python indirection macros on spec file + %__python is no longer defined in RPM 4.15 (python2 is going EOL in Jan 2020); + additionally, python/python3 are just binaries in the path. + +------------------------------------------------------------------- +Tue Dec 10 09:35:15 UTC 2019 - Pablo Suárez Hernández <pablo.suarezhernan...@suse.com> + +- Fix errors when running virt.get_hypervisor function + +- Added: + * fix-virt.get_hypervisor-188.patch + +------------------------------------------------------------------- +Mon Dec 9 16:37:04 UTC 2019 - Pablo Suárez Hernández <pablo.suarezhernan...@suse.com> + +- Align virt.full_info fixes with upstream Salt +- Let salt-ssh use platform-python on RHEL8 (bsc#1158441) + +- Added: + * align-virt-full-info-fixes-with-upstream-192.patch + * let-salt-ssh-use-platform-python-binary-in-rhel8-191.patch + +------------------------------------------------------------------- +Tue Dec 3 12:22:55 UTC 2019 - Mihai Dincă <mihai.di...@suse.com> + +- Fix StreamClosedError issue (bsc#1157479) + +- Added: + * fix-batch_async-obsolete-test.patch + * fixing-streamclosed-issue.patch + +------------------------------------------------------------------- New: ---- align-virt-full-info-fixes-with-upstream-192.patch fix-batch_async-obsolete-test.patch fix-virt.get_hypervisor-188.patch fixing-streamclosed-issue.patch let-salt-ssh-use-platform-python-binary-in-rhel8-191.patch xfs-do-not-fails-if-type-is-not-present.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ salt.spec ++++++ --- /var/tmp/diff_new_pack.hcVdaX/_old 2019-12-23 22:38:33.769849437 +0100 +++ /var/tmp/diff_new_pack.hcVdaX/_new 2019-12-23 22:38:33.817849458 +0100 @@ -261,6 +261,17 @@ # PATCH-FIX_UPSTREAM: https://github.com/saltstack/salt/pull/53293 Patch91: prevent-test_mod_del_repo_multiline_values-to-fail.patch Patch92: fix-for-log-checking-in-x509-test.patch +# PATCH_FIX_OPENSUSE: https://github.com/openSUSE/salt/pull/190 +Patch93: fixing-streamclosed-issue.patch +Patch94: fix-batch_async-obsolete-test.patch +# PATCH_FIX_OPENSUSE: https://github.com/openSUSE/salt/pull/191 +Patch95: let-salt-ssh-use-platform-python-binary-in-rhel8-191.patch +# PATCH_FIX_OPENSUSE: https://github.com/openSUSE/salt/pull/192 +Patch96: align-virt-full-info-fixes-with-upstream-192.patch +# PATCH-FIX_UPSTREAM: https://github.com/saltstack/salt/pull/55351 +Patch97: fix-virt.get_hypervisor-188.patch +# PATCH_FIX_OPENSUSE: https://github.com/openSUSE/salt/pull/193 +Patch98: xfs-do-not-fails-if-type-is-not-present.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: logrotate @@ -869,15 +880,21 @@ %patch90 -p1 %patch91 -p1 %patch92 -p1 +%patch93 -p1 +%patch94 -p1 +%patch95 -p1 +%patch96 -p1 +%patch97 -p1 +%patch98 -p1 %build %if 0%{?build_py2} -%{__python} setup.py --with-salt-version=%{version} --salt-transport=both build +python setup.py --with-salt-version=%{version} --salt-transport=both build cp ./build/lib/salt/_version.py ./salt mv build _build.python2 %endif %if 0%{?build_py3} -%{__python3} setup.py --with-salt-version=%{version} --salt-transport=both build +python3 setup.py --with-salt-version=%{version} --salt-transport=both build cp ./build/lib/salt/_version.py ./salt mv build _build.python3 %endif @@ -898,12 +915,12 @@ %install %if 0%{?build_py2} mv _build.python2 build -%{__python} setup.py --salt-transport=both install --prefix=%{_prefix} --root=%{buildroot} +python setup.py --salt-transport=both install --prefix=%{_prefix} --root=%{buildroot} mv build _build.python2 %endif %if 0%{?build_py3} mv _build.python3 build -%{__python3} setup.py --salt-transport=both install --prefix=%{_prefix} --root=%{buildroot} +python3 setup.py --salt-transport=both install --prefix=%{_prefix} --root=%{buildroot} mv build _build.python3 %endif @@ -1069,9 +1086,9 @@ %check %if %{with test} %if 0%{?default_py3} -%{__python3} setup.py test --runtests-opts=-u +python3 setup.py test --runtests-opts=-u %else -%{__python} setup.py test --runtests-opts=-u +python setup.py test --runtests-opts=-u %endif %endif ++++++ _lastrevision ++++++ --- /var/tmp/diff_new_pack.hcVdaX/_old 2019-12-23 22:38:34.717849849 +0100 +++ /var/tmp/diff_new_pack.hcVdaX/_new 2019-12-23 22:38:34.741849859 +0100 @@ -1 +1 @@ -8ec046fadeba7bd58a5bf2a3f561c4bffd6c4510 \ No newline at end of file +119d230d13c22207b56ca0276f65a25692e8f4bf \ No newline at end of file ++++++ align-virt-full-info-fixes-with-upstream-192.patch ++++++ >From d569054ebc63718e62fe5799685b0623910f7e1f Mon Sep 17 00:00:00 2001 From: Cedric Bosdonnat <cbosdon...@suse.com> Date: Mon, 9 Dec 2019 17:27:41 +0100 Subject: [PATCH] Align virt full info fixes with upstream (#192) * Porting PR #52574 to 2019.2.1 * Partly revert 4ce0bc544174fdb00482db4653fb4b0ef411e78b to match upstream's fix --- salt/modules/virt.py | 12 +++++++----- tests/unit/modules/test_virt.py | 23 ++++++++++++++++++++++- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/salt/modules/virt.py b/salt/modules/virt.py index 3abc140a00..5e26964449 100644 --- a/salt/modules/virt.py +++ b/salt/modules/virt.py @@ -331,7 +331,7 @@ def _get_uuid(dom): salt '*' virt.get_uuid <domain> ''' - return ElementTree.fromstring(dom.XMLDesc(0)).find('uuid').text + return ElementTree.fromstring(get_xml(dom)).find('uuid').text def _get_on_poweroff(dom): @@ -344,7 +344,7 @@ def _get_on_poweroff(dom): salt '*' virt.get_on_restart <domain> ''' - node = ElementTree.fromstring(dom.XMLDesc(0)).find('on_poweroff') + node = ElementTree.fromstring(get_xml(dom)).find('on_poweroff') return node.text if node is not None else '' @@ -358,7 +358,7 @@ def _get_on_reboot(dom): salt '*' virt.get_on_reboot <domain> ''' - node = ElementTree.fromstring(dom.XMLDesc(0)).find('on_reboot') + node = ElementTree.fromstring(get_xml(dom)).find('on_reboot') return node.text if node is not None else '' @@ -372,7 +372,7 @@ def _get_on_crash(dom): salt '*' virt.get_on_crash <domain> ''' - node = ElementTree.fromstring(dom.XMLDesc(0)).find('on_crash') + node = ElementTree.fromstring(get_xml(dom)).find('on_crash') return node.text if node is not None else '' @@ -2435,7 +2435,9 @@ def get_xml(vm_, **kwargs): salt '*' virt.get_xml <domain> ''' conn = __get_conn(**kwargs) - xml_desc = _get_domain(conn, vm_).XMLDesc(0) + xml_desc = vm_.XMLDesc(0) if isinstance( + vm_, libvirt.virDomain + ) else _get_domain(conn, vm_).XMLDesc(0) conn.close() return xml_desc diff --git a/tests/unit/modules/test_virt.py b/tests/unit/modules/test_virt.py index b95f51807f..d8efafc063 100644 --- a/tests/unit/modules/test_virt.py +++ b/tests/unit/modules/test_virt.py @@ -38,6 +38,10 @@ class LibvirtMock(MagicMock): # pylint: disable=too-many-ancestors ''' Libvirt library mock ''' + class virDomain(MagicMock): + ''' + virDomain mock + ''' class libvirtError(Exception): ''' @@ -76,7 +80,7 @@ class VirtTestCase(TestCase, LoaderModuleMockMixin): Define VM to use in tests ''' self.mock_conn.listDefinedDomains.return_value = [name] # pylint: disable=no-member - mock_domain = MagicMock() + mock_domain = self.mock_libvirt.virDomain() self.mock_conn.lookupByName.return_value = mock_domain # pylint: disable=no-member mock_domain.XMLDesc.return_value = xml # pylint: disable=no-member @@ -1396,6 +1400,23 @@ class VirtTestCase(TestCase, LoaderModuleMockMixin): re.match('^([0-9A-F]{2}[:-]){5}([0-9A-F]{2})$', interface_attrs['mac'], re.I)) + def test_get_xml(self): + ''' + Test virt.get_xml() + ''' + xml = '''<domain type='kvm' id='7'> + <name>test-vm</name> + <devices> + <graphics type='vnc' port='5900' autoport='yes' listen='0.0.0.0'> + <listen type='address' address='0.0.0.0'/> + </graphics> + </devices> + </domain> + ''' + domain = self.set_mock_vm("test-vm", xml) + self.assertEqual(xml, virt.get_xml('test-vm')) + self.assertEqual(xml, virt.get_xml(domain)) + def test_parse_qemu_img_info(self): ''' Make sure that qemu-img info output is properly parsed -- 2.23.0 ++++++ fix-batch_async-obsolete-test.patch ++++++ >From 78b466b0d45de8b7edace542dd3815ca852def40 Mon Sep 17 00:00:00 2001 From: Mihai Dinca <mdi...@suse.de> Date: Tue, 3 Dec 2019 11:22:42 +0100 Subject: [PATCH] Fix batch_async obsolete test --- tests/unit/cli/test_batch_async.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/unit/cli/test_batch_async.py b/tests/unit/cli/test_batch_async.py index 12dfe543bc..f1d36a81fb 100644 --- a/tests/unit/cli/test_batch_async.py +++ b/tests/unit/cli/test_batch_async.py @@ -140,8 +140,14 @@ class AsyncBatchTestCase(AsyncTestCase, TestCase): "salt/batch/1235/done" ) ) + + def test_batch__del__(self): + batch = BatchAsync(MagicMock(), MagicMock(), MagicMock()) + event = MagicMock() + batch.event = event + batch.__del__() self.assertEqual( - len(self.batch.event.remove_event_handler.mock_calls), 1) + len(event.remove_event_handler.mock_calls), 1) @tornado.testing.gen_test def test_batch_next(self): -- 2.23.0 ++++++ fix-virt.get_hypervisor-188.patch ++++++ >From 4e315730c1cf91c8c3efb1aad3c6370953c78459 Mon Sep 17 00:00:00 2001 From: Cedric Bosdonnat <cbosdon...@suse.com> Date: Tue, 10 Dec 2019 10:27:26 +0100 Subject: [PATCH] Fix virt.get_hypervisor() (#188) virt.get_hypervisor resulted in: AttributeError: module 'salt.loader.dev-srv.tf.local.int.module.virt' has no attribute '_is_{}_hyper' This was due to missplaced parenthese. --- salt/modules/virt.py | 2 +- tests/unit/modules/test_virt.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/salt/modules/virt.py b/salt/modules/virt.py index 5e26964449..dedcf8cb6f 100644 --- a/salt/modules/virt.py +++ b/salt/modules/virt.py @@ -3309,7 +3309,7 @@ def get_hypervisor(): # To add a new 'foo' hypervisor, add the _is_foo_hyper function, # add 'foo' to the list below and add it to the docstring with a .. versionadded:: hypervisors = ['kvm', 'xen'] - result = [hyper for hyper in hypervisors if getattr(sys.modules[__name__], '_is_{}_hyper').format(hyper)()] + result = [hyper for hyper in hypervisors if getattr(sys.modules[__name__], '_is_{}_hyper'.format(hyper))()] return result[0] if result else None diff --git a/tests/unit/modules/test_virt.py b/tests/unit/modules/test_virt.py index d8efafc063..6f594a8ff3 100644 --- a/tests/unit/modules/test_virt.py +++ b/tests/unit/modules/test_virt.py @@ -3044,3 +3044,17 @@ class VirtTestCase(TestCase, LoaderModuleMockMixin): # Shouldn't be called with another parameter so far since those are not implemented # and thus throwing exceptions. mock_pool.delete.assert_called_once_with(self.mock_libvirt.VIR_STORAGE_POOL_DELETE_NORMAL) + + @patch('salt.modules.virt._is_kvm_hyper', return_value=True) + @patch('salt.modules.virt._is_xen_hyper', return_value=False) + def test_get_hypervisor(self, isxen_mock, iskvm_mock): + ''' + test the virt.get_hypervisor() function + ''' + self.assertEqual('kvm', virt.get_hypervisor()) + + iskvm_mock.return_value = False + self.assertIsNone(virt.get_hypervisor()) + + isxen_mock.return_value = True + self.assertEqual('xen', virt.get_hypervisor()) -- 2.23.0 ++++++ fixing-streamclosed-issue.patch ++++++ >From 11d5623a4b9b8ac40f29adb79f203ab8bbfdd8fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mihai=20Dinc=C4=83?= <dincami...@users.noreply.github.com> Date: Tue, 26 Nov 2019 18:26:31 +0100 Subject: [PATCH] Fixing StreamClosed issue --- salt/cli/batch_async.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/salt/cli/batch_async.py b/salt/cli/batch_async.py index 754c257b36..c4545e3ebc 100644 --- a/salt/cli/batch_async.py +++ b/salt/cli/batch_async.py @@ -221,7 +221,6 @@ class BatchAsync(object): "metadata": self.metadata } self.event.fire_event(data, "salt/batch/{0}/done".format(self.batch_jid)) - self.event.remove_event_handler(self.__event_handler) for (pattern, label) in self.patterns: if label in ["ping_return", "batch_run"]: self.event.unsubscribe(pattern, match_type='glob') @@ -265,6 +264,7 @@ class BatchAsync(object): def __del__(self): self.local = None + self.event.remove_event_handler(self.__event_handler) self.event = None self.ioloop = None gc.collect() -- 2.23.0 ++++++ let-salt-ssh-use-platform-python-binary-in-rhel8-191.patch ++++++ >From 43cdd24d035ff21c946f6de0a973f5db0e50c8a5 Mon Sep 17 00:00:00 2001 From: Can Bulut Bayburt <1103552+cbbayb...@users.noreply.github.com> Date: Wed, 4 Dec 2019 15:59:46 +0100 Subject: [PATCH] Let salt-ssh use 'platform-python' binary in RHEL8 (#191) RHEL/CentOS 8 has an internal Python interpreter called 'platform-python' included in the base setup. Add this binary to the list of Python executables to look for when creating the sh shim. --- salt/client/ssh/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/salt/client/ssh/__init__.py b/salt/client/ssh/__init__.py index 0df918d634..d5bc6e5c27 100644 --- a/salt/client/ssh/__init__.py +++ b/salt/client/ssh/__init__.py @@ -147,7 +147,7 @@ elif [ "$SUDO" ] && [ -n "$SUDO_USER" ] then SUDO="sudo " fi EX_PYTHON_INVALID={EX_THIN_PYTHON_INVALID} -PYTHON_CMDS="python3 python27 python2.7 python26 python2.6 python2 python" +PYTHON_CMDS="python3 /usr/libexec/platform-python python27 python2.7 python26 python2.6 python2 python" for py_cmd in $PYTHON_CMDS do if command -v "$py_cmd" >/dev/null 2>&1 && "$py_cmd" -c "import sys; sys.exit(not (sys.version_info >= (2, 6)));" -- 2.23.0 ++++++ xfs-do-not-fails-if-type-is-not-present.patch ++++++ >From 4a922d62a899cacf15a80882b2d1aff7ab66097c Mon Sep 17 00:00:00 2001 From: Alberto Planas <apla...@gmail.com> Date: Tue, 11 Jun 2019 17:21:05 +0200 Subject: [PATCH] xfs: do not fails if type is not present The command `blkid -o export` not always provides a 'TYPE' output for all the devices. One example is non-formatted partitions, like for example the BIOS partition. This patch do not force the presence of this field in the blkid output. (cherry picked from commit 88df6963470007aa4fe2adb09f000311f48226a8) --- salt/modules/xfs.py | 2 +- tests/unit/modules/test_xfs.py | 50 ++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 tests/unit/modules/test_xfs.py diff --git a/salt/modules/xfs.py b/salt/modules/xfs.py index 6546603ed6..e133ec83e1 100644 --- a/salt/modules/xfs.py +++ b/salt/modules/xfs.py @@ -329,7 +329,7 @@ def _blkid_output(out): for items in flt(dev_meta.strip().split("\n")): key, val = items.split("=", 1) dev[key.lower()] = val - if dev.pop("type") == "xfs": + if dev.pop("type", None) == "xfs": dev['label'] = dev.get('label') data[dev.pop("devname")] = dev diff --git a/tests/unit/modules/test_xfs.py b/tests/unit/modules/test_xfs.py new file mode 100644 index 0000000000..4b423d69d1 --- /dev/null +++ b/tests/unit/modules/test_xfs.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- + +# Import Python libs +from __future__ import absolute_import, print_function, unicode_literals +import textwrap + +# Import Salt Testing Libs +from tests.support.mixins import LoaderModuleMockMixin +from tests.support.unit import skipIf, TestCase +from tests.support.mock import ( + NO_MOCK, + NO_MOCK_REASON, + MagicMock, + patch) + +# Import Salt Libs +import salt.modules.xfs as xfs + + +@skipIf(NO_MOCK, NO_MOCK_REASON) +@patch('salt.modules.xfs._get_mounts', MagicMock(return_value={})) +class XFSTestCase(TestCase, LoaderModuleMockMixin): + ''' + Test cases for salt.modules.xfs + ''' + def setup_loader_modules(self): + return {xfs: {}} + + def test__blkid_output(self): + ''' + Test xfs._blkid_output when there is data + ''' + blkid_export = textwrap.dedent(''' + DEVNAME=/dev/sda1 + UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + TYPE=xfs + PARTUUID=YYYYYYYY-YY + + DEVNAME=/dev/sdb1 + PARTUUID=ZZZZZZZZ-ZZZZ-ZZZZ-ZZZZ-ZZZZZZZZZZZZ + ''') + # We expect to find only data from /dev/sda1, nothig from + # /dev/sdb1 + self.assertEqual(xfs._blkid_output(blkid_export), { + '/dev/sda1': { + 'label': None, + 'partuuid': 'YYYYYYYY-YY', + 'uuid': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' + } + }) -- 2.23.0