mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-22 20:45:18 +00:00
esx: Don't try to change max-memory of an active domain
Report an VIR_ERR_OPERATION_INVALID error in that case instead of letting the SOAP call fail with an VIR_ERR_INTERNAL_ERROR error.
This commit is contained in:
parent
819269c4f0
commit
96f4986aca
@ -2027,7 +2027,9 @@ esxDomainSetMaxMemory(virDomainPtr domain, unsigned long memory)
|
|||||||
{
|
{
|
||||||
int result = -1;
|
int result = -1;
|
||||||
esxPrivate *priv = domain->conn->privateData;
|
esxPrivate *priv = domain->conn->privateData;
|
||||||
|
esxVI_String *propertyNameList = NULL;
|
||||||
esxVI_ObjectContent *virtualMachine = NULL;
|
esxVI_ObjectContent *virtualMachine = NULL;
|
||||||
|
esxVI_VirtualMachinePowerState powerState;
|
||||||
esxVI_VirtualMachineConfigSpec *spec = NULL;
|
esxVI_VirtualMachineConfigSpec *spec = NULL;
|
||||||
esxVI_ManagedObjectReference *task = NULL;
|
esxVI_ManagedObjectReference *task = NULL;
|
||||||
esxVI_TaskInfoState taskInfoState;
|
esxVI_TaskInfoState taskInfoState;
|
||||||
@ -2037,10 +2039,22 @@ esxDomainSetMaxMemory(virDomainPtr domain, unsigned long memory)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (esxVI_LookupVirtualMachineByUuidAndPrepareForTask
|
if (esxVI_String_AppendValueToList(&propertyNameList,
|
||||||
(priv->primary, domain->uuid, NULL, &virtualMachine,
|
"runtime.powerState") < 0 ||
|
||||||
|
esxVI_LookupVirtualMachineByUuidAndPrepareForTask
|
||||||
|
(priv->primary, domain->uuid, propertyNameList, &virtualMachine,
|
||||||
priv->autoAnswer) < 0 ||
|
priv->autoAnswer) < 0 ||
|
||||||
esxVI_VirtualMachineConfigSpec_Alloc(&spec) < 0 ||
|
esxVI_GetVirtualMachinePowerState(virtualMachine, &powerState) < 0) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (powerState != esxVI_VirtualMachinePowerState_PoweredOff) {
|
||||||
|
ESX_ERROR(VIR_ERR_OPERATION_INVALID, "%s",
|
||||||
|
_("Domain is not powered off"));
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (esxVI_VirtualMachineConfigSpec_Alloc(&spec) < 0 ||
|
||||||
esxVI_Long_Alloc(&spec->memoryMB) < 0) {
|
esxVI_Long_Alloc(&spec->memoryMB) < 0) {
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
@ -2067,6 +2081,7 @@ esxDomainSetMaxMemory(virDomainPtr domain, unsigned long memory)
|
|||||||
result = 0;
|
result = 0;
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
|
esxVI_String_Free(&propertyNameList);
|
||||||
esxVI_ObjectContent_Free(&virtualMachine);
|
esxVI_ObjectContent_Free(&virtualMachine);
|
||||||
esxVI_VirtualMachineConfigSpec_Free(&spec);
|
esxVI_VirtualMachineConfigSpec_Free(&spec);
|
||||||
esxVI_ManagedObjectReference_Free(&task);
|
esxVI_ManagedObjectReference_Free(&task);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user