]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mgr/nfs: convert _cmd_nfs_cluster_config_set to EmptyResponder decorator
authorJohn Mulligan <jmulligan@redhat.com>
Fri, 6 May 2022 13:55:03 +0000 (09:55 -0400)
committerJohn Mulligan <jmulligan@redhat.com>
Thu, 12 Jan 2023 18:44:11 +0000 (13:44 -0500)
Signed-off-by: John Mulligan <jmulligan@redhat.com>
src/pybind/mgr/nfs/cluster.py
src/pybind/mgr/nfs/module.py
src/pybind/mgr/nfs/tests/test_nfs.py
src/pybind/mgr/nfs/utils.py

index 9a65158c0f1f03690e8e47f3775979cb11c9c214..c9ddffabb457c619a0534a88baf92aa2ff78386f 100644 (file)
@@ -12,6 +12,7 @@ import orchestrator
 
 from .exception import NFSInvalidOperation, ClusterNotFound
 from .utils import (
+    ManualRestartRequired,
     NonFatalError,
     available_clusters,
     conf_obj_name,
@@ -236,23 +237,23 @@ class NFSCluster:
         except Exception as e:
             return exception_handler(e, f"Fetching NFS-Ganesha Config failed for {cluster_id}")
 
-    def set_nfs_cluster_config(self, cluster_id: str, nfs_config: str) -> Tuple[int, str, str]:
+    def set_nfs_cluster_config(self, cluster_id: str, nfs_config: str) -> None:
         try:
             if cluster_id in available_clusters(self.mgr):
                 rados_obj = self._rados(cluster_id)
                 if rados_obj.check_user_config():
-                    return 0, "", "NFS-Ganesha User Config already exists"
+                    raise NonFatalError("NFS-Ganesha User Config already exists")
                 rados_obj.write_obj(nfs_config, user_conf_obj_name(cluster_id),
                                     conf_obj_name(cluster_id))
                 log.debug("Successfully saved %s's user config: \n %s", cluster_id, nfs_config)
                 restart_nfs_service(self.mgr, cluster_id)
-                return 0, "NFS-Ganesha Config Set Successfully", ""
+                return
             raise ClusterNotFound()
         except NotImplementedError:
-            return 0, "NFS-Ganesha Config Added Successfully "\
-                "(Manual Restart of NFS PODS required)", ""
+            raise ManualRestartRequired("NFS-Ganesha Config Added Successfully")
         except Exception as e:
-            return exception_handler(e, f"Setting NFS-Ganesha Config failed for {cluster_id}")
+            log.exception(f"Setting NFS-Ganesha Config failed for {cluster_id}")
+            raise ErrorResponse.wrap(e)
 
     def reset_nfs_cluster_config(self, cluster_id: str) -> Tuple[int, str, str]:
         try:
index c5d54773eedc2dc4313ea7b11f00dbfd901dd1b8..7e129591cf16be7b9b75a21131d4fc8f9be86658 100644 (file)
@@ -158,7 +158,8 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule):
 
     @CLICommand('nfs cluster config set', perm='rw')
     @CLICheckNonemptyFileInput(desc='NFS-Ganesha Configuration')
-    def _cmd_nfs_cluster_config_set(self, cluster_id: str, inbuf: str) -> Tuple[int, str, str]:
+    @object_format.EmptyResponder()
+    def _cmd_nfs_cluster_config_set(self, cluster_id: str, inbuf: str) -> None:
         """Set NFS-Ganesha config by `-i <config_file>`"""
         return self.nfs.set_nfs_cluster_config(cluster_id=cluster_id, nfs_config=inbuf)
 
index 64072591cfb16ab82f98b9a49e90a5ea64376781..b04b60a6fbdf257fde6b32d9728615184430330a 100644 (file)
@@ -1105,15 +1105,13 @@ NFS_CORE_PARAM {
         assert rc == 0
         assert out == ""
 
-        rc, out, err = cluster.set_nfs_cluster_config(self.cluster_id, '# foo\n')
-        assert rc == 0
+        cluster.set_nfs_cluster_config(self.cluster_id, '# foo\n')
 
         rc, out, err = cluster.get_nfs_cluster_config(self.cluster_id)
         assert rc == 0
         assert out == "# foo\n"
 
-        rc, out, err = cluster.reset_nfs_cluster_config(self.cluster_id)
-        assert rc == 0
+        cluster.reset_nfs_cluster_config(self.cluster_id)
 
         rc, out, err = cluster.get_nfs_cluster_config(self.cluster_id)
         assert rc == 0
index 485c5b180f8597c0fd17a9b7acbb5f60971ee720..1e901c8c52965f4421a253f7e75fee883cc432cb 100644 (file)
@@ -26,6 +26,15 @@ class NonFatalError(ErrorResponseBase):
         return 0, "", self.msg
 
 
+class ManualRestartRequired(NonFatalError):
+    """Raise this exception type if all other changes were successful but
+    user needs to manually restart nfs services.
+    """
+
+    def __init__(self, msg: str) -> None:
+        super().__init__(" ".join((msg, "(Manual Restart of NFS Pods required)")))
+
+
 def export_obj_name(export_id: int) -> str:
     """Return a rados object name for the export."""
     return f"{EXPORT_PREFIX}{export_id}"