summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManuel Bentele2021-10-15 14:09:07 +0200
committerManuel Bentele2021-10-15 14:09:07 +0200
commitbda67b5aa8d03d4960bd4f9e051a8b8a7e4e7cd4 (patch)
tree298a07795c0fa42af54b19d8bab399ee4c84b416
parentRemove unused variables (diff)
downloadmaster-sync-shared-bda67b5aa8d03d4960bd4f9e051a8b8a7e4e7cd4.tar.gz
master-sync-shared-bda67b5aa8d03d4960bd4f9e051a8b8a7e4e7cd4.tar.xz
master-sync-shared-bda67b5aa8d03d4960bd4f9e051a8b8a7e4e7cd4.zip
Add graphic model configuration option for QEMU VMs
-rw-r--r--src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemu.java58
-rw-r--r--src/main/java/org/openslx/virtualization/hardware/ConfigurationGroups.java1
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" );