This adds support for writing arbitrary sections to 'ceph.conf' while ensuring that already written sections are not duplicated.
Sections that are associated with the client, for example '[client.foo]', are written directly after the '[client]' section. Signed-off-by: Max Carrara <m.carr...@proxmox.com> --- Changes v1 --> v2: * Instead of just adding 'client.crash' as a separate section, also allow writing arbitrary sections src/PVE/CephConfig.pm | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/PVE/CephConfig.pm b/src/PVE/CephConfig.pm index 77b745f..86d3079 100644 --- a/src/PVE/CephConfig.pm +++ b/src/PVE/CephConfig.pm @@ -60,23 +60,30 @@ my $parse_ceph_file = sub { sub write_ceph_config { my ($filename, $cfg) = @_; + my $written_sections = {}; my $out = ''; my $cond_write_sec = sub { my $re = shift; - foreach my $section (sort keys %$cfg) { - next if $section !~ m/^$re$/; + for my $section (sort keys %$cfg) { + if ($section !~ m/^$re$/ || exists($written_sections->{$section})) { + next; + } + $out .= "[$section]\n"; - foreach my $key (sort keys %{$cfg->{$section}}) { - $out .= "\t $key = $cfg->{$section}->{$key}\n"; + for my $key (sort keys %{$cfg->{$section}}) { + $out .= "\t$key = $cfg->{$section}->{$key}\n"; } $out .= "\n"; + + $written_sections->{$section} = 1; } }; &$cond_write_sec('global'); &$cond_write_sec('client'); + &$cond_write_sec('client\..*'); &$cond_write_sec('mds'); &$cond_write_sec('mon'); @@ -88,6 +95,8 @@ sub write_ceph_config { &$cond_write_sec('osd\..*'); &$cond_write_sec('mgr\..*'); + &$cond_write_sec('.*'); + return $out; } -- 2.39.2 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel