Introduce __snapshot_create_vol_snapshots_hook
authorFabian Gr├╝nbichler <f.gruenbichler@proxmox.com>
Mon, 7 Mar 2016 11:38:37 +0000 (12:38 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Tue, 8 Mar 2016 10:32:24 +0000 (11:32 +0100)
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.

src/PVE/AbstractConfig.pm

index be6eb5c..277434d 100644 (file)
@@ -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) {