[pve-devel] [PATCH qemu-server] fix #2068: allow disabling of package_upgrade for cloud-init

David Limbeck d.limbeck at proxmox.com
Tue Jan 29 15:18:57 CET 2019


package_upgrade default is still 'true'. adds a new generic option 'cioptions'
that takes a list of property strings and is easy to extend. for now only
'package_upgrade=<true/false>' is supported. registers a new format
'pve-qm-cioptions' for parsing in different files.

tested with ubuntu 18.10.

Signed-off-by: David Limbeck <d.limbeck at proxmox.com>
---
 PVE/API2/Qemu.pm            |  1 +
 PVE/QemuServer.pm           | 18 ++++++++++++++++++
 PVE/QemuServer/Cloudinit.pm |  4 +++-
 3 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm
index 148ea1a..7fee88e 100644
--- a/PVE/API2/Qemu.pm
+++ b/PVE/API2/Qemu.pm
@@ -295,6 +295,7 @@ my $cloudinitoptions = {
     cipassword => 1,
     citype => 1,
     ciuser => 1,
+    cioptions => 1,
     nameserver => 1,
     searchdomain => 1,
     sshkeys => 1,
diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index bc3bb1d..c5e2309 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -616,6 +616,18 @@ EODESCR
     },
 };
 
+my $cioptions_fmt = {
+    package_upgrade => {
+	type => 'string',
+	optional => 1,
+	description => 'cloud-init: Enable/Disable package upgrade on boot.',
+	default => 'true',
+	enum => [qw(true false)]
+    }
+};
+
+PVE::JSONSchema::register_format('pve-qm-cioptions', $cioptions_fmt);
+
 my $confdesc_cloudinit = {
     citype => {
 	optional => 1,
@@ -633,6 +645,12 @@ my $confdesc_cloudinit = {
 	type => 'string',
 	description => 'cloud-init: Password to assign the user. Using this is generally not recommended. Use ssh keys instead. Also note that older cloud-init versions do not support hashed passwords.',
     },
+    cioptions => {
+	optional => 1,
+	type => 'string',
+	format => 'pve-qm-cioptions',
+	description => 'cloud-init: specify other options that are supported as a list of key=value pairs (e.g. package_upgrade=false,...).'
+    },
     searchdomain => {
 	optional => 1,
 	type => 'string',
diff --git a/PVE/QemuServer/Cloudinit.pm b/PVE/QemuServer/Cloudinit.pm
index 5be820c..5f777a1 100644
--- a/PVE/QemuServer/Cloudinit.pm
+++ b/PVE/QemuServer/Cloudinit.pm
@@ -132,7 +132,9 @@ sub cloudinit_userdata {
 	$content .= "  - default\n";
     }
 
-    $content .= "package_upgrade: true\n";
+    my $cioptions = $conf->{cioptions} ? PVE::JSONSchema::parse_property_string('pve-qm-cioptions', $conf->{cioptions}) : {};
+    my $package_upgrade = $cioptions->{package_upgrade} // 'true'; # default
+    $content .= "package_upgrade: $package_upgrade\n";
 
     return $content;
 }
-- 
2.11.0





More information about the pve-devel mailing list