]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/snap_schedule: remove subvol interface
authorMilind Changire <mchangir@redhat.com>
Tue, 18 Oct 2022 04:20:35 +0000 (09:50 +0530)
committerMilind Changire <mchangir@redhat.com>
Tue, 18 Oct 2022 04:20:35 +0000 (09:50 +0530)
Remove snap-schedule support for subvolumes.

Fixes: https://tracker.ceph.com/issues/55148
Signed-off-by: Milind Changire <mchangir@redhat.com>
(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

src/pybind/mgr/snap_schedule/module.py

index e298aad12a55d8791b8a403e6dca6a91d5c403e4..93770f350363ba4763ca114514e775478414afa6 100644 (file)
@@ -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 <path>
         '''
         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 <path>
         '''
         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 <path>
         '''
         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 <path>
         '''
         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 <path>
         '''
         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 <path>
         '''
         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()