public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH v2 container qemu-server] feature #3937: config: store user in meta property
@ 2023-03-01 13:27 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
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Leo Nunner @ 2023-03-01 13:27 UTC (permalink / raw)
  To: pve-devel

Changes from v1:
    - rename property from "cuser" to "creation-user"
    - introduce the meta property for containers too

container:

Leo Nunner (2):
  cleanup: json config: factor out ignored properties into hash
  feature #3937: config: introduce meta property

 src/PVE/API2/LXC.pm   |  2 ++
 src/PVE/LXC/Config.pm | 49 ++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 50 insertions(+), 1 deletion(-)

qemu-server:

Leo Nunner (1):
  feature #3937: config: store user in meta property

 PVE/QemuServer.pm | 8 ++++++++
 1 file changed, 8 insertions(+)

-- 
2.30.2





^ permalink raw reply	[flat|nested] 4+ messages in thread

* [pve-devel] [PATCH v2 container 1/2] cleanup: json config: factor out ignored properties into hash
  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 ` 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 ` [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

Signed-off-by: Leo Nunner <l.nunner@proxmox.com>
---
 src/PVE/LXC/Config.pm | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/PVE/LXC/Config.pm b/src/PVE/LXC/Config.pm
index af25a96..aca72ae 100644
--- a/src/PVE/LXC/Config.pm
+++ b/src/PVE/LXC/Config.pm
@@ -1182,8 +1182,13 @@ sub check_type {
 sub json_config_properties {
     my ($class, $prop) = @_;
 
+    my $skip_json_config_opts = {
+	parent => 1,
+	snaptime => 1,
+    };
+
     foreach my $opt (keys %$confdesc) {
-	next if $opt eq 'parent' || $opt eq 'snaptime';
+	next if $skip_json_config_opts->{$opt};
 	next if $prop->{$opt};
 	$prop->{$opt} = $confdesc->{$opt};
     }
-- 
2.30.2





^ permalink raw reply	[flat|nested] 4+ messages in thread

* [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

end of thread, other threads:[~2023-03-01 13:28 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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 ` [pve-devel] [PATCH v2 qemu-server] feature #3937: config: store user in " Leo Nunner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal