]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/cephadm: prime cached service state with newly created services
authorSage Weil <sage@redhat.com>
Mon, 27 Jan 2020 14:59:24 +0000 (08:59 -0600)
committerSage Weil <sage@redhat.com>
Thu, 30 Jan 2020 17:20:59 +0000 (11:20 -0600)
If we create a service, add the expected state to our cache, so that it
immediately appears in the get_services result.

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

index 27854c8887dbd3661e9850e7614da65ccb56eb1c..75a9dae034526a6d381fedd13e7b0473a219848d 100644 (file)
@@ -1569,7 +1569,24 @@ class CephadmOrchestrator(MgrModule, orchestrator.OrchestratorClientMixin):
             ] + extra_args,
             stdin=j)
         self.log.debug('create_daemon code %s out %s' % (code, out))
+        if not code:
+            # prime cached service state with what we (should have)
+            # just created
+            sd = {
+                'style': 'cephadm:v1',
+                'name': '%s.%s' % (daemon_type, daemon_id),
+                'fsid': self._cluster_fsid,
+                'enabled': True,
+                'state': 'running',
+            }
+            data = self.service_cache[host].data
+            if data:
+                data.append(sd)
+            else:
+                data = [sd]
+            self.service_cache[host] = orchestrator.OutdatableData(data)
         self.service_cache.invalidate(host)
+        self.event.set()
         return "{} {} on host '{}'".format(
             'Reconfigured' if reconfig else 'Deployed', name, host)
 
index 2f20230841565535ac3d5ab4a63f8b37eba32a83..61372d6efde6926f0c8a815894fd52be59935877 100644 (file)
@@ -88,6 +88,8 @@ class TestCephadm(object):
         cephadm_module._cluster_fsid = "fsid"
         cephadm_module.service_cache_timeout = 10
         with self._with_host(cephadm_module, 'test'):
+            c = cephadm_module.describe_service(refresh=True)
+            wait(cephadm_module, c)
             c = cephadm_module.service_action('redeploy', 'rgw', service_id='myrgw.foobar')
             assert wait(cephadm_module, c) == ["Deployed rgw.myrgw.foobar on host 'test'"]
 
@@ -143,6 +145,8 @@ class TestCephadm(object):
     def test_remove_osds(self, cephadm_module):
         cephadm_module._cluster_fsid = "fsid"
         with self._with_host(cephadm_module, 'test'):
+            c = cephadm_module.describe_service(refresh=True)
+            wait(cephadm_module, c)
             c = cephadm_module.remove_osds(['0'])
             out = wait(cephadm_module, c)
             assert out == ["Removed osd.0 from host 'test'"]
@@ -186,6 +190,8 @@ class TestCephadm(object):
     def test_remove_rgw(self, cephadm_module):
         cephadm_module._cluster_fsid = "fsid"
         with self._with_host(cephadm_module, 'test'):
+            c = cephadm_module.describe_service(refresh=True)
+            wait(cephadm_module, c)
             c = cephadm_module.remove_rgw('myrgw')
             out = wait(cephadm_module, c)
             assert out == ["Removed rgw.myrgw.foobar from host 'test'"]