From 5527c824ddda319bcc04dcc7e822d7a6bbcd07cb Mon Sep 17 00:00:00 2001 From: Thomas Lamprecht Date: Wed, 4 Jul 2018 16:56:24 +0200 Subject: [PATCH] cephtools: simplify ceph_check_keyfile --- PVE/Storage/CephTools.pm | 53 ++++++++++++++++------------------------ 1 file changed, 21 insertions(+), 32 deletions(-) diff --git a/PVE/Storage/CephTools.pm b/PVE/Storage/CephTools.pm index 766163d..7f5260b 100644 --- a/PVE/Storage/CephTools.pm +++ b/PVE/Storage/CephTools.pm @@ -5,35 +5,6 @@ use warnings; use Net::IP; use PVE::Tools qw(run_command); -my $ceph_check_keyfile = sub { - my ($filename, $scfg) = @_; - - if (-f $filename) { - my $content = PVE::Tools::file_get_contents($filename); - my @lines = split /\n/, $content; - - my $section; - - foreach my $line (@lines) { - next if !$line; - - $section = $1 if $line =~ m/^\[(\S+)\]$/; - - if ($scfg->{type} eq 'rbd') { - if ((!$section) && (!$section =~ m/^$/)) { - warn "Not a proper $scfg->{type} authentication file: $filename\n"; - } - } elsif ($scfg->{type} eq 'cephfs') { - if ($section || ($line =~ s/^\s+//)) { - warn "Not a proper $scfg->{type} authentication file: $filename\n"; - } - } - } - } - - return undef; -}; - my $parse_ceph_file = sub { my ($filename) = @_; @@ -104,6 +75,26 @@ sub hostlist { } @monhostlist); } +my $ceph_check_keyfile = sub { + my ($filename, $type) = @_; + + return if ! -f $filename; + + my $content = PVE::Tools::file_get_contents($filename); + eval { + die if !$content; + + if ($type eq 'rbd') { + die if $content !~ /\s*\[\S+\]\s*key\s*=\s*\S+==\s*$/m; + } elsif ($type eq 'cephfs') { + die if $content !~ /\S+==\s*$/; + } + }; + die "Not a proper $type authentication file: $filename\n" if $@; + + return undef; +}; + sub ceph_connect_option { my ($scfg, $storeid, %options) = @_; @@ -116,9 +107,7 @@ sub ceph_connect_option { $cmd_option->{ceph_conf} = $pveceph_config if $pveceph_managed; - if (-e $keyfile) { - $ceph_check_keyfile->($keyfile, $scfg); - } + $ceph_check_keyfile->($keyfile, $scfg->{type}); if (-e $ceph_storeid_conf) { if ($pveceph_managed) { -- 2.39.2