feat(vm/delete): force param to bypass blocked_operations (#648)
See vatesfr/xo-web#2525
This commit is contained in:
parent
d627fad299
commit
d52bed9618
@ -322,7 +322,7 @@ create.resolve = {
|
|||||||
|
|
||||||
// -------------------------------------------------------------------
|
// -------------------------------------------------------------------
|
||||||
|
|
||||||
async function delete_ ({ vm, delete_disks: deleteDisks = false }) {
|
async function delete_ ({ vm, delete_disks: deleteDisks = false, force }) {
|
||||||
const xapi = this.getXapi(vm)
|
const xapi = this.getXapi(vm)
|
||||||
|
|
||||||
this.getAllAcls().then(acls => {
|
this.getAllAcls().then(acls => {
|
||||||
@ -365,7 +365,7 @@ async function delete_ ({ vm, delete_disks: deleteDisks = false }) {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
return xapi.deleteVm(vm._xapiId, deleteDisks)
|
return xapi.deleteVm(vm._xapiId, deleteDisks, force)
|
||||||
}
|
}
|
||||||
|
|
||||||
delete_.params = {
|
delete_.params = {
|
||||||
@ -375,6 +375,11 @@ delete_.params = {
|
|||||||
optional: true,
|
optional: true,
|
||||||
type: 'boolean',
|
type: 'boolean',
|
||||||
},
|
},
|
||||||
|
|
||||||
|
force: {
|
||||||
|
optional: true,
|
||||||
|
type: 'boolean',
|
||||||
|
},
|
||||||
}
|
}
|
||||||
delete_.resolve = {
|
delete_.resolve = {
|
||||||
vm: ['id', ['VM', 'VM-snapshot', 'VM-template'], 'administrate'],
|
vm: ['id', ['VM', 'VM-snapshot', 'VM-template'], 'administrate'],
|
||||||
|
@ -650,7 +650,7 @@ export default class Xapi extends XapiBase {
|
|||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
async _deleteVm (vm, deleteDisks = true) {
|
async _deleteVm (vm, deleteDisks = true, force = false) {
|
||||||
debug(`Deleting VM ${vm.name_label}`)
|
debug(`Deleting VM ${vm.name_label}`)
|
||||||
|
|
||||||
const { $ref } = vm
|
const { $ref } = vm
|
||||||
@ -661,6 +661,12 @@ export default class Xapi extends XapiBase {
|
|||||||
await this.call('VM.hard_shutdown', $ref)
|
await this.call('VM.hard_shutdown', $ref)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (force) {
|
||||||
|
await this._updateObjectMapProperty(vm, 'blocked_operations', {
|
||||||
|
destroy: null,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// ensure the vm record is up-to-date
|
// ensure the vm record is up-to-date
|
||||||
vm = await this.barrier('VM', $ref)
|
vm = await this.barrier('VM', $ref)
|
||||||
|
|
||||||
@ -702,10 +708,11 @@ export default class Xapi extends XapiBase {
|
|||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
async deleteVm (vmId, deleteDisks) {
|
async deleteVm (vmId, deleteDisks, force) {
|
||||||
return /* await */ this._deleteVm(
|
return /* await */ this._deleteVm(
|
||||||
this.getObject(vmId),
|
this.getObject(vmId),
|
||||||
deleteDisks
|
deleteDisks,
|
||||||
|
force
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user