SNAP_CREATE = 'snap-create'
SNAP_REMOVE = 'snap-rm'
SNAP_LIST = 'snap-ls'
+ SNAP_GETPATH = 'snap-getpath'
SNAP_INFO = 'snap-info'
SNAP_PROTECT = 'snap-protect'
SNAP_UNPROTECT = 'snap-unprotect'
SubvolumeOpType.INFO,
SubvolumeOpType.SNAP_REMOVE,
SubvolumeOpType.SNAP_LIST,
+ SubvolumeOpType.SNAP_GETPATH,
SubvolumeOpType.SNAP_INFO,
SubvolumeOpType.SNAP_PROTECT,
SubvolumeOpType.SNAP_UNPROTECT,
list_volumes, open_volume, get_pool_names, get_pool_ids, \
get_pending_subvol_deletions_count, get_all_pending_clones_count
from .operations.subvolume import open_subvol, create_subvol, remove_subvol, \
- create_clone
+ create_clone, open_subvol_in_vol
from .vol_spec import VolSpec
from .exception import VolumeException, ClusterError, ClusterTimeout, \
ret = self.volume_exception_to_retval(ve)
return ret
+ def subvolume_snapshot_getpath(self, **kwargs):
+ ret = 0, "", ""
+ volname = kwargs['vol_name']
+ subvolname = kwargs['sub_name']
+ snapname = kwargs['snap_name']
+ groupname = kwargs['group_name']
+
+ try:
+ with open_subvol_in_vol(self, self.volspec, volname, groupname, subvolname,
+ SubvolumeOpType.SNAP_GETPATH) \
+ as (vol, group, subvol):
+ snap_path = subvol.snapshot_data_path(snapname)
+ ret = 0, snap_path.decode("utf-8"), ""
+ except VolumeException as ve:
+ ret = self.volume_exception_to_retval(ve)
+ return ret
+
def set_subvolume_snapshot_metadata(self, **kwargs):
ret = 0, "", ""
volname = kwargs['vol_name']
"and optionally, in a specific subvolume group",
'perm': 'rw'
},
+ {
+ 'cmd': 'fs subvolume snapshot getpath '
+ 'name=vol_name,type=CephString '
+ 'name=sub_name,type=CephString '
+ 'name=snap_name,type=CephString '
+ 'name=group_name,type=CephString,req=false ',
+ 'desc': 'Get path for a snapshot of a CephFS subvolume located in '
+ 'a specific volume, and optionally, in a specific '
+ 'subvolume group',
+ 'perm': 'r'
+ },
{
'cmd': 'fs subvolume resize '
'name=vol_name,type=CephString '
sub_name=cmd['sub_name'],
group_name=cmd.get('group_name', None))
+ @mgr_cmd_wrap
+ def _cmd_fs_subvolume_snapshot_getpath(self, inbuf, cmd):
+ return self.vc.subvolume_snapshot_getpath(vol_name=cmd['vol_name'],
+ sub_name=cmd['sub_name'],
+ snap_name=cmd['snap_name'],
+ group_name=cmd.get('group_name', None))
+
@mgr_cmd_wrap
def _cmd_fs_subvolume_resize(self, inbuf, cmd):
return self.vc.resize_subvolume(vol_name=cmd['vol_name'], sub_name=cmd['sub_name'],