[pve-devel] [PATCH manager 06/20] ceph: add add_storage helper
Fabian Grünbichler
f.gruenbichler at proxmox.com
Fri Aug 25 10:48:08 CEST 2017
Signed-off-by: Fabian Grünbichler <f.gruenbichler at 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
More information about the pve-devel
mailing list