5
0
mirror of git://git.proxmox.com/git/qemu-server.git synced 2025-01-10 01:18:01 +03:00

vmconfig_cleanup_pending: new method to clenup setting in [PENDING]

Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
This commit is contained in:
Dietmar Maurer 2014-11-19 09:20:09 +01:00
parent 3d7389fe15
commit c750e90abd
2 changed files with 33 additions and 7 deletions

View File

@ -1006,14 +1006,8 @@ my $update_vm_api = sub {
}
# remove pending changes when nothing changed
my $changes;
$conf = PVE::QemuServer::load_config($vmid); # update/reload
foreach my $opt (keys %{$conf->{pending}}) { # add/change
if (defined($conf->{$opt}) && ($conf->{pending}->{$opt} eq $conf->{$opt})) {
$changes = 1;
delete $conf->{pending}->{$opt};
}
}
my $changes = PVE::QemuServer::vmconfig_cleanup_pending($conf);
PVE::QemuServer::update_config_nolock($vmid, $conf, 1) if $changes;
return if !scalar(keys %{$conf->{pending}});

View File

@ -1486,6 +1486,38 @@ sub vmconfig_register_unused_drive {
}
}
sub vmconfig_cleanup_pending {
my ($conf) = @_;
# remove pending changes when nothing changed
my $changes;
foreach my $opt (keys %{$conf->{pending}}) {
if (defined($conf->{$opt}) && ($conf->{pending}->{$opt} eq $conf->{$opt})) {
$changes = 1;
delete $conf->{pending}->{$opt};
}
}
# remove delete if option is not set
my $pending_delete_hash = {};
foreach my $opt (PVE::Tools::split_list($conf->{pending}->{delete})) {
if (defined($conf->{$opt})) {
$pending_delete_hash->{$opt} = 1;
} else {
$changes = 1;
}
}
my @keylist = keys %$pending_delete_hash;
if (scalar(@keylist)) {
$conf->{pending}->{delete} = join(',', @keylist);
} else {
delete $conf->{pending}->{delete};
}
return $changes;
}
my $valid_smbios1_options = {
manufacturer => '\S+',
product => '\S+',