"runtime.powerState") < 0 ||
esxVI_LookupVirtualMachineByUuid(domain->conn, priv->host,
domain->uuid, propertyNameList,
- &virtualMachine) < 0 ||
+ &virtualMachine,
+ esxVI_Occurence_RequiredItem) < 0 ||
esxVI_GetVirtualMachinePowerState(domain->conn, virtualMachine,
&powerState) < 0) {
goto failure;
"runtime.powerState") < 0 ||
esxVI_LookupVirtualMachineByUuid(domain->conn, priv->host,
domain->uuid, propertyNameList,
- &virtualMachine) < 0 ||
+ &virtualMachine,
+ esxVI_Occurence_RequiredItem) < 0 ||
esxVI_GetVirtualMachinePowerState(domain->conn, virtualMachine,
&powerState) < 0) {
goto failure;
"runtime.powerState") < 0 ||
esxVI_LookupVirtualMachineByUuid(domain->conn, priv->host,
domain->uuid, propertyNameList,
- &virtualMachine) < 0 ||
+ &virtualMachine,
+ esxVI_Occurence_RequiredItem) < 0 ||
esxVI_GetVirtualMachinePowerState(domain->conn, virtualMachine,
&powerState) < 0) {
goto failure;
"runtime.powerState") < 0 ||
esxVI_LookupVirtualMachineByUuid(domain->conn, priv->host,
domain->uuid, propertyNameList,
- &virtualMachine) < 0 ||
+ &virtualMachine,
+ esxVI_Occurence_RequiredItem) < 0 ||
esxVI_GetVirtualMachinePowerState(domain->conn, virtualMachine,
&powerState) < 0) {
goto failure;
"runtime.powerState") < 0 ||
esxVI_LookupVirtualMachineByUuid(domain->conn, priv->host,
domain->uuid, propertyNameList,
- &virtualMachine) < 0 ||
+ &virtualMachine,
+ esxVI_Occurence_RequiredItem) < 0 ||
esxVI_GetVirtualMachinePowerState(domain->conn, virtualMachine,
&powerState) < 0) {
goto failure;
"config.hardware.memoryMB") < 0 ||
esxVI_LookupVirtualMachineByUuid(domain->conn, priv->host,
domain->uuid, propertyNameList,
- &virtualMachine) < 0) {
+ &virtualMachine,
+ esxVI_Occurence_RequiredItem) < 0) {
goto failure;
}
if (esxVI_LookupVirtualMachineByUuid(domain->conn, priv->host,
domain->uuid, NULL,
- &virtualMachine) < 0 ||
+ &virtualMachine,
+ esxVI_Occurence_RequiredItem) < 0 ||
esxVI_VirtualMachineConfigSpec_Alloc(domain->conn, &spec) < 0 ||
esxVI_Long_Alloc(domain->conn, &spec->memoryMB) < 0) {
goto failure;
if (esxVI_LookupVirtualMachineByUuid(domain->conn, priv->host,
domain->uuid, NULL,
- &virtualMachine) < 0 ||
+ &virtualMachine,
+ esxVI_Occurence_RequiredItem) < 0 ||
esxVI_VirtualMachineConfigSpec_Alloc(domain->conn, &spec) < 0 ||
esxVI_ResourceAllocationInfo_Alloc(domain->conn,
&spec->memoryAllocation) < 0 ||
"config.memoryAllocation.limit\0") < 0 ||
esxVI_LookupVirtualMachineByUuid(domain->conn, priv->host,
domain->uuid, propertyNameList,
- &virtualMachine) < 0) {
+ &virtualMachine,
+ esxVI_Occurence_RequiredItem) < 0) {
goto failure;
}
if (esxVI_LookupVirtualMachineByUuid(domain->conn, priv->host,
domain->uuid, NULL,
- &virtualMachine) < 0 ||
+ &virtualMachine,
+ esxVI_Occurence_RequiredItem) < 0 ||
esxVI_VirtualMachineConfigSpec_Alloc(domain->conn, &spec) < 0 ||
esxVI_Int_Alloc(domain->conn, &spec->numCPUs) < 0) {
goto failure;
"config.files.vmPathName") < 0 ||
esxVI_LookupVirtualMachineByUuid(domain->conn, priv->host,
domain->uuid, propertyNameList,
- &virtualMachine) < 0) {
+ &virtualMachine,
+ esxVI_Occurence_RequiredItem) < 0) {
goto failure;
}
"runtime.powerState") < 0 ||
esxVI_LookupVirtualMachineByUuid(domain->conn, priv->host,
domain->uuid, propertyNameList,
- &virtualMachine) < 0 ||
+ &virtualMachine,
+ esxVI_Occurence_RequiredItem) < 0 ||
esxVI_GetVirtualMachinePowerState(domain->conn, virtualMachine,
&powerState) < 0) {
goto failure;
"runtime.powerState") < 0 ||
esxVI_LookupVirtualMachineByUuid(domain->conn, priv->host,
domain->uuid, propertyNameList,
- &virtualMachine) < 0 ||
+ &virtualMachine,
+ esxVI_Occurence_RequiredItem) < 0 ||
esxVI_GetVirtualMachinePowerState(domain->conn, virtualMachine,
&powerState) < 0) {
goto failure;
"config.cpuAllocation.shares\0") < 0 ||
esxVI_LookupVirtualMachineByUuid(domain->conn, priv->host,
domain->uuid, propertyNameList,
- &virtualMachine) < 0) {
+ &virtualMachine,
+ esxVI_Occurence_RequiredItem) < 0) {
goto failure;
}
if (esxVI_LookupVirtualMachineByUuid(domain->conn, priv->host,
domain->uuid, NULL,
- &virtualMachine) < 0 ||
+ &virtualMachine,
+ esxVI_Occurence_RequiredItem) < 0 ||
esxVI_VirtualMachineConfigSpec_Alloc(domain->conn, &spec) < 0 ||
esxVI_ResourceAllocationInfo_Alloc(domain->conn,
&spec->cpuAllocation) < 0) {
/* Lookup VirtualMachine, HostSystem and ResourcePool */
if (esxVI_LookupVirtualMachineByUuid(domain->conn, priv->vCenter,
domain->uuid, NULL,
- &virtualMachine) < 0) {
+ &virtualMachine,
+ esxVI_Occurence_RequiredItem) < 0) {
goto failure;
}
esxVI_LookupVirtualMachineByUuid(virConnectPtr conn, esxVI_Context *ctx,
const unsigned char *uuid,
esxVI_String *propertyNameList,
- esxVI_ObjectContent **virtualMachine)
+ esxVI_ObjectContent **virtualMachine,
+ esxVI_Occurence occurence)
{
int result = 0;
esxVI_ManagedObjectReference *managedObjectReference = NULL;
+ char uuid_string[VIR_UUID_STRING_BUFLEN] = "";
if (virtualMachine == NULL || *virtualMachine != NULL) {
ESX_VI_ERROR(conn, VIR_ERR_INTERNAL_ERROR, "Invalid argument");
goto failure;
}
+ if (managedObjectReference == NULL) {
+ if (occurence == esxVI_Occurence_OptionalItem) {
+ return 0;
+ } else {
+ virUUIDFormat(uuid, uuid_string);
+
+ ESX_VI_ERROR(conn, VIR_ERR_INTERNAL_ERROR,
+ "Could not find domain with UUID '%s'", uuid_string);
+ goto failure;
+ }
+ }
+
if (esxVI_GetObjectContent(conn, ctx, managedObjectReference,
"VirtualMachine", propertyNameList,
esxVI_Boolean_False, virtualMachine) < 0) {
typedef enum _esxVI_APIVersion esxVI_APIVersion;
typedef enum _esxVI_ProductVersion esxVI_ProductVersion;
+typedef enum _esxVI_Occurence esxVI_Occurence;
typedef struct _esxVI_Context esxVI_Context;
typedef struct _esxVI_Response esxVI_Response;
typedef struct _esxVI_Enumeration esxVI_Enumeration;
esxVI_ProductVersion_VPX40
};
+enum _esxVI_Occurence {
+ esxVI_Occurence_Undefined = 0,
+ esxVI_Occurence_RequiredItem,
+ esxVI_Occurence_OptionalItem,
+ esxVI_Occurence_List
+};
+
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
int esxVI_LookupVirtualMachineByUuid(virConnectPtr conn, esxVI_Context *ctx,
const unsigned char *uuid,
esxVI_String *propertyNameList,
- esxVI_ObjectContent **virtualMachine);
+ esxVI_ObjectContent **virtualMachine,
+ esxVI_Occurence occurence);
int esxVI_StartVirtualMachineTask(virConnectPtr conn, esxVI_Context *ctx,
const char *name, const char *request,