Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package salt for openSUSE:Factory checked in 
at 2021-03-12 13:30:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/salt (Old)
 and      /work/SRC/openSUSE:Factory/.salt.new.2401 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "salt"

Fri Mar 12 13:30:19 2021 rev:116 rq:878135 version:3002.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/salt/salt.changes        2021-03-10 
08:49:11.510389601 +0100
+++ /work/SRC/openSUSE:Factory/.salt.new.2401/salt.changes      2021-03-12 
13:30:24.906081393 +0100
@@ -1,0 +2,33 @@
+Wed Mar 10 08:42:54 UTC 2021 - Pablo Su??rez Hern??ndez 
<[email protected]>
+
+- virt.network_update: handle missing ipv4 netmask attribute
+
+- Added:
+  * virt.network_update-handle-missing-ipv4-netmask-attr.patch
+
+-------------------------------------------------------------------
+Tue Mar  9 14:34:29 UTC 2021 - Alexander Graul <[email protected]>
+
+- Set distro requirement to oldest supported version in requirements/base.txt
+
+- Added:
+  * 3002-set-distro-requirement-to-oldest-supported-vers.patch
+
+-------------------------------------------------------------------
+Tue Mar  9 09:00:08 UTC 2021 - Pablo Su??rez Hern??ndez 
<[email protected]>
+
+- Do not monkey patch yaml loaders: Prevent breaking Ansible filter modules 
(bsc#1177474)
+- Don't require python3-certifi
+
+- Added:
+  * do-not-monkey-patch-yaml-bsc-1177474.patch
+
+-------------------------------------------------------------------
+Wed Mar  3 09:32:53 UTC 2021 - Pablo Su??rez Hern??ndez 
<[email protected]>
+
+- Fix race conditions for corner cases when handling SIGTERM by minion 
(bsc#1172110)
+
+- Added:
+  * prevent-race-condition-on-sigterm-for-the-minion-bsc.patch
+
+-------------------------------------------------------------------
@@ -348 +381 @@
-- Master can read grains
+- Master can read grains (bsc#1179696)

New:
----
  3002-set-distro-requirement-to-oldest-supported-vers.patch
  do-not-monkey-patch-yaml-bsc-1177474.patch
  prevent-race-condition-on-sigterm-for-the-minion-bsc.patch
  virt.network_update-handle-missing-ipv4-netmask-attr.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ salt.spec ++++++
--- /var/tmp/diff_new_pack.TLuy6Y/_old  2021-03-12 13:30:29.990088524 +0100
+++ /var/tmp/diff_new_pack.TLuy6Y/_new  2021-03-12 13:30:29.994088530 +0100
@@ -373,6 +373,14 @@
 Patch156:     allow-extra_filerefs-as-sanitized-kwargs-for-ssh-cli.patch
 # PATCH-FIX_UPSTREAM: no PR to link to yet
 Patch157:     fix-regression-on-cmd.run-when-passing-tuples-as-cmd.patch
+# PATCH-FIX_UPSTREAM: https://github.com/saltstack/salt/pull/59524
+Patch158:     prevent-race-condition-on-sigterm-for-the-minion-bsc.patch
+# PATCH-FIX_UPSTREAM: https://github.com/saltstack/salt/pull/59746
+Patch159:     do-not-monkey-patch-yaml-bsc-1177474.patch
+# PATCH-FIX_UPSTREAM: https://github.com/saltstack/salt/pull/59536
+Patch160:     3002-set-distro-requirement-to-oldest-supported-vers.patch
+# PATCH-FIX_UPSTREAM: https://github.com/saltstack/salt/pull/59693
+Patch161:     virt.network_update-handle-missing-ipv4-netmask-attr.patch
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 BuildRequires:  logrotate
@@ -500,7 +508,6 @@
 %else
 Requires:       python3
 %endif
-Requires:       python3-certifi
 # requirements/base.txt
 %if 0%{?rhel} || 0%{?fedora}
 Requires:       python3-jinja2
@@ -926,6 +933,10 @@
 %patch155 -p1
 %patch156 -p1
 %patch157 -p1
+%patch158 -p1
+%patch159 -p1
+%patch160 -p1
+%patch161 -p1
 
 %build
 # Putting /usr/bin at the front of $PATH is needed for RHEL/RES 7. Without this

++++++ 3002-set-distro-requirement-to-oldest-supported-vers.patch ++++++
>From ffe924ef060a9b9540a4dcd117e045eaefa62513 Mon Sep 17 00:00:00 2001
From: Alexander Graul <[email protected]>
Date: Tue, 9 Mar 2021 13:46:03 +0100
Subject: [PATCH] 3002: Set distro requirement to oldest supported
 version (#327)

In the released Salt packages, python3-distro is taken from the
officially repositories on supported operating systems. The oldest
supported python3-distro version is 1.0.1 in Ubuntu18.04 universe and
Debian 9. FreeBSD is an exception and requires 1.3.0.
The mismatch between the version specified in requirements/base.txt and
what is actually used by the released packages can be confusing.

(cherry picked from commit 5c9c0ab9cdf2bf67bfdd259b53aa15297d1656ce)
(cherry picked from commit 0ff35358f79e9df8b06fb345fd79c1d22ed91179)

Co-authored-by: Pedro Algarvio <[email protected]>
---
 requirements/base.txt              | 2 +-
 requirements/static/pkg/freebsd.in | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/requirements/base.txt b/requirements/base.txt
index ffe4bc98f1..6af972bd1b 100644
--- a/requirements/base.txt
+++ b/requirements/base.txt
@@ -3,7 +3,7 @@ msgpack>=0.5,!=0.5.5
 PyYAML
 MarkupSafe
 requests>=1.0.0
-distro>=1.5
+distro>=1.0.1
 # Requirements for Tornado 4.5.3 (vendored as salt.ext.tornado)
 singledispatch==3.4.0.3; python_version < '3.4'
 # Required by Tornado to handle threads stuff.
diff --git a/requirements/static/pkg/freebsd.in 
b/requirements/static/pkg/freebsd.in
index 879a378822..7cfa3dcce8 100644
--- a/requirements/static/pkg/freebsd.in
+++ b/requirements/static/pkg/freebsd.in
@@ -8,3 +8,4 @@ python-dateutil>=2.8.0
 python-gnupg>=0.4.4
 setproctitle>=1.1.10
 timelib>=0.2.5
+distro>=1.3.0
-- 
2.30.1


++++++ _lastrevision ++++++
--- /var/tmp/diff_new_pack.TLuy6Y/_old  2021-03-12 13:30:30.082088653 +0100
+++ /var/tmp/diff_new_pack.TLuy6Y/_new  2021-03-12 13:30:30.086088659 +0100
@@ -1 +1 @@
-20438f0fbeca551fd5a04babf1a686a5455c2ce3
\ No newline at end of file
+68bd2c45e40cf64ac426a7e5833daa076ab10cfe
\ No newline at end of file

++++++ do-not-monkey-patch-yaml-bsc-1177474.patch ++++++
>From 8eaeb751d4077d6514577b53a9dbe23df231018e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pablo=20Su=C3=A1rez=20Hern=C3=A1ndez?=
 <[email protected]>
Date: Mon, 8 Mar 2021 12:35:14 +0000
Subject: [PATCH] Do not monkey patch yaml (bsc#1177474)

Add changelog file

Add suggestions by pre-commit

Add unit test to check for monkey patching
---
 changelog/57995.fixed               |  1 +
 salt/utils/yamlloader.py            | 28 ++++++++++------------------
 tests/unit/utils/test_yamlloader.py |  6 +++++-
 3 files changed, 16 insertions(+), 19 deletions(-)
 create mode 100644 changelog/57995.fixed

diff --git a/changelog/57995.fixed b/changelog/57995.fixed
new file mode 100644
index 0000000000..78f2cd1fa4
--- /dev/null
+++ b/changelog/57995.fixed
@@ -0,0 +1 @@
+Do not monkey patch yaml loaders: Prevent breaking Ansible filter modules
diff --git a/salt/utils/yamlloader.py b/salt/utils/yamlloader.py
index e9d80fc4ad..f98fdcb0e9 100644
--- a/salt/utils/yamlloader.py
+++ b/salt/utils/yamlloader.py
@@ -1,10 +1,7 @@
-# -*- coding: utf-8 -*-
 """
 Custom YAML loading in Salt
 """
 
-# Import python libs
-from __future__ import absolute_import, print_function, unicode_literals
 
 import warnings
 
@@ -13,13 +10,8 @@ import yaml  # pylint: disable=blacklisted-import
 from yaml.constructor import ConstructorError
 from yaml.nodes import MappingNode, SequenceNode
 
-try:
-    yaml.Loader = yaml.CLoader
-    yaml.Dumper = yaml.CDumper
-    yaml.SafeLoader = yaml.CSafeLoader
-    yaml.SafeDumper = yaml.CSafeDumper
-except Exception:  # pylint: disable=broad-except
-    pass
+# prefer C bindings over python when available
+BaseLoader = getattr(yaml, "CSafeLoader", yaml.SafeLoader)
 
 
 __all__ = ["SaltYamlSafeLoader", "load", "safe_load"]
@@ -35,7 +27,7 @@ warnings.simplefilter("always", category=DuplicateKeyWarning)
 
 
 # with code integrated from https://gist.github.com/844388
-class SaltYamlSafeLoader(yaml.SafeLoader):
+class SaltYamlSafeLoader(BaseLoader):
     """
     Create a custom YAML loader that uses the custom constructor. This allows
     for the YAML loading defaults to be manipulated based on needs within salt
@@ -43,7 +35,7 @@ class SaltYamlSafeLoader(yaml.SafeLoader):
     """
 
     def __init__(self, stream, dictclass=dict):
-        super(SaltYamlSafeLoader, self).__init__(stream)
+        super().__init__(stream)
         if dictclass is not dict:
             # then assume ordered dict and use it for both !map and !omap
             self.add_constructor("tag:yaml.org,2002:map", 
type(self).construct_yaml_map)
@@ -74,7 +66,7 @@ class SaltYamlSafeLoader(yaml.SafeLoader):
             raise ConstructorError(
                 None,
                 None,
-                "expected a mapping node, but found {0}".format(node.id),
+                "expected a mapping node, but found {}".format(node.id),
                 node.start_mark,
             )
 
@@ -90,7 +82,7 @@ class SaltYamlSafeLoader(yaml.SafeLoader):
                 raise ConstructorError(
                     context,
                     node.start_mark,
-                    "found unacceptable key {0}".format(key_node.value),
+                    "found unacceptable key {}".format(key_node.value),
                     key_node.start_mark,
                 )
             value = self.construct_object(value_node, deep=deep)
@@ -98,7 +90,7 @@ class SaltYamlSafeLoader(yaml.SafeLoader):
                 raise ConstructorError(
                     context,
                     node.start_mark,
-                    "found conflicting ID '{0}'".format(key),
+                    "found conflicting ID '{}'".format(key),
                     key_node.start_mark,
                 )
             mapping[key] = value
@@ -118,7 +110,7 @@ class SaltYamlSafeLoader(yaml.SafeLoader):
                 # an empty string. Change it to '0'.
                 if node.value == "":
                     node.value = "0"
-        return super(SaltYamlSafeLoader, self).construct_scalar(node)
+        return super().construct_scalar(node)
 
     def construct_yaml_str(self, node):
         value = self.construct_scalar(node)
@@ -142,7 +134,7 @@ class SaltYamlSafeLoader(yaml.SafeLoader):
                             raise ConstructorError(
                                 "while constructing a mapping",
                                 node.start_mark,
-                                "expected a mapping for merging, but found 
{0}".format(
+                                "expected a mapping for merging, but found 
{}".format(
                                     subnode.id
                                 ),
                                 subnode.start_mark,
@@ -156,7 +148,7 @@ class SaltYamlSafeLoader(yaml.SafeLoader):
                     raise ConstructorError(
                         "while constructing a mapping",
                         node.start_mark,
-                        "expected a mapping or list of mappings for merging, 
but found {0}".format(
+                        "expected a mapping or list of mappings for merging, 
but found {}".format(
                             value_node.id
                         ),
                         value_node.start_mark,
diff --git a/tests/unit/utils/test_yamlloader.py 
b/tests/unit/utils/test_yamlloader.py
index a1e17af760..3f2e4403ba 100644
--- a/tests/unit/utils/test_yamlloader.py
+++ b/tests/unit/utils/test_yamlloader.py
@@ -13,7 +13,7 @@ import salt.utils.files
 
 # Import 3rd-party libs
 from salt.ext import six
-from salt.utils.yamlloader import SaltYamlSafeLoader
+from salt.utils.yamlloader import SaltYamlSafeLoader, yaml
 from tests.support.mock import mock_open, patch
 
 # Import Salt Testing Libs
@@ -177,3 +177,7 @@ class YamlLoaderTestCase(TestCase):
             ),
             {"foo": {"b": {"foo": "bar", "one": 1, "list": [1, "two", 3]}}},
         )
+
+    def test_not_yaml_monkey_patching(self):
+        if hasattr(yaml, "CSafeLoader"):
+            assert yaml.SafeLoader != yaml.CSafeLoader
-- 
2.30.1


++++++ prevent-race-condition-on-sigterm-for-the-minion-bsc.patch ++++++
>From 30fa660f0f6a9a3e5709e4fd0773e43248018726 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pablo=20Su=C3=A1rez=20Hern=C3=A1ndez?=
 <[email protected]>
Date: Tue, 19 Jan 2021 09:23:44 +0000
Subject: [PATCH] Prevent race condition on SIGTERM for the minion
 (bsc#1172110)

Prevent race condition when handling signals by CLI clients

Add test case to cover destroy race condition for minion module_refresh
---
 salt/loader.py            | 17 +++++++++++------
 salt/minion.py            |  2 ++
 tests/unit/test_minion.py | 27 +++++++++++++++++++++++++++
 3 files changed, 40 insertions(+), 6 deletions(-)

diff --git a/salt/loader.py b/salt/loader.py
index 7b42b6b0d6..02446b5ee1 100644
--- a/salt/loader.py
+++ b/salt/loader.py
@@ -1737,12 +1737,17 @@ class LazyLoader(salt.utils.lazy.LazyDict):
             except Exception:  # pylint: disable=broad-except
                 pass
             else:
-                tgt_fn = os.path.join("salt", "utils", "process.py")
-                if fn_.endswith(tgt_fn) and "_handle_signals" in caller:
-                    # Race conditon, SIGTERM or SIGINT received while loader
-                    # was in process of loading a module. Call sys.exit to
-                    # ensure that the process is killed.
-                    sys.exit(salt.defaults.exitcodes.EX_OK)
+                tgt_fns = [
+                    os.path.join("salt", "utils", "process.py"),
+                    os.path.join("salt", "cli", "daemons.py"),
+                    os.path.join("salt", "cli", "api.py"),
+                ]
+                for tgt_fn in tgt_fns:
+                    if fn_.endswith(tgt_fn) and "_handle_signals" in caller:
+                        # Race conditon, SIGTERM or SIGINT received while 
loader
+                        # was in process of loading a module. Call sys.exit to
+                        # ensure that the process is killed.
+                        sys.exit(salt.defaults.exitcodes.EX_OK)
             log.error(
                 "Failed to import %s %s as the module called exit()\n",
                 self.tag,
diff --git a/salt/minion.py b/salt/minion.py
index dacff1e0a9..6bfac076eb 100644
--- a/salt/minion.py
+++ b/salt/minion.py
@@ -2385,6 +2385,8 @@ class Minion(MinionBase):
         """
         Refresh the functions and returners.
         """
+        if not hasattr(self, "schedule"):
+            return
         log.debug("Refreshing modules. Notify=%s", notify)
         self.functions, self.returners, _, self.executors = self._load_modules(
             force_refresh, notify=notify
diff --git a/tests/unit/test_minion.py b/tests/unit/test_minion.py
index 36c88819f4..9b31d011ec 100644
--- a/tests/unit/test_minion.py
+++ b/tests/unit/test_minion.py
@@ -392,6 +392,33 @@ class MinionTestCase(TestCase, 
AdaptedConfigurationTestCaseMixin):
             finally:
                 minion.destroy()
 
+    def test_minion_module_refresh(self):
+        """
+        Tests that the 'module_refresh' just return in case there is no 
'schedule'
+        because destroy method was already called.
+        """
+        with patch("salt.minion.Minion.ctx", MagicMock(return_value={})), 
patch(
+            "salt.utils.process.SignalHandlingProcess.start",
+            MagicMock(return_value=True),
+        ), patch(
+            "salt.utils.process.SignalHandlingProcess.join",
+            MagicMock(return_value=True),
+        ):
+            try:
+                mock_opts = salt.config.DEFAULT_MINION_OPTS.copy()
+                minion = salt.minion.Minion(
+                    mock_opts, io_loop=salt.ext.tornado.ioloop.IOLoop(),
+                )
+                minion.schedule = salt.utils.schedule.Schedule(
+                    mock_opts, {}, returners={}
+                )
+                self.assertTrue(hasattr(minion, "schedule"))
+                minion.destroy()
+                self.assertTrue(not hasattr(minion, "schedule"))
+                self.assertTrue(not minion.module_refresh())
+            finally:
+                minion.destroy()
+
     @slowTest
     def 
test_when_ping_interval_is_set_the_callback_should_be_added_to_periodic_callbacks(
         self,
-- 
2.30.1


++++++ virt.network_update-handle-missing-ipv4-netmask-attr.patch ++++++
>From c0a9915e44d4b1cbc09b5d52e7ed41ec7c29abcf Mon Sep 17 00:00:00 2001
From: Cedric Bosdonnat <[email protected]>
Date: Wed, 10 Mar 2021 09:29:12 +0100
Subject: [PATCH] virt.network_update: handle missing ipv4 netmask
 attribute (#328)

In the libvirt definition, the IPv4 netmask XML attribute may be
replaced by the prefix one. Handle this situation gracefully rather than
miserably failing.
---
 changelog/59692.fixed                           |  1 +
 salt/modules/virt.py                            |  2 +-
 tests/pytests/unit/modules/virt/test_network.py | 13 +++++++++----
 3 files changed, 11 insertions(+), 5 deletions(-)
 create mode 100644 changelog/59692.fixed

diff --git a/changelog/59692.fixed b/changelog/59692.fixed
new file mode 100644
index 0000000000..b4f4533ccc
--- /dev/null
+++ b/changelog/59692.fixed
@@ -0,0 +1 @@
+Don't fail updating network without netmask ip attribute
diff --git a/salt/modules/virt.py b/salt/modules/virt.py
index 35711fcef4..6409089109 100644
--- a/salt/modules/virt.py
+++ b/salt/modules/virt.py
@@ -7415,7 +7415,7 @@ def network_update(
             if node.get("family", "ipv4") == "ipv4"
         ]
         for ip_node in ipv4_nodes:
-            netmask = ip_node.attrib.pop("netmask")
+            netmask = ip_node.attrib.pop("netmask", None)
             if netmask:
                 address = ipaddress.ip_network(
                     "{}/{}".format(ip_node.get("address"), netmask), 
strict=False
diff --git a/tests/pytests/unit/modules/virt/test_network.py 
b/tests/pytests/unit/modules/virt/test_network.py
index 52aadc9519..0def5e5c32 100644
--- a/tests/pytests/unit/modules/virt/test_network.py
+++ b/tests/pytests/unit/modules/virt/test_network.py
@@ -365,8 +365,11 @@ def test_update_nat_nochange(make_mock_network):
     define_mock.assert_not_called()
 
 
[email protected]("test", [True, False])
-def test_update_nat_change(make_mock_network, test):
[email protected](
+    "test, netmask",
+    [(True, "netmask='255.255.255.0'"), (True, "prefix='24'"), (False, 
"prefix='24'")],
+)
+def test_update_nat_change(make_mock_network, test, netmask):
     """
     Test updating a NAT network with changes
     """
@@ -379,13 +382,15 @@ def test_update_nat_change(make_mock_network, test):
           <bridge name='virbr0' stp='on' delay='0'/>
           <mac address='52:54:00:cd:49:6b'/>
           <domain name='my.lab' localOnly='yes'/>
-          <ip address='192.168.122.1' netmask='255.255.255.0'>
+          <ip address='192.168.122.1' {}>
             <dhcp>
               <range start='192.168.122.2' end='192.168.122.254'/>
             </dhcp>
           </ip>
         </network>
-        """
+        """.format(
+            netmask
+        )
     )
     assert virt.network_update(
         "default",
-- 
2.30.1

Reply via email to