summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod
diff options
context:
space:
mode:
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/util/VmWrapper.java38
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;
+ }
+
+}