From 90e221d0b53ad137e912b8cbd84935a8755f1fe7 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 --- 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 5c7b032967589..a9071bc2a3a51 100644 --- a/qa/tasks/mgr/dashboard/test_rgw.py +++ b/qa/tasks/mgr/dashboard/test_rgw.py @@ -785,7 +785,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) @@ -808,7 +808,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 9d25767479473..4b61415f6f0ff 100755 --- a/src/pybind/mgr/dashboard/controllers/rgw.py +++ b/src/pybind/mgr/dashboard/controllers/rgw.py @@ -773,6 +773,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}) @@ -788,7 +791,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 @@ -910,7 +913,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