]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: support rgw roles removal
authorNizamudeen A <nia@redhat.com>
Wed, 18 Oct 2023 06:36:47 +0000 (12:06 +0530)
committerNizamudeen A <nia@redhat.com>
Tue, 19 Mar 2024 15:01:45 +0000 (20:31 +0530)
Fixes: https://tracker.ceph.com/issues/63230
Signed-off-by: Nizamudeen A <nia@redhat.com>
(cherry picked from commit 2e06ab0b8c730f063e1376b2f330c3b78089af67)

src/pybind/mgr/dashboard/controllers/rgw.py
src/pybind/mgr/dashboard/services/rgw_client.py

index fc4c2f48eb1cad88f4b876c4d98f9321e5f8792f..4dd3872aea5b1241e621e52ff50793a32db3229f 100644 (file)
@@ -718,6 +718,16 @@ class RGWRoleEndpoints:
         return f'Role {role_name} created successfully'
 
 
+    @staticmethod
+    def role_delete(_, role_name: str):
+        assert role_name
+        rgw_client = RgwClient.admin_instance()
+        rgw_client.delete_role(role_name)
+        return f'Role {role_name} deleted successfully'
+
+
+
+
 # pylint: disable=C0301
 assume_role_policy_help = (
     'Paste a json assume role policy document, to find more information on how to get this document, <a '  # noqa: E501
@@ -746,7 +756,8 @@ create_role_form = Form(path='/rgw/roles/create',
     doc=APIDoc("List of RGW roles", "RGW"),
     actions=[
         TableAction(name='Create', permission='create', icon=Icon.ADD.value,
-                    routerLink='/rgw/roles/create')
+        TableAction(name='Delete', permission='delete', icon=Icon.DESTROY.value,
+                    click='delete', disable=True),
     ],
     forms=[create_role_form],
     permissions=[Scope.CONFIG_OPT],
@@ -756,7 +767,11 @@ create_role_form = Form(path='/rgw/roles/create',
     ),
     create=CRUDCollectionMethod(
         func=RGWRoleEndpoints.role_create,
-        doc=EndpointDoc("Create Ceph User")
+        doc=EndpointDoc("Create RGW role")
+    ),
+    delete=CRUDCollectionMethod(
+        func=RGWRoleEndpoints.role_delete,
+        doc=EndpointDoc("Delete RGW role")
     ),
     set_column={
         "CreateDate": {'cellTemplate': 'date'},
index 7db28506ddcb49fb74d2ae9f7ceca86743f8649f..e6507436b0a5972f24c4c1c650e33e99fc167dab 100644 (file)
@@ -854,6 +854,14 @@ class RgwClient(RestClient):
                    'Looks like the document has a wrong format.'
                    f' For more information about the format look at {link}')
             raise DashboardException(msg=msg, component='rgw')
+    
+    def delete_role(self, role_name: str) -> None:
+        rgw_delete_role_command = ['role', 'delete', '--role-name', role_name]
+        code, _, _err = mgr.send_rgwadmin_command(rgw_delete_role_command,
+                                                  stdout_as_json=False)
+        if code != 0:
+            raise DashboardException(msg=f'Error deleting role with code {code}: {_err}',
+                                     component='rgw')
 
     @RestClient.api_get('/{bucket_name}?policy')
     def get_bucket_policy(self, bucket_name: str, request=None):