mirror of
https://git.proxmox.com/git/qemu-server
synced 2025-08-07 13:20:08 +00:00
cloudinit: make cloudnit options fastplug
Signed-off-by: Alexandre Derumier <aderumier@odiso.com> Reviewed-by: Fiona Ebner <f.ebner@proxmox.com>
This commit is contained in:
parent
c930f99e57
commit
71d9006b7c
@ -4816,6 +4816,10 @@ my $fast_plug_option = {
|
|||||||
'tags' => 1,
|
'tags' => 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
for my $opt (keys %$confdesc_cloudinit) {
|
||||||
|
$fast_plug_option->{$opt} = 1;
|
||||||
|
};
|
||||||
|
|
||||||
# hotplug changes in [PENDING]
|
# hotplug changes in [PENDING]
|
||||||
# $selection hash can be used to only apply specified options, for
|
# $selection hash can be used to only apply specified options, for
|
||||||
# example: { cores => 1 } (only apply changed 'cores')
|
# example: { cores => 1 } (only apply changed 'cores')
|
||||||
@ -4911,31 +4915,6 @@ sub vmconfig_hotplug_pending {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
my ($apply_pending_cloudinit, $apply_pending_cloudinit_done);
|
|
||||||
$apply_pending_cloudinit = sub {
|
|
||||||
return if $apply_pending_cloudinit_done; # once is enough
|
|
||||||
$apply_pending_cloudinit_done = 1; # once is enough
|
|
||||||
|
|
||||||
my ($key, $value) = @_;
|
|
||||||
|
|
||||||
my @cloudinit_opts = keys %$confdesc_cloudinit;
|
|
||||||
foreach my $opt (keys %{$conf->{pending}}) {
|
|
||||||
next if !grep { $_ eq $opt } @cloudinit_opts;
|
|
||||||
$conf->{$opt} = delete $conf->{pending}->{$opt};
|
|
||||||
}
|
|
||||||
|
|
||||||
my $pending_delete_hash = PVE::QemuConfig->parse_pending_delete($conf->{pending}->{delete});
|
|
||||||
foreach my $opt (sort keys %$pending_delete_hash) {
|
|
||||||
next if !grep { $_ eq $opt } @cloudinit_opts;
|
|
||||||
PVE::QemuConfig->remove_from_pending_delete($conf, $opt);
|
|
||||||
delete $conf->{$opt};
|
|
||||||
}
|
|
||||||
|
|
||||||
my $new_conf = { %$conf };
|
|
||||||
$new_conf->{$key} = $value;
|
|
||||||
PVE::QemuServer::Cloudinit::generate_cloudinitconfig($new_conf, $vmid);
|
|
||||||
};
|
|
||||||
|
|
||||||
foreach my $opt (keys %{$conf->{pending}}) {
|
foreach my $opt (keys %{$conf->{pending}}) {
|
||||||
next if $selection && !$selection->{$opt};
|
next if $selection && !$selection->{$opt};
|
||||||
my $value = $conf->{pending}->{$opt};
|
my $value = $conf->{pending}->{$opt};
|
||||||
@ -4982,7 +4961,7 @@ sub vmconfig_hotplug_pending {
|
|||||||
# some changes can be done without hotplug
|
# some changes can be done without hotplug
|
||||||
my $drive = parse_drive($opt, $value);
|
my $drive = parse_drive($opt, $value);
|
||||||
if (drive_is_cloudinit($drive)) {
|
if (drive_is_cloudinit($drive)) {
|
||||||
&$apply_pending_cloudinit($opt, $value);
|
PVE::QemuServer::Cloudinit::generate_cloudinitconfig($conf, $vmid);
|
||||||
}
|
}
|
||||||
vmconfig_update_disk($storecfg, $conf, $hotplug_features->{disk},
|
vmconfig_update_disk($storecfg, $conf, $hotplug_features->{disk},
|
||||||
$vmid, $opt, $value, $arch, $machine_type);
|
$vmid, $opt, $value, $arch, $machine_type);
|
||||||
|
Loading…
Reference in New Issue
Block a user