From a1791cb4a8fb2cfd455848ca47585d94d9a309e7 Mon Sep 17 00:00:00 2001 From: Saksham Srivastava Date: Thu, 18 Dec 2014 14:26:33 +0530 Subject: [PATCH] CLOUDSTACK-8088: VM scale up is failing in vmware with Unable to execute ScaleVmCommand due to java.lang.NullPointerException (cherry picked from commit 1df0453d27e8378065c15878067fc9d2dc961e30) Signed-off-by: Rohit Yadav --- api/src/com/cloud/hypervisor/HypervisorGuru.java | 3 +++ .../src/com/cloud/vm/VirtualMachineManagerImpl.java | 7 +++++++ .../src/com/cloud/baremetal/manager/BareMetalGuru.java | 6 ++++++ .../src/com/cloud/hypervisor/hyperv/guru/HypervGuru.java | 7 +++++++ .../ovm/src/com/cloud/ovm/hypervisor/OvmGuru.java | 8 ++++++++ .../simulator/src/com/cloud/simulator/SimulatorGuru.java | 8 ++++++++ .../vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java | 9 +++++++++ .../src/com/cloud/hypervisor/XenServerGuru.java | 6 ++++++ server/src/com/cloud/hypervisor/HypervisorGuruBase.java | 6 ++++++ server/src/com/cloud/hypervisor/KVMGuru.java | 8 ++++++++ server/src/com/cloud/hypervisor/LXCGuru.java | 7 +++++++ 11 files changed, 75 insertions(+) diff --git a/api/src/com/cloud/hypervisor/HypervisorGuru.java b/api/src/com/cloud/hypervisor/HypervisorGuru.java index 583e082f860..6a09dd257af 100644 --- a/api/src/com/cloud/hypervisor/HypervisorGuru.java +++ b/api/src/com/cloud/hypervisor/HypervisorGuru.java @@ -17,6 +17,7 @@ package com.cloud.hypervisor; import java.util.List; +import java.util.Map; import org.apache.cloudstack.framework.config.ConfigKey; @@ -81,4 +82,6 @@ public interface HypervisorGuru extends Adapter { List finalizeExpungeNics(VirtualMachine vm, List nics); List finalizeExpungeVolumes(VirtualMachine vm); + + Map getClusterSettings(long vmId); } diff --git a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java index ab5f6a3f046..038c7afe052 100755 --- a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java +++ b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java @@ -3487,6 +3487,13 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac newServiceOffering.getSpeed(), minMemory * 1024L * 1024L, newServiceOffering.getRamSize() * 1024L * 1024L, newServiceOffering.getLimitCpuUse()); Long dstHostId = vm.getHostId(); + if(vm.getHypervisorType().equals(HypervisorType.VMware)) { + HypervisorGuru hvGuru = _hvGuruMgr.getGuru(vm.getHypervisorType()); + Map details = null; + details = hvGuru.getClusterSettings(vm.getId()); + reconfigureCmd.getVirtualMachine().setDetails(details); + } + ItWorkVO work = new ItWorkVO(UUID.randomUUID().toString(), _nodeId, State.Running, vm.getType(), vm.getId()); work.setStep(Step.Prepare); work.setResourceType(ItWorkVO.ResourceType.Host); diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BareMetalGuru.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BareMetalGuru.java index 57d439bcd6c..8f439cdc1dd 100755 --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BareMetalGuru.java +++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BareMetalGuru.java @@ -84,4 +84,10 @@ public class BareMetalGuru extends HypervisorGuruBase implements HypervisorGuru public boolean trackVmHostChange() { return false; } + + @Override + public Map getClusterSettings(long vmId) { + return null; + } + } diff --git a/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/guru/HypervGuru.java b/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/guru/HypervGuru.java index 4e8d3d5524c..2a631429156 100644 --- a/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/guru/HypervGuru.java +++ b/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/guru/HypervGuru.java @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; +import java.util.Map; import javax.ejb.Local; import javax.inject.Inject; @@ -194,4 +195,10 @@ public class HypervGuru extends HypervisorGuruBase implements HypervisorGuru { public final boolean trackVmHostChange() { return false; } + + @Override + public Map getClusterSettings(long vmId) { + return null; + } + } diff --git a/plugins/hypervisors/ovm/src/com/cloud/ovm/hypervisor/OvmGuru.java b/plugins/hypervisors/ovm/src/com/cloud/ovm/hypervisor/OvmGuru.java index 236078f526e..90e4b5742b6 100755 --- a/plugins/hypervisors/ovm/src/com/cloud/ovm/hypervisor/OvmGuru.java +++ b/plugins/hypervisors/ovm/src/com/cloud/ovm/hypervisor/OvmGuru.java @@ -16,6 +16,8 @@ // under the License. package com.cloud.ovm.hypervisor; +import java.util.Map; + import javax.ejb.Local; import javax.inject.Inject; @@ -58,4 +60,10 @@ public class OvmGuru extends HypervisorGuruBase implements HypervisorGuru { return true; } + @Override + public Map getClusterSettings(long vmId) { + return null; + } + + } diff --git a/plugins/hypervisors/simulator/src/com/cloud/simulator/SimulatorGuru.java b/plugins/hypervisors/simulator/src/com/cloud/simulator/SimulatorGuru.java index 5b9eab4d3b6..378134a9856 100644 --- a/plugins/hypervisors/simulator/src/com/cloud/simulator/SimulatorGuru.java +++ b/plugins/hypervisors/simulator/src/com/cloud/simulator/SimulatorGuru.java @@ -16,6 +16,8 @@ // under the License. package com.cloud.simulator; +import java.util.Map; + import javax.ejb.Local; import javax.inject.Inject; @@ -56,4 +58,10 @@ public class SimulatorGuru extends HypervisorGuruBase implements HypervisorGuru public boolean trackVmHostChange() { return false; } + + @Override + public Map getClusterSettings(long vmId) { + return null; + } + } diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java index c0711f211b6..808cb5bdeea 100644 --- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java +++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java @@ -552,4 +552,13 @@ public class VMwareGuru extends HypervisorGuruBase implements HypervisorGuru, Co return commands; } + + @Override + public Map getClusterSettings(long vmId) { + Map details = new HashMap(); + long clusterId = getClusterId(vmId); + details.put(VmwareReserveCpu.key(), VmwareReserveCpu.valueIn(clusterId).toString()); + details.put(VmwareReserveMemory.key(), VmwareReserveMemory.valueIn(clusterId).toString()); + return details; + } } diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/XenServerGuru.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/XenServerGuru.java index b17048b435c..f8aabff64a0 100644 --- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/XenServerGuru.java +++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/XenServerGuru.java @@ -18,6 +18,7 @@ package com.cloud.hypervisor; import java.util.ArrayList; import java.util.List; +import java.util.Map; import javax.ejb.Local; import javax.inject.Inject; @@ -128,6 +129,11 @@ public class XenServerGuru extends HypervisorGuruBase implements HypervisorGuru, return true; } + @Override + public Map getClusterSettings(long vmId) { + return null; + } + @Override public List finalizeExpungeVolumes(VirtualMachine vm) { List commands = new ArrayList(); diff --git a/server/src/com/cloud/hypervisor/HypervisorGuruBase.java b/server/src/com/cloud/hypervisor/HypervisorGuruBase.java index 8ffd6ea93f2..308c327177f 100644 --- a/server/src/com/cloud/hypervisor/HypervisorGuruBase.java +++ b/server/src/com/cloud/hypervisor/HypervisorGuruBase.java @@ -190,4 +190,10 @@ public abstract class HypervisorGuruBase extends AdapterBase implements Hypervis public List finalizeExpungeVolumes(VirtualMachine vm) { return null; } + + @Override + public Map getClusterSettings(long vmId) { + return null; + } + } diff --git a/server/src/com/cloud/hypervisor/KVMGuru.java b/server/src/com/cloud/hypervisor/KVMGuru.java index b6a765154c5..a2534bdef2a 100644 --- a/server/src/com/cloud/hypervisor/KVMGuru.java +++ b/server/src/com/cloud/hypervisor/KVMGuru.java @@ -16,6 +16,8 @@ // under the License. package com.cloud.hypervisor; +import java.util.Map; + import javax.ejb.Local; import javax.inject.Inject; @@ -86,4 +88,10 @@ public class KVMGuru extends HypervisorGuruBase implements HypervisorGuru { public boolean trackVmHostChange() { return false; } + + @Override + public Map getClusterSettings(long vmId) { + return null; + } + } diff --git a/server/src/com/cloud/hypervisor/LXCGuru.java b/server/src/com/cloud/hypervisor/LXCGuru.java index 025c498cd4a..2becdbd79e6 100644 --- a/server/src/com/cloud/hypervisor/LXCGuru.java +++ b/server/src/com/cloud/hypervisor/LXCGuru.java @@ -16,6 +16,8 @@ // under the License. package com.cloud.hypervisor; +import java.util.Map; + import javax.ejb.Local; import javax.inject.Inject; @@ -73,4 +75,9 @@ public class LXCGuru extends HypervisorGuruBase implements HypervisorGuru { public boolean trackVmHostChange() { return false; } + + @Override + public Map getClusterSettings(long vmId) { + return null; + } }