In preparation to allow passing along certain parameters together with 'archive'. Moving the parameter checks to after the conflicts-with-'archive' to ensure that the more telling error will trigger first.
All check helpers should handle empty params fine, but check first just to make sure and to avoid all the superfluous function calls. Signed-off-by: Fabian Ebner <[email protected]> --- No changes from v2. PVE/API2/Qemu.pm | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm index 71db264a..61aee0ba 100644 --- a/PVE/API2/Qemu.pm +++ b/PVE/API2/Qemu.pm @@ -818,22 +818,7 @@ __PACKAGE__->register_method({ raise_perm_exc(); } - if (!$archive) { - &$resolve_cdrom_alias($param); - - &$check_storage_access($rpcenv, $authuser, $storecfg, $vmid, $param, $storage); - - &$check_vm_modify_config_perm($rpcenv, $authuser, $vmid, $pool, [ keys %$param]); - - &$check_vm_create_serial_perm($rpcenv, $authuser, $vmid, $pool, $param); - &$check_vm_create_usb_perm($rpcenv, $authuser, $vmid, $pool, $param); - - &$check_cpu_model_access($rpcenv, $authuser, $param); - - $check_drive_param->($param, $storecfg); - - PVE::QemuServer::add_random_macs($param); - } else { + if ($archive) { my $keystr = join(' ', keys %$param); raise_param_exc({ archive => "option conflicts with other options ($keystr)"}) if $keystr; @@ -854,6 +839,23 @@ __PACKAGE__->register_method({ } } + if (scalar(keys $param->%*) > 0) { + &$resolve_cdrom_alias($param); + + &$check_storage_access($rpcenv, $authuser, $storecfg, $vmid, $param, $storage); + + &$check_vm_modify_config_perm($rpcenv, $authuser, $vmid, $pool, [ keys %$param]); + + &$check_vm_create_serial_perm($rpcenv, $authuser, $vmid, $pool, $param); + &$check_vm_create_usb_perm($rpcenv, $authuser, $vmid, $pool, $param); + + &$check_cpu_model_access($rpcenv, $authuser, $param); + + $check_drive_param->($param, $storecfg); + + PVE::QemuServer::add_random_macs($param); + } + my $emsg = $is_restore ? "unable to restore VM $vmid -" : "unable to create VM $vmid -"; eval { PVE::QemuConfig->create_and_lock_config($vmid, $force) }; -- 2.30.2 _______________________________________________ pve-devel mailing list [email protected] https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
