grafana_data_sources = self.mgr.template.render(
'services/grafana/ceph-dashboard.yml.j2', {'hosts': prom_services})
- cert = self.mgr.get_store('grafana_crt')
- pkey = self.mgr.get_store('grafana_key')
+ cert_path = f'{daemon_spec.host}/grafana_crt'
+ key_path = f'{daemon_spec.host}/grafana_key'
+ cert = self.mgr.get_store(cert_path)
+ pkey = self.mgr.get_store(key_path)
if cert and pkey:
try:
verify_tls(cert, pkey)
logger.warning('Provided grafana TLS certificates invalid: %s', str(e))
cert, pkey = None, None
if not (cert and pkey):
- cert, pkey = create_self_signed_cert('Ceph', 'cephadm')
- self.mgr.set_store('grafana_crt', cert)
- self.mgr.set_store('grafana_key', pkey)
+ cert, pkey = create_self_signed_cert('Ceph', daemon_spec.host)
+ self.mgr.set_store(cert_path, cert)
+ self.mgr.set_store(key_path, pkey)
if 'dashboard' in self.mgr.get('mgr_map')['modules']:
self.mgr.check_mon_command({
'prefix': 'dashboard set-grafana-api-ssl-verify',
service_url
)
+ def pre_remove(self, daemon: DaemonDescription) -> None:
+ """
+ Called before grafana daemon is removed.
+ """
+ if daemon.hostname is not None:
+ # delete cert/key entires for this grafana daemon
+ cert_path = f'{daemon.hostname}/grafana_crt'
+ key_path = f'{daemon.hostname}/grafana_key'
+ self.mgr.set_store(cert_path, None)
+ self.mgr.set_store(key_path, None)
+
def ok_to_stop(self,
daemon_ids: List[str],
force: bool = False,
_run_cephadm.return_value = ('{}', '', 0)
with with_host(cephadm_module, 'test'):
- cephadm_module.set_store('grafana_crt', 'c')
- cephadm_module.set_store('grafana_key', 'k')
+ cephadm_module.set_store('test/grafana_crt', 'c')
+ cephadm_module.set_store('test/grafana_key', 'k')
with with_service(cephadm_module, MonitoringSpec('prometheus')) as _, \
with_service(cephadm_module, GrafanaSpec('grafana')) as _:
files = {