diff options
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod')
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/util/VmWrapper.java | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/util/VmWrapper.java b/dozentenmodul/src/main/java/org/openslx/dozmod/util/VmWrapper.java new file mode 100644 index 00000000..dcd5ce01 --- /dev/null +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/util/VmWrapper.java @@ -0,0 +1,38 @@ +package org.openslx.dozmod.util; + +import java.io.File; +import java.io.IOException; + +import org.apache.log4j.Logger; +import org.openslx.bwlp.thrift.iface.OperatingSystem; +import org.openslx.bwlp.thrift.iface.Virtualizer; +import org.openslx.dozmod.thrift.cache.MetaDataCache; +import org.openslx.util.vm.DiskImage; +import org.openslx.util.vm.DiskImage.UnknownImageFormatException; +import org.openslx.util.vm.VmwareMetaData; + +public class VmWrapper { + + private static final Logger LOGGER = Logger.getLogger(VmWrapper.class); + + public static void wrapVm(File diskFile, byte[] machineDescription, Virtualizer virtualizer, + OperatingSystem os) throws MetaDataMissingException { + VmwareMetaData vmwareConfig = new VmwareMetaData(MetaDataCache.getOperatingSystems(), + machineDescription, machineDescription.length); + if (!vmwareConfig.addEthernetNat() || !vmwareConfig.addHddTemplate(diskFile.getName())) { + throw new MetaDataMissingException(); + } + DiskImage diskImage; + try { + diskImage = new DiskImage(diskFile); + } catch (IOException | UnknownImageFormatException e) { + LOGGER.debug("Cannot open disk file '" + diskFile.getName() + "' for reading", e); + diskImage = null; + } + } + + public static class MetaDataMissingException extends Exception { + private static final long serialVersionUID = -7842986428831219758L; + } + +} |