summaryrefslogblamecommitdiffstats
path: root/src/main/java/org/openslx/util/vm/QemuMetaData.java
blob: ddeb87ede41d655e54b6cd0291119134cdf60c4d (plain) (tree)






























































































































































































































                                                                                                                                    
package org.openslx.util.vm;

import java.io.File;
import java.nio.charset.StandardCharsets;
import java.util.List;

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>
{
	// default initiation sequence for 32 and 64 bit os instalations
	private static String cpu = "-cpu host -smp 2";
	private static String mem = " -m 1024";
	private static String display = " -vga std";
	private static String network = "";
	//private static String boot = "-boot c"; // maybe used later
	// the above strings will take the place of <args> in the config string
	private static String config = "qemu-system-i386 <args> <image> -enable-kvm #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 = "QemuVM";
		setOs( "qemukvm", "anyOs" );
		hdds.add( new HardDisk( "anychipset", DriveBusType.IDE, file.getAbsolutePath() ) );
	}

	public QemuMetaData( List<OperatingSystem> osList, byte[] vmContent )
	{
		super( osList );
		config = new String( vmContent );
		displayName = "QemuVM";
		setOs( "qemukvm", "anyOs" );
	}

	private String configWithArgs()
	{
		String tempString = cpu + mem + display + network;
		return config.replaceAll( "<args>", tempString );
	}

	@Override
	public byte[] getFilteredDefinitionArray()
	{
		return configWithArgs().getBytes( StandardCharsets.UTF_8 );
	}

	@Override
	public void applySettingsForLocalEdit()
	{
		String tempS = config.replaceAll( "#", "\n\r" );
		config = tempS;
	}

	@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 )
	{
		// TODO Auto-generated method stub
		return false;
	}

	@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 )
	{
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public void setSoundCard( org.openslx.util.vm.VmMetaData.SoundCardType type )
	{
		// TODO Auto-generated method stub

	}

	@Override
	public org.openslx.util.vm.VmMetaData.SoundCardType getSoundCard()
	{
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void setDDAcceleration( org.openslx.util.vm.VmMetaData.DDAcceleration type )
	{
		// TODO Auto-generated method stub

	}

	@Override
	public org.openslx.util.vm.VmMetaData.DDAcceleration getDDAcceleration()
	{
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void setHWVersion( org.openslx.util.vm.VmMetaData.HWVersion type )
	{
		// TODO Auto-generated method stub

	}

	@Override
	public org.openslx.util.vm.VmMetaData.HWVersion getHWVersion()
	{
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void setEthernetDevType( int cardIndex, org.openslx.util.vm.VmMetaData.EthernetDevType type )
	{
		// TODO Auto-generated method stub

	}

	@Override
	public org.openslx.util.vm.VmMetaData.EthernetDevType getEthernetDevType( int cardIndex )
	{
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public byte[] getDefinitionArray()
	{
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public boolean addEthernet( org.openslx.util.vm.VmMetaData.EtherType type )
	{
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public Virtualizer getVirtualizer()
	{
		return virtualizer;
	}

	@Override
	public void enableUsb( boolean enabled )
	{
		// TODO Auto-generated method stub

	}

	@Override
	public boolean disableSuspend()
	{
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public void populateTheMaps()
	{
		// TODO Auto-generated method stub

	}

}