diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-23 16:45:17 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-23 16:45:44 +0000 |
commit | 17d6a993fc17d533460c5f40f3908c708e057c18 (patch) | |
tree | 1a3bd93e0ecd74fa02f93a528fe2f87e5314c4b5 /src/mgr/DaemonServer.cc | |
parent | Releasing progress-linux version 18.2.2-0progress7.99u1. (diff) | |
download | ceph-17d6a993fc17d533460c5f40f3908c708e057c18.tar.xz ceph-17d6a993fc17d533460c5f40f3908c708e057c18.zip |
Merging upstream version 18.2.3.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/mgr/DaemonServer.cc')
-rw-r--r-- | src/mgr/DaemonServer.cc | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/mgr/DaemonServer.cc b/src/mgr/DaemonServer.cc index 0e9e6be2a..5b2457278 100644 --- a/src/mgr/DaemonServer.cc +++ b/src/mgr/DaemonServer.cc @@ -1981,6 +1981,37 @@ bool DaemonServer::_handle_command( cmdctx->reply(-EINVAL, ss); return true; } + /* + * RGW has the daemon name stored in the daemon metadata + * and uses the GID as key in the service_map. + * We need to match the user's query with the daemon name to + * find the correct key for retrieving daemon state. + */ + string daemon_name = key.name; + auto p = daemon_name.find("rgw"); + if (p != daemon_name.npos) { + auto rgw_daemons = daemon_state.get_by_service("rgw"); + for (auto& rgw_daemon : rgw_daemons) { + DaemonStatePtr daemon = rgw_daemon.second; + string name = daemon->metadata.find("id")->second; + /* + * The id stored in the metadata is the port number + * for the RGW daemon. + * In the case of multiple RGW daemons, the user might + * use the port number (rgw.8000) to specify the daemon. + */ + auto p = daemon_name.find('.'); + if (p == key.name.npos) { + key = daemon->key; + } else { + // if user has specified port number in the query + if (daemon_name.substr(p + 1) == name) { + key = daemon->key; + break; + } + } + } + } DaemonStatePtr daemon = daemon_state.get(key); if (!daemon) { ss << "no config state for daemon " << who; |