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;