mirror of https://github.com/apache/cloudstack.git
CLOUDSTACK-3279 Need mechanism to detect if hotadd for cpu/memory is supported per a specific guest OS supported by VMware.
Signed-off-by: Sateesh Chodapuneedi <sateesh@apache.org>
This commit is contained in:
parent
a12a13ccc9
commit
f980341808
|
|
@ -273,6 +273,7 @@ import com.vmware.vim25.ComputeResourceSummary;
|
|||
import com.vmware.vim25.DatastoreSummary;
|
||||
import com.vmware.vim25.DynamicProperty;
|
||||
import com.vmware.vim25.GuestInfo;
|
||||
import com.vmware.vim25.GuestOsDescriptor;
|
||||
import com.vmware.vim25.HostCapability;
|
||||
import com.vmware.vim25.HostFirewallInfo;
|
||||
import com.vmware.vim25.HostFirewallRuleset;
|
||||
|
|
@ -307,6 +308,7 @@ import com.vmware.vim25.VirtualDisk;
|
|||
import com.vmware.vim25.VirtualEthernetCard;
|
||||
import com.vmware.vim25.VirtualEthernetCardNetworkBackingInfo;
|
||||
import com.vmware.vim25.VirtualLsiLogicController;
|
||||
import com.vmware.vim25.VirtualMachineConfigOption;
|
||||
import com.vmware.vim25.VirtualMachineConfigSpec;
|
||||
import com.vmware.vim25.VirtualMachineFileInfo;
|
||||
import com.vmware.vim25.VirtualMachineGuestOsIdentifier;
|
||||
|
|
@ -2545,9 +2547,17 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
|
|||
VmwareHelper.setBasicVmConfig(vmConfigSpec, vmSpec.getCpus(), vmSpec.getMaxSpeed(),
|
||||
vmSpec.getMinSpeed(),(int) (vmSpec.getMaxRam()/(1024*1024)), ramMb,
|
||||
translateGuestOsIdentifier(vmSpec.getArch(), vmSpec.getOs()).value(), vmSpec.getLimitCpuUse());
|
||||
String guestOsId = translateGuestOsIdentifier(vmSpec.getArch(), vmSpec.getOs()).value();
|
||||
boolean guestSupportsCpuHotAdd = false;
|
||||
boolean guestSupportsMemoryHotAdd = false;
|
||||
GuestOsDescriptor vmGuestOsDescriptor = vmMo.getGuestOsDescriptor(guestOsId);
|
||||
if (vmGuestOsDescriptor != null) {
|
||||
guestSupportsCpuHotAdd = vmGuestOsDescriptor.isSupportsCpuHotAdd();
|
||||
guestSupportsMemoryHotAdd = vmGuestOsDescriptor.isSupportsMemoryHotAdd();
|
||||
}
|
||||
|
||||
vmConfigSpec.setMemoryHotAddEnabled(true);
|
||||
vmConfigSpec.setCpuHotAddEnabled(true);
|
||||
vmConfigSpec.setMemoryHotAddEnabled(guestSupportsMemoryHotAdd);
|
||||
vmConfigSpec.setCpuHotAddEnabled(guestSupportsCpuHotAdd);
|
||||
|
||||
if ("true".equals(vmSpec.getDetails().get(VmDetailConstants.NESTED_VIRTUALIZATION_FLAG))) {
|
||||
s_logger.debug("Nested Virtualization enabled in configuration, checking hypervisor capability");
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ import com.vmware.vim25.CustomFieldStringValue;
|
|||
import com.vmware.vim25.DistributedVirtualSwitchPortConnection;
|
||||
import com.vmware.vim25.DynamicProperty;
|
||||
import com.vmware.vim25.GuestInfo;
|
||||
import com.vmware.vim25.GuestOsDescriptor;
|
||||
import com.vmware.vim25.HttpNfcLeaseDeviceUrl;
|
||||
import com.vmware.vim25.HttpNfcLeaseInfo;
|
||||
import com.vmware.vim25.HttpNfcLeaseState;
|
||||
|
|
@ -84,6 +85,7 @@ import com.vmware.vim25.VirtualIDEController;
|
|||
import com.vmware.vim25.VirtualLsiLogicController;
|
||||
import com.vmware.vim25.VirtualMachineCloneSpec;
|
||||
import com.vmware.vim25.VirtualMachineConfigInfo;
|
||||
import com.vmware.vim25.VirtualMachineConfigOption;
|
||||
import com.vmware.vim25.VirtualMachineConfigSpec;
|
||||
import com.vmware.vim25.VirtualMachineConfigSummary;
|
||||
import com.vmware.vim25.VirtualMachineFileInfo;
|
||||
|
|
@ -1593,6 +1595,21 @@ public class VirtualMachineMO extends BaseMO {
|
|||
}
|
||||
}
|
||||
|
||||
public GuestOsDescriptor getGuestOsDescriptor(String guestOsId) throws Exception {
|
||||
GuestOsDescriptor guestOsDescriptor = null;
|
||||
ManagedObjectReference vmEnvironmentBrowser =
|
||||
_context.getVimClient().getMoRefProp(_mor, "environmentBrowser");
|
||||
VirtualMachineConfigOption vmConfigOption = _context.getService().queryConfigOption(vmEnvironmentBrowser, null, null);
|
||||
List<GuestOsDescriptor> guestDescriptors = vmConfigOption.getGuestOSDescriptor();
|
||||
for (GuestOsDescriptor descriptor : guestDescriptors) {
|
||||
if (guestOsId != null && guestOsId.equalsIgnoreCase(descriptor.getId())) {
|
||||
guestOsDescriptor = descriptor;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return guestOsDescriptor;
|
||||
}
|
||||
|
||||
public void plugDevice(VirtualDevice device) throws Exception {
|
||||
VirtualMachineConfigSpec vmConfigSpec = new VirtualMachineConfigSpec();
|
||||
//VirtualDeviceConfigSpec[] deviceConfigSpecArray = new VirtualDeviceConfigSpec[1];
|
||||
|
|
|
|||
Loading…
Reference in New Issue