register ceph.conf parser/writer

With this we can use cfs_read_file/cfs_write_file and cfs_lock_file.

Code for writing is mostly copied from pve-managers CephTools.pm,
with the addition of mgr sections.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
Dominik Csapak
2018-12-19 11:24:40 +01:00
committed by Thomas Lamprecht
parent 4050fcc16b
commit 71be011328

View File

@ -4,16 +4,18 @@ use strict;
use warnings;
use Net::IP;
use PVE::Tools qw(run_command);
use PVE::Cluster qw(cfs_register_file);
my $parse_ceph_file = sub {
my ($filename) = @_;
cfs_register_file('ceph.conf',
\&parse_ceph_config,
\&write_ceph_config);
sub parse_ceph_config {
my ($filename, $raw) = @_;
my $cfg = {};
return $cfg if ! -f $filename;
my $content = PVE::Tools::file_get_contents($filename);
my @lines = split /\n/, $content;
my @lines = split /\n/, $raw;
my $section;
@ -36,8 +38,54 @@ my $parse_ceph_file = sub {
}
return $cfg;
}
my $parse_ceph_file = sub {
my ($filename) = @_;
my $cfg = {};
return $cfg if ! -f $filename;
my $content = PVE::Tools::file_get_contents($filename);
return parse_ceph_config($filename, $content);
};
sub write_ceph_config {
my ($filename, $cfg) = @_;
my $out = '';
my $cond_write_sec = sub {
my $re = shift;
foreach my $section (keys %$cfg) {
next if $section !~ m/^$re$/;
$out .= "[$section]\n";
foreach my $key (sort keys %{$cfg->{$section}}) {
$out .= "\t $key = $cfg->{$section}->{$key}\n";
}
$out .= "\n";
}
};
&$cond_write_sec('global');
&$cond_write_sec('client');
&$cond_write_sec('mds');
&$cond_write_sec('mon');
&$cond_write_sec('osd');
&$cond_write_sec('mgr');
&$cond_write_sec('mds\..*');
&$cond_write_sec('mon\..*');
&$cond_write_sec('osd\..*');
&$cond_write_sec('mgr\..*');
return $out;
}
my $ceph_get_key = sub {
my ($keyfile, $username) = @_;