we use the profile cfg as the 'param' hash, but overwrite the values with the ones from the api call, so one can overwrite options from the profile easily
we also log the used profile Signed-off-by: Dominik Csapak <d.csa...@proxmox.com> --- changes from v1: * use helper from Plugin * log profile when used * use /mapping/guest-profile as acl path now src/PVE/API2/LXC.pm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/PVE/API2/LXC.pm b/src/PVE/API2/LXC.pm index 28d14de..2b17f8f 100644 --- a/src/PVE/API2/LXC.pm +++ b/src/PVE/API2/LXC.pm @@ -27,6 +27,10 @@ use PVE::API2::LXC::Config; use PVE::API2::LXC::Status; use PVE::API2::LXC::Snapshot; use PVE::JSONSchema qw(get_standard_option); + +use PVE::Profiles::Plugin; +use PVE::Profiles::CT; + use base qw(PVE::RESTHandler); BEGIN { @@ -196,6 +200,11 @@ __PACKAGE__->register_method({ default => 0, description => "Start the CT after its creation finished successfully.", }, + profile => { + optional => 1, + type => 'string', + description => "The profile to use as base config.", + }, }), }, returns => { @@ -209,6 +218,19 @@ __PACKAGE__->register_method({ my $rpcenv = PVE::RPCEnvironment::get(); my $authuser = $rpcenv->get_user(); + my $profile = extract_param($param, 'profile'); + if (defined($profile)) { + $rpcenv->check_full($authuser, "/mapping/guest-profile/${profile}", ['Mapping.Use']); + my $profile_cfg = eval { PVE::Profiles::Plugin::get_guest_ready_config($profile, 'ct') }; + raise_param_exc({ profile => "$@" }) if $@; + + for my $opt (keys $param->%*) { + $profile_cfg->{$opt} = $param->{$opt}; + } + + $param = $profile_cfg; + } + my $node = extract_param($param, 'node'); my $vmid = extract_param($param, 'vmid'); my $ignore_unpack_errors = extract_param($param, 'ignore-unpack-errors'); @@ -381,6 +403,7 @@ __PACKAGE__->register_method({ my $vollist = []; eval { my $orig_mp_param; # only used if $restore + print "using profile '$profile'\n" if $profile; if ($restore) { die "can't overwrite running container\n" if PVE::LXC::check_running($vmid); if ($archive ne '-') { -- 2.30.2 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel