]> git.proxmox.com Git - pve-storage.git/commitdiff
rbd: use add/delete hooks
authorThomas Lamprecht <t.lamprecht@proxmox.com>
Mon, 2 Jul 2018 13:54:46 +0000 (15:54 +0200)
committerWolfgang Bumiller <w.bumiller@proxmox.com>
Tue, 3 Jul 2018 10:27:34 +0000 (12:27 +0200)
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
PVE/API2/Storage/Config.pm
PVE/Storage/RBDPlugin.pm

index 240c9e02822179f72bab1b4fa8935d41e04e1f5d..bb9d0a548f4c6569086b89656daa068e04ca9659 100755 (executable)
@@ -182,21 +182,6 @@ __PACKAGE__->register_method ({
                    PVE::Storage::activate_storage($cfg, $baseid);
 
                    PVE::Storage::LVMPlugin::lvm_create_volume_group($path, $opts->{vgname}, $opts->{shared});
-               } elsif ($type eq 'rbd' && !defined($opts->{monhost})) {
-                   my $ceph_admin_keyring = '/etc/pve/priv/ceph.client.admin.keyring';
-                   my $ceph_storage_keyring = "/etc/pve/priv/ceph/${storeid}.keyring";
-
-                   die "ceph authx keyring file for storage '$storeid' already exists!\n"
-                       if -e $ceph_storage_keyring;
-
-                   eval {
-                       mkdir '/etc/pve/priv/ceph';
-                       PVE::Tools::file_copy($ceph_admin_keyring, $ceph_storage_keyring);
-                   };
-                   if (my $err = $@) {
-                       unlink $ceph_storage_keyring;
-                       die "failed to copy ceph authx keyring for storage '$storeid': $err\n";
-                   }
                }
 
                eval {
@@ -297,13 +282,6 @@ __PACKAGE__->register_method ({
 
                $plugin->on_delete_hook($storeid, $scfg);
 
-               if ($scfg->{type} eq 'rbd' && !defined($scfg->{monhost})) {
-                   my $ceph_storage_keyring = "/etc/pve/priv/ceph/${storeid}.keyring";
-                   if (-f $ceph_storage_keyring) {
-                       unlink($ceph_storage_keyring) or warn "removing keyring of storage failed: $!\n";
-                   }
-               }
-
                delete $cfg->{ids}->{$storeid};
 
                PVE::Storage::write_config($cfg);
index 15cbe67d09a188141f0790316a1967c2be501a83..72d122bb600165852b2d116987905e1b2f823452 100644 (file)
@@ -320,6 +320,40 @@ sub options {
 
 # Storage implementation
 
+sub on_add_hook {
+    my ($class, $storeid, $scfg, %param) = @_;
+
+    return if defined($scfg->{monhost}); # nothing to do if not pve managed ceph
+
+    my $ceph_admin_keyring = '/etc/pve/priv/ceph.client.admin.keyring';
+    my $ceph_storage_keyring = "/etc/pve/priv/ceph/${storeid}.keyring";
+
+    die "ceph authx keyring file for storage '$storeid' already exists!\n"
+       if -e $ceph_storage_keyring;
+
+    eval {
+       mkdir '/etc/pve/priv/ceph';
+       PVE::Tools::file_copy($ceph_admin_keyring, $ceph_storage_keyring);
+    };
+    if (my $err = $@) {
+       unlink $ceph_storage_keyring;
+       die "failed to copy ceph authx keyring for storage '$storeid': $err\n";
+    }
+
+}
+
+sub on_delete_hook {
+    my ($class, $storeid, $scfg) = @_;
+
+    return if defined($scfg->{monhost}); # nothing to do if not pve managed ceph
+
+    my $ceph_storage_keyring = "/etc/pve/priv/ceph/${storeid}.keyring";
+    if (-f $ceph_storage_keyring) {
+       unlink($ceph_storage_keyring) or warn "removing keyring of storage failed: $!\n";
+    }
+
+}
+
 sub parse_volname {
     my ($class, $volname) = @_;