]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/cephadm: remove item from cache when removing 33071/head
authorSage Weil <sage@redhat.com>
Tue, 4 Feb 2020 19:06:49 +0000 (13:06 -0600)
committerSage Weil <sage@redhat.com>
Wed, 5 Feb 2020 17:41:32 +0000 (11:41 -0600)
This makes the daemon disappear immediately from 'service ls', and also
avoids a temporary health warning about a stray service.

Signed-off-by: Sage Weil <sage@redhat.com>
src/pybind/mgr/cephadm/module.py

index 68a62bc47ac10d6fc566c3b8163692860d51f272..f16d966de0a32719f4a44a34fd289932b1f9df0a 100644 (file)
@@ -1601,7 +1601,7 @@ class CephadmOrchestrator(MgrModule, orchestrator.OrchestratorClientMixin):
             ] + extra_args,
             stdin=j)
         self.log.debug('create_daemon code %s out %s' % (code, out))
-        if not code:
+        if not code and host in self.service_cache:
             # prime cached service state with what we (should have)
             # just created
             sd = {
@@ -1632,6 +1632,12 @@ class CephadmOrchestrator(MgrModule, orchestrator.OrchestratorClientMixin):
             host, name, 'rm-daemon',
             ['--name', name])
         self.log.debug('_remove_daemon code %s out %s' % (code, out))
+        if not code and host in self.service_cache:
+            # remove item from cache
+            data = self.service_cache[host].data
+            if data:
+                data = [d for d in data if d['name'] != name]
+                self.service_cache[host] = orchestrator.OutdatableData(data)
         self.service_cache.invalidate(host)
         return "Removed {} from host '{}'".format(name, host)