On 9/30/19 2:44 PM, Oguz Bektas wrote: > config parser can now read/write [pve:pending] section. this was named > such, instead of [PENDING], after on- and offline discussion regarding > namespacing the pending section and snapshots. > > this also adds an optional non-capturing regex group into the parser for > [snap: snapname] entries which can be supported in PVE 7.0
1. completely nothing to do with pending changes itself -> separate patch 2. they could be supported in 6.x already? PVE cluster host need to be on the same version of software, we guarantee only that old -> new and new <-> new works, so doing this now is no issue... Else we never could add any new feature in a stable release.. Also this is missing from qemu-server? > > Signed-off-by: Oguz Bektas <o.bek...@proxmox.com> > --- > src/PVE/LXC/Config.pm | 37 ++++++++++++++++++++++++++++++++----- > 1 file changed, 32 insertions(+), 5 deletions(-) > > diff --git a/src/PVE/LXC/Config.pm b/src/PVE/LXC/Config.pm > index 9790345..47bd4bb 100644 > --- a/src/PVE/LXC/Config.pm > +++ b/src/PVE/LXC/Config.pm > @@ -751,6 +751,7 @@ sub parse_pct_config { > my $res = { > digest => Digest::SHA::sha1_hex($raw), > snapshots => {}, > + pending => {}, > }; > > $filename =~ m|/lxc/(\d+).conf$| > @@ -766,7 +767,14 @@ sub parse_pct_config { > foreach my $line (@lines) { > next if $line =~ m/^\s*$/; > > - if ($line =~ m/^\[([a-z][a-z0-9_\-]+)\]\s*$/i) { > + if ($line =~ m/^\[pve:pending\]\s*$/i) { why not add the new stuff to the end of the elsif block? less churn.. > + $section = 'pending'; > + $conf->{description} = $descr if $descr; > + $descr = ''; > + $conf = $res->{$section} = {}; > + next; > + } elsif ($line =~ m/^\[(?:snap:)?([a-z][a-z0-9_\-]+)\]\s*$/i) { > + # extended regex for namespacing snapshots in PVE 7.0 > $section = $1; > $conf->{description} = $descr if $descr; > $descr = ''; > @@ -794,6 +802,13 @@ sub parse_pct_config { > $descr .= PVE::Tools::decode_text($2); > } elsif ($line =~ m/snapstate:\s*(prepare|delete)\s*$/) { > $conf->{snapstate} = $1; > + } elsif ($line =~ m/^delete:\s*(.*\S)\s*$/) { > + my $value = $1; > + if ($section eq 'pending') { > + $conf->{delete} = $value; > + } else { > + warn "vm $vmid - property 'delete' is only allowed in > [pve:pending]\n"; > + } > } elsif ($line =~ m/^([a-z][a-z_]*\d*):\s*(\S.*)\s*$/) { > my $key = $1; > my $value = $2; > @@ -832,14 +847,19 @@ sub write_pct_config { > } > > my $generate_raw_config = sub { > - my ($conf) = @_; > + my ($conf, $pending) = @_; > > my $raw = ''; > > # add description as comment to top of file > - my $descr = $conf->{description} || ''; > - foreach my $cl (split(/\n/, $descr)) { > - $raw .= '#' . PVE::Tools::encode_text($cl) . "\n"; > + if (defined(my $descr = $conf->{description})) { > + if ($descr) { > + foreach my $cl (split(/\n/, $descr)) { > + $raw .= '#' . PVE::Tools::encode_text($cl) . "\n"; > + } > + } else { > + $raw .= "#\n" if $pending; > + } > } > > foreach my $key (sort keys %$conf) { > @@ -864,7 +884,14 @@ sub write_pct_config { > > my $raw = &$generate_raw_config($conf); > > + if (scalar(keys %{$conf->{pending}})){ > + $raw .= "\n[pve:pending]\n"; > + $raw .= &$generate_raw_config($conf->{pending}, 1); > + } > + > foreach my $snapname (sort keys %{$conf->{snapshots}}) { > + # TODO: namespace snapshots for PVE 7.0 > + #$raw .= "\n[snap:$snapname]\n"; > $raw .= "\n[$snapname]\n"; > $raw .= &$generate_raw_config($conf->{snapshots}->{$snapname}); > } > _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel