[pve-devel] [PATCH storage] Automatically create/delete CEPH keyring when adding/deleting RBD Storage

Caspar Smit casparsmit at supernas.eu
Wed Jan 11 15:22:52 CET 2017


When adding an RBD storage to Proxmox this patch checks if the
/etc/pve/priv/ceph dir exists, if not it will create it.
The the client.admin keyring will be copied to it with the
correct name of the storage (storeid.keyring)

When deleting an RBD storage the keyring file will be removed.

Signed-off-by: Caspar Smit <casparsmit at supernas.eu>
---
 PVE/API2/Storage/Config.pm | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/PVE/API2/Storage/Config.pm b/PVE/API2/Storage/Config.pm
index 4668af6..e707efb 100755
--- a/PVE/API2/Storage/Config.pm
+++ b/PVE/API2/Storage/Config.pm
@@ -3,6 +3,7 @@ package PVE::API2::Storage::Config;
 use strict;
 use warnings;
 
+use File::Copy qw(copy);
 use PVE::SafeSyslog;
 use PVE::Tools qw(extract_param);
 use PVE::Cluster qw(cfs_read_file cfs_write_file);
@@ -174,6 +175,15 @@ __PACKAGE__->register_method ({
 	    
 	    }, "create storage failed");
 
+	if ($type eq 'rbd') {
+	    if (!-d "/etc/pve/priv/ceph") {
+		mkdir "/etc/pve/priv/ceph";
+	    }
+	    if (-e "/etc/pve/priv/ceph.client.admin.keyring") {
+		copy "/etc/pve/priv/ceph.client.admin.keyring", "/etc/pve/priv/ceph/$storeid.keyring";
+	    }
+	}
+
 	return undef;
     }});
 
@@ -259,6 +269,8 @@ __PACKAGE__->register_method ({
 
 	PVE::AccessControl::remove_storage_access($storeid);
 
+	unlink "/etc/pve/priv/ceph/$storeid.keyring";
+
 	return undef;
     }});
 
-- 
2.1.4




More information about the pve-devel mailing list