summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/util/VmWrapper.java
diff options
context:
space:
mode:
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/util/VmWrapper.java')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/util/VmWrapper.java35
1 files changed, 35 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
index 3663a0ad..fc1623fc 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/util/VmWrapper.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/util/VmWrapper.java
@@ -3,6 +3,15 @@ package org.openslx.dozmod.util;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
+import java.lang.management.ManagementFactory;
+
+import javax.management.AttributeNotFoundException;
+import javax.management.InstanceNotFoundException;
+import javax.management.MBeanException;
+import javax.management.MBeanServer;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+import javax.management.ReflectionException;
import org.apache.commons.io.FileUtils;
import org.apache.log4j.Logger;
@@ -43,6 +52,15 @@ public class VmWrapper {
}
}
}
+ vmwareConfig.addDisplayName(imageName);
+ int mem = getMainMemoryMb() / 2;
+ if (mem < 1024) {
+ mem = 1024;
+ } else if (mem > 4096) {
+ mem = 4096;
+ }
+ vmwareConfig.addRam(mem);
+ // Output vmx
File vmxFile = new File(diskFile.getAbsolutePath() + ".vmx");
vmxFile.delete();
FileUtils.writeByteArrayToFile(vmxFile, vmwareConfig.getFilteredDefinitionArray());
@@ -77,4 +95,21 @@ public class VmWrapper {
private static final long serialVersionUID = -7842986428831219758L;
}
+ private static int getMainMemoryMb() {
+ MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
+ Object attribute;
+ try {
+ attribute = mBeanServer.getAttribute(new ObjectName("java.lang", "type", "OperatingSystem"),
+ "TotalPhysicalMemorySize");
+ } catch (AttributeNotFoundException | InstanceNotFoundException | MalformedObjectNameException
+ | MBeanException | ReflectionException e) {
+ return -1;
+ }
+ try {
+ return (int) (Long.parseLong(attribute.toString()) / (1024 * 1024));
+ } catch (Exception e) {
+ return -1;
+ }
+ }
+
}