api: add Machine module to query machine types

The file is provided by pve-qemu-kvm.

Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
This commit is contained in:
Stefan Reiter 2021-03-04 13:52:05 +01:00 committed by Thomas Lamprecht
parent 949112c350
commit 304e51d369
2 changed files with 50 additions and 1 deletions

49
PVE/API2/Qemu/Machine.pm Normal file
View File

@ -0,0 +1,49 @@
package PVE::API2::Qemu::Machine;
use strict;
use warnings;
use PVE::RESTHandler;
use PVE::JSONSchema qw(get_standard_option);
use PVE::Tools qw(file_get_contents);
use base qw(PVE::RESTHandler);
__PACKAGE__->register_method({
name => 'types',
path => '',
method => 'GET',
proxyto => 'node',
description => "Get available QEMU/KVM machine types.",
permissions => {
user => 'all',
},
parameters => {
additionalProperties => 0,
properties => {
node => get_standard_option('pve-node'),
},
},
returns => {
type => 'array',
items => {
type => 'object',
properties => {
name => {
type => 'string',
description => "Name of machine type.",
},
},
},
},
code => sub {
my $content = eval {
file_get_contents("/usr/share/kvm/machine-versions-x86_64");
};
die "could not get supported machine versions (try updating 'pve-qemu-kvm') - $@" if $@;
my @data = split(m/\n/, $content);
@data = map { { name => $_ } } @data;
return \@data;
}});
1;

View File

@ -1,4 +1,4 @@
SOURCES=Agent.pm CPU.pm SOURCES=Agent.pm CPU.pm Machine.pm
.PHONY: install .PHONY: install
install: install: