mgr/cephadm: nfs: add purge

Remove the grace object if we purge the service.

Signed-off-by: Sage Weil <sage@newdream.net>
This commit is contained in:
Sage Weil 2021-04-29 10:43:57 -04:00
parent 51f0dedbbb
commit 15bdaa74b5
2 changed files with 24 additions and 0 deletions

View File

@ -270,3 +270,25 @@ class NFSService(CephService):
# Provide warning
warn_message = "WARNING: Removing NFS daemons can cause clients to lose connectivity. "
return HandleCommandResult(-errno.EBUSY, '', warn_message)
def purge(self, service_name: str) -> None:
if service_name not in self.mgr.spec_store:
return
spec = cast(NFSServiceSpec, self.mgr.spec_store[service_name].spec)
logger.info(f'Removing grace file for {service_name}')
cmd = [
'rados',
'-n', f"mgr.{self.mgr.get_mgr_id()}",
'-k', str(self.mgr.get_ceph_option('keyring')),
'-p', cast(str, spec.pool),
]
if spec.namespace:
cmd += ['--namespace', spec.namespace]
cmd += ['rm', 'grace']
subprocess.run(
cmd,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
timeout=10
)

View File

@ -918,6 +918,8 @@ class TestCephadm(object):
@mock.patch("cephadm.serve.CephadmServe._run_cephadm", _run_cephadm('{}'))
@mock.patch("cephadm.services.nfs.NFSService.run_grace_tool", mock.MagicMock())
@mock.patch("cephadm.services.nfs.NFSService.create_rados_config_obj", mock.MagicMock())
@mock.patch("cephadm.services.nfs.NFSService.purge", mock.MagicMock())
@mock.patch("subprocess.run", mock.MagicMock())
def test_apply_save(self, spec: ServiceSpec, meth, cephadm_module: CephadmOrchestrator):
with with_host(cephadm_module, 'test'):
with with_service(cephadm_module, spec, meth, 'test'):