dcf656e899
OBS-URL: https://build.opensuse.org/package/show/systemsmanagement:saltstack/salt?expand=0&rev=181
100 lines
3.4 KiB
Diff
100 lines
3.4 KiB
Diff
From 435d9fbee299b06e1c58cdc0574b6a1975841879 Mon Sep 17 00:00:00 2001
|
|
From: Victor Zhestkov <vzhestkov@suse.com>
|
|
Date: Wed, 25 Nov 2020 15:09:41 +0300
|
|
Subject: [PATCH] Fix salt.utils.stringutils.to_str calls to make it
|
|
working with numeric uid/gid
|
|
|
|
---
|
|
salt/modules/file.py | 16 ++++++++++------
|
|
salt/states/file.py | 11 +++++++++--
|
|
2 files changed, 19 insertions(+), 8 deletions(-)
|
|
|
|
diff --git a/salt/modules/file.py b/salt/modules/file.py
|
|
index b830b390d3..b9744393d7 100644
|
|
--- a/salt/modules/file.py
|
|
+++ b/salt/modules/file.py
|
|
@@ -4970,6 +4970,12 @@ def check_perms(
|
|
is_dir = os.path.isdir(name)
|
|
is_link = os.path.islink(name)
|
|
|
|
+ def __safe_to_str(s):
|
|
+ try:
|
|
+ return salt.utils.stringutils.to_str(s)
|
|
+ except:
|
|
+ return salt.utils.stringutils.to_str(str(s))
|
|
+
|
|
# user/group changes if needed, then check if it worked
|
|
if user:
|
|
if isinstance(user, int):
|
|
@@ -4979,7 +4985,7 @@ def check_perms(
|
|
and user_to_uid(user) != user_to_uid(perms["luser"])
|
|
) or (
|
|
not salt.utils.platform.is_windows()
|
|
- and salt.utils.stringutils.to_str(user) != perms["luser"]
|
|
+ and __safe_to_str(user) != perms["luser"]
|
|
):
|
|
perms["cuser"] = user
|
|
|
|
@@ -4991,7 +4997,7 @@ def check_perms(
|
|
and group_to_gid(group) != group_to_gid(perms["lgroup"])
|
|
) or (
|
|
not salt.utils.platform.is_windows()
|
|
- and salt.utils.stringutils.to_str(group) != perms["lgroup"]
|
|
+ and __safe_to_str(group) != perms["lgroup"]
|
|
):
|
|
perms["cgroup"] = group
|
|
|
|
@@ -5023,8 +5029,7 @@ def check_perms(
|
|
and user != ""
|
|
) or (
|
|
not salt.utils.platform.is_windows()
|
|
- and salt.utils.stringutils.to_str(user)
|
|
- != get_user(name, follow_symlinks=follow_symlinks)
|
|
+ and __safe_to_str(user) != get_user(name, follow_symlinks=follow_symlinks)
|
|
and user != ""
|
|
):
|
|
if __opts__["test"] is True:
|
|
@@ -5045,8 +5050,7 @@ def check_perms(
|
|
and group != ""
|
|
) or (
|
|
not salt.utils.platform.is_windows()
|
|
- and salt.utils.stringutils.to_str(group)
|
|
- != get_group(name, follow_symlinks=follow_symlinks)
|
|
+ and __safe_to_str(group) != get_group(name, follow_symlinks=follow_symlinks)
|
|
and group != ""
|
|
):
|
|
if __opts__["test"] is True:
|
|
diff --git a/salt/states/file.py b/salt/states/file.py
|
|
index 89c70eb454..fd8ffde757 100644
|
|
--- a/salt/states/file.py
|
|
+++ b/salt/states/file.py
|
|
@@ -989,15 +989,22 @@ def _check_dir_meta(name, user, group, mode, follow_symlinks=False):
|
|
if not stats:
|
|
changes["directory"] = "new"
|
|
return changes
|
|
+
|
|
+ def __safe_to_str(s):
|
|
+ try:
|
|
+ return salt.utils.stringutils.to_str(s)
|
|
+ except:
|
|
+ return salt.utils.stringutils.to_str(str(s))
|
|
+
|
|
if (
|
|
user is not None
|
|
- and salt.utils.stringutils.to_str(user) != stats["user"]
|
|
+ and __safe_to_str(user) != stats["user"]
|
|
and user != stats.get("uid")
|
|
):
|
|
changes["user"] = user
|
|
if (
|
|
group is not None
|
|
- and salt.utils.stringutils.to_str(group) != stats["group"]
|
|
+ and __safe_to_str(group) != stats["group"]
|
|
and group != stats.get("gid")
|
|
):
|
|
changes["group"] = group
|
|
--
|
|
2.29.2
|
|
|
|
|