* [pve-devel] [PATCH v2 container 2/2] feature #3937: config: introduce meta property
2023-03-01 13:27 [pve-devel] [PATCH v2 container qemu-server] feature #3937: config: store user in meta property Leo Nunner
2023-03-01 13:27 ` [pve-devel] [PATCH v2 container 1/2] cleanup: json config: factor out ignored properties into hash Leo Nunner
@ 2023-03-01 13:27 ` Leo Nunner
2023-03-01 13:27 ` [pve-devel] [PATCH v2 qemu-server] feature #3937: config: store user in " Leo Nunner
2 siblings, 0 replies; 4+ messages in thread
From: Leo Nunner @ 2023-03-01 13:27 UTC (permalink / raw)
To: pve-devel
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@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@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
^ permalink raw reply [flat|nested] 4+ messages in thread
* [pve-devel] [PATCH v2 qemu-server] feature #3937: config: store user in meta property
2023-03-01 13:27 [pve-devel] [PATCH v2 container qemu-server] feature #3937: config: store user in meta property Leo Nunner
2023-03-01 13:27 ` [pve-devel] [PATCH v2 container 1/2] cleanup: json config: factor out ignored properties into hash Leo Nunner
2023-03-01 13:27 ` [pve-devel] [PATCH v2 container 2/2] feature #3937: config: introduce meta property Leo Nunner
@ 2023-03-01 13:27 ` Leo Nunner
2 siblings, 0 replies; 4+ messages in thread
From: Leo Nunner @ 2023-03-01 13:27 UTC (permalink / raw)
To: pve-devel
Adds a field to the "meta" config property which stores the user who
created the VM.
Signed-off-by: Leo Nunner <l.nunner@proxmox.com>
---
PVE/QemuServer.pm | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index 40be44d..0a7a6b0 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -287,6 +287,11 @@ my $meta_info_fmt = {
pattern => '\d+(\.\d+)+',
optional => 1,
},
+ 'creation-user' => {
+ type => 'string',
+ description => "The user who created the VM.",
+ optional => 1,
+ },
};
my $confdesc = {
@@ -2205,10 +2210,13 @@ sub parse_meta_info {
sub new_meta_info_string {
my () = @_; # for now do not allow to override any value
+ my $rpcenv = PVE::RPCEnvironment->get();
+
return PVE::JSONSchema::print_property_string(
{
'creation-qemu' => kvm_user_version(),
ctime => "". int(time()),
+ 'creation-user' => $rpcenv->get_user(),
},
$meta_info_fmt
);
--
2.30.2
^ permalink raw reply [flat|nested] 4+ messages in thread