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',
|
deleteVmModalTitle: 'Delete VM',
|
||||||
deleteVmModalMessage:
|
deleteVmModalMessage:
|
||||||
'Are you sure you want to delete this VM? ALL VM DISKS WILL BE REMOVED',
|
'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',
|
migrateVmModalTitle: 'Migrate VM',
|
||||||
migrateVmSelectHost: 'Select a destination host:',
|
migrateVmSelectHost: 'Select a destination host:',
|
||||||
migrateVmSelectMigrationNetwork: 'Select a migration network:',
|
migrateVmSelectMigrationNetwork: 'Select a migration network:',
|
||||||
|
@ -944,11 +944,7 @@ export const deleteTemplates = templates =>
|
|||||||
body: _('templateDeleteModalBody', { templates: templates.length }),
|
body: _('templateDeleteModalBody', { templates: templates.length }),
|
||||||
}).then(
|
}).then(
|
||||||
() =>
|
() =>
|
||||||
Promise.all(
|
Promise.all(map(resolveIds(templates), id => _call('vm.delete', { id }))),
|
||||||
map(resolveIds(templates), id =>
|
|
||||||
_call('vm.delete', { id, delete_disks: true })
|
|
||||||
)
|
|
||||||
),
|
|
||||||
noop
|
noop
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -964,10 +960,7 @@ export const deleteSnapshot = vm =>
|
|||||||
confirm({
|
confirm({
|
||||||
title: _('deleteSnapshotModalTitle'),
|
title: _('deleteSnapshotModalTitle'),
|
||||||
body: _('deleteSnapshotModalMessage'),
|
body: _('deleteSnapshotModalMessage'),
|
||||||
}).then(
|
}).then(() => _call('vm.delete', { id: resolveId(vm) }), noop)
|
||||||
() => _call('vm.delete', { id: resolveId(vm), delete_disks: true }),
|
|
||||||
noop
|
|
||||||
)
|
|
||||||
|
|
||||||
export const deleteSnapshots = vms =>
|
export const deleteSnapshots = vms =>
|
||||||
confirm({
|
confirm({
|
||||||
@ -975,11 +968,7 @@ export const deleteSnapshots = vms =>
|
|||||||
body: _('deleteSnapshotsModalMessage', { nVms: vms.length }),
|
body: _('deleteSnapshotsModalMessage', { nVms: vms.length }),
|
||||||
}).then(
|
}).then(
|
||||||
() =>
|
() =>
|
||||||
Promise.all(
|
Promise.all(map(vms, vm => _call('vm.delete', { id: resolveId(vm) }))),
|
||||||
map(vms, vm =>
|
|
||||||
_call('vm.delete', { id: resolveId(vm), delete_disks: true })
|
|
||||||
)
|
|
||||||
),
|
|
||||||
noop
|
noop
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1053,14 +1042,25 @@ export const createVms = (args, nameLabels) =>
|
|||||||
export const getCloudInitConfig = template =>
|
export const getCloudInitConfig = template =>
|
||||||
_call('vm.getCloudInitConfig', { template })
|
_call('vm.getCloudInitConfig', { template })
|
||||||
|
|
||||||
export const deleteVm = vm =>
|
export const deleteVm = (vm, retryWithForce = true) =>
|
||||||
confirm({
|
confirm({
|
||||||
title: _('deleteVmModalTitle'),
|
title: _('deleteVmModalTitle'),
|
||||||
body: _('deleteVmModalMessage'),
|
body: _('deleteVmModalMessage'),
|
||||||
}).then(
|
})
|
||||||
() => _call('vm.delete', { id: resolveId(vm), delete_disks: true }),
|
.then(() => _call('vm.delete', { id: resolveId(vm) }), noop)
|
||||||
noop
|
.catch(error => {
|
||||||
)
|
if (forbiddenOperation.is(error) || !retryWithForce) {
|
||||||
|
throw error
|
||||||
|
}
|
||||||
|
|
||||||
|
return confirm({
|
||||||
|
title: _('deleteVmBlockedModalTitle'),
|
||||||
|
body: _('deleteVmBlockedModalMessage'),
|
||||||
|
}).then(
|
||||||
|
() => _call('vm.delete', { id: resolveId(vm), force: true }),
|
||||||
|
noop
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
export const deleteVms = vms =>
|
export const deleteVms = vms =>
|
||||||
confirm({
|
confirm({
|
||||||
@ -1072,7 +1072,9 @@ export const deleteVms = vms =>
|
|||||||
},
|
},
|
||||||
}).then(
|
}).then(
|
||||||
() =>
|
() =>
|
||||||
map(vms, vmId => _call('vm.delete', { id: vmId, delete_disks: true })),
|
Promise.all(
|
||||||
|
map(vms, vmId => _call('vm.delete', { id: resolveId(vmId) }))
|
||||||
|
),
|
||||||
noop
|
noop
|
||||||
)
|
)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user