summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVictor Mocanu2016-10-31 12:26:07 +0100
committerVictor Mocanu2016-10-31 12:26:07 +0100
commita9ad72ec42b150d9bf8bb5260da0a1c125cb7469 (patch)
tree07010e1a2c6eaceb94f8252d3a435623f043e211 /src
parent[vmutil] Add .applySettingsForLocalEdit() that is intended to prepare several... (diff)
downloadmaster-sync-shared-a9ad72ec42b150d9bf8bb5260da0a1c125cb7469.tar.gz
master-sync-shared-a9ad72ec42b150d9bf8bb5260da0a1c125cb7469.tar.xz
master-sync-shared-a9ad72ec42b150d9bf8bb5260da0a1c125cb7469.zip
[vm] add method for selecting device types
user can now select/change the virtual device for sound, network, the hardware version and turn 3D-Acceleration on and off
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/openslx/util/vm/VmwareMetaData.java204
1 files changed, 199 insertions, 5 deletions
diff --git a/src/main/java/org/openslx/util/vm/VmwareMetaData.java b/src/main/java/org/openslx/util/vm/VmwareMetaData.java
index 30b555c..8cf377a 100644
--- a/src/main/java/org/openslx/util/vm/VmwareMetaData.java
+++ b/src/main/java/org/openslx/util/vm/VmwareMetaData.java
@@ -31,9 +31,8 @@ public class VmwareMetaData extends VmMetaData
// Init static members
static {
- String[] list = { "^guestos", "^uuid\\.bios", "^config\\.version", "^ehci\\.", "^mks\\.enable3d", "^virtualhw\\.", "^sound\\.",
- "\\.pcislotnumber$", "^pcibridge", "\\.virtualdev$", "^tools\\.syncTime$", "^time\\.synchronize", "^bios\\.bootDelay",
- "^rtc\\.", "^xhci\\." };
+ String[] list = { "^guestos", "^uuid\\.bios", "^config\\.version", "^ehci\\.", "^mks\\.enable3d", "^virtualhw\\.", "^sound\\.", "\\.pcislotnumber$", "^pcibridge",
+ "\\.virtualdev$", "^tools\\.syncTime$", "^time\\.synchronize", "^bios\\.bootDelay", "^rtc\\.", "^xhci\\." };
whitelist = new Pattern[ list.length ];
for ( int i = 0; i < list.length; ++i ) {
whitelist[i] = Pattern.compile( list[i].toLowerCase() );
@@ -62,7 +61,7 @@ public class VmwareMetaData extends VmMetaData
handleLoadEntry( entry );
}
// if we find this tag, we already went through the hdd's - so we're done.
- if ( config.get("#SLX_HDD_BUS" ) != null) {
+ if ( config.get( "#SLX_HDD_BUS" ) != null ) {
return;
}
// Now find the HDDs and add to list
@@ -279,12 +278,17 @@ public class VmwareMetaData extends VmMetaData
}
return false;
}
-
+
private static String vmBoolean( boolean var )
{
return Boolean.toString( var ).toUpperCase();
}
+ private static String vmInteger( int val )
+ {
+ return Integer.toString( val );
+ }
+
public boolean disableSuspend()
{
addFiltered( "suspend.disabled", "TRUE" );
@@ -379,4 +383,194 @@ public class VmwareMetaData extends VmMetaData
addFiltered( "gui.applyHostDisplayScalingToGuest", "FALSE" );
}
+ public String getValue( String key )
+ {
+ return config.get( key );
+ }
+
+ // SOUND
+ public static enum SoundCardType
+ {
+ NONE( false, null, "No card" ),
+ DEFAULT( true, null, "Default card" ),
+ SOUND_BLASTER( true, "sb16", "Sound Blaster 16" ),
+ ES( true, "es1371", "ES 1371" ),
+ HD_AUDIO( true, "hdaudio", "Intel Integrated HD Audio" );
+
+ public final boolean isPresent;
+ public final String value;
+ public final String displayName;
+
+ private SoundCardType( boolean present, String value, String dName )
+ {
+ this.isPresent = present;
+ this.value = value;
+ this.displayName = dName;
+ }
+ }
+
+ public void setSoundCard( SoundCardType type )
+ {
+ addFiltered( "sound.present", vmBoolean( type.isPresent ) );
+ if ( type.value != null ) {
+ addFiltered( "sound.virtualDev", type.value );
+ } else {
+ config.remove( "sound.virtualDev" );
+ }
+ }
+
+ public SoundCardType getSoundCard()
+ {
+ if ( isSetAndTrue( "sound.present" ) && isSetAndTrue( "sound.autodetect" ) && config.get( "sound.virtualDev" ) == null ) {
+ return SoundCardType.DEFAULT;
+ } else if ( isSetAndTrue( "sound.present" ) && isSetAndTrue( "sound.autodetect" ) && config.get( "sound.virtualDev" ).equals( "sb16" ) ) {
+ return SoundCardType.SOUND_BLASTER;
+ } else if ( isSetAndTrue( "sound.present" ) && isSetAndTrue( "sound.autodetect" ) && config.get( "sound.virtualDev" ).equals( "es1371" ) ) {
+ return SoundCardType.ES;
+ } else if ( isSetAndTrue( "sound.present" ) && isSetAndTrue( "sound.autodetect" ) && config.get( "sound.virtualDev" ).equals( "hdaudio" ) ) {
+ return SoundCardType.HD_AUDIO;
+ } else {
+ return SoundCardType.NONE;
+ }
+ }
+
+ // 3DAcceleration
+ public static enum DDAcceleration
+ {
+ OFF( false, "Off" ),
+ ON( true, "On" );
+
+ public final boolean isPresent;
+ public final String displayName;
+
+ private DDAcceleration( boolean present, String dName )
+ {
+ this.isPresent = present;
+ this.displayName = dName;
+ }
+ }
+
+ public void setDDAcceleration( DDAcceleration type )
+ {
+ addFiltered( "mks.enable3d", vmBoolean( type.isPresent ) );
+ }
+
+ public DDAcceleration getDDAcceleration()
+ {
+ if ( isSetAndTrue( "mks.enable3d" ) ) {
+ return DDAcceleration.ON;
+ } else if ( !isSetAndTrue( "mks.enable3d" ) ) {
+ return DDAcceleration.OFF;
+ } else
+ return DDAcceleration.OFF;
+ }
+
+ // Virtual hardware version
+ public static enum HWVersion
+ {
+ NONE( 0, "Bitte korrekter Eintrag wählen!" ),
+ THREE( 3, "3" ),
+ FOUR( 4, "4" ),
+ SIX( 6, "6" ),
+ SEVEN( 7, "7" ),
+ EIGHT( 8, "8" ),
+ NINE( 9, "9" ),
+ TEN( 10, "10" ),
+ ELEVEN( 11, "11" ),
+ TWELVE( 12, "12" );
+
+ public final int version;
+ public final String displayName;
+
+ private HWVersion( int vers, String dName )
+ {
+ this.version = vers;
+ this.displayName = dName;
+ }
+ }
+
+ public void setHWVersion( HWVersion type )
+ {
+ addFiltered( "virtualHW.version", vmInteger( type.version ) );
+ }
+
+ public HWVersion getHWVersion()
+ {
+
+ String temp = config.get( "virtualHW.version" );
+ if ( temp == null ) {
+ return HWVersion.NONE;
+ }
+
+ switch ( config.get( "virtualHW.version" ) ) {
+ case "3":
+ return HWVersion.THREE;
+ case "4":
+ return HWVersion.FOUR;
+ case "6":
+ return HWVersion.SIX;
+ case "7":
+ return HWVersion.SEVEN;
+ case "8":
+ return HWVersion.EIGHT;
+ case "9":
+ return HWVersion.NINE;
+ case "10":
+ return HWVersion.TEN;
+ case "11":
+ return HWVersion.ELEVEN;
+ case "12":
+ return HWVersion.TWELVE;
+ default:
+ return HWVersion.NONE;
+ }
+ }
+
+ // Virtual network adapter
+ public static enum E0VirtDev
+ {
+ AUTO( null, "auto detect" ),
+ AMD( "vlance", "AMD PCnet32" ),
+ INTEL( "e1000", "Intel E1000" ),
+ VMX( "vmxnet", "VMXnet" );
+
+ public final String value;
+ public final String displayName;
+
+ private E0VirtDev( String value, String dName )
+ {
+ this.value = value;
+ this.displayName = dName;
+ }
+ }
+
+ public void setE0VirtDev( E0VirtDev type )
+ {
+ if ( type.value != null ) {
+ addFiltered( "ethernet0.virtualDev", type.value );
+ } else {
+ config.remove( "ethernet0.virtualDev" );
+ }
+ }
+
+ public E0VirtDev getE0VirtDev()
+ {
+
+ String temp = config.get( "ethernet0.virtualDev" );
+ if ( temp == null ) {
+ return E0VirtDev.AUTO;
+ }
+
+ switch ( config.get( "ethernet0.virtualDev" ) ) {
+ case "vlance":
+ return E0VirtDev.AMD;
+ case "e1000":
+ return E0VirtDev.INTEL;
+ case "vmxnet":
+ return E0VirtDev.VMX;
+ default:
+ return E0VirtDev.AUTO;
+
+ }
+ }
}