As reported in #4474 [0], a user may attempt to shutdown a VM/CT,
realize that it is unresponsive, and decide to stop it instead. If the
shutdown task has not timed out yet, the stop task will fail. The user
needs to manually abort the shutdown task before stopping the VM,
which is inconvenient.

With this patch series, a stop task can optionally overrule active
shutdown tasks.

Summary of changes:

* Backend: We add a new optional `overrule-shutdown` parameter to
  VM/CT `/stop` endpoints. If it is 1, we query for active
  `qmshutdown`/`vzshutdown` tasks by the current user for the given
  VMID, and abort them before attempting to stop the VM/CT.
* Frontend: Before sending a stop command, we check whether there are
  active shutdown tasks. If yes, we ask the user whether they should
  be aborted, and send `overrule-shutdown=1` accordingly.

Tested with a hung CentOS 7 container and a Debian VM where I edited
/etc/systemd/logind.conf to set `HandlePowerKey=ignore`.

Sending this as RFC, to make a first proposal and iterate from there.
My most important questions:

* Does it make sense to have overruling optional? Or should "stop"
  generally overrule shutdown? This might lead to confusing
  interactions, as Thomas noted [0].
* Backend: Is there a more elegant way to overrule shutdown tasks,
  and a better place than pve-guest-common?
* Frontend: When stopping a VM/CT, we already ask for confirmation.
  Is an (occasional) second modal dialog with a lot of text a good user
  experience? Alternatively, I could imagine a checkbox in the first
  dialog saying "Overrule any active shutdown tasks".
* This patch series forbids `overrule-shutdown=1` for HA-managed VMs/CTs
  because I didn't know how overruling should work in a HA setting. Do
  you have any suggestions?

Since this is my first patch with more than a few lines, I'm especially
happy about feedback regarding coding style, naming, anything. :)

[0]: https://bugzilla.proxmox.com/show_bug.cgi?id=4474

pve-manager:

Friedrich Weber (1):
  fix #4474: ui: vm stop: ask if active shutdown tasks should be aborted

 www/manager6/Utils.js        | 27 +++++++++++++++++++++++++++
 www/manager6/dc/Tasks.js     |  2 +-
 www/manager6/lxc/CmdMenu.js  | 14 +++++++++++++-
 www/manager6/lxc/Config.js   |  6 +++++-
 www/manager6/qemu/CmdMenu.js | 14 +++++++++++++-
 www/manager6/qemu/Config.js  |  9 ++++++++-
 6 files changed, 67 insertions(+), 5 deletions(-)

pve-container:

Friedrich Weber (1):
  fix #4474: lxc api: add overrule-shutdown parameter to stop endpoint

 src/PVE/API2/LXC/Status.pm | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

qemu-server:

Friedrich Weber (1):
  fix #4474: qemu api: add overrule-shutdown parameter to stop endpoint

 PVE/API2/Qemu.pm | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

pve-guest-common:

Friedrich Weber (1):
  guest helpers: add helper to overrule active tasks of a specific type

 src/PVE/GuestHelpers.pm | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)


-- 
2.30.2



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to