diff options
author | Manuel Bentele | 2021-10-15 14:09:07 +0200 |
---|---|---|
committer | Manuel Bentele | 2021-10-15 14:09:07 +0200 |
commit | bda67b5aa8d03d4960bd4f9e051a8b8a7e4e7cd4 (patch) | |
tree | 298a07795c0fa42af54b19d8bab399ee4c84b416 /src/main | |
parent | Remove unused variables (diff) | |
download | master-sync-shared-bda67b5aa8d03d4960bd4f9e051a8b8a7e4e7cd4.tar.gz master-sync-shared-bda67b5aa8d03d4960bd4f9e051a8b8a7e4e7cd4.tar.xz master-sync-shared-bda67b5aa8d03d4960bd4f9e051a8b8a7e4e7cd4.zip |
Add graphic model configuration option for QEMU VMs
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemu.java | 58 | ||||
-rw-r--r-- | src/main/java/org/openslx/virtualization/hardware/ConfigurationGroups.java | 1 |
2 files changed, 56 insertions, 3 deletions
diff --git a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemu.java b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemu.java index bae6937..60122fd 100644 --- a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemu.java +++ b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemu.java @@ -407,6 +407,52 @@ public class VirtualizationConfigurationQemu extends VirtualizationConfiguration return isVCpuSet; } + class QemuGfxModel extends VirtOptionValue + { + public QemuGfxModel( Video.Model model, String displayName ) + { + super( model.toString(), displayName ); + } + + @Override + public void apply() + { + final ArrayList<Video> videoDevices = vmConfig.getVideoDevices(); + + if ( videoDevices.isEmpty() ) { + // add new video device with disabled acceleration to VM configuration + final Video videoDevice = vmConfig.addVideoDevice(); + videoDevice.setModel( Video.Model.fromString( this.getId() ) ); + videoDevice.set2DAcceleration( false ); + videoDevice.set3DAcceleration( false ); + } else { + // change graphics model of existing video devices + for ( final Video videoDevice : videoDevices ) { + // remove all old model-related XML attributes + videoDevice.removeXmlElement( "model" ); + // set new model + videoDevice.setModel( Video.Model.fromString( this.getId() ) ); + } + } + } + + @Override + public boolean isActive() + { + final ArrayList<Video> videoDevices = vmConfig.getVideoDevices(); + boolean isActive = true; + + for ( final Video videoDevice : videoDevices ) { + if ( !videoDevice.getModel().toString().equals( this.getId() ) ) { + isActive = false; + break; + } + } + + return isActive; + } + } + class QemuGfxType extends VirtOptionValue { public QemuGfxType( String id, String displayName ) @@ -766,9 +812,15 @@ public class VirtualizationConfigurationQemu extends VirtualizationConfiguration configurableOptions.add( new ConfigurableOptionGroup( ConfigurationGroups.SOUND_CARD_MODEL, list ) ); list = new ArrayList<>(); - // XXX This would greatly benefit from having more meaningful options for qemu instead of on/off - list.add( new QemuGfxType( "false", "langsam" ) ); - list.add( new QemuGfxType( "true", "3D OpenGL" ) ); + list.add( new QemuGfxModel( Video.Model.VGA, "VGA" ) ); + list.add( new QemuGfxModel( Video.Model.QXL, "QXL" ) ); + list.add( new QemuGfxModel( Video.Model.VMVGA, "VMware VGA" ) ); + list.add( new QemuGfxModel( Video.Model.VIRTIO, "virtio-gpu" ) ); + configurableOptions.add( new ConfigurableOptionGroup( ConfigurationGroups.GFX_MODEL, list ) ); + + list = new ArrayList<>(); + list.add( new QemuGfxType( "false", "2D" ) ); + list.add( new QemuGfxType( "true", "3D" ) ); configurableOptions.add( new ConfigurableOptionGroup( ConfigurationGroups.GFX_TYPE, list ) ); list = new ArrayList<>(); diff --git a/src/main/java/org/openslx/virtualization/hardware/ConfigurationGroups.java b/src/main/java/org/openslx/virtualization/hardware/ConfigurationGroups.java index ad5b771..8a0ab13 100644 --- a/src/main/java/org/openslx/virtualization/hardware/ConfigurationGroups.java +++ b/src/main/java/org/openslx/virtualization/hardware/ConfigurationGroups.java @@ -6,6 +6,7 @@ public enum ConfigurationGroups NIC_MODEL( "E0VirtDev" ), USB_SPEED( "maxUSBSpeed" ), SOUND_CARD_MODEL( "sound" ), + GFX_MODEL( "graphics" ), GFX_TYPE( "3DAcceleration" ), HW_VERSION( "HWVersion" ); |