mirror of
https://git.proxmox.com/git/qemu-server
synced 2025-08-14 14:05:45 +00:00
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:
parent
bfc0bb8179
commit
b14477e718
@ -829,6 +829,14 @@ __PACKAGE__->register_method({
|
|||||||
default => 0,
|
default => 0,
|
||||||
type => 'boolean',
|
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 => {
|
returns => {
|
||||||
@ -846,6 +854,17 @@ __PACKAGE__->register_method({
|
|||||||
|
|
||||||
my $conf = PVE::QemuConfig->load_config($param->{vmid});
|
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};
|
delete $conf->{snapshots};
|
||||||
|
|
||||||
if (!$param->{current}) {
|
if (!$param->{current}) {
|
||||||
|
@ -127,7 +127,15 @@ __PACKAGE__->register_method ({
|
|||||||
type => 'boolean',
|
type => 'boolean',
|
||||||
optional => 1,
|
optional => 1,
|
||||||
default => 0,
|
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'},
|
returns => { type => 'null'},
|
||||||
@ -135,7 +143,7 @@ __PACKAGE__->register_method ({
|
|||||||
my ($param) = @_;
|
my ($param) = @_;
|
||||||
|
|
||||||
my $storecfg = PVE::Storage::config();
|
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};
|
$cmdline =~ s/ -/ \\\n -/g if $param->{pretty};
|
||||||
|
|
||||||
|
@ -5372,10 +5372,21 @@ sub vm_human_monitor_command {
|
|||||||
}
|
}
|
||||||
|
|
||||||
sub vm_commandline {
|
sub vm_commandline {
|
||||||
my ($storecfg, $vmid) = @_;
|
my ($storecfg, $vmid, $snapname) = @_;
|
||||||
|
|
||||||
my $conf = PVE::QemuConfig->load_config($vmid);
|
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 $defaults = load_defaults();
|
||||||
|
|
||||||
my $cmd = config_to_command($storecfg, $vmid, $conf, $defaults);
|
my $cmd = config_to_command($storecfg, $vmid, $conf, $defaults);
|
||||||
|
2
debian/control
vendored
2
debian/control
vendored
@ -6,7 +6,7 @@ Build-Depends: debhelper (>= 7.0.50~),
|
|||||||
libio-multiplex-perl,
|
libio-multiplex-perl,
|
||||||
libjson-c-dev,
|
libjson-c-dev,
|
||||||
libpve-common-perl (>= 5.0-42),
|
libpve-common-perl (>= 5.0-42),
|
||||||
libpve-guest-common-perl (>= 2.0-18),
|
libpve-guest-common-perl (>= 2.0-19),
|
||||||
libpve-storage-perl,
|
libpve-storage-perl,
|
||||||
libtest-mockmodule-perl,
|
libtest-mockmodule-perl,
|
||||||
libxml-libxml-perl,
|
libxml-libxml-perl,
|
||||||
|
Loading…
Reference in New Issue
Block a user