pveum: work around unavailable API2:Pools module

commit 42ade84744 added the pool
subcommands, reusing the PVE::API2::Pool module. But that module has
to live in pve-manager and is not available here, most of the time
not a real issue (but always ugly), on bootstrapping this becomes a
blocker though...

So, for now add a hack and do not hard depend on the modules
availability...

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
Thomas Lamprecht 2021-05-09 19:46:53 +02:00
parent d4c9a54e35
commit 3470fad8c1

View File

@ -10,7 +10,6 @@ use PVE::API2::Group;
use PVE::API2::Role; use PVE::API2::Role;
use PVE::API2::ACL; use PVE::API2::ACL;
use PVE::API2::AccessControl; use PVE::API2::AccessControl;
use PVE::API2::Pool;
use PVE::API2::Domains; use PVE::API2::Domains;
use PVE::CLIFormatter; use PVE::CLIFormatter;
use PVE::CLIHandler; use PVE::CLIHandler;
@ -146,12 +145,6 @@ our $cmddef = {
delete => [ 'PVE::API2::ACL', 'update_acl', ['path'], { delete => 1 }], delete => [ 'PVE::API2::ACL', 'update_acl', ['path'], { delete => 1 }],
list => [ 'PVE::API2::ACL', 'read_acl', [], {}, $print_api_result, $PVE::RESTHandler::standard_output_options], list => [ 'PVE::API2::ACL', 'read_acl', [], {}, $print_api_result, $PVE::RESTHandler::standard_output_options],
}, },
pool => {
add => [ 'PVE::API2::Pool', 'create_pool', ['poolid'] ],
modify => [ 'PVE::API2::Pool', 'update_pool', ['poolid'] ],
delete => [ 'PVE::API2::Pool', 'delete_pool', ['poolid'] ],
list => [ 'PVE::API2::Pool', 'index', [], {}, $print_api_result, $PVE::RESTHandler::standard_output_options],
},
realm => { realm => {
add => [ 'PVE::API2::Domains', 'create', ['realm'] ], add => [ 'PVE::API2::Domains', 'create', ['realm'] ],
modify => [ 'PVE::API2::Domains', 'update', ['realm'] ], modify => [ 'PVE::API2::Domains', 'update', ['realm'] ],
@ -184,4 +177,22 @@ our $cmddef = {
acldel => { alias => 'acl delete' }, acldel => { alias => 'acl delete' },
}; };
# FIXME: HACK! The pool API is in pve-manager as it needs access to storage guest and RRD stats,
# so we only add the pool commands if the API module is available (required for boots-trapping)
my $have_pool_api;
eval {
require PVE::API2::Pool;
PVE::API2::Pool->import();
$have_pool_api = 1;
};
if ($have_pool_api) {
$cmddef->{pool} = {
add => [ 'PVE::API2::Pool', 'create_pool', ['poolid'] ],
modify => [ 'PVE::API2::Pool', 'update_pool', ['poolid'] ],
delete => [ 'PVE::API2::Pool', 'delete_pool', ['poolid'] ],
list => [ 'PVE::API2::Pool', 'index', [], {}, $print_api_result, $PVE::RESTHandler::standard_output_options],
};
}
1; 1;