[pve-devel] [PATCH v2 container 2/2] feature #3937: config: introduce meta property

Leo Nunner l.nunner at proxmox.com
Wed Mar 1 14:27:04 CET 2023


Introduces a 'meta' property like the one already existing for VMs.
Currently, it holds the creation time (ctime), the LXC version at the
time of creation, and the user who created the container (cuser).

Signed-off-by: Leo Nunner <l.nunner at proxmox.com>
---
 src/PVE/API2/LXC.pm   |  2 ++
 src/PVE/LXC/Config.pm | 42 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 44 insertions(+)

diff --git a/src/PVE/API2/LXC.pm b/src/PVE/API2/LXC.pm
index 50c9eaf..93c23fa 100644
--- a/src/PVE/API2/LXC.pm
+++ b/src/PVE/API2/LXC.pm
@@ -317,6 +317,8 @@ __PACKAGE__->register_method({
 
 	my $conf = {};
 
+	$conf->{meta} = PVE::LXC::Config::new_meta_info_string();
+
 	my $is_root = $authuser eq 'root at pam';
 
 	my $no_disk_param = {};
diff --git a/src/PVE/LXC/Config.pm b/src/PVE/LXC/Config.pm
index aca72ae..544f148 100644
--- a/src/PVE/LXC/Config.pm
+++ b/src/PVE/LXC/Config.pm
@@ -442,6 +442,26 @@ my $features_desc = {
     },
 };
 
+my $meta_info_fmt = {
+    'ctime' => {
+	type => 'integer',
+	description => "The container creation timestamp as UNIX epoch time",
+	minimum => 0,
+	optional => 1,
+    },
+    'creation-lxc' => {
+	type => 'string',
+	description => "The LXC version from the time this VM was created.",
+	pattern => '\d+\.\d+',
+	optional => 1,
+    },
+    'creation-user' => {
+	type => 'string',
+	description => "The user who created the container.",
+	optional => 1,
+    },
+};
+
 my $confdesc = {
     lock => {
 	optional => 1,
@@ -612,6 +632,12 @@ my $confdesc = {
 	description => "Try to be more verbose. For now this only enables debug log-level on start.",
 	default => 0,
     },
+    meta => {
+	type => 'string',
+	format => $meta_info_fmt,
+	description => "Some (read-only) meta-information about this guest.",
+	optional => 1,
+    },
 };
 
 my $valid_lxc_conf_keys = {
@@ -1185,6 +1211,7 @@ sub json_config_properties {
     my $skip_json_config_opts = {
 	parent => 1,
 	snaptime => 1,
+	meta => 1,
     };
 
     foreach my $opt (keys %$confdesc) {
@@ -1737,4 +1764,19 @@ sub get_backup_volumes {
     return $return_volumes;
 }
 
+sub new_meta_info_string {
+    my () = @_;
+
+    my $rpcenv = PVE::RPCEnvironment->get();
+
+    return PVE::JSONSchema::print_property_string(
+	{
+	    'creation-lxc' => join('.', PVE::LXC::get_lxc_version()),
+	    ctime => "". int(time()),
+	    'creation-user' => $rpcenv->get_user(),
+	},
+	$meta_info_fmt
+    );
+}
+
 1;
-- 
2.30.2






More information about the pve-devel mailing list