diff --git a/changelogs/fragments/849-proxmox-kvm-state-absent-force.yml b/changelogs/fragments/849-proxmox-kvm-state-absent-force.yml new file mode 100644 index 0000000000..cc8f672b00 --- /dev/null +++ b/changelogs/fragments/849-proxmox-kvm-state-absent-force.yml @@ -0,0 +1,3 @@ +--- +breaking_changes: + - proxmox_kvm - recognize ``force=yes`` in conjunction with ``state=absent`` to forcibly remove a running VM (https://github.com/ansible-collections/community.general/pull/849). diff --git a/plugins/modules/cloud/misc/proxmox_kvm.py b/plugins/modules/cloud/misc/proxmox_kvm.py index cbc77c20b7..3f68743eff 100644 --- a/plugins/modules/cloud/misc/proxmox_kvm.py +++ b/plugins/modules/cloud/misc/proxmox_kvm.py @@ -113,7 +113,7 @@ options: force: description: - Allow to force stop VM. - - Can be used with states C(stopped) and C(restarted). + - Can be used with states C(stopped), C(restarted) and C(absent). default: no type: bool format: @@ -1156,7 +1156,10 @@ def main(): module.exit_json(changed=False) if getattr(proxmox.nodes(vm[0]['node']), VZ_TYPE)(vmid).status.current.get()['status'] == 'running': - module.exit_json(changed=False, msg="VM %s is running. Stop it before deletion." % vmid) + if module.params['force']: + stop_vm(module, proxmox, vm, vmid, timeout, True) + else: + module.exit_json(changed=False, msg="VM %s is running. Stop it before deletion or use force=yes." % vmid) taskid = getattr(proxmox.nodes(vm[0]['node']), VZ_TYPE).delete(vmid) while timeout: