diff options
author | Victor Mocanu | 2017-11-21 15:52:45 +0100 |
---|---|---|
committer | Victor Mocanu | 2017-11-21 15:52:45 +0100 |
commit | 98f22db17e6718db300df129cb221af37eec1654 (patch) | |
tree | 73d20dd0678ab9db1a841c66f1049c3f2657048e /src/main/java/org/openslx/util | |
parent | [VBox] added all networkcards for virtualbox made small change to internal class (diff) | |
download | master-sync-shared-98f22db17e6718db300df129cb221af37eec1654.tar.gz master-sync-shared-98f22db17e6718db300df129cb221af37eec1654.tar.xz master-sync-shared-98f22db17e6718db300df129cb221af37eec1654.zip |
[VBox] separated and made some vmwaremetadata functions abstract in vmmetadata s.t. vboxmetadata also needs to implement them
implemented said functions in vboxmetadata
Diffstat (limited to 'src/main/java/org/openslx/util')
-rw-r--r-- | src/main/java/org/openslx/util/vm/VboxConfig.java | 23 | ||||
-rw-r--r-- | src/main/java/org/openslx/util/vm/VboxMetaData.java | 34 | ||||
-rw-r--r-- | src/main/java/org/openslx/util/vm/VmMetaData.java | 23 | ||||
-rw-r--r-- | src/main/java/org/openslx/util/vm/VmwareMetaData.java | 52 |
4 files changed, 105 insertions, 27 deletions
diff --git a/src/main/java/org/openslx/util/vm/VboxConfig.java b/src/main/java/org/openslx/util/vm/VboxConfig.java index efab84b..d53f638 100644 --- a/src/main/java/org/openslx/util/vm/VboxConfig.java +++ b/src/main/java/org/openslx/util/vm/VboxConfig.java @@ -399,7 +399,28 @@ public class VboxConfig return newNode; } - + + /** + * usb 2.0 will be enabled + */ + public void enableUsb(){ + Node newUsbNode = addNewNode( "Hardware", "USB", false ); + Node newUsbControllers = addNewNode( newUsbNode.getNodeName(), "Controllers", false ); + Node controller1 = addNewNode( newUsbControllers.getNodeName(), "Controller", true ); + addAttributeToNode( controller1, "name", "OHCI" ); + addAttributeToNode( controller1, "type", "OHCI" ); + Node controller2 = addNewNode( newUsbControllers.getNodeName(), "Controller", true ); + addAttributeToNode( controller2, "name", "EHCI" ); + addAttributeToNode( controller2, "type", "EHCI" ); + } + + /** + * disable usb by removing the USB tag + */ + public void disableUsb() { + Node usb = findANode( "USB" ).item( 0 ); + removeNode( usb ); + } // function removes a given child and the format childNode private void removeNode( Node node ) { diff --git a/src/main/java/org/openslx/util/vm/VboxMetaData.java b/src/main/java/org/openslx/util/vm/VboxMetaData.java index a4dc063..1f83572 100644 --- a/src/main/java/org/openslx/util/vm/VboxMetaData.java +++ b/src/main/java/org/openslx/util/vm/VboxMetaData.java @@ -118,7 +118,11 @@ public class VboxMetaData extends VmMetaData<VBoxSoundCardMeta, VBoxDDAccelMeta, @Override public void enableUsb( boolean enabled ) { - // TODO Auto-generated method stub + if ( !enabled ) { + config.disableUsb(); + } else { + config.enableUsb(); + } } @Override @@ -137,6 +141,7 @@ public class VboxMetaData extends VmMetaData<VBoxSoundCardMeta, VBoxDDAccelMeta, public boolean addHddTemplate( String diskImage, String hddMode, String redoDir ) { config.changeAttribute( "HardDisk", "location", diskImage ); + config.changeAttribute( "Machine", "snapshotFolder", redoDir ); return true; } @@ -213,7 +218,7 @@ public class VboxMetaData extends VmMetaData<VBoxSoundCardMeta, VBoxDDAccelMeta, { // TODO test this config.changeAttribute( "Machine", "OSType", vendorOsId ); - setOs( "vmware", vendorOsId ); + setOs( "virtualbox", vendorOsId ); } @Override @@ -414,6 +419,8 @@ public class VboxMetaData extends VmMetaData<VBoxSoundCardMeta, VBoxDDAccelMeta, // end of all from vmware supported Ethernet devices versions here } + + /** * given a boolean value returns a string in lowercase of given boolean * @@ -424,4 +431,27 @@ public class VboxMetaData extends VmMetaData<VBoxSoundCardMeta, VBoxDDAccelMeta, { return Boolean.toString( var ).toLowerCase(); } + + @Override + public boolean addEthernet( VmMetaData.EtherType type ) + { + switch ( type ) { + case NAT: + return addDefaultNat(); + case BRIDGED: // implement later + return false; + case HOST_ONLY: // implement later + return false; + default: // implement later + return false; + } + } + + @Override + public boolean disableSuspend() + { + // TODO how?? + // https://forums.virtualbox.org/viewtopic.php?f=8&t=80338 + return true; + } } diff --git a/src/main/java/org/openslx/util/vm/VmMetaData.java b/src/main/java/org/openslx/util/vm/VmMetaData.java index 10f1373..3c1d485 100644 --- a/src/main/java/org/openslx/util/vm/VmMetaData.java +++ b/src/main/java/org/openslx/util/vm/VmMetaData.java @@ -156,6 +156,13 @@ public abstract class VmMetaData<T, U, V, W> } } + + public static enum EtherType + { + NAT, + BRIDGED, + HOST_ONLY; + } /* * Members */ @@ -280,12 +287,6 @@ public abstract class VmMetaData<T, U, V, W> this.os = lazyMatch; } - public abstract void reWrite(); - - public abstract Virtualizer getVirtualizer(); - - public abstract void enableUsb( boolean enabled ); - /** * Apply config options that are desired when locally editing a VM. for vmware, * this disables automatic DPI scaling of the guest. @@ -362,7 +363,17 @@ public abstract class VmMetaData<T, U, V, W> public abstract EthernetDevType getEthernetDevType( int cardIndex ); public abstract byte[] getDefinitionArray(); + + public abstract boolean addEthernet( EtherType type ); + + public abstract void reWrite(); + public abstract Virtualizer getVirtualizer(); + + public abstract void enableUsb( boolean enabled ); + + public abstract boolean disableSuspend(); + /** * * Function used by subclasses to put the virtual devices, which the subclass supports in the diff --git a/src/main/java/org/openslx/util/vm/VmwareMetaData.java b/src/main/java/org/openslx/util/vm/VmwareMetaData.java index f2c6a80..47deb27 100644 --- a/src/main/java/org/openslx/util/vm/VmwareMetaData.java +++ b/src/main/java/org/openslx/util/vm/VmwareMetaData.java @@ -82,6 +82,20 @@ public class VmwareMetaData extends VmMetaData<VmWareSoundCardMeta, VmWareDDAcce } } + public static enum EthernetType + { + NAT( "vmnet1" ), + BRIDGED( "vmnet0" ), + HOST_ONLY( "vmnet2" ); + + public final String vmnet; + + private EthernetType( String vnet ) + { + this.vmnet = vnet; + } + } + private final Map<String, Controller> disks = new HashMap<>(); public VmwareMetaData( List<OperatingSystem> osList, File file ) throws IOException, UnsupportedVirtualizerFormatException @@ -308,14 +322,29 @@ public class VmwareMetaData extends VmMetaData<VmWareSoundCardMeta, VmWareDDAcce return true; } - public boolean addEthernet( EthernetType type ) + public boolean addEthernet( VmMetaData.EtherType type ) { + boolean returnboolean = false; int index = 0; for ( ;; ++index ) { if ( config.get( "ethernet" + index + ".present" ) == null ) break; } - return addEthernet( index, type ); + switch ( type ) { + case NAT: + returnboolean = addEthernet( index, EthernetType.NAT ); + break; + case BRIDGED: + returnboolean = addEthernet( index, EthernetType.BRIDGED ); + break; + case HOST_ONLY: + returnboolean = addEthernet( index, EthernetType.HOST_ONLY ); + break; + default: + // Should not come to this... + break; + } + return returnboolean; } public boolean addEthernet( int index, EthernetType type ) @@ -382,18 +411,19 @@ public class VmwareMetaData extends VmMetaData<VmWareSoundCardMeta, VmWareDDAcce return Integer.toString( val ); } + @Override public boolean disableSuspend() { addFiltered( "suspend.disabled", "TRUE" ); return true; } - + @Override public boolean addDisplayName( String name ) { addFiltered( "displayName", name ); return true; } - + @Override public boolean addRam( int mem ) { addFiltered( "memsize", Integer.toString( mem ) ); @@ -449,20 +479,6 @@ public class VmwareMetaData extends VmMetaData<VmWareSoundCardMeta, VmWareDDAcce } } - public static enum EthernetType - { - NAT( "vmnet1" ), - BRIDGED( "vmnet0" ), - HOST_ONLY( "vmnet2" ); - - public final String vmnet; - - private EthernetType( String vnet ) - { - this.vmnet = vnet; - } - } - @Override public void enableUsb( boolean enabled ) { |