From: Leo Nunner <l.nun...@proxmox.com>

Introduce a 'pct cloudinit dump <vmid> <section>' command to dump the
generated cloudinit configuration for a section.

Signed-off-by: Leo Nunner <l.nun...@proxmox.com>
---
 src/PVE/API2/LXC.pm      | 33 +++++++++++++++++++++++++++++++++
 src/PVE/CLI/pct.pm       |  4 ++++
 src/PVE/LXC/Cloudinit.pm | 11 +++++++++++
 3 files changed, 48 insertions(+)

diff --git a/src/PVE/API2/LXC.pm b/src/PVE/API2/LXC.pm
index d6e647d..e883c43 100644
--- a/src/PVE/API2/LXC.pm
+++ b/src/PVE/API2/LXC.pm
@@ -3041,4 +3041,37 @@ __PACKAGE__->register_method({
 
        return { socket => $socket };
     }});
+
+__PACKAGE__->register_method({
+    name => 'cloudinit_generated_config_dump',
+    path => '{vmid}/cloudinit/dump',
+    method => 'GET',
+    proxyto => 'node',
+    description => "Get automatically generated cloudinit config.",
+    permissions => {
+       check => ['perm', '/vms/{vmid}', [ 'VM.Audit' ]],
+    },
+    parameters => {
+       additionalProperties => 0,
+       properties => {
+           node => get_standard_option('pve-node'),
+           vmid => get_standard_option('pve-vmid', { completion => 
\&PVE::LXC::complete_ctid }),
+           type => {
+               description => 'Config type.',
+               type => 'string',
+               enum => ['user', 'meta'],
+           },
+       },
+    },
+    returns => {
+       type => 'string',
+    },
+    code => sub {
+       my ($param) = @_;
+
+       my $conf = PVE::LXC::Config->load_config($param->{vmid});
+
+       return PVE::LXC::Cloudinit::dump_cloudinit_config($conf, 
$param->{type});
+    }});
+
 1;
diff --git a/src/PVE/CLI/pct.pm b/src/PVE/CLI/pct.pm
index b0a1ec2..60c2ccd 100755
--- a/src/PVE/CLI/pct.pm
+++ b/src/PVE/CLI/pct.pm
@@ -1046,6 +1046,10 @@ our $cmddef = {
     rescan  => [ __PACKAGE__, 'rescan', []],
     cpusets => [ __PACKAGE__, 'cpusets', []],
     fstrim => [ __PACKAGE__, 'fstrim', ['vmid']],
+
+    cloudinit => {
+       dump => [ "PVE::API2::LXC", 'cloudinit_generated_config_dump', ['vmid', 
'type'], { node => $nodename }, sub { print "$_[0]\n"; }],
+    },
 };
 
 1;
diff --git a/src/PVE/LXC/Cloudinit.pm b/src/PVE/LXC/Cloudinit.pm
index 3e8617b..b6fec2c 100644
--- a/src/PVE/LXC/Cloudinit.pm
+++ b/src/PVE/LXC/Cloudinit.pm
@@ -111,4 +111,15 @@ sub create_cloudinit_files {
     });
 }
 
+sub dump_cloudinit_config {
+    my ($conf, $type) = @_;
+
+    if ($type eq 'user') {
+       return cloudinit_userdata($conf);
+    } else { # metadata config
+       my $user = cloudinit_userdata($conf);
+       return gen_cloudinit_metadata($user);
+    }
+}
+
 1;
-- 
2.39.5


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to