From ef40e156ed376968fa9fd15078034d54b97deecc Mon Sep 17 00:00:00 2001 From: Bharat Kumar Date: Tue, 26 Nov 2013 14:09:55 +0530 Subject: [PATCH] CLOUDSTACK-5162 Usage details are not getting populated when using dynamic offerings. Signed-off-by: Koushik Das --- .../src/com/cloud/service/ServiceOfferingVO.java | 10 +++++++++- server/src/com/cloud/vm/UserVmManagerImpl.java | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/engine/schema/src/com/cloud/service/ServiceOfferingVO.java b/engine/schema/src/com/cloud/service/ServiceOfferingVO.java index 67fea00a43e..d968de55c74 100755 --- a/engine/schema/src/com/cloud/service/ServiceOfferingVO.java +++ b/engine/schema/src/com/cloud/service/ServiceOfferingVO.java @@ -83,6 +83,11 @@ public class ServiceOfferingVO extends DiskOfferingVO implements ServiceOffering @Transient Map details; + // This flag is required to tell if the offering is dynamic once the cpu, memory and speed are set. + // In some cases cpu, memory and speed are set to non-null values even if the offering is dynamic. + @Transient + boolean isDynamic; + protected ServiceOfferingVO() { super(); } @@ -297,7 +302,10 @@ public class ServiceOfferingVO extends DiskOfferingVO implements ServiceOffering @Override public boolean isDynamic() { - return cpu == null || speed == null || ramSize == null; + return cpu == null || speed == null || ramSize == null || isDynamic; } + public void setDynamicFlag(boolean isdynamic) { + this.isDynamic = isdynamic; + } } diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index 00d8063da4e..934304326ba 100755 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -2593,6 +2593,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir details.add(new UserVmDetailVO(id, ServiceOfferingVO.DynamicParameters.cpuSpeed.toString(), cpuSpeed.toString())); details.add(new UserVmDetailVO(id, ServiceOfferingVO.DynamicParameters.memory.toString(), memory.toString())); offering = _serviceOfferingDao.getcomputeOffering(serviceOffering.getId(), cpuNumber, cpuSpeed, memory); + offering.setDynamicFlag(true); } if (hostName != null) { // Check is hostName is RFC compliant