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

Reply via email to