self.template = TemplateMgr(self)
self.requires_post_actions: Set[str] = set()
+ self.need_connect_dashboard_rgw = False
self.config_checker = CephadmConfigChecks(self)
daemons_table += "{:<20} {:<15}\n".format(d.daemon_type, d.daemon_id)
return "Scheduled to remove the following daemons from host '{}'\n{}".format(hostname, daemons_table)
+
+ def trigger_connect_dashboard_rgw(self) -> None:
+ self.need_connect_dashboard_rgw = True
+ self.event.set()
logger = logging.getLogger(__name__)
+REQUIRES_POST_ACTIONS = ['grafana', 'iscsi', 'prometheus', 'alertmanager', 'rgw']
+
class CephadmServe:
"""
self._update_paused_health()
+ if self.mgr.need_connect_dashboard_rgw and self.mgr.config_dashboard:
+ self.mgr.need_connect_dashboard_rgw = False
+ if 'dashboard' in self.mgr.get('mgr_map')['modules']:
+ self.log.info('Checking dashboard <-> RGW credentials')
+ self.mgr.remote('dashboard', 'connect_rgw')
+
if not self.mgr.paused:
self.mgr.to_remove_osds.process_removal_queue()
continue
# These daemon types require additional configs after creation
- if dd.daemon_type in ['grafana', 'iscsi', 'prometheus', 'alertmanager', 'nfs']:
+ if dd.daemon_type in REQUIRES_POST_ACTIONS:
daemons_post[dd.daemon_type].append(dd)
if self.mgr.cephadm_services[daemon_type_to_service(dd.daemon_type)].get_active_daemon(
sd = daemon_spec.to_daemon_description(
DaemonDescriptionStatus.running, 'starting')
self.mgr.cache.add_daemon(daemon_spec.host, sd)
- if daemon_spec.daemon_type in [
- 'grafana', 'iscsi', 'prometheus', 'alertmanager'
- ]:
+ if daemon_spec.daemon_type in REQUIRES_POST_ACTIONS:
self.mgr.requires_post_actions.add(daemon_spec.daemon_type)
self.mgr.cache.invalidate_host_daemons(daemon_spec.host)
logger.info('Saving service %s spec with placement %s' % (
spec.service_name(), spec.placement.pretty_str()))
self.mgr.spec_store.save(spec)
+ self.mgr.trigger_connect_dashboard_rgw()
def prepare_create(self, daemon_spec: CephadmDaemonDeploySpec) -> CephadmDaemonDeploySpec:
assert self.TYPE == daemon_spec.daemon_type
'prefix': 'config-key rm',
'key': f'rgw/cert/{service_name}',
})
+ self.mgr.trigger_connect_dashboard_rgw()
def post_remove(self, daemon: DaemonDescription) -> None:
super().post_remove(daemon)
warn_message = "WARNING: Removing RGW daemons can cause clients to lose connectivity. "
return HandleCommandResult(-errno.EBUSY, '', warn_message)
+ def config_dashboard(self, daemon_descrs: List[DaemonDescription]) -> None:
+ self.mgr.trigger_connect_dashboard_rgw()
+
class RbdMirrorService(CephService):
TYPE = 'rbd-mirror'