on a given node (and storage). There is no datacenter/storage fallback for the bandwidth limit, so the default can just be returned as is. While the bandwidth limit is a root-only option when executing the backup, it still makes sense to return it for all users, so they can see what's going to be used.
Signed-off-by: Fabian Ebner <f.eb...@proxmox.com> --- Changes from v3: * incorporated Thomas's feedback: * style fixes * return bwlimit for all users PVE/API2/VZDump.pm | 87 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/PVE/API2/VZDump.pm b/PVE/API2/VZDump.pm index 44376106..b205bf8d 100644 --- a/PVE/API2/VZDump.pm +++ b/PVE/API2/VZDump.pm @@ -146,6 +146,93 @@ __PACKAGE__->register_method ({ return $rpcenv->fork_worker('vzdump', $taskid, $user, $worker); }}); +__PACKAGE__->register_method ({ + name => 'defaults', + path => 'defaults', + method => 'GET', + description => "Get the currently configured vzdump defaults.", + permissions => { + description => "The user needs 'Datastore.Audit' or 'Datastore.AllocateSpace' " . + "permissions for the specified storage (or default storage if none specified). Some " . + "properties are only returned when the user has 'Sys.Audit' permissions for the node.", + user => 'all', + }, + proxyto => 'node', + parameters => { + additionalProperties => 0, + properties => { + node => get_standard_option('pve-node'), + storage => get_standard_option('pve-storage-id', { optional => 1 }), + }, + }, + returns => { + type => 'object', + additionalProperties => 0, + properties => PVE::VZDump::Common::json_config_properties(), + }, + code => sub { + my ($param) = @_; + + my $node = extract_param($param, 'node'); + my $storage = extract_param($param, 'storage'); + + my $rpcenv = PVE::RPCEnvironment::get(); + my $authuser = $rpcenv->get_user(); + + my $res = PVE::VZDump::read_vzdump_defaults(); + + $res->{storage} = $storage if defined($storage); + + if (!defined($res->{dumpdir}) && !defined($res->{storage})) { + $res->{storage} = 'local'; + } + + if (defined($res->{storage})) { + $rpcenv->check_any( + $authuser, + "/storage/$res->{storage}", + ['Datastore.Audit', 'Datastore.AllocateSpace'], + ); + + my $info = PVE::VZDump::storage_info($res->{storage}); + for my $key (qw(dumpdir prune-backups)) { + $res->{$key} = $info->{$key} if defined($info->{$key}); + } + } + + if (defined($res->{'prune-backups'})) { + $res->{'prune-backups'} = PVE::JSONSchema::print_property_string( + $res->{'prune-backups'}, + 'prune-backups', + ); + } + + $res->{mailto} = join(",", @{$res->{mailto}}) + if defined($res->{mailto}); + + $res->{'exclude-path'} = join(",", @{$res->{'exclude-path'}}) + if defined($res->{'exclude-path'}); + + # normal backup users don't need to know these + if (!$rpcenv->check($authuser, "/nodes/$node", ['Sys.Audit'], 1)) { + delete $res->{mailto}; + delete $res->{tmpdir}; + delete $res->{dumpdir}; + delete $res->{script}; + delete $res->{ionice}; + } + + my $pool = $res->{pool}; + if (defined($pool) && + !$rpcenv->check($authuser, "/pool/$pool", ['Pool.Allocate'], 1)) { + delete $res->{pool}; + } + + delete $res->{size}; # deprecated, to be dropped with PVE 7.0 + + return $res; + }}); + __PACKAGE__->register_method ({ name => 'extractconfig', path => 'extractconfig', -- 2.20.1 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel