]>
git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/volumes/fs/operations/subvolume.py
1 from contextlib
import contextmanager
3 from .template
import SubvolumeOpType
5 from .versions
import loaded_subvolumes
7 def create_subvol(mgr
, fs
, vol_spec
, group
, subvolname
, size
, isolate_nspace
, pool
, mode
, uid
, gid
):
9 create a subvolume (create a subvolume with the max known version).
11 :param fs: ceph filesystem handle
12 :param vol_spec: volume specification
13 :param group: group object for the subvolume
14 :param size: In bytes, or None for no size limit
15 :param isolate_nspace: If true, use separate RADOS namespace for this subvolume
16 :param pool: the RADOS pool where the data objects of the subvolumes will be stored
17 :param mode: the user permissions
18 :param uid: the user identifier
19 :param gid: the group identifier
22 subvolume
= loaded_subvolumes
.get_subvolume_object_max(mgr
, fs
, vol_spec
, group
, subvolname
)
23 subvolume
.create(size
, isolate_nspace
, pool
, mode
, uid
, gid
)
26 def create_clone(mgr
, fs
, vol_spec
, group
, subvolname
, pool
, source_volume
, source_subvolume
, snapname
):
28 create a cloned subvolume.
30 :param fs: ceph filesystem handle
31 :param vol_spec: volume specification
32 :param group: group object for the clone
33 :param subvolname: clone subvolume nam
34 :param pool: the RADOS pool where the data objects of the cloned subvolume will be stored
35 :param source_volume: source subvolumes volume name
36 :param source_subvolume: source (parent) subvolume object
37 :param snapname: source subvolume snapshot
40 subvolume
= loaded_subvolumes
.get_subvolume_object_max(mgr
, fs
, vol_spec
, group
, subvolname
)
41 subvolume
.create_clone(pool
, source_volume
, source_subvolume
, snapname
)
44 def remove_subvol(mgr
, fs
, vol_spec
, group
, subvolname
, force
=False, retainsnaps
=False):
48 :param fs: ceph filesystem handle
49 :param vol_spec: volume specification
50 :param group: group object for the subvolume
51 :param subvolname: subvolume name
52 :param force: force remove subvolumes
55 op_type
= SubvolumeOpType
.REMOVE
if not force
else SubvolumeOpType
.REMOVE_FORCE
56 with
open_subvol(mgr
, fs
, vol_spec
, group
, subvolname
, op_type
) as subvolume
:
57 subvolume
.remove(retainsnaps
)
61 def open_subvol(mgr
, fs
, vol_spec
, group
, subvolname
, op_type
):
63 open a subvolume. This API is to be used as a context manager.
65 :param fs: ceph filesystem handle
66 :param vol_spec: volume specification
67 :param group: group object for the subvolume
68 :param subvolname: subvolume name
69 :param op_type: operation type for which subvolume is being opened
70 :return: yields a subvolume object (subclass of SubvolumeTemplate)
72 subvolume
= loaded_subvolumes
.get_subvolume_object(mgr
, fs
, vol_spec
, group
, subvolname
)
73 subvolume
.open(op_type
)