From: Milind Changire Date: Tue, 26 Apr 2022 03:49:51 +0000 (+0530) Subject: mgr/snap_schedule: validate fs name argument X-Git-Tag: v18.0.0~941^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=483a97830bd918a2be83021edeedf9f8a2fc54f8;p=ceph.git mgr/snap_schedule: validate fs name argument Validate fs name argument for all commands. Fixes: https://tracker.ceph.com/issues/54560 Signed-off-by: Milind Changire --- diff --git a/src/pybind/mgr/snap_schedule/module.py b/src/pybind/mgr/snap_schedule/module.py index a068b4ac31d8..bb9f6c974ab2 100644 --- a/src/pybind/mgr/snap_schedule/module.py +++ b/src/pybind/mgr/snap_schedule/module.py @@ -58,6 +58,9 @@ class Module(MgrModule): raise CephfsConnectionException( -errno.ENOENT, "no filesystem found") + def has_fs(self, fs_name: str) -> bool: + return fs_name in self.client.get_all_filesystems() + def serve(self) -> None: self._initialized.set() @@ -75,6 +78,8 @@ class Module(MgrModule): List current snapshot schedules ''' use_fs = fs if fs else self.default_fs + if not self.has_fs(use_fs): + return -errno.EINVAL, '', f"no such filesystem: {use_fs}" try: ret_scheds = self.client.get_snap_schedules(use_fs, path) except CephfsConnectionException as e: @@ -95,6 +100,8 @@ class Module(MgrModule): ''' try: use_fs = fs if fs else self.default_fs + if not self.has_fs(use_fs): + return -errno.EINVAL, '', f"no such filesystem: {use_fs}" scheds = self.client.list_snap_schedules(use_fs, path, recursive) self.log.debug(f'recursive is {recursive}') except CephfsConnectionException as e: @@ -124,6 +131,8 @@ class Module(MgrModule): ''' try: use_fs = fs if fs else self.default_fs + if not self.has_fs(use_fs): + return -errno.EINVAL, '', f"no such filesystem: {use_fs}" abs_path = self.resolve_subvolume_path(use_fs, subvol, path) self.client.store_snap_schedule(use_fs, abs_path, @@ -154,6 +163,8 @@ class Module(MgrModule): ''' try: use_fs = fs if fs else self.default_fs + if not self.has_fs(use_fs): + return -errno.EINVAL, '', f"no such filesystem: {use_fs}" abs_path = self.resolve_subvolume_path(use_fs, subvol, path) self.client.rm_snap_schedule(use_fs, abs_path, repeat, start) except CephfsConnectionException as e: @@ -174,6 +185,8 @@ class Module(MgrModule): ''' try: use_fs = fs if fs else self.default_fs + if not self.has_fs(use_fs): + return -errno.EINVAL, '', f"no such filesystem: {use_fs}" abs_path = self.resolve_subvolume_path(use_fs, subvol, path) self.client.add_retention_spec(use_fs, abs_path, retention_spec_or_period, @@ -196,6 +209,8 @@ class Module(MgrModule): ''' try: use_fs = fs if fs else self.default_fs + if not self.has_fs(use_fs): + return -errno.EINVAL, '', f"no such filesystem: {use_fs}" abs_path = self.resolve_subvolume_path(use_fs, subvol, path) self.client.rm_retention_spec(use_fs, abs_path, retention_spec_or_period, @@ -218,6 +233,8 @@ class Module(MgrModule): ''' try: use_fs = fs if fs else self.default_fs + if not self.has_fs(use_fs): + return -errno.EINVAL, '', f"no such filesystem: {use_fs}" abs_path = self.resolve_subvolume_path(use_fs, subvol, path) self.client.activate_snap_schedule(use_fs, abs_path, repeat, start) except CephfsConnectionException as e: @@ -238,6 +255,8 @@ class Module(MgrModule): ''' try: use_fs = fs if fs else self.default_fs + if not self.has_fs(use_fs): + return -errno.EINVAL, '', f"no such filesystem: {use_fs}" abs_path = self.resolve_subvolume_path(use_fs, subvol, path) self.client.deactivate_snap_schedule(use_fs, abs_path, repeat, start) except CephfsConnectionException as e: