From 2036e87b91f39f865e9ecb7ecd1a334e9235f644 Mon Sep 17 00:00:00 2001 From: Hannes Baum Date: Wed, 6 Nov 2024 09:46:09 +0100 Subject: [PATCH] mgr: fix subuser creation via dashboard Subusers couldn't be created through the dashboard, because the get call was overwritten with Python magic due to it being the function under the HTTP call. The get function was therefore split into an "external" and "internal" function, whereas one can be used by functions without triggering the magic. Since the user object was then returned correctly, json.loads could be removed. Signed-off-by: Hannes Baum (cherry picked from commit 90e221d0b53ad137e912b8cbd84935a8755f1fe7) --- qa/tasks/mgr/dashboard/test_rgw.py | 4 ++-- src/pybind/mgr/dashboard/controllers/rgw.py | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/qa/tasks/mgr/dashboard/test_rgw.py b/qa/tasks/mgr/dashboard/test_rgw.py index 01dbae59febaf..fa30677c93317 100644 --- a/qa/tasks/mgr/dashboard/test_rgw.py +++ b/qa/tasks/mgr/dashboard/test_rgw.py @@ -805,7 +805,7 @@ class RgwUserSubuserTest(RgwTestCase): 'access': 'readwrite', 'key_type': 'swift' }) - self.assertStatus(200) + self.assertStatus(201) data = self.jsonBody() subuser = self.find_object_in_list('id', 'teuth-test-user:tux', data) self.assertIsInstance(subuser, object) @@ -828,7 +828,7 @@ class RgwUserSubuserTest(RgwTestCase): 'access_key': 'yyy', 'secret_key': 'xxx' }) - self.assertStatus(200) + self.assertStatus(201) data = self.jsonBody() subuser = self.find_object_in_list('id', 'teuth-test-user:hugo', data) self.assertIsInstance(subuser, object) diff --git a/src/pybind/mgr/dashboard/controllers/rgw.py b/src/pybind/mgr/dashboard/controllers/rgw.py index 46c192323f93c..ddf3acad802d2 100644 --- a/src/pybind/mgr/dashboard/controllers/rgw.py +++ b/src/pybind/mgr/dashboard/controllers/rgw.py @@ -576,6 +576,9 @@ class RgwUser(RgwRESTController): return users def get(self, uid, daemon_name=None, stats=True) -> dict: + return self._get(uid, daemon_name=daemon_name, stats=stats) + + def _get(self, uid, daemon_name=None, stats=True) -> dict: query_params = '?stats' if stats else '' result = self.proxy(daemon_name, 'GET', 'user{}'.format(query_params), {'uid': uid, 'stats': stats}) @@ -590,7 +593,7 @@ class RgwUser(RgwRESTController): # type: (Optional[str]) -> List[str] emails = [] for uid in json.loads(self.list(daemon_name)): # type: ignore - user = json.loads(self.get(uid, daemon_name)) # type: ignore + user = self._get(uid, daemon_name) # type: ignore if user["email"]: emails.append(user["email"]) return emails @@ -710,7 +713,7 @@ class RgwUser(RgwRESTController): secret_key=None, daemon_name=None): # pylint: disable=R1705 subusr_array = [] - user = json.loads(self.get(uid, daemon_name)) # type: ignore + user = self._get(uid, daemon_name) # type: ignore subusers = user["subusers"] for sub_usr in subusers: subusr_array.append(sub_usr["id"]) -- 2.39.5