diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java index 3f711fa9b80..39f30b6e934 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java @@ -2780,10 +2780,15 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv grd.setMemBalloning(!_noMemBalloon); - Long maxRam = ByteScaleUtils.bytesToKibibytes(vmTO.getMaxRam()); + long maxRam = ByteScaleUtils.bytesToKibibytes(vmTO.getMaxRam()); + long currRam = vmTO.getType() == VirtualMachine.Type.User ? getCurrentMemAccordingToMemBallooning(vmTO, maxRam) : maxRam; + + if (s_logger.isTraceEnabled()) { + s_logger.trace(String.format("memory values for VM %s are %d/%d",vmTO.getName(),maxRam, currRam)); + } grd.setMemorySize(maxRam); - grd.setCurrentMem(getCurrentMemAccordingToMemBallooning(vmTO, maxRam)); + grd.setCurrentMem(currRam); int vcpus = vmTO.getCpus(); Integer maxVcpus = vmTO.getVcpuMaxLimit(); diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java index b739c0ee0ab..720c48096ef 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java @@ -282,7 +282,7 @@ public class LibvirtVMDef { @Override public String toString() { StringBuilder response = new StringBuilder(); - response.append(String.format("%s\n", this.currentMemory)); + response.append(String.format("%s\n", this.memory)); response.append(String.format("%s\n", this.currentMemory)); if (this.memory > this.currentMemory) { @@ -1238,7 +1238,7 @@ public class LibvirtVMDef { @Override public String toString() { StringBuilder memBalloonBuilder = new StringBuilder(); - memBalloonBuilder.append("\n"); + memBalloonBuilder.append("\n"); if (StringUtils.isNotBlank(memBalloonStatsPeriod)) { memBalloonBuilder.append("\n"); } diff --git a/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java b/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java index ffe20b4ad30..58682b2663c 100644 --- a/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java +++ b/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java @@ -760,7 +760,7 @@ public class LibvirtComputingResourceTest { private void verifyMemory(VirtualMachineTO to, Document domainDoc, String minRam) { assertXpath(domainDoc, "/domain/maxMemory/text()", String.valueOf( to.getMaxRam() / 1024 )); - assertXpath(domainDoc, "/domain/memory/text()",minRam); + assertXpath(domainDoc, "/domain/currentMemory/text()",minRam); assertXpath(domainDoc, "/domain/cpu/numa/cell/@memory", minRam); assertXpath(domainDoc, "/domain/currentMemory/text()", minRam); } diff --git a/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDefTest.java b/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDefTest.java index ec59265c832..4379ede8293 100644 --- a/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDefTest.java +++ b/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtVMDefTest.java @@ -214,11 +214,11 @@ public class LibvirtVMDefTest extends TestCase { assertEquals(bus, disk.getBusType()); assertEquals(DiskDef.DeviceType.DISK, disk.getDeviceType()); - String xmlDef = disk.toString(); + String resultingXml = disk.toString(); String expectedXml = "\n\n" + "\n\n\n"; - assertEquals(xmlDef, expectedXml); + assertEquals(expectedXml, resultingXml); } @Test @@ -236,7 +236,7 @@ public class LibvirtVMDefTest extends TestCase { "\n" + "\n" + "\n"; - assertEquals(disk.toString(), expectedXML); + assertEquals(expectedXML, disk.toString()); } @Test @@ -346,7 +346,7 @@ public class LibvirtVMDefTest extends TestCase { LibvirtVMDef.setGlobalQemuVersion(2006000L); LibvirtVMDef.setGlobalLibvirtVersion(9008L); - String xmlDef = disk.toString(); + String resultingXml = disk.toString(); String expectedXml = "\n\n" + "\n\n" + "\n"+bytesReadRate+"\n"+bytesWriteRate+"\n" + @@ -356,29 +356,29 @@ public class LibvirtVMDefTest extends TestCase { ""+bytesReadRateMaxLength+"\n"+bytesWriteRateMaxLength+"\n" + ""+iopsReadRateMaxLength+"\n"+iopsWriteRateMaxLength+"\n\n\n"; - assertEquals(xmlDef, expectedXml); + assertEquals(expectedXml, resultingXml); } @Test public void memBalloonDefTestNone() { - String expectedXml = "\n"; + String expectedXml = "\n"; MemBalloonDef memBalloonDef = new MemBalloonDef(); memBalloonDef.defNoneMemBalloon(); - String xmlDef = memBalloonDef.toString(); + String resultingXml = memBalloonDef.toString(); - assertEquals(xmlDef, expectedXml); + assertEquals(expectedXml, resultingXml); } @Test public void memBalloonDefTestVirtio() { - String expectedXml = "\n\n"; + String expectedXml = "\n\n"; MemBalloonDef memBalloonDef = new MemBalloonDef(); memBalloonDef.defVirtioMemBalloon("60"); - String xmlDef = memBalloonDef.toString(); + String resultingXml = memBalloonDef.toString(); - assertEquals(xmlDef, expectedXml); + assertEquals(expectedXml, resultingXml); } @Test @@ -413,11 +413,11 @@ public class LibvirtVMDefTest extends TestCase { int bytes = 2048; LibvirtVMDef.RngDef def = new LibvirtVMDef.RngDef(path, backendModel, bytes, period); - assertEquals(def.getPath(), path); - assertEquals(def.getRngBackendModel(), backendModel); - assertEquals(def.getRngModel(), LibvirtVMDef.RngDef.RngModel.VIRTIO); - assertEquals(def.getRngRateBytes(), bytes); - assertEquals(def.getRngRatePeriod(), period); + assertEquals(path, def.getPath()); + assertEquals(backendModel, def.getRngBackendModel()); + assertEquals(LibvirtVMDef.RngDef.RngModel.VIRTIO, def.getRngModel()); + assertEquals(bytes, def.getRngRateBytes()); + assertEquals(period, def.getRngRatePeriod()); } @Test @@ -441,8 +441,8 @@ public class LibvirtVMDefTest extends TestCase { LibvirtVMDef.WatchDogDef.WatchDogAction action = LibvirtVMDef.WatchDogDef.WatchDogAction.RESET; LibvirtVMDef.WatchDogDef def = new LibvirtVMDef.WatchDogDef(action, model); - assertEquals(def.getModel(), model); - assertEquals(def.getAction(), action); + assertEquals(model, def.getModel()); + assertEquals(action, def.getAction()); } @Test @@ -453,6 +453,6 @@ public class LibvirtVMDefTest extends TestCase { "
\n" + "\n" + "\n"; - assertEquals(str, expected); + assertEquals(expected, str); } } diff --git a/server/src/main/java/com/cloud/hypervisor/KVMGuru.java b/server/src/main/java/com/cloud/hypervisor/KVMGuru.java index f0ccffbc719..7c02d95f3eb 100644 --- a/server/src/main/java/com/cloud/hypervisor/KVMGuru.java +++ b/server/src/main/java/com/cloud/hypervisor/KVMGuru.java @@ -213,7 +213,7 @@ public class KVMGuru extends HypervisorGuruBase implements HypervisorGuru { Integer maxHostCpuCore = max.second(); long minMemory = virtualMachineTo.getMinRam(); - Long maxMemory = minMemory; + Long maxMemory = virtualMachineTo.getMaxRam(); int minCpuCores = virtualMachineTo.getCpus(); Integer maxCpuCores = minCpuCores;