feat: can force delete a VM if operation is blocked (#2598)
Fixes #2525
This commit is contained in:
parent
5ecc31b977
commit
f94212729a
@ -1199,6 +1199,9 @@ const messages = {
|
||||
deleteVmModalTitle: 'Delete VM',
|
||||
deleteVmModalMessage:
|
||||
'Are you sure you want to delete this VM? ALL VM DISKS WILL BE REMOVED',
|
||||
deleteVmBlockedModalTitle: 'Blocked operation',
|
||||
deleteVmBlockedModalMessage:
|
||||
'Removing the VM is a blocked operation. Would you like to remove it anyway?',
|
||||
migrateVmModalTitle: 'Migrate VM',
|
||||
migrateVmSelectHost: 'Select a destination host:',
|
||||
migrateVmSelectMigrationNetwork: 'Select a migration network:',
|
||||
|
@ -944,11 +944,7 @@ export const deleteTemplates = templates =>
|
||||
body: _('templateDeleteModalBody', { templates: templates.length }),
|
||||
}).then(
|
||||
() =>
|
||||
Promise.all(
|
||||
map(resolveIds(templates), id =>
|
||||
_call('vm.delete', { id, delete_disks: true })
|
||||
)
|
||||
),
|
||||
Promise.all(map(resolveIds(templates), id => _call('vm.delete', { id }))),
|
||||
noop
|
||||
)
|
||||
|
||||
@ -964,10 +960,7 @@ export const deleteSnapshot = vm =>
|
||||
confirm({
|
||||
title: _('deleteSnapshotModalTitle'),
|
||||
body: _('deleteSnapshotModalMessage'),
|
||||
}).then(
|
||||
() => _call('vm.delete', { id: resolveId(vm), delete_disks: true }),
|
||||
noop
|
||||
)
|
||||
}).then(() => _call('vm.delete', { id: resolveId(vm) }), noop)
|
||||
|
||||
export const deleteSnapshots = vms =>
|
||||
confirm({
|
||||
@ -975,11 +968,7 @@ export const deleteSnapshots = vms =>
|
||||
body: _('deleteSnapshotsModalMessage', { nVms: vms.length }),
|
||||
}).then(
|
||||
() =>
|
||||
Promise.all(
|
||||
map(vms, vm =>
|
||||
_call('vm.delete', { id: resolveId(vm), delete_disks: true })
|
||||
)
|
||||
),
|
||||
Promise.all(map(vms, vm => _call('vm.delete', { id: resolveId(vm) }))),
|
||||
noop
|
||||
)
|
||||
|
||||
@ -1053,14 +1042,25 @@ export const createVms = (args, nameLabels) =>
|
||||
export const getCloudInitConfig = template =>
|
||||
_call('vm.getCloudInitConfig', { template })
|
||||
|
||||
export const deleteVm = vm =>
|
||||
export const deleteVm = (vm, retryWithForce = true) =>
|
||||
confirm({
|
||||
title: _('deleteVmModalTitle'),
|
||||
body: _('deleteVmModalMessage'),
|
||||
})
|
||||
.then(() => _call('vm.delete', { id: resolveId(vm) }), noop)
|
||||
.catch(error => {
|
||||
if (forbiddenOperation.is(error) || !retryWithForce) {
|
||||
throw error
|
||||
}
|
||||
|
||||
return confirm({
|
||||
title: _('deleteVmBlockedModalTitle'),
|
||||
body: _('deleteVmBlockedModalMessage'),
|
||||
}).then(
|
||||
() => _call('vm.delete', { id: resolveId(vm), delete_disks: true }),
|
||||
() => _call('vm.delete', { id: resolveId(vm), force: true }),
|
||||
noop
|
||||
)
|
||||
})
|
||||
|
||||
export const deleteVms = vms =>
|
||||
confirm({
|
||||
@ -1072,7 +1072,9 @@ export const deleteVms = vms =>
|
||||
},
|
||||
}).then(
|
||||
() =>
|
||||
map(vms, vmId => _call('vm.delete', { id: vmId, delete_disks: true })),
|
||||
Promise.all(
|
||||
map(vms, vmId => _call('vm.delete', { id: resolveId(vmId) }))
|
||||
),
|
||||
noop
|
||||
)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user