[pve-devel] [PATCH storage v2 2/3] add 'format' parameter to storage list call

Dominik Csapak d.csapak at proxmox.com
Fri Nov 10 14:49:18 CET 2017


we will use this for the gui to figure out if we have to show
a size selector, a file selector, which formats are there, etc.

we have to include this data even for not active storages, else
we cannot show the correct fields

Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
 PVE/API2/Storage/Status.pm |  8 +++++++-
 PVE/Storage.pm             | 12 ++++++++++--
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/PVE/API2/Storage/Status.pm b/PVE/API2/Storage/Status.pm
index c6e3b1a..d18da5b 100644
--- a/PVE/API2/Storage/Status.pm
+++ b/PVE/API2/Storage/Status.pm
@@ -63,6 +63,12 @@ __PACKAGE__->register_method ({
 		optional => 1,
 		completion => \&PVE::Cluster::get_nodelist,
 	    }),
+	    format => {
+		description => "Include information about formats",
+		type => 'boolean',
+		optional => 1,
+		default => 0,
+	    },
 	},
     },
     returns => {
@@ -87,7 +93,7 @@ __PACKAGE__->register_method ({
 	
 	my $cfg = PVE::Storage::config();
 
-	my $info = PVE::Storage::storage_info($cfg, $param->{content});
+	my $info = PVE::Storage::storage_info($cfg, $param->{content}, $param->{format});
 
 	raise_param_exc({ storage => "No such storage." })
 	    if $param->{storage} && !defined($info->{$param->{storage}});
diff --git a/PVE/Storage.pm b/PVE/Storage.pm
index 94be04e..73b21e1 100755
--- a/PVE/Storage.pm
+++ b/PVE/Storage.pm
@@ -1001,7 +1001,7 @@ sub deactivate_volumes {
 }
 
 sub storage_info {
-    my ($cfg, $content) = @_;
+    my ($cfg, $content, $includeformat) = @_;
 
     my $ids = $cfg->{ids};
 
@@ -1048,13 +1048,21 @@ sub storage_info {
 	next if !$info->{$storeid};
 	next if !$info->{$storeid}->{enabled};
 
+	my $plugin = PVE::Storage::Plugin->lookup($scfg->{type});
+	if ($includeformat) {
+	    my $pd = $plugin->plugindata();
+	    $info->{$storeid}->{format} = $pd->{format}
+		if $pd->{format};
+	    $info->{$storeid}->{select_existing} = $pd->{select_existing}
+		if $pd->{select_existing};
+	}
+
 	eval { activate_storage($cfg, $storeid, $cache); };
 	if (my $err = $@) {
 	    warn $err;
 	    next;
 	}
 
-	my $plugin = PVE::Storage::Plugin->lookup($scfg->{type});
 	my ($total, $avail, $used, $active);
 	eval { ($total, $avail, $used, $active) = $plugin->status($storeid, $scfg, $cache); };
 	warn $@ if $@;
-- 
2.11.0





More information about the pve-devel mailing list