]> git.proxmox.com Git - pve-storage.git/commitdiff
refactor disk/storage checks for Disk API
authorDominik Csapak <d.csapak@proxmox.com>
Tue, 25 Sep 2018 08:38:00 +0000 (10:38 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Wed, 3 Oct 2018 12:30:22 +0000 (14:30 +0200)
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
PVE/API2/Disks/Directory.pm
PVE/API2/Disks/LVM.pm
PVE/API2/Disks/LVMThin.pm
PVE/API2/Disks/ZFS.pm
PVE/Diskmanage.pm
PVE/Storage.pm

index 9d27762582352c32b65da3172d360a5f81fa3b29..f076ee7f5ef1b9b31a5656739479ed5a90848d4c 100644 (file)
@@ -201,13 +201,8 @@ __PACKAGE__->register_method ({
        my $type = $param->{filesystem} // 'ext4';
 
        $dev = PVE::Diskmanage::verify_blockdev_path($dev);
-       die "device $dev is already in use\n" if PVE::Diskmanage::disk_is_used($dev);
-
-       my $cfg = PVE::Storage::config();
-
-       if (my $scfg = PVE::Storage::storage_config($cfg, $name, 1)) {
-           die "storage ID '$name' already defined\n";
-       }
+       PVE::Diskmanage::check_unused($dev);
+       PVE::Storage::check_available($name);
 
        my $worker = sub {
            my $path = "/mnt/pve/$name";
index 19fba07bf617bcd96e2d11bed188fd0cc52e3389..009ee0d46ba0bb2f4a84a29f1d9c0ab4de37efb5 100644 (file)
@@ -149,7 +149,7 @@ __PACKAGE__->register_method ({
        my $node = $param->{node};
 
        $dev = PVE::Diskmanage::verify_blockdev_path($dev);
-       die "device $dev is already in use\n" if PVE::Diskmanage::disk_is_used($dev);
+       PVE::Diskmanage::check_unused($dev);
 
        my $worker = sub {
            PVE::Diskmanage::locked_disk_action(sub {
index 5b72c8c478d233fb73a4478a0b526853a99a782c..62d3b61ef42d3fa39e0fe6bb108bbf0ba4d10297 100644 (file)
@@ -103,13 +103,8 @@ __PACKAGE__->register_method ({
        my $node = $param->{node};
 
        $dev = PVE::Diskmanage::verify_blockdev_path($dev);
-       die "device $dev is already in use\n" if PVE::Diskmanage::disk_is_used($dev);
-
-       my $cfg = PVE::Storage::config();
-
-       if (my $scfg = PVE::Storage::storage_config($cfg, $name, 1)) {
-           die "storage ID '$name' already defined\n";
-       }
+       PVE::Diskmanage::check_unused($dev);
+       PVE::Storage::check_available($name);
 
        my $worker = sub {
            PVE::Diskmanage::locked_disk_action(sub {
index 3c36ef956741bc0cfd7b82fb7632bc0ab2006c1c..19ccedffbdcccd10c911c154c6cfb4a3a4cf82b7 100644 (file)
@@ -341,14 +341,10 @@ __PACKAGE__->register_method ({
 
        foreach my $dev (@$devs) {
            $dev = PVE::Diskmanage::verify_blockdev_path($dev);
-           die "device $dev is already in use\n" if PVE::Diskmanage::disk_is_used($dev);
+           PVE::Diskmanage::check_unused($dev);
        }
 
-       my $cfg = PVE::Storage::config();
-
-       if (my $scfg = PVE::Storage::storage_config($cfg, $name, 1)) {
-           die "storage ID '$name' already defined\n";
-       }
+       PVE::Storage::check_available($name);
 
        my $numdisks = scalar(@$devs);
        my $mindisks = {
index 1938fa8ff52516f442e8a68c4cb5f73771d1270a..5a5fc87799fc767406fadac086391352d39c2b4a 100644 (file)
@@ -602,4 +602,12 @@ sub locked_disk_action {
     return $res;
 }
 
+sub check_unused {
+    my ($dev) = @_;
+
+    die "device $dev is already in use\n" if disk_is_used($dev);
+
+    return undef;
+}
+
 1;
index f9732feec778b1623e19362341a77baf068f7eb1..81f9b67508538cd4de065cdda781bc0acda60aee 100755 (executable)
@@ -1647,4 +1647,16 @@ sub get_bandwidth_limit {
     return $override;
 }
 
+# checks if the storage id is available and dies if not
+sub check_available {
+    my ($id) = @_;
+
+    my $cfg = config();
+    if (my $scfg = storage_config($cfg, $id, 1)) {
+       die "storage ID '$id' already defined\n";
+    }
+
+    return undef;
+}
+
 1;