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



Reply via email to