From 8a0d508f5a04f930e9945131db4f70591fd02e12 Mon Sep 17 00:00:00 2001 From: Victor Mocanu Date: Mon, 16 Apr 2018 17:14:45 +0200 Subject: [vbox] add support for VirtualBox --- .../java/org/openslx/util/vm/QemuMetaData.java | 219 +++++++++++++++++++++ 1 file changed, 219 insertions(+) create mode 100644 src/main/java/org/openslx/util/vm/QemuMetaData.java (limited to 'src/main/java/org/openslx/util/vm/QemuMetaData.java') 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 +{ + + private Map arguments = new HashMap(); + // the above map's elements will take the place of in the config string + private static String config = "qemu-system-i386 -enable-kvm \n\r qemu-system-x86_64 -enable-kvm"; + private static final Logger LOGGER = Logger.getLogger( QemuMetaData.class ); + + private static final Virtualizer virtualizer = new Virtualizer( "qemukvm", "QEMU-KVM" ); + + public QemuMetaData( List 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 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( "", 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( "", 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( "", 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() + { + } + +} -- cgit v1.2.3-55-g7522