Fix #1924: add snapshot parameter

The qm CLI command offer the config and showcmd functions. Both of those
outputs may vary with respect to a given snapshot. This adds a switch
that shows the corresponding snapshot's config and command line.

The code needs a newer libpve-guest-common-perl, thus bumping the
dependency.

Signed-off-by: Rhonda D'Vine <rhonda@proxmox.com>
This commit is contained in:
Rhonda D'Vine 2019-01-30 14:43:38 +01:00 committed by Thomas Lamprecht
parent bfc0bb8179
commit b14477e718
4 changed files with 42 additions and 4 deletions

View File

@ -829,6 +829,14 @@ __PACKAGE__->register_method({
default => 0,
type => 'boolean',
},
snapshot => get_standard_option('pve-snapshot-name', {
description => "Fetch config values from given snapshot.",
optional => 1,
completion => sub {
my ($cmd, $pname, $cur, $args) = @_;
PVE::QemuConfig->snapshot_list($args->[0]);
},
}),
},
},
returns => {
@ -846,6 +854,17 @@ __PACKAGE__->register_method({
my $conf = PVE::QemuConfig->load_config($param->{vmid});
my $snapname = $param->{snapshot};
if ($snapname) {
my $snapshot = $conf->{snapshots}->{$snapname};
die "snapshot '$snapname' does not exist\n"
if !defined($snapshot);
# we need the digest of the file
$snapshot->{digest} = $conf->{digest};
$conf = $snapshot;
}
delete $conf->{snapshots};
if (!$param->{current}) {

View File

@ -127,7 +127,15 @@ __PACKAGE__->register_method ({
type => 'boolean',
optional => 1,
default => 0,
}
},
snapshot => get_standard_option('pve-snapshot-name', {
description => "Fetch config values from given snapshot.",
optional => 1,
completion => sub {
my ($cmd, $pname, $cur, $args) = @_;
PVE::QemuConfig->snapshot_list($args->[0]);
}
}),
},
},
returns => { type => 'null'},
@ -135,7 +143,7 @@ __PACKAGE__->register_method ({
my ($param) = @_;
my $storecfg = PVE::Storage::config();
my $cmdline = PVE::QemuServer::vm_commandline($storecfg, $param->{vmid});
my $cmdline = PVE::QemuServer::vm_commandline($storecfg, $param->{vmid}, $param->{snapshot});
$cmdline =~ s/ -/ \\\n -/g if $param->{pretty};

View File

@ -5372,10 +5372,21 @@ sub vm_human_monitor_command {
}
sub vm_commandline {
my ($storecfg, $vmid) = @_;
my ($storecfg, $vmid, $snapname) = @_;
my $conf = PVE::QemuConfig->load_config($vmid);
if ($snapname) {
my $snapshot = $conf->{snapshots}->{$snapname};
die "snapshot '$snapname' does not exist\n"
if !defined($snapshot);
my $digest = $conf->{digest};
# we need the digest of the file
$snapshot->{digest} = $conf->{digest};
$conf = $snapshot;
}
my $defaults = load_defaults();
my $cmd = config_to_command($storecfg, $vmid, $conf, $defaults);

2
debian/control vendored
View File

@ -6,7 +6,7 @@ Build-Depends: debhelper (>= 7.0.50~),
libio-multiplex-perl,
libjson-c-dev,
libpve-common-perl (>= 5.0-42),
libpve-guest-common-perl (>= 2.0-18),
libpve-guest-common-perl (>= 2.0-19),
libpve-storage-perl,
libtest-mockmodule-perl,
libxml-libxml-perl,