[pve-devel] [PATCH v3 guest-common 04/19] helpers: add method to represent config as a table

Thomas Lamprecht t.lamprecht at proxmox.com
Thu Oct 17 19:48:42 CEST 2019


On 10/14/19 10:28 AM, Oguz Bektas wrote:
> 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 {

nothing to do with table itself, it just returns a array of
hashes with current and pending value..

I'd rather like to not bind method names to something their caller
may do with them, but to something they actually do their self.

Albeit a good name is not to easy here... Maybe:
get_current_config_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;
> 





More information about the pve-devel mailing list