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:
committed by
Thomas Lamprecht
parent
4050fcc16b
commit
71be011328
@ -4,16 +4,18 @@ use strict;
|
|||||||
use warnings;
|
use warnings;
|
||||||
use Net::IP;
|
use Net::IP;
|
||||||
use PVE::Tools qw(run_command);
|
use PVE::Tools qw(run_command);
|
||||||
|
use PVE::Cluster qw(cfs_register_file);
|
||||||
|
|
||||||
my $parse_ceph_file = sub {
|
cfs_register_file('ceph.conf',
|
||||||
my ($filename) = @_;
|
\&parse_ceph_config,
|
||||||
|
\&write_ceph_config);
|
||||||
|
|
||||||
|
sub parse_ceph_config {
|
||||||
|
my ($filename, $raw) = @_;
|
||||||
|
|
||||||
my $cfg = {};
|
my $cfg = {};
|
||||||
|
|
||||||
return $cfg if ! -f $filename;
|
my @lines = split /\n/, $raw;
|
||||||
|
|
||||||
my $content = PVE::Tools::file_get_contents($filename);
|
|
||||||
my @lines = split /\n/, $content;
|
|
||||||
|
|
||||||
my $section;
|
my $section;
|
||||||
|
|
||||||
@ -36,8 +38,54 @@ my $parse_ceph_file = sub {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return $cfg;
|
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 $ceph_get_key = sub {
|
||||||
my ($keyfile, $username) = @_;
|
my ($keyfile, $username) = @_;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user