api: update: pass correct config when creating disks

While the new options should be written to the pending config, the
decisions (currently only one) in create_disks needs to be made for
the current config.

Seems to fix EFI disk creation, but actually, it's only
future-proofing, because, currently, the same OVMF_VARS file is
used independently of $smm.

The correct config is also needed to determine the correct size for
the EFI disk for the upcoming import-from feature.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
This commit is contained in:
Fabian Ebner 2022-03-09 11:09:05 +01:00 committed by Fabian Grünbichler
parent fe19840a56
commit 367e6bf4b7

View File

@ -237,12 +237,7 @@ my $create_disks = sub {
die $err;
}
# modify vm config if everything went well
foreach my $ds (keys %$res) {
$conf->{$ds} = $res->{$ds};
}
return $vollist;
return ($vollist, $res);
};
my $check_cpu_model_access = sub {
@ -712,7 +707,18 @@ __PACKAGE__->register_method({
my $vollist = [];
eval {
$vollist = &$create_disks($rpcenv, $authuser, $conf, $arch, $storecfg, $vmid, $pool, $param, $storage);
($vollist, my $created_opts) = $create_disks->(
$rpcenv,
$authuser,
$conf,
$arch,
$storecfg,
$vmid,
$pool,
$param,
$storage,
);
$conf->{$_} = $created_opts->{$_} for keys $created_opts->%*;
if (!$conf->{boot}) {
my $devs = PVE::QemuServer::get_default_bootdevices($conf);
@ -1364,7 +1370,17 @@ my $update_vm_api = sub {
PVE::QemuServer::vmconfig_register_unused_drive($storecfg, $vmid, $conf, PVE::QemuServer::parse_drive($opt, $conf->{pending}->{$opt}))
if defined($conf->{pending}->{$opt});
&$create_disks($rpcenv, $authuser, $conf->{pending}, $arch, $storecfg, $vmid, undef, {$opt => $param->{$opt}});
my (undef, $created_opts) = $create_disks->(
$rpcenv,
$authuser,
$conf,
$arch,
$storecfg,
$vmid,
undef,
{$opt => $param->{$opt}},
);
$conf->{pending}->{$_} = $created_opts->{$_} for keys $created_opts->%*;
# default legacy boot order implies all cdroms anyway
if (@bootorder) {