description => $d->{description} || '',
};
$item->{parent} = $d->{parent} if $d->{parent};
+ $item->{snapstate} = $d->{snapstate} if $d->{snapstate};
push @$res, $item;
}
- if ($conf->{parent}) {
- push @$res, { name => '__current', parent => $conf->{parent} };
- } else {
- push @$res, { name => '__current' };
- }
+ my $current = { name => 'current', digest => $conf->{digest} };
+ $current->{parent} = $conf->{parent} if $conf->{parent};
+
+ push @$res, $current;
return $res;
}});
my $snapname = extract_param($param, 'snapname');
+ die "unable to use snapshot name 'current' (reserved name)\n"
+ if $snapname eq 'current';
+
my $realcmd = sub {
PVE::Cluster::log_msg('info', $authuser, "snapshot VM $vmid: $snapname");
PVE::QemuServer::snapshot_create($vmid, $snapname, $param->{vmstate},
node => get_standard_option('pve-node'),
vmid => get_standard_option('pve-vmid'),
snapname => get_standard_option('pve-snapshot-name'),
+ force => {
+ optional => 1,
+ type => 'boolean',
+ description => "For removal from config file, even if removing disk snapshots fails.",
+ },
},
},
returns => {
my $realcmd = sub {
PVE::Cluster::log_msg('info', $authuser, "delete snapshot VM $vmid: $snapname");
- PVE::QemuServer::snapshot_delete($vmid, $snapname);
+ PVE::QemuServer::snapshot_delete($vmid, $snapname, $param->{force});
};
return $rpcenv->fork_worker('qmdelsnapshot', $vmid, $authuser, $realcmd);