Add size validations for volume clones

Adds the same validations as a volume add or resize to volume clones, to
ensure there is enough free space for them.
This commit is contained in:
2024-02-02 10:29:34 -05:00
parent efc7434143
commit a95e72008e
5 changed files with 63 additions and 13 deletions

View File

@ -5972,7 +5972,11 @@ class API_Storage_Ceph_Volume_Element_Clone(Resource):
"name": "new_volume",
"required": True,
"helptext": "A new volume name must be specified.",
}
},
{
"name": "force",
"required": False,
},
]
)
@Authenticator
@ -5988,6 +5992,12 @@ class API_Storage_Ceph_Volume_Element_Clone(Resource):
type: string
required: true
description: The name of the new cloned volume
- in: query
name: force
type: boolean
required: false
default: flase
description: Force action if clone volume size would violate 80% full soft cap on the pool
responses:
200:
description: OK
@ -6006,7 +6016,7 @@ class API_Storage_Ceph_Volume_Element_Clone(Resource):
id: Message
"""
return api_helper.ceph_volume_clone(
pool, reqargs.get("new_volume", None), volume
pool, reqargs.get("new_volume", None), volume, reqargs.get("force", None)
)

View File

@ -1887,11 +1887,13 @@ def ceph_volume_add(zkhandler, pool, name, size, force_flag):
@ZKConnection(config)
def ceph_volume_clone(zkhandler, pool, name, source_volume):
def ceph_volume_clone(zkhandler, pool, name, source_volume, force_flag):
"""
Clone a Ceph RBD volume to a new volume on the PVC Ceph storage cluster.
"""
retflag, retdata = pvc_ceph.clone_volume(zkhandler, pool, source_volume, name)
retflag, retdata = pvc_ceph.clone_volume(
zkhandler, pool, source_volume, name, force_flag=force_flag
)
if retflag:
retcode = 200