summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx
diff options
context:
space:
mode:
authorVictor Mocanu2017-11-21 15:52:45 +0100
committerVictor Mocanu2017-11-21 15:52:45 +0100
commit98f22db17e6718db300df129cb221af37eec1654 (patch)
tree73d20dd0678ab9db1a841c66f1049c3f2657048e /src/main/java/org/openslx
parent[VBox] added all networkcards for virtualbox made small change to internal class (diff)
downloadmaster-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')
-rw-r--r--src/main/java/org/openslx/util/vm/VboxConfig.java23
-rw-r--r--src/main/java/org/openslx/util/vm/VboxMetaData.java34
-rw-r--r--src/main/java/org/openslx/util/vm/VmMetaData.java23
-rw-r--r--src/main/java/org/openslx/util/vm/VmwareMetaData.java52
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 )
{