diff options
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.java | 35 |
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; + } + } + } |