]> git.proxmox.com Git - pve-storage.git/commitdiff
API: add scan method for glusterfs
authorDietmar Maurer <dietmar@proxmox.com>
Tue, 13 Aug 2013 08:06:03 +0000 (10:06 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Tue, 13 Aug 2013 08:06:03 +0000 (10:06 +0200)
PVE/API2/Storage/Scan.pm
changelog.Debian
pvesm

index 650336940a0357a7512cd7fab8e8b312c5ee8679..d67df8c1d89edcb362c5895e31fd9d2fe9c70aeb 100644 (file)
@@ -42,6 +42,7 @@ __PACKAGE__->register_method ({
            { method => 'lvm' },
            { method => 'iscsi' },
            { method => 'nfs' },
+           { method => 'glusterfs' },
            { method => 'usb' },
            ];
 
@@ -88,6 +89,51 @@ __PACKAGE__->register_method ({
        return $data;
     }});
 
+# Note: GlusterFS currently does not have an equivalent of showmount.
+# As workaround, we simply use nfs showmount. 
+# see http://www.gluster.org/category/volumes/
+
+__PACKAGE__->register_method ({
+    name => 'glusterfsscan', 
+    path => 'glusterfs', 
+    method => 'GET',
+    description => "Scan remote GlusterFS server.",
+    protected => 1,
+    proxyto => "node",
+    permissions => { 
+       check => ['perm', '/storage', ['Datastore.Allocate']],
+    },
+    parameters => {
+       additionalProperties => 0,
+       properties => {
+           node => get_standard_option('pve-node'),
+           server => { type => 'string', format => 'pve-storage-server' },
+       },
+    },
+    returns => {
+       type => 'array',
+       items => {
+           type => "object",
+           properties => { 
+               volname => { type => 'string'},
+           },
+       },
+    },
+    code => sub {
+       my ($param) = @_;
+
+       my $server = $param->{server};
+       my $res = PVE::Storage::scan_nfs($server);
+
+       my $data = [];
+       foreach my $path (keys %$res) {
+           if ($path =~ m!^/([^\s/]+)$!) {
+               push @$data, { volname => $1 };
+           }
+       }
+       return $data;
+    }});
+
 __PACKAGE__->register_method ({
     name => 'iscsiscan', 
     path => 'iscsi', 
index 27020cac543451c77eda2e5dfeff05e24211539a..eb9f32d81ef547060187de5f0268c9aa56da391e 100644 (file)
@@ -1,6 +1,8 @@
 libpve-storage-perl (3.0-10) unstable; urgency=low
 
   * add Glusterfs Plugin
+  
+  * API: add scan method for glusterfs
 
  -- Proxmox Support Team <support@proxmox.com>  Tue, 13 Aug 2013 06:45:27 +0200
 
diff --git a/pvesm b/pvesm
index 47113ca7a79f708e7880ae87e6eaa5456b1d2640..27b173361b6c5e71bd04839b09f5ccd229741dd1 100755 (executable)
--- a/pvesm
+++ b/pvesm
@@ -143,6 +143,14 @@ my $cmddef = {
                         printf "%-${maxlen}s %s\n", $rec->{path}, $rec->{options};
                     }
                 }],
+    glusterfsscan => [ "PVE::API2::Storage::Scan", 'glusterfsscan', ['server'],
+                { node => $nodename }, sub  {
+                    my $res = shift;
+
+                    foreach my $rec (@$res) {
+                        printf "%s\n", $rec->{volname};
+                    }
+                }],
     iscsiscan => [ "PVE::API2::Storage::Scan", 'iscsiscan', ['server'],
                   { node => $nodename }, sub  {
                       my $res = shift;