From 3cf5e19edc5383a2170b4d9c2406bc3ffd80fe85 Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Tue, 13 Aug 2013 10:06:03 +0200 Subject: [PATCH] API: add scan method for glusterfs --- PVE/API2/Storage/Scan.pm | 46 ++++++++++++++++++++++++++++++++++++++++ changelog.Debian | 2 ++ pvesm | 8 +++++++ 3 files changed, 56 insertions(+) diff --git a/PVE/API2/Storage/Scan.pm b/PVE/API2/Storage/Scan.pm index 6503369..d67df8c 100644 --- a/PVE/API2/Storage/Scan.pm +++ b/PVE/API2/Storage/Scan.pm @@ -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', diff --git a/changelog.Debian b/changelog.Debian index 27020ca..eb9f32d 100644 --- a/changelog.Debian +++ b/changelog.Debian @@ -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 Tue, 13 Aug 2013 06:45:27 +0200 diff --git a/pvesm b/pvesm index 47113ca..27b1733 100755 --- 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; -- 2.39.5