From: Fabian Grünbichler Date: Mon, 7 Mar 2016 11:38:37 +0000 (+0100) Subject: Introduce __snapshot_create_vol_snapshots_hook X-Git-Url: https://git.proxmox.com/?p=pve-common.git;a=commitdiff_plain;h=ba9db5df17358a54dc8f17133647aac5b0f8c47d Introduce __snapshot_create_vol_snapshots_hook This hook runs before and after creating volume snapshots, as well as after unfreezing. Only needed for Qemu right now, so the base case in PVE::AbstractConfig is a noop. --- diff --git a/src/PVE/AbstractConfig.pm b/src/PVE/AbstractConfig.pm index be6eb5c..277434d 100644 --- a/src/PVE/AbstractConfig.pm +++ b/src/PVE/AbstractConfig.pm @@ -221,6 +221,14 @@ sub __snapshot_freeze { die "abstract method - implement me\n"; } +# Code run before and after creating all the volume snapshots +# base: noop +sub __snapshot_create_vol_snapshots_hook { + my ($class, $vmid, $snap, $running, $hook) = @_; + + return; +} + # Create the volume snapshots for the VM/CT. sub __snapshot_create_vol_snapshot { my ($class, $vmid, $vs, $volume, $snapname) = @_; @@ -413,6 +421,8 @@ sub snapshot_create { $class->__snapshot_freeze($vmid, 0); } + $class->__snapshot_create_vol_snapshots_hook($vmid, $snap, $running, "before"); + $class->__snapshot_foreach_volume($snap, sub { my ($vs, $volume) = @_; @@ -423,9 +433,11 @@ sub snapshot_create { my $err = $@; if ($running) { + $class->__snapshot_create_vol_snapshots_hook($vmid, $snap, $running, "after"); if ($freezefs) { $class->__snapshot_freeze($vmid, 1); } + $class->__snapshot_create_vol_snapshots_hook($vmid, $snap, $running, "after-unfreeze"); } if ($err) {