[pve-devel] [PATCH guest-common] add asObject to config_with_pending

Tim Marx t.marx at proxmox.com
Wed May 20 14:23:41 CEST 2020


Signed-off-by: Tim Marx <t.marx at proxmox.com>
---
 PVE/GuestHelpers.pm | 34 ++++++++++++++++++++++++++++------
 1 file changed, 28 insertions(+), 6 deletions(-)

diff --git a/PVE/GuestHelpers.pm b/PVE/GuestHelpers.pm
index 1688c5c..176d903 100644
--- a/PVE/GuestHelpers.pm
+++ b/PVE/GuestHelpers.pm
@@ -205,19 +205,29 @@ sub format_pending {
 # value (the current value in effect - if any)
 # pending (a new, still pending, value - if any)
 # delete (when deletions are pending, this is set to either 2 (force) or 1 (graceful))
-sub config_with_pending_array {
-    my ($conf, $pending_delete_hash) = @_;
+sub config_with_pending {
+    my ($conf, $pending_delete_hash, $asObject) = @_;
 
     my $res = [];
 
+    if ($asObject) {
+	$res = {};
+    }
+
     foreach my $opt (keys %$conf) {
 	next if ref($conf->{$opt});
 	my $item = { key => $opt };
+	if ($asObject) {
+	    $item = {};
+	}
 	$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;
+	if ($asObject) {
+	    $res->{$opt} = $item;
+	} else {
+	    push @$res, $item;
+	}
     }
 
     foreach my $opt (keys %{$conf->{pending}}) {
@@ -225,16 +235,28 @@ sub config_with_pending_array {
 	next if ref($conf->{pending}->{$opt}); # just to be sure
 	next if defined($conf->{$opt});
 	my $item = { key => $opt };
+	if ($asObject) {
+	    $item = {};
+	}
 	$item->{pending} = $conf->{pending}->{$opt};
 
-	push @$res, $item;
+	if ($asObject) {
+	    $res->{$opt} = $item;
+	} else {
+	    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;
+	if ($asObject) {
+	    $res->{$opt} = $item;
+	} else {
+	    $item->{key} = $opt;
+	    push @$res, $item;
+	}
     }
 
     return $res;
-- 
2.20.1




More information about the pve-devel mailing list