[pve-devel] [PATCH v5 11/19] vmconfig_cleanup_pending: new method to clenup setting in [PENDING]
Dietmar Maurer
dietmar at proxmox.com
Tue Nov 25 10:19:31 CET 2014
Signed-off-by: Dietmar Maurer <dietmar at proxmox.com>
---
PVE/API2/Qemu.pm | 8 +-------
PVE/QemuServer.pm | 32 ++++++++++++++++++++++++++++++++
2 files changed, 33 insertions(+), 7 deletions(-)
diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm
index a8841c2..8c7c076 100644
--- a/PVE/API2/Qemu.pm
+++ b/PVE/API2/Qemu.pm
@@ -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}});
diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index 7219353..2644117 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -1442,6 +1442,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+',
--
1.7.10.4
More information about the pve-devel
mailing list