This new property returns the configured or default display for a VM.

Instead of a flat property, we use a nested 'type' object that contains
the actual information. This way we can add other properties that belong
to a VM's display in the future without much hassle, to have them all in
one place.
Candidates to be moved into the display property are for example the
spice and clipboard property.

Signed-off-by: Aaron Lauterer <a.laute...@proxmox.com>
---
Getting all the parameters for get_vga_properties added a bit of
boilerplate. Should be get another external call site to it we could
think about moving the boilerplate into get_vga_properties to handle
missing parameters. But for now I would rather not change the
get_vga_properties itself.

changes since v5:
* use QemuServer::get_vga_properties to determine the default
* properties.

 PVE/API2/Qemu.pm | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm
index 626cce4..cfe483c 100644
--- a/PVE/API2/Qemu.pm
+++ b/PVE/API2/Qemu.pm
@@ -3074,6 +3074,16 @@ __PACKAGE__->register_method({
                enum => ['vnc'],
                optional => 1,
            },
+           display => {
+               description => "Display settings",
+               type => 'object',
+               properties => {
+                   type => {
+                       description => "Display type configured",
+                       type => 'string',
+                   },
+               },
+           },
        },
     },
     code => sub {
@@ -3087,8 +3097,19 @@ __PACKAGE__->register_method({
 
        $status->{ha} = 
PVE::HA::Config::get_service_status("vm:$param->{vmid}");
 
+       my $arch = PVE::QemuServer::Helpers::get_vm_arch($conf);
+       my $kvm_binary = PVE::QemuServer::Helpers::get_command_for_arch($arch);
+       my $kvmver = PVE::QemuServer::Helpers::kvm_user_version($kvm_binary);
+       my $machine_type = PVE::QemuServer::Machine::get_vm_machine($conf, 
undef, $arch);
+       my $machine_version = PVE::QemuServer::extract_version($machine_type, 
$kvmver);
+       my $winversion = 
PVE::QemuServer::Helpers::windows_version($conf->{ostype});
+       my ($default_display, undef) = 
PVE::QemuServer::get_vga_properties($conf, $arch, $machine_version, 
$winversion);
+
+       $status->{display}->{type} = $default_display->{type};
        if ($conf->{vga}) {
            my $vga = PVE::QemuServer::parse_vga($conf->{vga});
+           $status->{display}->{type} = $vga->{type} if defined($vga->{type});
+
            my $spice = defined($vga->{type}) && $vga->{type} =~ /^virtio/;
            $spice ||= PVE::QemuServer::vga_conf_has_spice($conf->{vga});
            $status->{spice} = 1 if $spice;
-- 
2.39.5



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to