From: Sebastian Wagner Date: Wed, 13 Jan 2021 13:12:24 +0000 (+0100) Subject: mgr/cephadm: Purge deleted services X-Git-Tag: v17.1.0~2997^2~5 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=f73fdee1b081928051a5f52d510458f3b81525bd;p=ceph-ci.git mgr/cephadm: Purge deleted services If no daemon is deployed for a deleted service, purge it. Signed-off-by: Sebastian Wagner --- diff --git a/src/pybind/mgr/cephadm/module.py b/src/pybind/mgr/cephadm/module.py index a838ca04920..d8a42cddb4e 100644 --- a/src/pybind/mgr/cephadm/module.py +++ b/src/pybind/mgr/cephadm/module.py @@ -1696,9 +1696,6 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule, 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. diff --git a/src/pybind/mgr/cephadm/serve.py b/src/pybind/mgr/cephadm/serve.py index 8002a268a32..d39038f5c43 100644 --- a/src/pybind/mgr/cephadm/serve.py +++ b/src/pybind/mgr/cephadm/serve.py @@ -85,6 +85,8 @@ class CephadmServe: self._check_daemons() + self._purge_deleted_services() + if self.mgr.upgrade.continue_upgrade(): continue @@ -686,6 +688,21 @@ class CephadmServe: 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 diff --git a/src/pybind/mgr/cephadm/services/cephadmservice.py b/src/pybind/mgr/cephadm/services/cephadmservice.py index d9a241a5f04..89b7d0aacff 100644 --- a/src/pybind/mgr/cephadm/services/cephadmservice.py +++ b/src/pybind/mgr/cephadm/services/cephadmservice.py @@ -280,7 +280,7 @@ class CephadmService(metaclass=ABCMeta): 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') @@ -974,6 +974,6 @@ class CephadmExporter(CephadmService): } 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()