]> git.proxmox.com Git - pve-storage.git/blobdiff - PVE/API2/Disks/ZFS.pm
disks: allow add_storage for already configured local storage
[pve-storage.git] / PVE / API2 / Disks / ZFS.pm
index 27873cc7941624eafad00016a82012e07d8c6b70..dd59375ebbe621c5b07ebecea83c77660a9a0152 100644 (file)
@@ -342,14 +342,33 @@ __PACKAGE__->register_method ({
        my $name = $param->{name};
        my $node = $param->{node};
        my $devs = [PVE::Tools::split_list($param->{devices})];
+       my $node = $param->{node};
        my $raidlevel = $param->{raidlevel};
        my $compression = $param->{compression} // 'on';
 
        for my $dev (@$devs) {
            $dev = PVE::Diskmanage::verify_blockdev_path($dev);
            PVE::Diskmanage::assert_disk_unused($dev);
+
+       }
+       my $storage_params = {
+           type => 'zfspool',
+           pool => $name,
+           storage => $name,
+           content => 'rootdir,images',
+           nodes => $node,
+       };
+       my $verify_params = [qw(pool)];
+
+       if ($param->{add_storage}) {
+           PVE::API2::Storage::Config->create_or_update(
+               $name,
+               $node,
+               $storage_params,
+               $verify_params,
+               1,
+           );
        }
-       PVE::Storage::assert_sid_unused($name) if $param->{add_storage};
 
        my $pools = get_pool_data();
        die "pool '${name}' already exists on node '${node}'\n"
@@ -432,15 +451,12 @@ __PACKAGE__->register_method ({
            PVE::Diskmanage::udevadm_trigger($devs->@*);
 
            if ($param->{add_storage}) {
-               my $storage_params = {
-                   type => 'zfspool',
-                   pool => $name,
-                   storage => $name,
-                   content => 'rootdir,images',
-                   nodes => $node,
-               };
-
-               PVE::API2::Storage::Config->create($storage_params);
+               PVE::API2::Storage::Config->create_or_update(
+                   $name,
+                   $node,
+                   $storage_params,
+                   $verify_params,
+               );
            }
        };