From: Aashish Sharma Date: Wed, 25 Sep 2024 12:39:32 +0000 (+0530) Subject: mgr/dashboard: show non default realm sync status in rgw overview page X-Git-Tag: testing/wip-jcollin-testing-20250911.070541-reef~6^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=731a54bac4a04d38d283622480fcedcf39ef1cac;p=ceph-ci.git mgr/dashboard: show non default realm sync status in rgw overview page Currently, we just show the sync status of the default realm in rgw overview page. This PR is to show the sync status of non-default realms as well. Multisite sync status can be viewed for any of the active daemon which runs in default/non-default realm. Fixes: https://tracker.ceph.com/issues/68329 Signed-off-by: Aashish Sharma (cherry picked from commit ea53aceb8d72187f7f8629aa6d3b66c7cca88a86) Conflicts: src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-overview-dashboard/rgw-overview-dashboard.component.ts src/pybind/mgr/dashboard/openapi.yaml --- diff --git a/src/pybind/mgr/dashboard/controllers/rgw.py b/src/pybind/mgr/dashboard/controllers/rgw.py index ddf3acad802..2d63cef12f3 100644 --- a/src/pybind/mgr/dashboard/controllers/rgw.py +++ b/src/pybind/mgr/dashboard/controllers/rgw.py @@ -113,9 +113,9 @@ class RgwMultisiteStatus(RESTController): @RESTController.Collection(method='GET', path='/sync_status') @allow_empty_body # pylint: disable=W0102,W0613 - def get_sync_status(self): + def get_sync_status(self, daemon_name=None): multisite_instance = RgwMultisite() - result = multisite_instance.get_multisite_sync_status() + result = multisite_instance.get_multisite_sync_status(daemon_name) return result diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/api/rgw-multisite.service.ts b/src/pybind/mgr/dashboard/frontend/src/app/shared/api/rgw-multisite.service.ts index d36c3a29e1a..3ad74bcaff6 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/shared/api/rgw-multisite.service.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/shared/api/rgw-multisite.service.ts @@ -27,6 +27,8 @@ export class RgwMultisiteService { } getSyncStatus() { - return this.http.get(`${this.url}/sync_status`); + return this.rgwDaemonService.request((params: HttpParams) => { + return this.http.get(`${this.url}/sync_status`, { params: params }); + }); } } diff --git a/src/pybind/mgr/dashboard/services/rgw_client.py b/src/pybind/mgr/dashboard/services/rgw_client.py index 46d7b7ba786..2cd92177d1c 100644 --- a/src/pybind/mgr/dashboard/services/rgw_client.py +++ b/src/pybind/mgr/dashboard/services/rgw_client.py @@ -1650,8 +1650,16 @@ class RgwMultisite: is_multisite_configured = False return is_multisite_configured - def get_multisite_sync_status(self): + def get_multisite_sync_status(self, daemon_name: str): rgw_multisite_sync_status_cmd = ['sync', 'status'] + daemons = _get_daemons() + try: + realm_name = daemons[daemon_name].realm_name + except (KeyError, AttributeError): + raise DashboardException('Unable to get realm name from daemon', + http_status_code=500, component='rgw') + if realm_name: + rgw_multisite_sync_status_cmd.extend(['--rgw-realm', realm_name]) try: exit_code, out, _ = mgr.send_rgwadmin_command(rgw_multisite_sync_status_cmd, False) if exit_code > 0: