From: Tatjana Dehler Date: Fri, 27 Mar 2020 14:58:42 +0000 (+0100) Subject: mgr/dashboard: do not fail on user creation X-Git-Tag: v15.2.1~11^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5f8cb5b73848cc33ec5ea7f60085eaf67370dd1c;p=ceph.git mgr/dashboard: do not fail on user creation Accordingly to other Ceph commands do not fail on user creation with a non-zero error code if the user already exists. Instead succeed and return the message 'User already exists'. Fixes: https://tracker.ceph.com/issues/44502 Signed-off-by: Tatjana Dehler (cherry picked from commit 9992faa9479b62f05f36352daf89f6e7541f29c9) --- diff --git a/src/pybind/mgr/dashboard/services/access_control.py b/src/pybind/mgr/dashboard/services/access_control.py index f5a559751e60..e55c1455ccd1 100644 --- a/src/pybind/mgr/dashboard/services/access_control.py +++ b/src/pybind/mgr/dashboard/services/access_control.py @@ -727,7 +727,7 @@ def ac_user_create_cmd(_, username, password=None, rolename=None, name=None, except PasswordPolicyException as ex: return -errno.EINVAL, '', str(ex) except UserAlreadyExists as ex: - return -errno.EEXIST, '', str(ex) + return 0, str(ex), '' if role: user.set_roles([role]) diff --git a/src/pybind/mgr/dashboard/tests/test_access_control.py b/src/pybind/mgr/dashboard/tests/test_access_control.py index 684d7a84fd77..0039efc167ba 100644 --- a/src/pybind/mgr/dashboard/tests/test_access_control.py +++ b/src/pybind/mgr/dashboard/tests/test_access_control.py @@ -328,13 +328,9 @@ class AccessControlTest(unittest.TestCase, CLICommandTestMixin): def test_create_duplicate_user(self): self.test_create_user() - - with self.assertRaises(CmdException) as ctx: - self.exec_cmd('ac-user-create', username='admin', password='admin', - force_password=True) - - self.assertEqual(ctx.exception.retcode, -errno.EEXIST) - self.assertEqual(str(ctx.exception), "User 'admin' already exists") + ret = self.exec_cmd('ac-user-create', username='admin', password='admin', + force_password=True) + self.assertEqual(ret, "User 'admin' already exists") def test_create_users_with_dne_role(self): # one time call to setup our persistent db