Signed-off-by: Fabian Grünbichler <f.gruenbich...@proxmox.com> --- PVE/API2/Ceph.pm | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+)
diff --git a/PVE/API2/Ceph.pm b/PVE/API2/Ceph.pm index f7353884..a1f5bebe 100644 --- a/PVE/API2/Ceph.pm +++ b/PVE/API2/Ceph.pm @@ -12,6 +12,7 @@ use PVE::INotify; use PVE::Cluster qw(cfs_lock_file cfs_read_file cfs_write_file); use PVE::AccessControl; use PVE::Storage; +use PVE::API2::Storage::Config; use PVE::RESTHandler; use PVE::RPCEnvironment; use PVE::JSONSchema qw(get_standard_option); @@ -746,6 +747,46 @@ my $map_monhash_monhosts = sub { } keys %$monhash); }; +my $add_storage = sub { + my ($monhash, $pool, $storeid, $krbd) = @_; + + my $pve_ceph_keydir = PVE::CephTools::get_config('pve_ceph_keydir'); + mkdir $pve_ceph_keydir; + + my $pve_ckeyring_path = PVE::CephTools::get_config('pve_ckeyring_path'); + my $pve_ceph_keyring_path = "$pve_ceph_keydir/$storeid.keyring"; + + my $monhost = $map_monhash_monhosts->($monhash); + + die "ceph authx keyring file for storage '$storeid' already exists!\n" + if -e $pve_ceph_keyring_path; + + eval { + my $ckeyring_data = PVE::Tools::file_get_contents($pve_ckeyring_path); + PVE::Tools::file_set_contents($pve_ceph_keyring_path, $ckeyring_data); + }; + if (my $err = $@) { + unlink $pve_ceph_keyring_path; + die "failed to copy ceph authx keyring for storage '$storeid': $err\n"; + } + + my $storage_params = { + type => 'rbd', + pool => $pool, + storage => $storeid, + monhost => $monhost, + krbd => $krbd // 0, + content => $krbd ? 'rootdir' : 'images', + pveceph => 1, + }; + + eval { PVE::API2::Storage::Config->create($storage_params); }; + if (my $err = $@) { + unlink $pve_ceph_keyring_path; + die "failed adding storage to storage.cfg: $err\n"; + } +}; + __PACKAGE__->register_method ({ name => 'listmon', path => 'mon', -- 2.11.0 _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel