File fix-salt.utils.stringutils.to_str-calls-to-make-it-w.patch of Package salt.26881

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


openSUSE Build Service is sponsored by