Add the pveX variants (where X > 0) to the list too, so one knows they exits. Also this allows them to be shown and chosen in the UI.
Signed-off-by: Dominik Csapak <d.csa...@proxmox.com> Reviewed-by: Fiona Ebner <f.eb...@proxmox.com> --- changes from v2: * changed outer variable name to 'supported_machine_list' PVE/API2/Qemu/Machine.pm | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/PVE/API2/Qemu/Machine.pm b/PVE/API2/Qemu/Machine.pm index afb535c2..bbd814f0 100644 --- a/PVE/API2/Qemu/Machine.pm +++ b/PVE/API2/Qemu/Machine.pm @@ -6,6 +6,7 @@ use warnings; use JSON; use PVE::JSONSchema qw(get_standard_option); +use PVE::QemuServer::Machine; use PVE::RESTHandler; use PVE::Tools qw(file_get_contents); @@ -49,12 +50,33 @@ __PACKAGE__->register_method({ }, }, code => sub { - my $machines = eval { + my $supported_machine_list = eval { my $raw = file_get_contents('/usr/share/kvm/machine-versions-x86_64.json'); - return from_json($raw, { utf8 => 1 }); + my $machines = from_json($raw, { utf8 => 1 }); + + my $to_add = []; + + for my $machine ($machines->@*) { + my $base_version = $machine->{version}; + my $pvever = PVE::QemuServer::Machine::get_pve_version($base_version); + for (my $i = 1; $i <= $pvever; $i++) { + my $version = $base_version . "+pve$i"; + my $entry = { + id => $machine->{id} . "+pve$i", + type => $machine->{type}, + version => $version, + }; + + push $to_add->@*, $entry; + } + } + + push $machines->@*, $to_add->@*; + + return [sort { $b->{id} cmp $a->{id} } $machines->@*]; }; die "could not load supported machine versions - $@\n" if $@; - return $machines; + return $supported_machine_list; } }); -- 2.39.5 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel