ceph: init: lock ceph config

so that not multiple users can create a ceph cluster at the same time

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
Dominik Csapak 2019-06-18 15:42:47 +02:00 committed by Thomas Lamprecht
parent b3d8b5f527
commit 3e4c0f06e7

View File

@ -303,52 +303,54 @@ __PACKAGE__->register_method ({
} }
# simply load old config if it already exists # simply load old config if it already exists
my $cfg = cfs_read_file('ceph.conf'); PVE::Cluster::cfs_lock_file('ceph.conf', undef, sub {
my $cfg = cfs_read_file('ceph.conf');
if (!$cfg->{global}) { if (!$cfg->{global}) {
my $fsid; my $fsid;
my $uuid; my $uuid;
UUID::generate($uuid); UUID::generate($uuid);
UUID::unparse($uuid, $fsid); UUID::unparse($uuid, $fsid);
my $auth = $param->{disable_cephx} ? 'none' : 'cephx'; my $auth = $param->{disable_cephx} ? 'none' : 'cephx';
$cfg->{global} = { $cfg->{global} = {
'fsid' => $fsid, 'fsid' => $fsid,
'auth cluster required' => $auth, 'auth cluster required' => $auth,
'auth service required' => $auth, 'auth service required' => $auth,
'auth client required' => $auth, 'auth client required' => $auth,
'osd pool default size' => $param->{size} // 3, 'osd pool default size' => $param->{size} // 3,
'osd pool default min size' => $param->{min_size} // 2, 'osd pool default min size' => $param->{min_size} // 2,
'mon allow pool delete' => 'true', 'mon allow pool delete' => 'true',
}; };
# this does not work for default pools # this does not work for default pools
#'osd pool default pg num' => $pg_num, #'osd pool default pg num' => $pg_num,
#'osd pool default pgp num' => $pg_num, #'osd pool default pgp num' => $pg_num,
} }
$cfg->{client}->{keyring} = '/etc/pve/priv/$cluster.$name.keyring'; $cfg->{client}->{keyring} = '/etc/pve/priv/$cluster.$name.keyring';
if ($param->{pg_bits}) { if ($param->{pg_bits}) {
$cfg->{global}->{'osd pg bits'} = $param->{pg_bits}; $cfg->{global}->{'osd pg bits'} = $param->{pg_bits};
$cfg->{global}->{'osd pgp bits'} = $param->{pg_bits}; $cfg->{global}->{'osd pgp bits'} = $param->{pg_bits};
} }
if ($param->{network}) { if ($param->{network}) {
$cfg->{global}->{'public network'} = $param->{network}; $cfg->{global}->{'public network'} = $param->{network};
$cfg->{global}->{'cluster network'} = $param->{network}; $cfg->{global}->{'cluster network'} = $param->{network};
} }
if ($param->{'cluster-network'}) { if ($param->{'cluster-network'}) {
$cfg->{global}->{'cluster network'} = $param->{'cluster-network'}; $cfg->{global}->{'cluster network'} = $param->{'cluster-network'};
} }
cfs_write_file('ceph.conf', $cfg); cfs_write_file('ceph.conf', $cfg);
PVE::Ceph::Tools::setup_pve_symlinks(); PVE::Ceph::Tools::setup_pve_symlinks();
});
return undef; return undef;
}}); }});