From 9a021904af9475c8d1a4ec0f981ff76729546cb2 Mon Sep 17 00:00:00 2001 From: Kishan Kavala Date: Mon, 20 Feb 2017 11:31:45 +0530 Subject: [PATCH] Bug-ID: CLOUDSTACK-8880: calculate free memory on host before deploying Vm. free memory = total memory - (all vm memory) --- .../resource/LibvirtComputingResource.java | 6 ++ .../wrapper/LibvirtStartCommandWrapper.java | 34 ++++++++++- .../LibvirtComputingResourceTest.java | 59 +++++++++++++++++++ 3 files changed, 96 insertions(+), 3 deletions(-) diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java index ee6d0d41cac..888923e81a6 100644 --- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java +++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java @@ -268,6 +268,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv protected int _rngRateBytes = 2048; private File _qemuSocketsPath; private final String _qemuGuestAgentSocketName = "org.qemu.guest_agent.0"; + private long _totalMemory; private final Map _pifs = new HashMap(); private final Map _vmStats = new ConcurrentHashMap(); @@ -2453,6 +2454,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv public StartupCommand[] initialize() { final List info = getHostInfo(); + _totalMemory = (Long)info.get(2); final StartupRoutingCommand cmd = new StartupRoutingCommand((Integer)info.get(0), (Long)info.get(1), (Long)info.get(2), (Long)info.get(4), (String)info.get(3), _hypervisorType, @@ -3586,4 +3588,8 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv } } } + + public long getTotalMemory() { + return _totalMemory; + } } diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtStartCommandWrapper.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtStartCommandWrapper.java index d9606194b1d..198b95dd237 100644 --- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtStartCommandWrapper.java +++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtStartCommandWrapper.java @@ -24,6 +24,7 @@ import java.util.List; import org.apache.log4j.Logger; import org.libvirt.Connect; +import org.libvirt.Domain; import org.libvirt.DomainInfo.DomainState; import org.libvirt.LibvirtException; @@ -60,6 +61,17 @@ public final class LibvirtStartCommandWrapper extends CommandWrapper