65598582f5
OBS-URL: https://build.opensuse.org/package/show/systemsmanagement:saltstack/salt?expand=0&rev=179
90 lines
3.3 KiB
Diff
90 lines
3.3 KiB
Diff
From 1e00e2b72321b5312efb7b8b426a037c8db72b79 Mon Sep 17 00:00:00 2001
|
|
From: Alberto Planas <aplanas@suse.com>
|
|
Date: Wed, 29 Jul 2020 16:11:47 +0200
|
|
Subject: [PATCH] Fix __mount_device wrapper (#254)
|
|
|
|
Some recent change in Salt is now doing the right thing, and calling the
|
|
different states with separated args and kwargs. This change trigger a
|
|
hidden bug in the __mount_device decorator, that expect those parameter
|
|
to be in kwargs, as is happening during the test.
|
|
|
|
This patch change the way that the wrapper inside the decorator search
|
|
for the name and device parameters, first looking into kwargs and later
|
|
in args if possible. A new test is introduced to exercise both cases.
|
|
|
|
Fix #58012
|
|
|
|
(cherry picked from commit 2089645e2478751dc795127cfd14d0385c2e0899)
|
|
---
|
|
changelog/58012.fixed | 1 +
|
|
salt/states/btrfs.py | 4 ++--
|
|
tests/unit/states/test_btrfs.py | 27 +++++++++++++++++++++++++++
|
|
3 files changed, 30 insertions(+), 2 deletions(-)
|
|
create mode 100644 changelog/58012.fixed
|
|
|
|
diff --git a/changelog/58012.fixed b/changelog/58012.fixed
|
|
new file mode 100644
|
|
index 0000000000..13a1ef747d
|
|
--- /dev/null
|
|
+++ b/changelog/58012.fixed
|
|
@@ -0,0 +1 @@
|
|
+Fix btrfs state decorator, that produces exceptions when creating subvolumes.
|
|
\ No newline at end of file
|
|
diff --git a/salt/states/btrfs.py b/salt/states/btrfs.py
|
|
index 1374bbffb4..62a3553758 100644
|
|
--- a/salt/states/btrfs.py
|
|
+++ b/salt/states/btrfs.py
|
|
@@ -103,8 +103,8 @@ def __mount_device(action):
|
|
|
|
@functools.wraps(action)
|
|
def wrapper(*args, **kwargs):
|
|
- name = kwargs["name"]
|
|
- device = kwargs["device"]
|
|
+ name = kwargs.get("name", args[0] if args else None)
|
|
+ device = kwargs.get("device", args[1] if len(args) > 1 else None)
|
|
use_default = kwargs.get("use_default", False)
|
|
|
|
ret = {
|
|
diff --git a/tests/unit/states/test_btrfs.py b/tests/unit/states/test_btrfs.py
|
|
index b8f70bccfe..dceb971aa1 100644
|
|
--- a/tests/unit/states/test_btrfs.py
|
|
+++ b/tests/unit/states/test_btrfs.py
|
|
@@ -231,6 +231,33 @@ class BtrfsTestCase(TestCase, LoaderModuleMockMixin):
|
|
mount.assert_called_once()
|
|
umount.assert_called_once()
|
|
|
|
+ @skipIf(salt.utils.platform.is_windows(), "Skip on Windows")
|
|
+ @patch("salt.states.btrfs._umount")
|
|
+ @patch("salt.states.btrfs._mount")
|
|
+ def test_subvolume_created_exists_decorator(self, mount, umount):
|
|
+ """
|
|
+ Test creating a subvolume using a non-kwargs call
|
|
+ """
|
|
+ mount.return_value = "/tmp/xxx"
|
|
+ salt_mock = {
|
|
+ "btrfs.subvolume_exists": MagicMock(return_value=True),
|
|
+ }
|
|
+ opts_mock = {
|
|
+ "test": False,
|
|
+ }
|
|
+ with patch.dict(btrfs.__salt__, salt_mock), patch.dict(
|
|
+ btrfs.__opts__, opts_mock
|
|
+ ):
|
|
+ assert btrfs.subvolume_created("@/var", "/dev/sda1") == {
|
|
+ "name": "@/var",
|
|
+ "result": True,
|
|
+ "changes": {},
|
|
+ "comment": ["Subvolume @/var already present"],
|
|
+ }
|
|
+ salt_mock["btrfs.subvolume_exists"].assert_called_with("/tmp/xxx/@/var")
|
|
+ mount.assert_called_once()
|
|
+ umount.assert_called_once()
|
|
+
|
|
@patch("salt.states.btrfs._umount")
|
|
@patch("salt.states.btrfs._mount")
|
|
def test_subvolume_created_exists_test(self, mount, umount):
|
|
--
|
|
2.29.2
|
|
|
|
|