blob: eea4d8b2715a0e238a501f47662c4a3d6143a9b1 (
plain) (
tree)
|
|
package org.openslx.util.vm;
import org.apache.log4j.Logger;
import org.openslx.bwlp.thrift.iface.Virtualizer;
import org.openslx.thrifthelper.TConst;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;
public class DockerMetaDataDummy extends VmMetaData {
private static final Logger LOGGER = Logger.getLogger(DockerMetaDataDummy.class);
private final Virtualizer virtualizer = new Virtualizer(TConst.VIRT_DOCKER, "Docker");
/**
* containerDefinition is a serialized tar.gz archive and represents a
* ContainerDefinition. This archive contains a serialized Container Recipe (e.g. Dockerfile)
* and a ContainerMeta witch is serialized as a json file.
* <p>
* See ContainerDefintion in tutor-module (bwsuite).
* <p>
* This field is in vm context the machine description e.g. vmware = vmx.
* This field will be stored in table imageversion.virtualizerconfig
*/
private byte[] containerDefinition;
public DockerMetaDataDummy(List osList, File file) throws UnsupportedVirtualizerFormatException {
super(osList);
try {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
containerDefinition = new byte[(int) file.length()];
bis.read(containerDefinition);
checkIsTarGz();
} catch (IOException e) {
LOGGER.error("Couldn't read dockerfile", e);
}
}
public DockerMetaDataDummy(List osList, byte[] vmContent, int length)
throws UnsupportedVirtualizerFormatException {
super(osList);
containerDefinition = vmContent;
checkIsTarGz();
}
/*
TODO This is just a simple check to prevent the workflow from considering any content as acceptable.
*/
/**
* Checks if the first two bytes of the content identifies a tar.gz archive.
* The first byte is 31 == 0x1f, the second byte has to be -117 == 0x8b.
*
* @throws UnsupportedVirtualizerFormatException
*/
private void checkIsTarGz() throws UnsupportedVirtualizerFormatException {
if (!((31 == containerDefinition[0]) && (-117 == containerDefinition[1]))) {
LOGGER.warn("Not Supported Content.");
throw new UnsupportedVirtualizerFormatException(
"DockerMetaDataDummy: Not tar.gz encoded content!");
}
}
@Override public byte[] getFilteredDefinitionArray() {
return containerDefinition;
}
@Override public void applySettingsForLocalEdit() {
}
@Override public boolean addHddTemplate(File diskImage, String hddMode, String redoDir) {
return false;
}
@Override public boolean addHddTemplate(String diskImagePath, String hddMode, String redoDir) {
return false;
}
@Override public boolean addDefaultNat() {
return false;
}
@Override public void setOs(String vendorOsId) {
}
@Override public boolean addDisplayName(String name) {
return false;
}
@Override public boolean addRam(int mem) {
return false;
}
@Override public void addFloppy(int index, String image, boolean readOnly) {
}
@Override public boolean addCdrom(String image) {
return false;
}
@Override public boolean addCpuCoreCount(int nrOfCores) {
return false;
}
@Override public void setSoundCard(SoundCardType type) {
}
@Override public SoundCardType getSoundCard() {
return SoundCardType.NONE;
}
@Override public void setDDAcceleration(DDAcceleration type) {
}
@Override public DDAcceleration getDDAcceleration() {
return DDAcceleration.OFF;
}
@Override public void setHWVersion(HWVersion type) {
}
@Override public HWVersion getHWVersion() {
return HWVersion.DEFAULT;
}
@Override public void setEthernetDevType(int cardIndex, EthernetDevType type) {
}
@Override public EthernetDevType getEthernetDevType(int cardIndex) {
return EthernetDevType.NONE;
}
@Override public void setMaxUsbSpeed(UsbSpeed speed) {
}
@Override public UsbSpeed getMaxUsbSpeed() {
return UsbSpeed.NONE;
}
@Override public byte[] getDefinitionArray() {
return new byte[0];
}
@Override public boolean addEthernet(EtherType type) {
return false;
}
@Override public Virtualizer getVirtualizer() {
return virtualizer;
}
@Override public boolean tweakForNonPersistent() {
return false;
}
@Override public void registerVirtualHW() {
}
}
|