On October 17, 2019 7:48 pm, Thomas Lamprecht wrote: > 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.bek...@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 >
it does not really 'get' the config either though ;) I don't really know how to call hash1 hash2 => list of items derived from hash1 and hash2 except that it's some kind of 'transformation'. it's not a mapping operation (it could be seen as sequence of three mappings), it's not a flattening, it's not folding. there is in fact no information added to the input, it's just presented in a different structure. 'transform_to_list_with_pending' was about as far as we got off-list, and Oguz didn't like that at all :-P >> + 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; >> > > > _______________________________________________ > pve-devel mailing list > pve-devel@pve.proxmox.com > https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel > > _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel