found = self.spec_store.rm(service_name)
if found:
self._kick_serve_loop()
- service = self.cephadm_services.get(service_name, None)
- if service:
- service.purge()
return 'Removed service %s' % service_name
else:
# must be idempotent: still a success.
self._check_daemons()
+ self._purge_deleted_services()
+
if self.mgr.upgrade.continue_upgrade():
continue
self.mgr._get_cephadm_service(daemon_type_to_service(
daemon_type)).daemon_check_post(daemon_descs)
+ def _purge_deleted_services(self) -> None:
+ existing_services = self.mgr.spec_store.all_specs.items()
+ for service_name, spec in list(existing_services):
+ if service_name not in self.mgr.spec_store.spec_deleted:
+ continue
+ if self.mgr.cache.get_daemons_by_service(service_name):
+ continue
+ if spec.service_type in ['mon', 'mgr']:
+ continue
+
+ logger.info(f'Purge service {service_name}')
+
+ self.mgr.cephadm_services[spec.service_type].purge(service_name)
+ self.mgr.spec_store.finally_rm(service_name)
+
def convert_tags_to_repo_digest(self) -> None:
if not self.mgr.use_repo_digest:
return
assert self.TYPE == daemon_type_to_service(daemon.daemon_type)
logger.debug(f'Post remove daemon {self.TYPE}.{daemon.daemon_id}')
- def purge(self) -> None:
+ def purge(self, service_name: str) -> None:
"""Called to carry out any purge tasks following service removal"""
logger.debug(f'Purge called for {self.TYPE} - no action taken')
}
return config, deps
- def purge(self) -> None:
+ def purge(self, service_name: str) -> None:
logger.info("Purging cephadm-exporter settings from mon K/V store")
self.mgr._clear_exporter_config_settings()