summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/util/vm/QemuMetaData.java
diff options
context:
space:
mode:
authorVictor Mocanu2018-04-16 17:14:45 +0200
committerJonathan Bauer2018-04-16 17:15:47 +0200
commit8a0d508f5a04f930e9945131db4f70591fd02e12 (patch)
tree81fd67311a42da83bdb58e339596cec5a80d3955 /src/main/java/org/openslx/util/vm/QemuMetaData.java
parentRemove unused proxy-vole classes (diff)
downloadmaster-sync-shared-8a0d508f5a04f930e9945131db4f70591fd02e12.tar.gz
master-sync-shared-8a0d508f5a04f930e9945131db4f70591fd02e12.tar.xz
master-sync-shared-8a0d508f5a04f930e9945131db4f70591fd02e12.zip
[vbox] add support for VirtualBox
Diffstat (limited to 'src/main/java/org/openslx/util/vm/QemuMetaData.java')
-rw-r--r--src/main/java/org/openslx/util/vm/QemuMetaData.java219
1 files changed, 219 insertions, 0 deletions
diff --git a/src/main/java/org/openslx/util/vm/QemuMetaData.java b/src/main/java/org/openslx/util/vm/QemuMetaData.java
new file mode 100644
index 0000000..f470376
--- /dev/null
+++ b/src/main/java/org/openslx/util/vm/QemuMetaData.java
@@ -0,0 +1,219 @@
+package org.openslx.util.vm;
+
+import java.io.File;
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.openslx.bwlp.thrift.iface.OperatingSystem;
+import org.openslx.bwlp.thrift.iface.Virtualizer;
+
+public class QemuMetaData extends VmMetaData<VBoxSoundCardMeta, VBoxDDAccelMeta, VBoxHWVersionMeta, VBoxEthernetDevTypeMeta>
+{
+
+ private Map<String, String> arguments = new HashMap<String, String>();
+ // the above map's elements will take the place of <args> in the config string
+ private static String config = "qemu-system-i386 <args> <image> -enable-kvm \n\r qemu-system-x86_64 <args> <image> -enable-kvm";
+ private static final Logger LOGGER = Logger.getLogger( QemuMetaData.class );
+
+ private static final Virtualizer virtualizer = new Virtualizer( "qemukvm", "QEMU-KVM" );
+
+ public QemuMetaData( List<OperatingSystem> osList, File file )
+ {
+ super( osList );
+ displayName = file.getName().substring( 0, file.getName().indexOf( "." ) );
+ setOs( "qemukvm", "anyOs" );
+ hdds.add( new HardDisk( "anychipset", DriveBusType.IDE, file.getAbsolutePath() ) );
+ makeStartSequence();
+ }
+
+ public QemuMetaData( List<OperatingSystem> osList, byte[] vmContent )
+ {
+ super( osList );
+ config = new String( vmContent );
+ displayName = "QemuVM";
+ setOs( "qemukvm", "anyOs" );
+ }
+
+ // initiates the arguments map with a default working sequence that will later be used in the definition array
+ public void makeStartSequence()
+ {
+ arguments.put( "cpu", "host" );
+ arguments.put( "smp", "2" );
+ arguments.put( "m", "1024" );
+ arguments.put( "vga", "std" );
+ }
+
+ private String configWithArgs()
+ {
+ String tempString = "";
+ for ( String key : arguments.keySet() ) {
+ tempString += "-" + key + " " + arguments.get( key ) + " ";
+ }
+ return config.replaceAll( "<args>", tempString );
+ }
+
+ @Override
+ public byte[] getFilteredDefinitionArray()
+ {
+ return configWithArgs().getBytes( StandardCharsets.UTF_8 );
+ }
+
+ @Override
+ public void applySettingsForLocalEdit()
+ {
+ }
+
+ @Override
+ public boolean addHddTemplate( File diskImage, String hddMode, String redoDir )
+ {
+ String tempS = config.replaceAll( "<image>", diskImage.getAbsolutePath() );
+ config = tempS;
+ hdds.add( new HardDisk( "anychipset", DriveBusType.IDE, diskImage.getAbsolutePath() ) );
+ return true;
+ }
+
+ @Override
+ public boolean addHddTemplate( String diskImagePath, String hddMode, String redoDir )
+ {
+ String tempS = config.replaceAll( "<image>", diskImagePath );
+ config = tempS;
+ hdds.add( new HardDisk( "anychipset", DriveBusType.IDE, diskImagePath ) );
+ return true;
+ }
+
+ @Override
+ public boolean addDefaultNat()
+ {
+ return true;
+ }
+
+ @Override
+ public void setOs( String vendorOsId )
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public boolean addDisplayName( String name )
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public boolean addRam( int mem )
+ {
+ this.arguments.put( "m", Integer.toString( mem ) );
+ return true;
+ }
+
+ @Override
+ public void addFloppy( int index, String image, boolean readOnly )
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public boolean addCdrom( String image )
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public boolean addCpuCoreCount( int nrOfCores )
+ {
+ this.arguments.put( "smp", Integer.toString( nrOfCores ) );
+ return true;
+ }
+
+ @Override
+ public void setSoundCard( VmMetaData.SoundCardType type )
+ {
+ }
+
+ @Override
+ public VmMetaData.SoundCardType getSoundCard()
+ {
+ return null;
+ }
+
+ @Override
+ public void setDDAcceleration( VmMetaData.DDAcceleration type )
+ {
+ }
+
+ @Override
+ public VmMetaData.DDAcceleration getDDAcceleration()
+ {
+ return null;
+ }
+
+ @Override
+ public void setHWVersion( VmMetaData.HWVersion type )
+ {
+ }
+
+ @Override
+ public VmMetaData.HWVersion getHWVersion()
+ {
+ return null;
+ }
+
+ @Override
+ public void setEthernetDevType( int cardIndex, VmMetaData.EthernetDevType type )
+ {
+ }
+
+ @Override
+ public VmMetaData.EthernetDevType getEthernetDevType( int cardIndex )
+ {
+ return null;
+ }
+
+ @Override
+ public byte[] getDefinitionArray()
+ {
+ return configWithArgs().getBytes( StandardCharsets.UTF_8 );
+ }
+
+ @Override
+ public boolean addEthernet( VmMetaData.EtherType type )
+ {
+ return false;
+ }
+
+ @Override
+ public Virtualizer getVirtualizer()
+ {
+ return virtualizer;
+ }
+
+ @Override
+ public void enableUsb( boolean enabled )
+ {
+ // TODO test this properly
+ if ( enabled ) {
+ arguments.put( "usb", "" );
+ } else {
+ arguments.remove( "usb" );
+ }
+ }
+
+ @Override
+ public boolean disableSuspend()
+ {
+ return false;
+ }
+
+ @Override
+ public void registerVirtualHW()
+ {
+ }
+
+}