From 151444810f4096068ab042121d72a457903df150 Mon Sep 17 00:00:00 2001 From: Oguz Bektas Date: Mon, 14 Oct 2019 10:28:36 +0200 Subject: [PATCH] helpers: add method to represent config as a table 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 --- 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.39.2