[pve-devel] r6355 - in pve-storage/pve2: . PVE/API2/Storage

svn-commits at proxmox.com svn-commits at proxmox.com
Fri Jul 22 11:09:13 CEST 2011


Author: dietmar
Date: 2011-07-22 11:09:12 +0200 (Fri, 22 Jul 2011)
New Revision: 6355

Modified:
   pve-storage/pve2/ChangeLog
   pve-storage/pve2/PVE/API2/Storage/Scan.pm
   pve-storage/pve2/pvesm
Log:
	* PVE/API2/Storage/Scan.pm: split scan into three different
	methods with divverent return values



Modified: pve-storage/pve2/ChangeLog
===================================================================
--- pve-storage/pve2/ChangeLog	2011-07-22 08:02:13 UTC (rev 6354)
+++ pve-storage/pve2/ChangeLog	2011-07-22 09:09:12 UTC (rev 6355)
@@ -1,3 +1,8 @@
+2011-07-22  Proxmox Support Team  <support at proxmox.com>
+
+	* PVE/API2/Storage/Scan.pm: split scan into three different
+	methods with divverent return values
+
 2011-07-21  Proxmox Support Team  <support at proxmox.com>
 
 	* PVE/Storage.pm (storage_info): do not list disabled storages

Modified: pve-storage/pve2/PVE/API2/Storage/Scan.pm
===================================================================
--- pve-storage/pve2/PVE/API2/Storage/Scan.pm	2011-07-22 08:02:13 UTC (rev 6354)
+++ pve-storage/pve2/PVE/API2/Storage/Scan.pm	2011-07-22 09:09:12 UTC (rev 6355)
@@ -43,42 +43,108 @@
 	return $res;
     }});
 
-# fixme: return value ?
 __PACKAGE__->register_method ({
-    name => 'scan', 
-    path => '{method:(lvm|iscsi|nfs)}', 
+    name => 'nfsscan', 
+    path => 'nfs', 
     method => 'GET',
-    description => "Scan remote storage server.",
+    description => "Scan remote NFS server.",
     protected => 1,
     proxyto => "node",
     parameters => {
     	additionalProperties => 0,
 	properties => {
 	    node => get_standard_option('pve-node'),
-	    method => { 
-		type => 'string',
-		enum => [ 'lvm', 'nfs', 'iscsi' ],
+	    server => { type => 'string', format => 'pve-storage-server' },
+	},
+    },
+    returns => {
+	type => 'array',
+	items => {
+	    type => "object",
+	    properties => { 
+		path => { type => 'string'},
+		options => { type => 'string'},
 	    },
+	},
+    },
+    code => sub {
+	my ($param) = @_;
+
+	my $server = $param->{server};
+	my $res = PVE::Storage::scan_nfs($server);
+
+	my $data = [];
+	foreach my $k (keys %$res) {
+	    push @$data, { path => $k, options => $res->{$k} };
+	}
+	return $data;
+    }});
+
+__PACKAGE__->register_method ({
+    name => 'iscsiscan', 
+    path => 'iscsi', 
+    method => 'GET',
+    description => "Scan remote iSCSI server.",
+    protected => 1,
+    proxyto => "node",
+    parameters => {
+    	additionalProperties => 0,
+	properties => {
+	    node => get_standard_option('pve-node'),
 	    server => { type => 'string', format => 'pve-storage-server' },
 	},
     },
-    returns => {},
+    returns => {
+	type => 'array',
+	items => {
+	    type => "object",
+	    properties => { 
+		target => { type => 'string'},
+		portal => { type => 'string'},
+	    },
+	},
+    },
     code => sub {
 	my ($param) = @_;
 
 	my $server = $param->{server};
-	my $method = $param->{method};
+	my $res = PVE::Storage::scan_iscsi ($server);
 
-	my $res;
-	if ($method eq 'nfs') {
-	    $res = PVE::Storage::scan_nfs ($server);
-	} elsif ($method eq 'iscsi') {
-	    $res = PVE::Storage::scan_iscsi ($server);
-	} else {
-	    die "can't execute scan for storage type '$method'\n";
+	my $data = [];
+	foreach my $k (keys %$res) {
+	    push @$data, { target => $k, portal => $res->{$k} };
 	}
 
-	return $res;
+	return $data;
     }});
 
+__PACKAGE__->register_method ({
+    name => 'lvmscan', 
+    path => 'lvm', 
+    method => 'GET',
+    description => "List local LVM volume groups.",
+    protected => 1,
+    proxyto => "node",
+    parameters => {
+    	additionalProperties => 0,
+	properties => {
+	    node => get_standard_option('pve-node'),
+	},
+    },
+    returns => {
+	type => 'array',
+	items => {
+	    type => "object",
+	    properties => { 
+		vg => { type => 'string'},
+	    },
+	},
+    },
+    code => sub {
+	my ($param) = @_;
+
+	my $res = PVE::Storage::lvm_vgs();
+	return PVE::RESTHandler::hash_to_array($res, 'vg');
+    }});
+
 1;

Modified: pve-storage/pve2/pvesm
===================================================================
--- pve-storage/pve2/pvesm	2011-07-22 08:02:13 UTC (rev 6354)
+++ pve-storage/pve2/pvesm	2011-07-22 09:09:12 UTC (rev 6355)
@@ -211,19 +211,39 @@
 	       }],
     free => [ "PVE::API2::Storage::Content", 'delete', ['volume'],
 	      { node => $nodename } ],
-    scan => [ "PVE::API2::Storage::Scan", 'scan', ['method', 'server'],
-	      { node => $nodename }, sub  {
-		  my $res = shift;
+    nfsscan => [ "PVE::API2::Storage::Scan", 'nfsscan', ['server'],
+		 { node => $nodename }, sub  {
+		     my $res = shift;
 
-		  my $maxlen = 0;
-		  foreach my $k (keys %$res) {
-		      my $len = length ($k);
-		      $maxlen = $len if $len > $maxlen;
-		  }
-		  foreach my $k (keys %$res) {
-		      printf "%-${maxlen}s $res->{$k}\n", $k;
-		  }
-	      }],
+		     my $maxlen = 0;
+		     foreach my $rec (@$res) {
+			 my $len = length ($rec->{path});
+			 $maxlen = $len if $len > $maxlen;
+		     }
+		     foreach my $rec (@$res) {
+			 printf "%-${maxlen}s %s\n", $rec->{path}, $rec->{options};
+		     }
+		 }],
+    iscsiscan => [ "PVE::API2::Storage::Scan", 'iscsiscan', ['server'],
+		   { node => $nodename }, sub  {
+		       my $res = shift;
+
+		       my $maxlen = 0;
+		       foreach my $rec (@$res) {
+			   my $len = length ($rec->{target});
+			   $maxlen = $len if $len > $maxlen;
+		       }
+		       foreach my $rec (@$res) {
+			   printf "%-${maxlen}s %s\n", $rec->{target}, $rec->{portal};
+		       }
+		   }],
+    lvmscan => [ "PVE::API2::Storage::Scan", 'lvmscan', [],
+		 { node => $nodename }, sub  {
+		     my $res = shift;
+		     foreach my $rec (@$res) {
+			 printf "$rec->{vg}\n";
+		     }
+		 }],
     path => [ __PACKAGE__, 'path', ['volume']],
     lock => [ __PACKAGE__, 'lock', ['storage']],
 };



More information about the pve-devel mailing list