From: Milind Changire Date: Tue, 18 Oct 2022 04:20:35 +0000 (+0530) Subject: mgr/snap_schedule: remove subvol interface X-Git-Tag: v16.2.11~84^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=cdda97c26893248e9d146dc2855a977bfcb5e1cd;p=ceph.git mgr/snap_schedule: remove subvol interface Remove snap-schedule support for subvolumes. Fixes: https://tracker.ceph.com/issues/55148 Signed-off-by: Milind Changire (cherry picked from commit 919c156884587fc87b418c776046c8b6a7efe4ff) Conflicts: - src/pybind/mgr/snap_schedule/module.py Minor conflicts due to upstream changes Add missing of type hint Tuple Add missing definition of function has_fs --- diff --git a/src/pybind/mgr/snap_schedule/module.py b/src/pybind/mgr/snap_schedule/module.py index e298aad12a5..93770f35036 100644 --- a/src/pybind/mgr/snap_schedule/module.py +++ b/src/pybind/mgr/snap_schedule/module.py @@ -6,7 +6,7 @@ LGPL2.1. See file COPYING. import errno import json import sqlite3 -from typing import Dict, Sequence, Optional, cast, Optional +from typing import Dict, Sequence, Optional, cast, Optional, Tuple from .fs.schedule_client import SnapSchedClient from mgr_module import MgrModule, CLIReadCommand, CLIWriteCommand, Option from mgr_util import CephfsConnectionException @@ -36,17 +36,6 @@ class Module(MgrModule): self._initialized = Event() self.client = SnapSchedClient(self) - def resolve_subvolume_path(self, fs, subvol, path): - if not subvol: - return path - - rc, subvol_path, err = self.remote('fs', 'subvolume', 'getpath', - fs, subvol) - if rc != 0: - # TODO custom exception? - raise Exception(f'Could not resolve {path} in {fs}, {subvol}') - return subvol_path + path - @property def default_fs(self): fs_map = self.get('fs_map') @@ -57,6 +46,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): self._initialized.set() @@ -66,8 +58,7 @@ class Module(MgrModule): @CLIReadCommand('fs snap-schedule status') def snap_schedule_get(self, - path: Optional[str] = '/', - subvol: Optional[str] = None, + path: str = '/', fs: Optional[str] = None, format: Optional[str] = 'plain'): ''' @@ -86,8 +77,7 @@ class Module(MgrModule): @CLIReadCommand('fs snap-schedule list') def snap_schedule_list(self, path: str, - subvol: Optional[str] = None, - recursive: Optional[bool] = False, + recursive: bool = False, fs: Optional[str] = None, format: Optional[str] = 'plain'): ''' @@ -118,14 +108,16 @@ class Module(MgrModule): path: str, snap_schedule: Optional[str], start: Optional[str] = None, - fs: Optional[str] = None, - subvol: Optional[str] = None): + fs: Optional[str] = None) -> Tuple[int, str, str]: ''' Set a snapshot schedule for ''' try: use_fs = fs if fs else self.default_fs - abs_path = self.resolve_subvolume_path(fs, subvol, path) + if not self.has_fs(use_fs): + return -errno.EINVAL, '', f"no such filesystem: {use_fs}" + abs_path = path + subvol = None self.client.store_snap_schedule(use_fs, abs_path, (abs_path, snap_schedule, @@ -148,14 +140,15 @@ class Module(MgrModule): path: str, repeat: Optional[str] = None, start: Optional[str] = None, - subvol: Optional[str] = None, - fs: Optional[str] = None): + fs: Optional[str] = None) -> Tuple[int, str, str]: ''' Remove a snapshot schedule for ''' try: use_fs = fs if fs else self.default_fs - abs_path = self.resolve_subvolume_path(fs, subvol, path) + if not self.has_fs(use_fs): + return -errno.EINVAL, '', f"no such filesystem: {use_fs}" + abs_path = path self.client.rm_snap_schedule(use_fs, abs_path, repeat, start) except CephfsConnectionException as e: return e.to_tuple() @@ -168,14 +161,15 @@ class Module(MgrModule): path: str, retention_spec_or_period: str, retention_count: Optional[str] = None, - fs: Optional[str] = None, - subvol: Optional[str] = None): + fs: Optional[str] = None) -> Tuple[int, str, str]: ''' Set a retention specification for ''' try: use_fs = fs if fs else self.default_fs - abs_path = self.resolve_subvolume_path(fs, subvol, path) + if not self.has_fs(use_fs): + return -errno.EINVAL, '', f"no such filesystem: {use_fs}" + abs_path = path self.client.add_retention_spec(use_fs, abs_path, retention_spec_or_period, retention_count) @@ -190,14 +184,15 @@ class Module(MgrModule): path: str, retention_spec_or_period: str, retention_count: Optional[str] = None, - fs: Optional[str] = None, - subvol: Optional[str] = None): + fs: Optional[str] = None) -> Tuple[int, str, str]: ''' Remove a retention specification for ''' try: use_fs = fs if fs else self.default_fs - abs_path = self.resolve_subvolume_path(fs, subvol, path) + if not self.has_fs(use_fs): + return -errno.EINVAL, '', f"no such filesystem: {use_fs}" + abs_path = path self.client.rm_retention_spec(use_fs, abs_path, retention_spec_or_period, retention_count) @@ -212,14 +207,15 @@ class Module(MgrModule): path: str, repeat: Optional[str] = None, start: Optional[str] = None, - subvol: Optional[str] = None, - fs: Optional[str] = None): + fs: Optional[str] = None) -> Tuple[int, str, str]: ''' Activate a snapshot schedule for ''' try: use_fs = fs if fs else self.default_fs - abs_path = self.resolve_subvolume_path(fs, subvol, path) + if not self.has_fs(use_fs): + return -errno.EINVAL, '', f"no such filesystem: {use_fs}" + abs_path = path self.client.activate_snap_schedule(use_fs, abs_path, repeat, start) except CephfsConnectionException as e: return e.to_tuple() @@ -232,14 +228,15 @@ class Module(MgrModule): path: str, repeat: Optional[str] = None, start: Optional[str] = None, - subvol: Optional[str] = None, - fs: Optional[str] = None): + fs: Optional[str] = None) -> Tuple[int, str, str]: ''' Deactivate a snapshot schedule for ''' try: use_fs = fs if fs else self.default_fs - abs_path = self.resolve_subvolume_path(fs, subvol, path) + if not self.has_fs(use_fs): + return -errno.EINVAL, '', f"no such filesystem: {use_fs}" + abs_path = path self.client.deactivate_snap_schedule(use_fs, abs_path, repeat, start) except CephfsConnectionException as e: return e.to_tuple()