From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 6DCFE955A6 for ; Wed, 1 Mar 2023 14:27:30 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 474DA1A48C for ; Wed, 1 Mar 2023 14:27:30 +0100 (CET) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Wed, 1 Mar 2023 14:27:29 +0100 (CET) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 397E248D5D for ; Wed, 1 Mar 2023 14:27:29 +0100 (CET) From: Leo Nunner To: pve-devel@lists.proxmox.com Date: Wed, 1 Mar 2023 14:27:04 +0100 Message-Id: <20230301132705.151922-3-l.nunner@proxmox.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230301132705.151922-1-l.nunner@proxmox.com> References: <20230301132705.151922-1-l.nunner@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.121 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [lxc.pm, config.pm] Subject: [pve-devel] [PATCH v2 container 2/2] feature #3937: config: introduce meta property X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Mar 2023 13:27:30 -0000 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 --- 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@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