all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH-SERIES guest-common/docs v3] add pre/post/failed snapshot hooks
@ 2023-01-23 15:58 Stefan Hanreich
  2023-01-23 15:58 ` [pve-devel] [PATCH pve-docs v3 1/1] examples: add pre/post/failed-snapshot hooks to example hookscript Stefan Hanreich
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Stefan Hanreich @ 2023-01-23 15:58 UTC (permalink / raw)
  To: pve-devel

This patch series introduces the pre/post/failed-snapshot hooks that run before/
after a snapshot is taken, or after failing to take a snapshot.

I used the new example script from pve-docs as template for my test hookscripts.

What I tested:
* Normal snapshotting, without VM state, without hookscript
  * snapshot works, no hooks executed
* Normal snapshotting, with VM state, without hookscript
  * snapshot works, no hooks executed
* Normal snapshotting, without VM state, with hookscript
  * snapshot works, pre/post hooks work
* Normal snapshotting, with VM state, with hookscript
  * snapshot works, pre/post hooks work
* Taking snapshot with existing name, with hookscript
  * fails, no hookscripts get executed
* Failed at wrong storage config, with hookscript
  * pre/failed get executed, lock gets released
* Failed at taking RAM Snapshot (simulated with monkey-patched die), with hookscript
  * pre/failed get executed, lock gets released
* pre/post hookscript that detaches/attaches unsnapshottable disk (without --skiplock)
  * snapshotting fails, attach/detach fails, pre/failed get executed, lock released
* pre/post hookscript that detaches/attaches unsnapshottable disk (with --skiplock)
  * snapshotting works, attach/detach works, pre/post get executed
  * restoring works, detached disk is detached after restoring
* pre-snapshot hookscript exits with code > 0
  * pre/failed-snapshot get executed, snapshot fails, lock gets released
* post-snapshot hookscript exits with code > 0
  * pre/post/failed-snapshot get executed, snapshot fails, lock gets released
* Taking snapshot of template
  * fails, no hookscripts get executed
* execute commands in VM in pre/post via qm guest exec
  * snapshot succeeds, commands get executed, pre/post executed

Changes from v2 (thanks fabian!):
* added guards, so cfs_update() only gets called when necessary
* added PVE_SNAPSHOT_PHASE envvar to failed-snapshot as indicator
  when the failure occured

Changes from v1:
* added failed-snapshot hook that runs after a failed snapshot
  * this enables users to revert any changes made in pre-snapshot hooks
  in case of errors
* running cfs_update() after every hookscript invocation
* adjusted the call sites of exec_hookscript()
  * particularly interesting for pre-snapshot since some checks now run
  before the hook runs
* VM/CT config is now locked during hookscript execution

Thanks to Fiona and Fabian for their valuable input/help!

pve-guest-common:

Stefan Hanreich (1):
  examples: add pre/post/failed-snapshot hooks to example hookscript

 examples/guest-example-hookscript.pl | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)


pve-docs:

Stefan Hanreich (1):
  partial fix #2530: snapshots: add pre/post/failed-snapshot hooks

 src/PVE/AbstractConfig.pm | 76 +++++++++++++++++++++++++++++++++++----
 1 file changed, 70 insertions(+), 6 deletions(-)

-- 
2.30.2




^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2023-01-23 16:08 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-23 15:58 [pve-devel] [PATCH-SERIES guest-common/docs v3] add pre/post/failed snapshot hooks Stefan Hanreich
2023-01-23 15:58 ` [pve-devel] [PATCH pve-docs v3 1/1] examples: add pre/post/failed-snapshot hooks to example hookscript Stefan Hanreich
2023-01-23 15:58 ` [pve-devel] [PATCH pve-guest-common v3 1/1] partial fix #2530: snapshots: add pre/post/failed-snapshot hooks Stefan Hanreich
2023-01-23 16:07 ` [pve-devel] [PATCH-SERIES guest-common/docs v3] add pre/post/failed snapshot hooks Stefan Hanreich

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal