all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [PATCH manager/qemu-server 0/3] custom cpu models: tighten reported-model handling
@ 2026-05-19 14:06 Arthur Bied-Charreton
  2026-05-19 14:06 ` [PATCH pve-manager 1/3] custom cpu models: make 'reported-model' required in POST Arthur Bied-Charreton
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: Arthur Bied-Charreton @ 2026-05-19 14:06 UTC (permalink / raw)
  To: pve-devel

The default reported-model for custom CPU models is kvm64, a legacy
model with a limited set of features.

This series tightens the handling around reported-model:

1. Require reported-model on creation via the API, as the UI already
   does
2. Prevent deletion of reported-model via PUT
3. Resolve and write out the default explicitly on config writes

This will be useful in case we ever want to make reported-model
required in a future major release.


pve-manager:

Arthur Bied-Charreton (2):
  custom cpu models: make 'reported-model' required in POST
  custom cpu models: do not allow deleting 'reported-model'

 PVE/API2/Cluster/Qemu/CustomCPUModels.pm |  5 +++++
 test/CustomCPUModels_test.pl             | 19 +++++++++++++------
 2 files changed, 18 insertions(+), 6 deletions(-)


qemu-server:

Arthur Bied-Charreton (1):
  cpu config: resolve default reported-model on write

 src/PVE/QemuServer/CPUConfig.pm | 2 ++
 1 file changed, 2 insertions(+)


Summary over all repositories:
  3 files changed, 20 insertions(+), 6 deletions(-)

-- 
Generated by murpp 0.11.0



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

* [PATCH pve-manager 1/3] custom cpu models: make 'reported-model' required in POST
  2026-05-19 14:06 [PATCH manager/qemu-server 0/3] custom cpu models: tighten reported-model handling Arthur Bied-Charreton
@ 2026-05-19 14:06 ` Arthur Bied-Charreton
  2026-05-19 14:06 ` [PATCH pve-manager 2/3] custom cpu models: do not allow deleting 'reported-model' Arthur Bied-Charreton
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Arthur Bied-Charreton @ 2026-05-19 14:06 UTC (permalink / raw)
  To: pve-devel

The default reported-model is kvm64, which is a legacy CPU model with a
very limited feature set that one should not really be using in
practice.

The UI already requires the reported-model, so this just brings the API
in line.

Signed-off-by: Arthur Bied-Charreton <a.bied-charreton@proxmox.com>
Suggested-by: Fiona Ebner <f.ebner@proxmox.com>
---
 PVE/API2/Cluster/Qemu/CustomCPUModels.pm |  4 ++++
 test/CustomCPUModels_test.pl             | 19 +++++++++++++------
 2 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/PVE/API2/Cluster/Qemu/CustomCPUModels.pm b/PVE/API2/Cluster/Qemu/CustomCPUModels.pm
index 8628f20c..4ba04180 100644
--- a/PVE/API2/Cluster/Qemu/CustomCPUModels.pm
+++ b/PVE/API2/Cluster/Qemu/CustomCPUModels.pm
@@ -19,6 +19,9 @@ my $cputype_param = {
     description => "Name for the custom CPU model. The 'custom-' prefix is optional.",
 };
 
+my $reported_model_param =
+    { get_standard_option('pve-qm-custom-cpu-model')->{'reported-model'}->%*, optional => 0 };
+
 # privileges that grant any kind of visibility on a custom CPU model
 my $can_see_mapping_privs = ['Mapping.Modify', 'Mapping.Use', 'Mapping.Audit'];
 
@@ -77,6 +80,7 @@ __PACKAGE__->register_method({
         additionalProperties => 0,
         properties => PVE::QemuServer::CPUConfig::add_cpu_json_properties({
             cputype => $cputype_param,
+            'reported-model' => $reported_model_param,
         }),
     },
     returns => { type => 'null' },
diff --git a/test/CustomCPUModels_test.pl b/test/CustomCPUModels_test.pl
index b416b684..5511dbb7 100755
--- a/test/CustomCPUModels_test.pl
+++ b/test/CustomCPUModels_test.pl
@@ -49,27 +49,34 @@ like(
     'POST without cputype rejected by schema',
 );
 
+eval { validate_params('POST', '', { cputype => 'name' }) };
+like(
+    $@,
+    qr/reported-model.*(?:missing|required|not optional)/i,
+    'POST without reported-model rejected by schema',
+);
+
 # --- create: cputype must be a valid pve-configid (A1) ---
-eval { validate_params('POST', '', { cputype => '4foo' }) };
+eval { validate_params('POST', '', { cputype => '4foo', 'reported-model' => 'qemu64' }) };
 like(
     $@, qr/format/i, 'POST with cputype starting with digit rejected by schema',
 );
 
-eval { validate_params('POST', '', { cputype => 'bad name' }) };
+eval { validate_params('POST', '', { cputype => 'bad name', 'reported-model' => 'qemu64' }) };
 like(
     $@, qr/format/i, 'POST with whitespace in cputype rejected by schema',
 );
 
-eval { validate_params('POST', '', { cputype => 'a' x 50 }) };
+eval { validate_params('POST', '', { cputype => 'a' x 50, 'reported-model' => 'qemu64' }) };
 like(
     $@, qr/40 characters|maxLength|too long/i, 'POST with overly long cputype rejected by schema',
 );
 
 # Valid cputype with optional 'custom-' prefix passes the schema.
-eval { validate_params('POST', '', { cputype => 'custom-foo' }) };
+eval { validate_params('POST', '', { cputype => 'custom-foo', 'reported-model' => 'qemu64' }) };
 is($@, '', 'POST with valid prefixed cputype accepted by schema');
 
-eval { validate_params('POST', '', { cputype => 'my_model' }) };
+eval { validate_params('POST', '', { cputype => 'my_model', 'reported-model' => 'qemu64' }) };
 is($@, '', 'POST with valid unprefixed cputype accepted by schema');
 
 # --- create: empty name after stripping 'custom-' is rejected by runtime check (A1) ---
@@ -81,7 +88,7 @@ is($@, '', 'POST with valid unprefixed cputype accepted by schema');
     $config_mock->mock(
         lock_custom_cpu_model_config => sub { fail('lock reached for empty stripped name'); },
     );
-    eval { invoke_method('POST', '', { cputype => 'custom-' }) };
+    eval { invoke_method('POST', '', { cputype => 'custom-', 'reported-model' => 'qemu64' }) };
     like($@, qr/configid|invalid/i, 'POST with cputype "custom-" rejected after stripping');
 }
 
-- 
2.47.3




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

* [PATCH pve-manager 2/3] custom cpu models: do not allow deleting 'reported-model'
  2026-05-19 14:06 [PATCH manager/qemu-server 0/3] custom cpu models: tighten reported-model handling Arthur Bied-Charreton
  2026-05-19 14:06 ` [PATCH pve-manager 1/3] custom cpu models: make 'reported-model' required in POST Arthur Bied-Charreton
@ 2026-05-19 14:06 ` Arthur Bied-Charreton
  2026-05-19 14:06 ` [PATCH qemu-server 3/3] cpu config: resolve default reported-model on write Arthur Bied-Charreton
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Arthur Bied-Charreton @ 2026-05-19 14:06 UTC (permalink / raw)
  To: pve-devel

Now that reported-model is required on creation, prevent it from being
removed via the delete parameter on PUT.

Signed-off-by: Arthur Bied-Charreton <a.bied-charreton@proxmox.com>
Suggested-by: Fiona Ebner <f.ebner@proxmox.com>
---
 PVE/API2/Cluster/Qemu/CustomCPUModels.pm | 1 +
 1 file changed, 1 insertion(+)

diff --git a/PVE/API2/Cluster/Qemu/CustomCPUModels.pm b/PVE/API2/Cluster/Qemu/CustomCPUModels.pm
index 4ba04180..fdeb2ce3 100644
--- a/PVE/API2/Cluster/Qemu/CustomCPUModels.pm
+++ b/PVE/API2/Cluster/Qemu/CustomCPUModels.pm
@@ -173,6 +173,7 @@ __PACKAGE__->register_method({
         if ($delete) {
             $delete = [PVE::Tools::split_list($delete)];
             die "cannot delete 'cputype'\n" if grep { $_ eq 'cputype' } @$delete;
+            die "cannot delete 'reported-model'\n" if grep { $_ eq 'reported-model' } @$delete;
         }
 
         (my $name = $param->{cputype}) =~ s/^custom-//;
-- 
2.47.3




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

* [PATCH qemu-server 3/3] cpu config: resolve default reported-model on write
  2026-05-19 14:06 [PATCH manager/qemu-server 0/3] custom cpu models: tighten reported-model handling Arthur Bied-Charreton
  2026-05-19 14:06 ` [PATCH pve-manager 1/3] custom cpu models: make 'reported-model' required in POST Arthur Bied-Charreton
  2026-05-19 14:06 ` [PATCH pve-manager 2/3] custom cpu models: do not allow deleting 'reported-model' Arthur Bied-Charreton
@ 2026-05-19 14:06 ` Arthur Bied-Charreton
  2026-05-19 14:50 ` [PATCH manager/qemu-server 0/3] custom cpu models: tighten reported-model handling Fiona Ebner
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Arthur Bied-Charreton @ 2026-05-19 14:06 UTC (permalink / raw)
  To: pve-devel

When writing the custom CPU model config, fill in the default
reported-model (kvm64) explicitly if not defined.

This makes the default visible in the config file and prepares for
potentially making the field required in a future major release.

Signed-off-by: Arthur Bied-Charreton <a.bied-charreton@proxmox.com>
Suggested-by: Fiona Ebner <f.ebner@proxmox.com>
---
 src/PVE/QemuServer/CPUConfig.pm | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/PVE/QemuServer/CPUConfig.pm b/src/PVE/QemuServer/CPUConfig.pm
index c8b54ec2..9be145ef 100644
--- a/src/PVE/QemuServer/CPUConfig.pm
+++ b/src/PVE/QemuServer/CPUConfig.pm
@@ -554,6 +554,8 @@ sub write_config($class, $filename, $cfg) {
                 . " $model_conf->{cputype}) not equal to \$cfg->ids entry ($model)\n";
         }
 
+        $model_conf->{'reported-model'} //= $cpu_fmt->{'reported-model'}->{default};
+
         # saved in section header
         delete $model_conf->{cputype};
     }
-- 
2.47.3




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

* Re: [PATCH manager/qemu-server 0/3] custom cpu models: tighten reported-model handling
  2026-05-19 14:06 [PATCH manager/qemu-server 0/3] custom cpu models: tighten reported-model handling Arthur Bied-Charreton
                   ` (2 preceding siblings ...)
  2026-05-19 14:06 ` [PATCH qemu-server 3/3] cpu config: resolve default reported-model on write Arthur Bied-Charreton
@ 2026-05-19 14:50 ` Fiona Ebner
  2026-05-19 19:17 ` applied: " Thomas Lamprecht
  2026-05-19 20:17 ` Thomas Lamprecht
  5 siblings, 0 replies; 7+ messages in thread
From: Fiona Ebner @ 2026-05-19 14:50 UTC (permalink / raw)
  To: Arthur Bied-Charreton, pve-devel

Am 19.05.26 um 4:06 PM schrieb Arthur Bied-Charreton:
> The default reported-model for custom CPU models is kvm64, a legacy
> model with a limited set of features.
> 
> This series tightens the handling around reported-model:
> 
> 1. Require reported-model on creation via the API, as the UI already
>    does
> 2. Prevent deletion of reported-model via PUT
> 3. Resolve and write out the default explicitly on config writes
> 
> This will be useful in case we ever want to make reported-model
> required in a future major release.

Nit: the Suggested-by trailer should come before the Signed-off-by to
keep the chronological order.

Regarding patch 1: it is a breaking change, but the feature has only
been on no-subscription for a few days and I suspect most people would
use the UI or specify an explicit model anyways.

Reviewed-by: Fiona Ebner <f.ebner@proxmox.com>
Tested-by: Fiona Ebner <f.ebner@proxmox.com>




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

* applied: [PATCH manager/qemu-server 0/3] custom cpu models: tighten reported-model handling
  2026-05-19 14:06 [PATCH manager/qemu-server 0/3] custom cpu models: tighten reported-model handling Arthur Bied-Charreton
                   ` (3 preceding siblings ...)
  2026-05-19 14:50 ` [PATCH manager/qemu-server 0/3] custom cpu models: tighten reported-model handling Fiona Ebner
@ 2026-05-19 19:17 ` Thomas Lamprecht
  2026-05-19 20:17 ` Thomas Lamprecht
  5 siblings, 0 replies; 7+ messages in thread
From: Thomas Lamprecht @ 2026-05-19 19:17 UTC (permalink / raw)
  To: pve-devel, Arthur Bied-Charreton

On Tue, 19 May 2026 16:06:20 +0200, Arthur Bied-Charreton wrote:
> The default reported-model for custom CPU models is kvm64, a legacy
> model with a limited set of features.
> 
> This series tightens the handling around reported-model:
> 
> 1. Require reported-model on creation via the API, as the UI already
>    does
> 2. Prevent deletion of reported-model via PUT
> 3. Resolve and write out the default explicitly on config writes
> 
> [...]

Applied, thanks!

[1/2] custom cpu models: make 'reported-model' required in POST
      commit: 013e8d4158310b4d378fa660791d0dbe95da84c0
[2/2] custom cpu models: do not allow deleting 'reported-model'
      commit: df53f47110268ee92011696bc7473bc5c79de373




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

* applied: [PATCH manager/qemu-server 0/3] custom cpu models: tighten reported-model handling
  2026-05-19 14:06 [PATCH manager/qemu-server 0/3] custom cpu models: tighten reported-model handling Arthur Bied-Charreton
                   ` (4 preceding siblings ...)
  2026-05-19 19:17 ` applied: " Thomas Lamprecht
@ 2026-05-19 20:17 ` Thomas Lamprecht
  5 siblings, 0 replies; 7+ messages in thread
From: Thomas Lamprecht @ 2026-05-19 20:17 UTC (permalink / raw)
  To: pve-devel, Arthur Bied-Charreton

On Tue, 19 May 2026 16:06:20 +0200, Arthur Bied-Charreton wrote:
> The default reported-model for custom CPU models is kvm64, a legacy
> model with a limited set of features.
> 
> This series tightens the handling around reported-model:
> 
> 1. Require reported-model on creation via the API, as the UI already
>    does
> 2. Prevent deletion of reported-model via PUT
> 3. Resolve and write out the default explicitly on config writes
> 
> [...]

Applied, thanks!

[1/1] cpu config: resolve default reported-model on write
      commit: b1ce2b4e17fe5d2c315fe8cfa0469abc01eccf46




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

end of thread, other threads:[~2026-05-19 20:18 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-19 14:06 [PATCH manager/qemu-server 0/3] custom cpu models: tighten reported-model handling Arthur Bied-Charreton
2026-05-19 14:06 ` [PATCH pve-manager 1/3] custom cpu models: make 'reported-model' required in POST Arthur Bied-Charreton
2026-05-19 14:06 ` [PATCH pve-manager 2/3] custom cpu models: do not allow deleting 'reported-model' Arthur Bied-Charreton
2026-05-19 14:06 ` [PATCH qemu-server 3/3] cpu config: resolve default reported-model on write Arthur Bied-Charreton
2026-05-19 14:50 ` [PATCH manager/qemu-server 0/3] custom cpu models: tighten reported-model handling Fiona Ebner
2026-05-19 19:17 ` applied: " Thomas Lamprecht
2026-05-19 20:17 ` Thomas Lamprecht

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal