Skip to content

Commit 7a3191d

Browse files
committed
cephadm: Add pre_remove logic to clean up configs for grafana
Signed-off-by: Kushal Deb <[email protected]>
1 parent fa05bc4 commit 7a3191d

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

src/pybind/mgr/cephadm/services/monitoring.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,31 @@ def config_dashboard(self, daemon_descrs: List[DaemonDescription]) -> None:
227227
service_url
228228
)
229229

230+
def reset_config(self, daemon: DaemonDescription) -> None:
231+
232+
if daemon.hostname is None:
233+
return
234+
try:
235+
current_api_host = self.mgr.check_mon_command({"prefix": "dashboard get-grafana-api-url"}).stdout.strip()
236+
daemon_addr = daemon.ip if daemon.ip else self.mgr.get_fqdn(daemon.hostname)
237+
daemon_port = daemon.ports[0] if daemon.ports else self.DEFAULT_SERVICE_PORT
238+
service_url = build_url(scheme='https', host=daemon_addr, port=daemon_port)
239+
240+
if current_api_host == service_url:
241+
remaining_daemons = [d for d in self.mgr.cache.get_daemons_by_service(self.TYPE)
242+
if d.name() != daemon.name()]
243+
if remaining_daemons:
244+
self.config_dashboard(remaining_daemons)
245+
logger.info("Updated dashboard API settings to point to the remaining daemon")
246+
else:
247+
self.mgr.check_mon_command({"prefix": "dashboard reset-grafana-api-url"})
248+
self.mgr.check_mon_command({"prefix": "dashboard reset-grafana-api-ssl-verify"})
249+
logger.info("Reset dashboard API settings as no Grafana daemons are remaining")
250+
else:
251+
logger.info(f"Grafana daemon {daemon.name()} removed; no changes")
252+
except Exception as e:
253+
logger.error(f"Error in Grafana pre_remove: {str(e)}")
254+
230255
def pre_remove(self, daemon: DaemonDescription) -> None:
231256
"""
232257
Called before grafana daemon is removed.
@@ -235,6 +260,7 @@ def pre_remove(self, daemon: DaemonDescription) -> None:
235260
# delete cert/key entires for this grafana daemon
236261
self.mgr.cert_mgr.rm_cert('grafana_cert', host=daemon.hostname)
237262
self.mgr.cert_mgr.rm_key('grafana_key', host=daemon.hostname)
263+
self.reset_config(daemon)
238264

239265
def ok_to_stop(self,
240266
daemon_ids: List[str],

0 commit comments

Comments
 (0)