]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/cephadm: nfs: add purge
authorSage Weil <sage@newdream.net>
Thu, 29 Apr 2021 14:43:57 +0000 (10:43 -0400)
committerSage Weil <sage@newdream.net>
Thu, 3 Jun 2021 12:37:30 +0000 (07:37 -0500)
Remove the grace object if we purge the service.

Signed-off-by: Sage Weil <sage@newdream.net>
(cherry picked from commit 15bdaa74b51b70afc089567dbda68fee64e89109)

src/pybind/mgr/cephadm/services/nfs.py
src/pybind/mgr/cephadm/tests/test_cephadm.py

index 72be22bafde96cfc0b5484af53c8757429c4c707..09888912020f3561509b792f82e120ae020c8266 100644 (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
+        )
index 18912fa4cc3e93d3ee00fd1f94cabfe187e6bf82..2517e288493d737fa991286e7c409c5c24d194c1 100644 (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'):