From 0a507a2d80cc4bb1f6cb4167b36e650581bed261 Mon Sep 17 00:00:00 2001 From: Rhonda D'Vine Date: Wed, 30 Jan 2019 14:41:33 +0100 Subject: [PATCH] Fix #1924: add snapshot parameter The pct CLI command offer the config function. The output of that may vary with respect to a given snapshot. This adds a switch that shows the corresponding snapshot's config. The code needs a newer libpve-guest-common-perl, thus bumping the dependency. Signed-off-by: Rhonda D'Vine --- debian/control | 2 +- src/PVE/API2/LXC/Config.pm | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/debian/control b/debian/control index 15f42ad..5a1e9eb 100644 --- a/debian/control +++ b/debian/control @@ -4,7 +4,7 @@ Priority: extra Maintainer: Proxmox Support Team Build-Depends: debhelper (>= 7.0.50~), libpve-common-perl, - libpve-guest-common-perl | libpve-common-perl (<= 4.0-89), + libpve-guest-common-perl (>= 2.0-19), libpve-storage-perl, libtest-mockmodule-perl, lxc (>= 3.0.2-1) | lxc-pve (>= 3.0.1+pve1-1), diff --git a/src/PVE/API2/LXC/Config.pm b/src/PVE/API2/LXC/Config.pm index 1ba0ffd..b69db12 100644 --- a/src/PVE/API2/LXC/Config.pm +++ b/src/PVE/API2/LXC/Config.pm @@ -35,6 +35,14 @@ __PACKAGE__->register_method({ properties => { node => get_standard_option('pve-node'), vmid => get_standard_option('pve-vmid', { completion => \&PVE::LXC::complete_ctid }), + snapshot => get_standard_option('pve-snapshot-name', { + description => "Fetch config values from given snapshot.", + optional => 1, + completion => sub { + my ($cmd, $pname, $cur, $args) = @_; + PVE::LXC::Config->snapshot_list($args->[0]); + }, + }), }, }, returns => { @@ -57,6 +65,17 @@ __PACKAGE__->register_method({ my $conf = PVE::LXC::Config->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}; return $conf; -- 2.39.2