]> git.proxmox.com Git - pve-storage.git/commitdiff
nexenta: correctly get volsize (needs extra API call)
authorDietmar Maurer <dietmar@proxmox.com>
Mon, 17 Sep 2012 05:58:20 +0000 (07:58 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Mon, 17 Sep 2012 05:58:20 +0000 (07:58 +0200)
PVE/Storage/NexentaPlugin.pm

index 230fbcbb5735e3f0a9cf1e5d022f0196e5fa25e6..046a2c03c82d5793021167fffab533f81f682490 100644 (file)
@@ -36,6 +36,27 @@ sub nexenta_request {
     return 1;
 }
 
+sub nexenta_get_zvol_size {
+    my ($zvol, $scfg) = @_;
+
+    my $json = '{"method": "get_child_prop", "object": "zvol", "params": ["' . $zvol . '", "volsize"]}';
+    my $volsize = nexenta_request($scfg, $json);
+    if ($volsize =~ /^(\d+)([KMGT])$/) {
+       my ($size, $unit) = ($1, $2);
+       if ($unit eq 'K') {
+           $size *= 1024;
+       } elsif ($unit eq 'M') {
+           $size *= 1024*1024;
+       } elsif ($unit eq 'G') {
+           $size *= 1024*1024*1024;
+       } elsif ($unit eq 'T') {
+           $size *= 1024*1024*1024*1024;
+       }
+       return $size;
+    }
+    die "got undefined size '$volsize'\n";
+}
+
 sub nexenta_list_lun_mapping_entries {
     my ($zvol, $scfg) = @_;
 
@@ -116,7 +137,8 @@ sub nexenta_list_zvol {
 
        $list->{$pool}->{$image} = {
            name => $image,
-           size => "",
+           size => nexenta_get_zvol_size($zvol, $scfg),
+           format => 'raw',
            vmid => $owner
        };