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 <f.eb...@proxmox.com>
---
 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 3af21325..976d1bd6 100644
--- a/PVE/API2/Qemu.pm
+++ b/PVE/API2/Qemu.pm
@@ -822,22 +822,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;
 
@@ -858,6 +843,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
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to