]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/cephadm: purge service: remove `mds_join_fs`
authorSebastian Wagner <sebastian.wagner@suse.com>
Fri, 29 Jan 2021 17:49:25 +0000 (18:49 +0100)
committerSebastian Wagner <sebastian.wagner@suse.com>
Tue, 9 Feb 2021 09:12:44 +0000 (10:12 +0100)
Also add a unit test

Fixes: https://tracker.ceph.com/issues/48597
Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
src/pybind/mgr/cephadm/services/cephadmservice.py
src/pybind/mgr/cephadm/tests/test_cephadm.py
src/pybind/mgr/tests/__init__.py

index 89b7d0aacff3effe7c344a6c44c39743e7fb37fb..edc71cfcbe1f4c2106a6365acabe8edb53b98451 100644 (file)
@@ -594,6 +594,13 @@ class MdsService(CephService):
         # if no mds found, return empty Daemon Desc
         return DaemonDescription()
 
+    def purge(self, service_name: str) -> None:
+        self.mgr.check_mon_command({
+            'prefix': 'config rm',
+            'who': service_name,
+            'name': 'mds_join_fs',
+        })
+
 
 class RgwService(CephService):
     TYPE = 'rgw'
index 921197ec5446612b5457492c958c2a51831d60c6..52b37a7219f8a243853d543aa72687b4f7a0cd72 100644 (file)
@@ -773,6 +773,25 @@ class TestCephadm(object):
             with with_service(cephadm_module, spec, meth, 'test'):
                 pass
 
+    @mock.patch("cephadm.serve.CephadmServe._deploy_cephadm_binary", _deploy_cephadm_binary('test'))
+    @mock.patch("cephadm.serve.CephadmServe._run_cephadm", _run_cephadm('{}'))
+    def test_mds_config_purge(self, cephadm_module: CephadmOrchestrator):
+        spec = ServiceSpec('mds', service_id='fsname')
+        with with_host(cephadm_module, 'test'):
+            with with_service(cephadm_module, spec, host='test'):
+                ret, out, err = cephadm_module.check_mon_command({
+                    'prefix': 'config get',
+                    'who': spec.service_name(),
+                    'key': 'mds_join_fs',
+                })
+                assert out == 'fsname'
+            ret, out, err = cephadm_module.check_mon_command({
+                'prefix': 'config get',
+                'who': spec.service_name(),
+                'key': 'mds_join_fs',
+            })
+            assert not out
+
     @mock.patch("cephadm.serve.CephadmServe._run_cephadm", _run_cephadm('{}'))
     @mock.patch("cephadm.services.cephadmservice.CephadmService.ok_to_stop")
     def test_daemon_ok_to_stop(self, ok_to_stop, cephadm_module: CephadmOrchestrator):
index dd19aac4e8d59bc0ec3b3532d11b4de9a0d4aa37..8afdbe32e1c0add42d0b1b46e78b22a96a2431a6 100644 (file)
@@ -117,6 +117,10 @@ if 'UNITTEST' in os.environ:
                 self.mock_store_set('config', f'{cmd["who"]}/{cmd["name"]}', cmd['value'])
                 return ''
 
+            def config_rm():
+                self.mock_store_set('config', f'{cmd["who"]}/{cmd["name"]}', None)
+                return ''
+
             def config_dump():
                 r = []
                 for prefix, value in self.mock_store_preifx('config', '').items():
@@ -135,6 +139,8 @@ if 'UNITTEST' in os.environ:
                 outb = config_set()
             elif cmd['prefix'] == 'config dump':
                 outb = config_dump()
+            elif cmd['prefix'] == 'config rm':
+                outb = config_rm()
             elif hasattr(self, '_mon_command_mock_' + cmd['prefix'].replace(' ', '_')):
                 a = getattr(self, '_mon_command_mock_' + cmd['prefix'].replace(' ', '_'))
                 outb = a(cmd)