[pve-devel] [PATCH manager 11/14] ceph: mon destroy: refactor removal assertions

Thomas Lamprecht t.lamprecht at proxmox.com
Wed Jun 19 11:02:41 CEST 2019


On 6/18/19 3:42 PM, Dominik Csapak wrote:
> Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
> ---
>  PVE/API2/Ceph/MON.pm | 19 +++++++++++++------
>  1 file changed, 13 insertions(+), 6 deletions(-)
> 
> diff --git a/PVE/API2/Ceph/MON.pm b/PVE/API2/Ceph/MON.pm
> index 832a275e..2d116bb0 100644
> --- a/PVE/API2/Ceph/MON.pm
> +++ b/PVE/API2/Ceph/MON.pm
> @@ -73,6 +73,17 @@ my $assert_mon_prerequisites = sub {
>      }
>  };
>  
> +my $assert_mon_can_remove = sub {
> +    my ($monhash, $monlist, $monid) = @_;
> +
> +    die "no such monitor id '$monid'\n"
> +    if !defined($monhash->{"mon.$monid"}) &&
> +    !grep { $_->{name} && $_->{name} eq $monid } @$monlist;

indentation error above, may apply De Morgan's laws and do a "real"
if (not post if).

> +
> +    -d $mondir || die "monitor filesystem '$mondir' does not exist on this node\n";

copied from below, but maybe for consistency:

die "monitor filesystem '$mondir' does not exist on this node\n" if ! -d $mondir;

> +    die "can't remove last monitor\n" if scalar(@$monlist) <= 1;
> +};
> +
>  __PACKAGE__->register_method ({
>      name => 'listmon',
>      path => '',
> @@ -307,16 +318,12 @@ __PACKAGE__->register_method ({
>  	my $rados = PVE::RADOS->new();
>  	my $monstat = $rados->mon_command({ prefix => 'mon_status' });
>  	my $monlist = $monstat->{monmap}->{mons};
> -
> -	die "no such monitor id '$monid'\n"
> -	    if !defined($cfg->{$monsection});
> +	my $monhash = PVE::Ceph::Services::get_services_info('mon', $cfg, $rados);
>  
>  	my $ccname = PVE::Ceph::Tools::get_config('ccname');
> -
>  	my $mondir =  "/var/lib/ceph/mon/$ccname-$monid";
> -	-d $mondir || die "monitor filesystem '$mondir' does not exist on this node\n";
>  
> -	die "can't remove last monitor\n" if scalar(@$monlist) <= 1;
> +	$assert_mon_can_remove->($monhash, $monlist, $monid);
>  
>  	my $worker = sub {
>  	    my $upid = shift;
> 





More information about the pve-devel mailing list