public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Arthur Bied-Charreton <a.bied-charreton@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [PATCH pve-manager 1/3] custom cpu models: make 'reported-model' required in POST
Date: Tue, 19 May 2026 16:06:21 +0200	[thread overview]
Message-ID: <20260519140623.594472-2-a.bied-charreton@proxmox.com> (raw)
In-Reply-To: <20260519140623.594472-1-a.bied-charreton@proxmox.com>

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




  reply	other threads:[~2026-05-19 14:06 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260519140623.594472-2-a.bied-charreton@proxmox.com \
    --to=a.bied-charreton@proxmox.com \
    --cc=pve-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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