vm.clone() requires permissions on SRs.

This commit is contained in:
Julien Fontanet 2015-11-20 16:19:33 +01:00
parent 46535e4f56
commit 15aec7da7e

View File

@ -27,7 +27,7 @@ startsWith = require 'lodash.startswith'
#=====================================================================
checkPermissionsForSnapshot = (vm) -> (
checkPermissionOnSrs = (vm, permission = 'operate') -> (
permissions = []
forEach(vm.$VBDs, (vbdId) =>
vbd = @getObject(vbdId, 'VBD')
@ -38,7 +38,7 @@ checkPermissionsForSnapshot = (vm) -> (
permissions.push([
@getObject(vdiId, 'VDI').$SR,
'operate'
permission
])
)
@ -390,7 +390,9 @@ exports.restart = restart
#---------------------------------------------------------------------
clone = ({vm, name, full_copy}) ->
clone = $coroutine ({vm, name, full_copy}) ->
yield checkPermissionOnSrs.call(this, vm)
return @getXAPI(vm).cloneVm(vm._xapiRef, {
nameLabel: name,
fast: not full_copy
@ -419,7 +421,7 @@ copy = $coroutine ({
}) ->
if vm.$pool == sr.$pool
if vm.power_state is 'Running'
yield checkPermissionsForSnapshot.call(this, vm)
yield checkPermissionOnSrs.call(this, vm)
return @getXAPI(vm).copyVm(vm._xapiId, sr._xapiId, {
nameLabel
@ -470,7 +472,7 @@ exports.convert = convert
#---------------------------------------------------------------------
snapshot = $coroutine ({vm, name}) ->
yield checkPermissionsForSnapshot.call(this, vm)
yield checkPermissionOnSrs.call(this, vm)
snapshot = yield @getXAPI(vm).snapshotVm(vm._xapiRef, name)
return snapshot.$id
@ -488,7 +490,7 @@ exports.snapshot = snapshot
#---------------------------------------------------------------------
rollingSnapshot = $coroutine ({vm, tag, depth}) ->
yield checkPermissionsForSnapshot.call(this, vm)
yield checkPermissionOnSrs.call(this, vm)
yield @rollingSnapshotVm(vm, tag, depth)
rollingSnapshot.params = {
@ -711,7 +713,7 @@ handleExport = (req, res, { stream }) ->
# TODO: integrate in xapi.js
export_ = $coroutine ({vm, compress, onlyMetadata}) ->
if vm.power_state is 'Running'
yield checkPermissionsForSnapshot.call(this, vm)
yield checkPermissionOnSrs.call(this, vm)
stream = yield @getXAPI(vm).exportVm(vm._xapiId, {
compress: compress ? true,