mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-07-30 13:37:17 +00:00
ESX use virXPathNode*() to simplify XPath handling
* src/esx/esx_vi.[ch]: use virXPathNode*() in esxVI_RemoteRequest_Execute() and remove esxVI_RemoteResponse_DeserializeXPathObject*() * src/esx/esx_vi_methods.c: update callers to use the new syntax of esxVI_RemoteRequest_Execute()
This commit is contained in:
parent
1f8988b580
commit
03d28d7355
180
src/esx/esx_vi.c
180
src/esx/esx_vi.c
@ -34,6 +34,7 @@
|
|||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "uuid.h"
|
#include "uuid.h"
|
||||||
#include "virterror_internal.h"
|
#include "virterror_internal.h"
|
||||||
|
#include "xml.h"
|
||||||
#include "esx_vi.h"
|
#include "esx_vi.h"
|
||||||
#include "esx_vi_methods.h"
|
#include "esx_vi_methods.h"
|
||||||
#include "esx_util.h"
|
#include "esx_util.h"
|
||||||
@ -479,7 +480,8 @@ ESX_VI__TEMPLATE__FREE(RemoteRequest,
|
|||||||
int
|
int
|
||||||
esxVI_RemoteRequest_Execute(virConnectPtr conn, esxVI_Context *ctx,
|
esxVI_RemoteRequest_Execute(virConnectPtr conn, esxVI_Context *ctx,
|
||||||
esxVI_RemoteRequest *remoteRequest,
|
esxVI_RemoteRequest *remoteRequest,
|
||||||
esxVI_RemoteResponse **remoteResponse)
|
esxVI_RemoteResponse **remoteResponse,
|
||||||
|
esxVI_Boolean expectList)
|
||||||
{
|
{
|
||||||
virBuffer buffer = VIR_BUFFER_INITIALIZER;
|
virBuffer buffer = VIR_BUFFER_INITIALIZER;
|
||||||
esxVI_Fault *fault = NULL;
|
esxVI_Fault *fault = NULL;
|
||||||
@ -566,16 +568,24 @@ esxVI_RemoteRequest_Execute(virConnectPtr conn, esxVI_Context *ctx,
|
|||||||
BAD_CAST "urn:vim25");
|
BAD_CAST "urn:vim25");
|
||||||
|
|
||||||
if ((*remoteResponse)->responseCode == 500) {
|
if ((*remoteResponse)->responseCode == 500) {
|
||||||
(*remoteResponse)->xpathObject =
|
(*remoteResponse)->node =
|
||||||
xmlXPathEval(BAD_CAST
|
virXPathNode(conn, "/soapenv:Envelope/soapenv:Body/soapenv:Fault",
|
||||||
"/soapenv:Envelope/soapenv:Body/soapenv:Fault",
|
(*remoteResponse)->xpathContext);
|
||||||
(*remoteResponse)->xpathContext);
|
|
||||||
|
|
||||||
if (esxVI_RemoteResponse_DeserializeXPathObject
|
if ((*remoteResponse)->node == NULL) {
|
||||||
(conn, *remoteResponse,
|
ESX_VI_ERROR(conn, VIR_ERR_INTERNAL_ERROR,
|
||||||
(esxVI_RemoteResponse_DeserializeFunc)
|
"HTTP response code %d. VI Fault is unknown, "
|
||||||
esxVI_Fault_Deserialize,
|
"XPath evaluation failed",
|
||||||
(void **)&fault) < 0) {
|
(int)(*remoteResponse)->responseCode);
|
||||||
|
goto failure;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (esxVI_Fault_Deserialize(conn, (*remoteResponse)->node,
|
||||||
|
&fault) < 0) {
|
||||||
|
ESX_VI_ERROR(conn, VIR_ERR_INTERNAL_ERROR,
|
||||||
|
"HTTP response code %d. VI Fault is unknown, "
|
||||||
|
"deserialization failed",
|
||||||
|
(int)(*remoteResponse)->responseCode);
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -585,10 +595,37 @@ esxVI_RemoteRequest_Execute(virConnectPtr conn, esxVI_Context *ctx,
|
|||||||
fault->faultcode, fault->faultstring);
|
fault->faultcode, fault->faultstring);
|
||||||
|
|
||||||
goto failure;
|
goto failure;
|
||||||
|
} else if (expectList == esxVI_Boolean_True) {
|
||||||
|
xmlNodePtr *nodeSet = NULL;
|
||||||
|
int nodeSet_size;
|
||||||
|
|
||||||
|
nodeSet_size = virXPathNodeSet(conn, remoteRequest->xpathExpression,
|
||||||
|
(*remoteResponse)->xpathContext,
|
||||||
|
&nodeSet);
|
||||||
|
|
||||||
|
if (nodeSet_size < 0) {
|
||||||
|
ESX_VI_ERROR(conn, VIR_ERR_INTERNAL_ERROR,
|
||||||
|
"XPath evaluation of '%s' failed",
|
||||||
|
remoteRequest->xpathExpression);
|
||||||
|
goto failure;
|
||||||
|
} else if (nodeSet_size == 0) {
|
||||||
|
(*remoteResponse)->node = NULL;
|
||||||
|
} else {
|
||||||
|
(*remoteResponse)->node = nodeSet[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
VIR_FREE(nodeSet);
|
||||||
} else {
|
} else {
|
||||||
(*remoteResponse)->xpathObject =
|
(*remoteResponse)->node =
|
||||||
xmlXPathEval(BAD_CAST remoteRequest->xpathExpression,
|
virXPathNode(conn, remoteRequest->xpathExpression,
|
||||||
(*remoteResponse)->xpathContext);
|
(*remoteResponse)->xpathContext);
|
||||||
|
|
||||||
|
if ((*remoteResponse)->node == NULL) {
|
||||||
|
ESX_VI_ERROR(conn, VIR_ERR_INTERNAL_ERROR,
|
||||||
|
"XPath evaluation of '%s' failed",
|
||||||
|
remoteRequest->xpathExpression);
|
||||||
|
goto failure;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if ((*remoteResponse)->responseCode != 200) {
|
} else if ((*remoteResponse)->responseCode != 200) {
|
||||||
ESX_VI_ERROR(conn, VIR_ERR_INTERNAL_ERROR,
|
ESX_VI_ERROR(conn, VIR_ERR_INTERNAL_ERROR,
|
||||||
@ -627,7 +664,6 @@ ESX_VI__TEMPLATE__FREE(RemoteResponse,
|
|||||||
{
|
{
|
||||||
VIR_FREE(item->response);
|
VIR_FREE(item->response);
|
||||||
|
|
||||||
xmlXPathFreeObject(item->xpathObject);
|
|
||||||
xmlXPathFreeContext(item->xpathContext);
|
xmlXPathFreeContext(item->xpathContext);
|
||||||
|
|
||||||
if (item->document != NULL) {
|
if (item->document != NULL) {
|
||||||
@ -635,112 +671,6 @@ ESX_VI__TEMPLATE__FREE(RemoteResponse,
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
int
|
|
||||||
esxVI_RemoteResponse_DeserializeXPathObject
|
|
||||||
(virConnectPtr conn, esxVI_RemoteResponse *remoteResponse,
|
|
||||||
esxVI_RemoteResponse_DeserializeFunc deserializeFunc, void **item)
|
|
||||||
{
|
|
||||||
xmlNodePtr node = NULL;
|
|
||||||
|
|
||||||
if (remoteResponse->xpathObject != NULL &&
|
|
||||||
remoteResponse->xpathObject->type == XPATH_NODESET) {
|
|
||||||
if (remoteResponse->xpathObject->nodesetval->nodeNr != 1) {
|
|
||||||
ESX_VI_ERROR(conn, VIR_ERR_INTERNAL_ERROR,
|
|
||||||
"Expecting 1 XML node but found '%d'",
|
|
||||||
remoteResponse->xpathObject->nodesetval->nodeNr);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
node = remoteResponse->xpathObject->nodesetval->nodeTab[0];
|
|
||||||
|
|
||||||
if (node->type != XML_ELEMENT_NODE) {
|
|
||||||
ESX_VI_ERROR(conn, VIR_ERR_INTERNAL_ERROR,
|
|
||||||
"Wrong XML element type %d", node->type);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (deserializeFunc(conn, node, item) < 0) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
ESX_VI_ERROR(conn, VIR_ERR_INTERNAL_ERROR, "XPath error");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
esxVI_RemoteResponse_DeserializeXPathObjectList
|
|
||||||
(virConnectPtr conn, esxVI_RemoteResponse *remoteResponse,
|
|
||||||
esxVI_RemoteResponse_DeserializeListFunc deserializeListFunc,
|
|
||||||
esxVI_List **list)
|
|
||||||
{
|
|
||||||
xmlNodePtr node = NULL;
|
|
||||||
|
|
||||||
if (remoteResponse->xpathObject != NULL &&
|
|
||||||
remoteResponse->xpathObject->type == XPATH_NODESET) {
|
|
||||||
if (remoteResponse->xpathObject->nodesetval->nodeNr > 0) {
|
|
||||||
node = remoteResponse->xpathObject->nodesetval->nodeTab[0];
|
|
||||||
|
|
||||||
if (node->type != XML_ELEMENT_NODE) {
|
|
||||||
ESX_VI_ERROR(conn, VIR_ERR_INTERNAL_ERROR,
|
|
||||||
"Wrong XML element type %d", node->type);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
node = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (deserializeListFunc(conn, node, list) < 0) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
ESX_VI_ERROR(conn, VIR_ERR_INTERNAL_ERROR, "XPath error");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
esxVI_RemoteResponse_DeserializeXPathObjectAsManagedObjectReference
|
|
||||||
(virConnectPtr conn, esxVI_RemoteResponse *remoteResponse,
|
|
||||||
esxVI_ManagedObjectReference **managedObjectReference,
|
|
||||||
const char *expectedType)
|
|
||||||
{
|
|
||||||
xmlNodePtr node = NULL;
|
|
||||||
|
|
||||||
if (remoteResponse->xpathObject != NULL &&
|
|
||||||
remoteResponse->xpathObject->type == XPATH_NODESET) {
|
|
||||||
if (remoteResponse->xpathObject->nodesetval->nodeNr != 1) {
|
|
||||||
ESX_VI_ERROR(conn, VIR_ERR_INTERNAL_ERROR,
|
|
||||||
"Expecting 1 XML node but found '%d'",
|
|
||||||
remoteResponse->xpathObject->nodesetval->nodeNr);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
node = remoteResponse->xpathObject->nodesetval->nodeTab[0];
|
|
||||||
|
|
||||||
if (node->type != XML_ELEMENT_NODE) {
|
|
||||||
ESX_VI_ERROR(conn, VIR_ERR_INTERNAL_ERROR,
|
|
||||||
"Wrong XML element type %d", node->type);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (esxVI_ManagedObjectReference_Deserialize(conn, node,
|
|
||||||
managedObjectReference,
|
|
||||||
expectedType) < 0) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
ESX_VI_ERROR(conn, VIR_ERR_INTERNAL_ERROR, "XPath error");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
@ -1669,10 +1599,10 @@ esxVI_StartVirtualMachineTask(virConnectPtr conn, esxVI_Context *ctx,
|
|||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest,
|
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest, &remoteResponse,
|
||||||
&remoteResponse) < 0 ||
|
esxVI_Boolean_False) < 0 ||
|
||||||
esxVI_RemoteResponse_DeserializeXPathObjectAsManagedObjectReference
|
esxVI_ManagedObjectReference_Deserialize
|
||||||
(conn, remoteResponse, task, "Task") < 0) {
|
(conn, remoteResponse->node, task, "Task") < 0) {
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1789,8 +1719,8 @@ esxVI_SimpleVirtualMachineMethod(virConnectPtr conn, esxVI_Context *ctx,
|
|||||||
|
|
||||||
remoteRequest->request = virBufferContentAndReset(&buffer);
|
remoteRequest->request = virBufferContentAndReset(&buffer);
|
||||||
|
|
||||||
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest,
|
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest, &remoteResponse,
|
||||||
&remoteResponse) < 0) {
|
esxVI_Boolean_False) < 0) {
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,7 +105,8 @@ int esxVI_RemoteRequest_Alloc(virConnectPtr conn,
|
|||||||
void esxVI_RemoteRequest_Free(esxVI_RemoteRequest **remoteRequest);
|
void esxVI_RemoteRequest_Free(esxVI_RemoteRequest **remoteRequest);
|
||||||
int esxVI_RemoteRequest_Execute(virConnectPtr conn, esxVI_Context *ctx,
|
int esxVI_RemoteRequest_Execute(virConnectPtr conn, esxVI_Context *ctx,
|
||||||
esxVI_RemoteRequest *remoteRequest,
|
esxVI_RemoteRequest *remoteRequest,
|
||||||
esxVI_RemoteResponse **remoteResponse);
|
esxVI_RemoteResponse **remoteResponse,
|
||||||
|
esxVI_Boolean expectList);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -118,30 +119,12 @@ struct _esxVI_RemoteResponse {
|
|||||||
char *response; /* required */
|
char *response; /* required */
|
||||||
xmlDocPtr document; /* optional */
|
xmlDocPtr document; /* optional */
|
||||||
xmlXPathContextPtr xpathContext; /* optional */
|
xmlXPathContextPtr xpathContext; /* optional */
|
||||||
xmlXPathObjectPtr xpathObject; /* optional */
|
xmlNodePtr node; /* optional, list */
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef int (*esxVI_RemoteResponse_DeserializeFunc) (virConnectPtr conn,
|
|
||||||
xmlNodePtr node,
|
|
||||||
void **item);
|
|
||||||
typedef int (*esxVI_RemoteResponse_DeserializeListFunc) (virConnectPtr conn,
|
|
||||||
xmlNodePtr node,
|
|
||||||
esxVI_List **list);
|
|
||||||
|
|
||||||
int esxVI_RemoteResponse_Alloc(virConnectPtr conn,
|
int esxVI_RemoteResponse_Alloc(virConnectPtr conn,
|
||||||
esxVI_RemoteResponse **remoteResponse);
|
esxVI_RemoteResponse **remoteResponse);
|
||||||
void esxVI_RemoteResponse_Free(esxVI_RemoteResponse **remoteResponse);
|
void esxVI_RemoteResponse_Free(esxVI_RemoteResponse **remoteResponse);
|
||||||
int esxVI_RemoteResponse_DeserializeXPathObject
|
|
||||||
(virConnectPtr conn, esxVI_RemoteResponse *remoteResponse,
|
|
||||||
esxVI_RemoteResponse_DeserializeFunc deserializeFunc, void **item);
|
|
||||||
int esxVI_RemoteResponse_DeserializeXPathObjectList
|
|
||||||
(virConnectPtr conn, esxVI_RemoteResponse *remoteResponse,
|
|
||||||
esxVI_RemoteResponse_DeserializeListFunc deserializeListFunc,
|
|
||||||
esxVI_List **list);
|
|
||||||
int esxVI_RemoteResponse_DeserializeXPathObjectAsManagedObjectReference
|
|
||||||
(virConnectPtr conn, esxVI_RemoteResponse *remoteResponse,
|
|
||||||
esxVI_ManagedObjectReference **managedObjectReference,
|
|
||||||
const char *expectedType);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -91,13 +91,10 @@ esxVI_RetrieveServiceContent(virConnectPtr conn, esxVI_Context *ctx,
|
|||||||
remoteRequest->xpathExpression =
|
remoteRequest->xpathExpression =
|
||||||
ESX_VI__SOAP__RESPONSE_XPATH("RetrieveServiceContent");
|
ESX_VI__SOAP__RESPONSE_XPATH("RetrieveServiceContent");
|
||||||
|
|
||||||
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest,
|
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest, &remoteResponse,
|
||||||
&remoteResponse) < 0 ||
|
esxVI_Boolean_False) < 0 ||
|
||||||
esxVI_RemoteResponse_DeserializeXPathObject
|
esxVI_ServiceContent_Deserialize(conn, remoteResponse->node,
|
||||||
(conn, remoteResponse,
|
serviceContent) < 0) {
|
||||||
(esxVI_RemoteResponse_DeserializeFunc)
|
|
||||||
esxVI_ServiceContent_Deserialize,
|
|
||||||
(void **)serviceContent) < 0) {
|
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -170,13 +167,10 @@ esxVI_Login(virConnectPtr conn, esxVI_Context *ctx,
|
|||||||
remoteRequest->request = virBufferContentAndReset(&buffer);
|
remoteRequest->request = virBufferContentAndReset(&buffer);
|
||||||
remoteRequest->xpathExpression = ESX_VI__SOAP__RESPONSE_XPATH("Login");
|
remoteRequest->xpathExpression = ESX_VI__SOAP__RESPONSE_XPATH("Login");
|
||||||
|
|
||||||
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest,
|
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest, &remoteResponse,
|
||||||
&remoteResponse) < 0 ||
|
esxVI_Boolean_False) < 0 ||
|
||||||
esxVI_RemoteResponse_DeserializeXPathObject
|
esxVI_UserSession_Deserialize(conn, remoteResponse->node,
|
||||||
(conn, remoteResponse,
|
userSession) < 0) {
|
||||||
(esxVI_RemoteResponse_DeserializeFunc)
|
|
||||||
esxVI_UserSession_Deserialize,
|
|
||||||
(void **)userSession) < 0) {
|
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -238,8 +232,8 @@ esxVI_Logout(virConnectPtr conn, esxVI_Context *ctx)
|
|||||||
|
|
||||||
remoteRequest->request = virBufferContentAndReset(&buffer);
|
remoteRequest->request = virBufferContentAndReset(&buffer);
|
||||||
|
|
||||||
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest,
|
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest, &remoteResponse,
|
||||||
&remoteResponse) < 0) {
|
esxVI_Boolean_False) < 0) {
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -306,17 +300,9 @@ esxVI_SessionIsActive(virConnectPtr conn, esxVI_Context *ctx,
|
|||||||
remoteRequest->xpathExpression =
|
remoteRequest->xpathExpression =
|
||||||
ESX_VI__SOAP__RESPONSE_XPATH("SessionIsActive");
|
ESX_VI__SOAP__RESPONSE_XPATH("SessionIsActive");
|
||||||
|
|
||||||
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest,
|
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest, &remoteResponse,
|
||||||
&remoteResponse) < 0 ||
|
esxVI_Boolean_False) < 0 ||
|
||||||
esxVI_RemoteResponse_DeserializeXPathObject
|
esxVI_Boolean_Deserialize(conn, remoteResponse->node, active) < 0) {
|
||||||
(conn, remoteResponse,
|
|
||||||
/*
|
|
||||||
* FIXME: esxVI_Boolean_Deserialize expects *boolean,
|
|
||||||
* esxVI_RemoteResponse_DeserializeFunc expects void **,
|
|
||||||
* passing *boolean casted to void * to it
|
|
||||||
*/
|
|
||||||
(esxVI_RemoteResponse_DeserializeFunc)esxVI_Boolean_Deserialize,
|
|
||||||
(void *)active) < 0) {
|
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -390,13 +376,10 @@ esxVI_RetrieveProperties(virConnectPtr conn, esxVI_Context *ctx,
|
|||||||
remoteRequest->xpathExpression =
|
remoteRequest->xpathExpression =
|
||||||
ESX_VI__SOAP__RESPONSE_XPATH("RetrieveProperties");
|
ESX_VI__SOAP__RESPONSE_XPATH("RetrieveProperties");
|
||||||
|
|
||||||
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest,
|
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest, &remoteResponse,
|
||||||
&remoteResponse) < 0 ||
|
esxVI_Boolean_True) < 0 ||
|
||||||
esxVI_RemoteResponse_DeserializeXPathObjectList
|
esxVI_ObjectContent_DeserializeList(conn, remoteResponse->node,
|
||||||
(conn, remoteResponse,
|
objectContentList) < 0) {
|
||||||
(esxVI_RemoteResponse_DeserializeListFunc)
|
|
||||||
esxVI_ObjectContent_DeserializeList,
|
|
||||||
(esxVI_List **)objectContentList) < 0) {
|
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -625,10 +608,10 @@ esxVI_CreateFilter(virConnectPtr conn, esxVI_Context *ctx,
|
|||||||
remoteRequest->xpathExpression =
|
remoteRequest->xpathExpression =
|
||||||
ESX_VI__SOAP__RESPONSE_XPATH("CreateFilter");
|
ESX_VI__SOAP__RESPONSE_XPATH("CreateFilter");
|
||||||
|
|
||||||
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest,
|
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest, &remoteResponse,
|
||||||
&remoteResponse) < 0 ||
|
esxVI_Boolean_False) < 0 ||
|
||||||
esxVI_RemoteResponse_DeserializeXPathObjectAsManagedObjectReference
|
esxVI_ManagedObjectReference_Deserialize
|
||||||
(conn, remoteResponse, propertyFilter, "PropertyFilter") < 0) {
|
(conn, remoteResponse->node, propertyFilter, "PropertyFilter") < 0) {
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -690,8 +673,8 @@ esxVI_DestroyPropertyFilter(virConnectPtr conn, esxVI_Context *ctx,
|
|||||||
|
|
||||||
remoteRequest->request = virBufferContentAndReset(&buffer);
|
remoteRequest->request = virBufferContentAndReset(&buffer);
|
||||||
|
|
||||||
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest,
|
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest, &remoteResponse,
|
||||||
&remoteResponse) < 0) {
|
esxVI_Boolean_False) < 0) {
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -755,12 +738,10 @@ esxVI_WaitForUpdates(virConnectPtr conn, esxVI_Context *ctx,
|
|||||||
remoteRequest->xpathExpression =
|
remoteRequest->xpathExpression =
|
||||||
ESX_VI__SOAP__RESPONSE_XPATH("WaitForUpdates");
|
ESX_VI__SOAP__RESPONSE_XPATH("WaitForUpdates");
|
||||||
|
|
||||||
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest,
|
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest, &remoteResponse,
|
||||||
&remoteResponse) < 0 ||
|
esxVI_Boolean_False) < 0 ||
|
||||||
esxVI_RemoteResponse_DeserializeXPathObject
|
esxVI_UpdateSet_Deserialize(conn, remoteResponse->node,
|
||||||
(conn, remoteResponse,
|
updateSet) < 0) {
|
||||||
(esxVI_RemoteResponse_DeserializeFunc)esxVI_UpdateSet_Deserialize,
|
|
||||||
(void **)updateSet) < 0) {
|
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -870,13 +851,10 @@ esxVI_ValidateMigration(virConnectPtr conn, esxVI_Context *ctx,
|
|||||||
remoteRequest->xpathExpression =
|
remoteRequest->xpathExpression =
|
||||||
ESX_VI__SOAP__RESPONSE_XPATH("ValidateMigration");
|
ESX_VI__SOAP__RESPONSE_XPATH("ValidateMigration");
|
||||||
|
|
||||||
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest,
|
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest, &remoteResponse,
|
||||||
&remoteResponse) < 0 ||
|
esxVI_Boolean_True) < 0 ||
|
||||||
esxVI_RemoteResponse_DeserializeXPathObjectList
|
esxVI_Event_DeserializeList(conn, remoteResponse->node,
|
||||||
(conn, remoteResponse,
|
eventList) < 0) {
|
||||||
(esxVI_RemoteResponse_DeserializeListFunc)
|
|
||||||
esxVI_Event_DeserializeList,
|
|
||||||
(esxVI_List **)eventList) < 0) {
|
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -954,10 +932,10 @@ esxVI_FindByIp(virConnectPtr conn, esxVI_Context *ctx,
|
|||||||
remoteRequest->xpathExpression =
|
remoteRequest->xpathExpression =
|
||||||
ESX_VI__SOAP__RESPONSE_XPATH("FindByIp");
|
ESX_VI__SOAP__RESPONSE_XPATH("FindByIp");
|
||||||
|
|
||||||
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest,
|
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest, &remoteResponse,
|
||||||
&remoteResponse) < 0 ||
|
esxVI_Boolean_False) < 0 ||
|
||||||
esxVI_RemoteResponse_DeserializeXPathObjectAsManagedObjectReference
|
esxVI_ManagedObjectReference_Deserialize
|
||||||
(conn, remoteResponse, managedObjectReference,
|
(conn, remoteResponse->node, managedObjectReference,
|
||||||
vmSearch == esxVI_Boolean_True ? "VirtualMachine"
|
vmSearch == esxVI_Boolean_True ? "VirtualMachine"
|
||||||
: "HostSystem") < 0) {
|
: "HostSystem") < 0) {
|
||||||
goto failure;
|
goto failure;
|
||||||
@ -1040,10 +1018,10 @@ esxVI_FindByUuid(virConnectPtr conn, esxVI_Context *ctx,
|
|||||||
remoteRequest->xpathExpression =
|
remoteRequest->xpathExpression =
|
||||||
ESX_VI__SOAP__RESPONSE_XPATH("FindByUuid");
|
ESX_VI__SOAP__RESPONSE_XPATH("FindByUuid");
|
||||||
|
|
||||||
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest,
|
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest, &remoteResponse,
|
||||||
&remoteResponse) < 0 ||
|
esxVI_Boolean_False) < 0 ||
|
||||||
esxVI_RemoteResponse_DeserializeXPathObjectAsManagedObjectReference
|
esxVI_ManagedObjectReference_Deserialize
|
||||||
(conn, remoteResponse, managedObjectReference,
|
(conn, remoteResponse->node, managedObjectReference,
|
||||||
vmSearch == esxVI_Boolean_True ? "VirtualMachine"
|
vmSearch == esxVI_Boolean_True ? "VirtualMachine"
|
||||||
: "HostSystem") < 0) {
|
: "HostSystem") < 0) {
|
||||||
goto failure;
|
goto failure;
|
||||||
@ -1126,13 +1104,10 @@ esxVI_QueryAvailablePerfMetric(virConnectPtr conn, esxVI_Context *ctx,
|
|||||||
remoteRequest->xpathExpression =
|
remoteRequest->xpathExpression =
|
||||||
ESX_VI__SOAP__RESPONSE_XPATH("QueryAvailablePerfMetric");
|
ESX_VI__SOAP__RESPONSE_XPATH("QueryAvailablePerfMetric");
|
||||||
|
|
||||||
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest,
|
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest, &remoteResponse,
|
||||||
&remoteResponse) < 0 ||
|
esxVI_Boolean_True) < 0 ||
|
||||||
esxVI_RemoteResponse_DeserializeXPathObjectList
|
esxVI_PerfMetricId_DeserializeList(conn, remoteResponse->node,
|
||||||
(conn, remoteResponse,
|
perfMetricIdList) < 0) {
|
||||||
(esxVI_RemoteResponse_DeserializeListFunc)
|
|
||||||
esxVI_PerfMetricId_DeserializeList,
|
|
||||||
(esxVI_List **)perfMetricIdList) < 0) {
|
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1204,13 +1179,10 @@ esxVI_QueryPerfCounter(virConnectPtr conn, esxVI_Context *ctx,
|
|||||||
remoteRequest->xpathExpression =
|
remoteRequest->xpathExpression =
|
||||||
ESX_VI__SOAP__RESPONSE_XPATH("QueryPerfCounter");
|
ESX_VI__SOAP__RESPONSE_XPATH("QueryPerfCounter");
|
||||||
|
|
||||||
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest,
|
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest, &remoteResponse,
|
||||||
&remoteResponse) < 0 ||
|
esxVI_Boolean_True) < 0 ||
|
||||||
esxVI_RemoteResponse_DeserializeXPathObjectList
|
esxVI_PerfCounterInfo_DeserializeList(conn, remoteResponse->node,
|
||||||
(conn, remoteResponse,
|
perfCounterInfoList) < 0) {
|
||||||
(esxVI_RemoteResponse_DeserializeListFunc)
|
|
||||||
esxVI_PerfCounterInfo_DeserializeList,
|
|
||||||
(esxVI_List **)perfCounterInfoList) < 0) {
|
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1282,13 +1254,10 @@ esxVI_QueryPerf(virConnectPtr conn, esxVI_Context *ctx,
|
|||||||
remoteRequest->request = virBufferContentAndReset(&buffer);
|
remoteRequest->request = virBufferContentAndReset(&buffer);
|
||||||
remoteRequest->xpathExpression = ESX_VI__SOAP__RESPONSE_XPATH("QueryPerf");
|
remoteRequest->xpathExpression = ESX_VI__SOAP__RESPONSE_XPATH("QueryPerf");
|
||||||
|
|
||||||
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest,
|
if (esxVI_RemoteRequest_Execute(conn, ctx, remoteRequest, &remoteResponse,
|
||||||
&remoteResponse) < 0 ||
|
esxVI_Boolean_True) < 0 ||
|
||||||
esxVI_RemoteResponse_DeserializeXPathObjectList
|
esxVI_PerfEntityMetric_DeserializeList(conn, remoteResponse->node,
|
||||||
(conn, remoteResponse,
|
perfEntityMetricList) < 0) {
|
||||||
(esxVI_RemoteResponse_DeserializeListFunc)
|
|
||||||
esxVI_PerfEntityMetric_DeserializeList,
|
|
||||||
(esxVI_List **)perfEntityMetricList) < 0) {
|
|
||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user