From 30d03ee07c75da87496eae34e2186b5531b4101c Mon Sep 17 00:00:00 2001 From: Sebastian Wagner Date: Fri, 29 Jan 2021 18:49:25 +0100 Subject: [PATCH] mgr/cephadm: purge service: remove `mds_join_fs` Also add a unit test Fixes: https://tracker.ceph.com/issues/48597 Signed-off-by: Sebastian Wagner --- .../mgr/cephadm/services/cephadmservice.py | 7 +++++++ src/pybind/mgr/cephadm/tests/test_cephadm.py | 19 +++++++++++++++++++ src/pybind/mgr/tests/__init__.py | 6 ++++++ 3 files changed, 32 insertions(+) diff --git a/src/pybind/mgr/cephadm/services/cephadmservice.py b/src/pybind/mgr/cephadm/services/cephadmservice.py index 89b7d0aacff..edc71cfcbe1 100644 --- a/src/pybind/mgr/cephadm/services/cephadmservice.py +++ b/src/pybind/mgr/cephadm/services/cephadmservice.py @@ -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' diff --git a/src/pybind/mgr/cephadm/tests/test_cephadm.py b/src/pybind/mgr/cephadm/tests/test_cephadm.py index 921197ec544..52b37a7219f 100644 --- a/src/pybind/mgr/cephadm/tests/test_cephadm.py +++ b/src/pybind/mgr/cephadm/tests/test_cephadm.py @@ -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): diff --git a/src/pybind/mgr/tests/__init__.py b/src/pybind/mgr/tests/__init__.py index dd19aac4e8d..8afdbe32e1c 100644 --- a/src/pybind/mgr/tests/__init__.py +++ b/src/pybind/mgr/tests/__init__.py @@ -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) -- 2.39.5