diff options
author | Victor Mocanu | 2018-04-16 17:14:45 +0200 |
---|---|---|
committer | Jonathan Bauer | 2018-04-16 17:15:47 +0200 |
commit | 8a0d508f5a04f930e9945131db4f70591fd02e12 (patch) | |
tree | 81fd67311a42da83bdb58e339596cec5a80d3955 /src/main/java/org/openslx/util/vm/QemuMetaData.java | |
parent | Remove unused proxy-vole classes (diff) | |
download | master-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.java | 219 |
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() + { + } + +} |