[pve-devel] [PATCH v3 guest-common 04/19] helpers: add method to represent config as a table
Oguz Bektas
o.bektas at proxmox.com
Mon Oct 14 10:28:36 CEST 2019
in vm_pending API, this method is used to represent the configuration as
a table with current, pending and delete columns.
by adding it as a guesthelper, we can also use it for container pending
changes.
Signed-off-by: Oguz Bektas <o.bektas at proxmox.com>
---
PVE/GuestHelpers.pm | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/PVE/GuestHelpers.pm b/PVE/GuestHelpers.pm
index a36b9bc..a1ec76f 100644
--- a/PVE/GuestHelpers.pm
+++ b/PVE/GuestHelpers.pm
@@ -142,4 +142,39 @@ sub format_pending {
}
}
+sub conf_table_with_pending {
+ my ($conf, $pending_delete_hash) = @_;
+
+ my $res = [];
+
+ foreach my $opt (keys %$conf) {
+ next if ref($conf->{$opt});
+ my $item = { key => $opt };
+ $item->{value} = $conf->{$opt} if defined($conf->{$opt});
+ $item->{pending} = $conf->{pending}->{$opt} if defined($conf->{pending}->{$opt});
+ $item->{delete} = ($pending_delete_hash->{$opt}->{force} ? 2 : 1) if exists $pending_delete_hash->{$opt};
+
+ push @$res, $item;
+ }
+
+ foreach my $opt (keys %{$conf->{pending}}) {
+ next if $opt eq 'delete';
+ next if ref($conf->{pending}->{$opt}); # just to be sure
+ next if defined($conf->{$opt});
+ my $item = { key => $opt };
+ $item->{pending} = $conf->{pending}->{$opt};
+
+ push @$res, $item;
+ }
+
+ while (my ($opt, $force) = each %$pending_delete_hash) {
+ next if $conf->{pending}->{$opt}; # just to be sure
+ next if $conf->{$opt};
+ my $item = { key => $opt, delete => ($force ? 2 : 1)};
+ push @$res, $item;
+ }
+
+ return $res;
+}
+
1;
--
2.20.1
More information about the pve-devel
mailing list