Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
1e93e37b
L
libvirt
项目概览
openeuler
/
libvirt
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
libvirt
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
1e93e37b
编写于
11月 22, 2009
作者:
M
Matthias Bolte
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
esx: Use occurrence enum to specify expected result of a SOAP call
Also move XPath expression composition into esxVI_Context_Execute().
上级
cf54204e
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
133 addition
and
110 deletion
+133
-110
src/esx/esx_vi.c
src/esx/esx_vi.c
+97
-58
src/esx/esx_vi.h
src/esx/esx_vi.h
+4
-4
src/esx/esx_vi_methods.c
src/esx/esx_vi_methods.c
+32
-48
未找到文件。
src/esx/esx_vi.c
浏览文件 @
1e93e37b
...
...
@@ -514,7 +514,7 @@ esxVI_Context_DownloadFile(virConnectPtr conn, esxVI_Context *ctx,
goto
failure
;
}
else
if
(
responseCode
!=
200
)
{
ESX_VI_ERROR
(
conn
,
VIR_ERR_INTERNAL_ERROR
,
"HTTP response code %d
while trying to download
'%s'"
,
"HTTP response code %d
for download from
'%s'"
,
responseCode
,
url
);
goto
failure
;
}
...
...
@@ -560,7 +560,7 @@ esxVI_Context_UploadFile(virConnectPtr conn, esxVI_Context *ctx,
return
-
1
;
}
else
if
(
responseCode
!=
200
&&
responseCode
!=
201
)
{
ESX_VI_ERROR
(
conn
,
VIR_ERR_INTERNAL_ERROR
,
"HTTP response code %d
while trying to
upload to '%s'"
,
"HTTP response code %d
for
upload to '%s'"
,
responseCode
,
url
);
return
-
1
;
}
...
...
@@ -570,11 +570,15 @@ esxVI_Context_UploadFile(virConnectPtr conn, esxVI_Context *ctx,
int
esxVI_Context_Execute
(
virConnectPtr
conn
,
esxVI_Context
*
ctx
,
const
char
*
request
,
const
char
*
xpathExpression
,
esxVI_Response
**
response
,
esxVI_
Boolean
expectList
)
const
char
*
methodName
,
const
char
*
request
,
esxVI_Response
**
response
,
esxVI_
Occurrence
occurrence
)
{
int
result
=
0
;
virBuffer
buffer
=
VIR_BUFFER_INITIALIZER
;
esxVI_Fault
*
fault
=
NULL
;
char
*
xpathExpression
=
NULL
;
xmlXPathContextPtr
xpathContext
=
NULL
;
xmlNodePtr
responseNode
=
NULL
;
if
(
request
==
NULL
||
response
==
NULL
||
*
response
!=
NULL
)
{
ESX_VI_ERROR
(
conn
,
VIR_ERR_INTERNAL_ERROR
,
"Invalid argument"
);
...
...
@@ -608,108 +612,146 @@ esxVI_Context_Execute(virConnectPtr conn, esxVI_Context *ctx,
(
*
response
)
->
content
=
virBufferContentAndReset
(
&
buffer
);
if
((
*
response
)
->
responseCode
==
500
||
(
xpathExpression
!=
NULL
&&
(
*
response
)
->
responseCode
==
200
))
{
if
((
*
response
)
->
responseCode
==
500
||
(
*
response
)
->
responseCode
==
200
)
{
(
*
response
)
->
document
=
xmlReadDoc
(
BAD_CAST
(
*
response
)
->
content
,
""
,
NULL
,
XML_PARSE_NONET
);
if
((
*
response
)
->
document
==
NULL
)
{
ESX_VI_ERROR
(
conn
,
VIR_ERR_INTERNAL_ERROR
,
"Could not parse XML response"
);
"Response for call to '%s' could not be parsed"
,
methodName
);
goto
failure
;
}
if
(
xmlDocGetRootElement
((
*
response
)
->
document
)
==
NULL
)
{
ESX_VI_ERROR
(
conn
,
VIR_ERR_INTERNAL_ERROR
,
"XML response is an empty document"
);
"Response for call to '%s' is an empty XML document"
,
methodName
);
goto
failure
;
}
(
*
response
)
->
xpathContext
=
xmlXPathNewContext
((
*
response
)
->
document
);
xpathContext
=
xmlXPathNewContext
((
*
response
)
->
document
);
if
(
(
*
response
)
->
xpathContext
==
NULL
)
{
if
(
xpathContext
==
NULL
)
{
ESX_VI_ERROR
(
conn
,
VIR_ERR_INTERNAL_ERROR
,
"Could not create XPath context"
);
goto
failure
;
}
xmlXPathRegisterNs
(
(
*
response
)
->
xpathContext
,
BAD_CAST
"soapenv"
,
xmlXPathRegisterNs
(
xpathContext
,
BAD_CAST
"soapenv"
,
BAD_CAST
"http://schemas.xmlsoap.org/soap/envelope/"
);
xmlXPathRegisterNs
((
*
response
)
->
xpathContext
,
BAD_CAST
"vim"
,
BAD_CAST
"urn:vim25"
);
xmlXPathRegisterNs
(
xpathContext
,
BAD_CAST
"vim"
,
BAD_CAST
"urn:vim25"
);
if
((
*
response
)
->
responseCode
==
500
)
{
(
*
response
)
->
node
=
virXPathNode
(
conn
,
"/soapenv:Envelope/soapenv:Body/soapenv:Fault"
,
(
*
response
)
->
xpathContext
);
xpathContext
);
if
((
*
response
)
->
node
==
NULL
)
{
ESX_VI_ERROR
(
conn
,
VIR_ERR_INTERNAL_ERROR
,
"HTTP response code %d
. VI Fault is unknown,
"
"XPath evaluation failed"
,
(
int
)(
*
response
)
->
responseCod
e
);
"HTTP response code %d
for call to '%s'.
"
"
Fault is unknown,
XPath evaluation failed"
,
(
*
response
)
->
responseCode
,
methodNam
e
);
goto
failure
;
}
if
(
esxVI_Fault_Deserialize
(
conn
,
(
*
response
)
->
node
,
&
fault
)
<
0
)
{
ESX_VI_ERROR
(
conn
,
VIR_ERR_INTERNAL_ERROR
,
"HTTP response code %d
. VI Fault is unknown,
"
"deserialization failed"
,
(
int
)(
*
response
)
->
responseCod
e
);
"HTTP response code %d
for call to '%s'.
"
"
Fault is unknown,
deserialization failed"
,
(
*
response
)
->
responseCode
,
methodNam
e
);
goto
failure
;
}
ESX_VI_ERROR
(
conn
,
VIR_ERR_INTERNAL_ERROR
,
"HTTP response code %d. VI Fault: %s - %s"
,
(
int
)(
*
response
)
->
responseCode
,
fault
->
faultcode
,
fault
->
faultstring
);
"HTTP response code %d for call to '%s'. "
"Fault: %s - %s"
,
(
*
response
)
->
responseCode
,
methodName
,
fault
->
faultcode
,
fault
->
faultstring
);
goto
failure
;
}
else
if
(
expectList
==
esxVI_Boolean_True
)
{
xmlNodePtr
*
nodeSet
=
NULL
;
int
nodeSet_size
;
}
else
{
if
(
virAsprintf
(
&
xpathExpression
,
"/soapenv:Envelope/soapenv:Body/vim:%sResponse"
,
methodName
)
<
0
)
{
virReportOOMError
(
conn
);
goto
failure
;
}
nodeSet_size
=
virXPathNodeSet
(
conn
,
xpathExpression
,
(
*
response
)
->
xpathContext
,
&
nodeSet
);
responseNode
=
virXPathNode
(
conn
,
xpathExpression
,
xpathContext
);
if
(
nodeSet_size
<
0
)
{
if
(
responseNode
==
NULL
)
{
ESX_VI_ERROR
(
conn
,
VIR_ERR_INTERNAL_ERROR
,
"XPath evaluation of
'%s' failed"
,
xpathExpression
);
"XPath evaluation of
response for call to '%s' "
"failed"
,
methodName
);
goto
failure
;
}
else
if
(
nodeSet_size
==
0
)
{
(
*
response
)
->
node
=
NULL
;
}
else
{
(
*
response
)
->
node
=
nodeSet
[
0
];
}
VIR_FREE
(
nodeSet
);
}
else
{
(
*
response
)
->
node
=
virXPathNode
(
conn
,
xpathExpression
,
(
*
response
)
->
xpathContext
);
xpathContext
->
node
=
responseNode
;
(
*
response
)
->
node
=
virXPathNode
(
conn
,
"./vim:returnval"
,
xpathContext
);
if
((
*
response
)
->
node
==
NULL
)
{
switch
(
occurrence
)
{
case
esxVI_Occurrence_RequiredItem
:
if
((
*
response
)
->
node
==
NULL
)
{
ESX_VI_ERROR
(
conn
,
VIR_ERR_INTERNAL_ERROR
,
"Call to '%s' returned an empty result, "
"expecting a non-empty result"
,
methodName
);
goto
failure
;
}
break
;
case
esxVI_Occurrence_OptionalItem
:
if
((
*
response
)
->
node
!=
NULL
&&
(
*
response
)
->
node
->
next
!=
NULL
)
{
ESX_VI_ERROR
(
conn
,
VIR_ERR_INTERNAL_ERROR
,
"Call to '%s' returned a list, expecting "
"exactly one item"
,
methodName
);
goto
failure
;
}
break
;
case
esxVI_Occurrence_List
:
/* Any amount of items is valid */
break
;
case
esxVI_Occurrence_None
:
if
((
*
response
)
->
node
!=
NULL
)
{
ESX_VI_ERROR
(
conn
,
VIR_ERR_INTERNAL_ERROR
,
"Call to '%s' returned something, expecting "
"an empty result"
,
methodName
);
goto
failure
;
}
break
;
default:
ESX_VI_ERROR
(
conn
,
VIR_ERR_INTERNAL_ERROR
,
"XPath evaluation of '%s' failed"
,
xpathExpression
);
"Invalid argument (occurrence)"
);
goto
failure
;
}
}
}
else
if
((
*
response
)
->
responseCode
!=
200
)
{
}
else
{
ESX_VI_ERROR
(
conn
,
VIR_ERR_INTERNAL_ERROR
,
"HTTP response code %d"
,
(
*
response
)
->
responseCode
);
"HTTP response code %d for call to '%s'"
,
(
*
response
)
->
responseCode
,
methodName
);
goto
failure
;
}
return
0
;
cleanup:
VIR_FREE
(
xpathExpression
);
xmlXPathFreeContext
(
xpathContext
);
return
result
;
failure:
virBufferFreeAndReset
(
&
buffer
);
esxVI_Response_Free
(
response
);
esxVI_Fault_Free
(
&
fault
);
return
-
1
;
result
=
-
1
;
goto
cleanup
;
}
...
...
@@ -726,8 +768,6 @@ ESX_VI__TEMPLATE__FREE(Response,
{
VIR_FREE
(
item
->
content
);
xmlXPathFreeContext
(
item
->
xpathContext
);
if
(
item
->
document
!=
NULL
)
{
xmlFreeDoc
(
item
->
document
);
}
...
...
@@ -2229,24 +2269,23 @@ esxVI_StartVirtualMachineTask(virConnectPtr conn, esxVI_Context *ctx,
esxVI_ManagedObjectReference
**
task
)
{
int
result
=
0
;
char
*
xpathExpression
=
NULL
;
char
*
methodName
=
NULL
;
esxVI_Response
*
response
=
NULL
;
if
(
virAsprintf
(
&
xpathExpression
,
ESX_VI__SOAP__RESPONSE_XPATH
(
"%s_Task"
),
name
)
<
0
)
{
if
(
virAsprintf
(
&
methodName
,
"%s_Task"
,
name
)
<
0
)
{
virReportOOMError
(
conn
);
goto
failure
;
}
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
request
,
xpathExpression
,
&
response
,
esxVI_
Boolean_False
)
<
0
||
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
methodName
,
request
,
&
response
,
esxVI_
Occurrence_RequiredItem
)
<
0
||
esxVI_ManagedObjectReference_Deserialize
(
conn
,
response
->
node
,
task
,
"Task"
)
<
0
)
{
goto
failure
;
}
cleanup:
VIR_FREE
(
xpathExpression
);
VIR_FREE
(
methodName
);
esxVI_Response_Free
(
&
response
);
return
result
;
...
...
@@ -2349,8 +2388,8 @@ esxVI_SimpleVirtualMachineMethod(virConnectPtr conn, esxVI_Context *ctx,
request
=
virBufferContentAndReset
(
&
buffer
);
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
request
,
NULL
,
&
response
,
esxVI_
Boolean_Fals
e
)
<
0
)
{
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
name
,
request
,
&
response
,
esxVI_
Occurrence_Non
e
)
<
0
)
{
goto
failure
;
}
...
...
src/esx/esx_vi.h
浏览文件 @
1e93e37b
...
...
@@ -62,7 +62,8 @@ enum _esxVI_Occurrence {
esxVI_Occurrence_Undefined
=
0
,
esxVI_Occurrence_RequiredItem
,
esxVI_Occurrence_OptionalItem
,
esxVI_Occurrence_List
esxVI_Occurrence_List
,
esxVI_Occurrence_None
};
...
...
@@ -100,8 +101,8 @@ int esxVI_Context_DownloadFile(virConnectPtr conn, esxVI_Context *ctx,
int
esxVI_Context_UploadFile
(
virConnectPtr
conn
,
esxVI_Context
*
ctx
,
const
char
*
url
,
const
char
*
content
);
int
esxVI_Context_Execute
(
virConnectPtr
conn
,
esxVI_Context
*
ctx
,
const
char
*
request
,
const
char
*
xpathExpression
,
esxVI_Response
**
response
,
esxVI_
Boolean
expectList
);
const
char
*
methodName
,
const
char
*
request
,
esxVI_Response
**
response
,
esxVI_
Occurrence
occurrence
);
...
...
@@ -113,7 +114,6 @@ struct _esxVI_Response {
int
responseCode
;
/* required */
char
*
content
;
/* required */
xmlDocPtr
document
;
/* optional */
xmlXPathContextPtr
xpathContext
;
/* optional */
xmlNodePtr
node
;
/* optional, list */
};
...
...
src/esx/esx_vi_methods.c
浏览文件 @
1e93e37b
...
...
@@ -49,9 +49,6 @@
"</soapenv:Body>" \
"</soapenv:Envelope>"
#define ESX_VI__SOAP__RESPONSE_XPATH(_type) \
"/soapenv:Envelope/soapenv:Body/vim:"_type"Response/vim:returnval"
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
...
...
@@ -79,9 +76,8 @@ esxVI_RetrieveServiceContent(virConnectPtr conn, esxVI_Context *ctx,
return
-
1
;
}
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
request
,
ESX_VI__SOAP__RESPONSE_XPATH
(
"RetrieveServiceContent"
),
&
response
,
esxVI_Boolean_False
)
<
0
||
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
"RetrieveServiceContent"
,
request
,
&
response
,
esxVI_Occurrence_RequiredItem
)
<
0
||
esxVI_ServiceContent_Deserialize
(
conn
,
response
->
node
,
serviceContent
)
<
0
)
{
goto
failure
;
...
...
@@ -144,9 +140,8 @@ esxVI_Login(virConnectPtr conn, esxVI_Context *ctx,
request
=
virBufferContentAndReset
(
&
buffer
);
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
request
,
ESX_VI__SOAP__RESPONSE_XPATH
(
"Login"
),
&
response
,
esxVI_Boolean_False
)
<
0
||
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
"Login"
,
request
,
&
response
,
esxVI_Occurrence_RequiredItem
)
<
0
||
esxVI_UserSession_Deserialize
(
conn
,
response
->
node
,
userSession
)
<
0
)
{
goto
failure
;
}
...
...
@@ -200,8 +195,8 @@ esxVI_Logout(virConnectPtr conn, esxVI_Context *ctx)
request
=
virBufferContentAndReset
(
&
buffer
);
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
request
,
NULL
,
&
response
,
esxVI_
Boolean_Fals
e
)
<
0
)
{
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
"Logout"
,
request
,
&
response
,
esxVI_
Occurrence_Non
e
)
<
0
)
{
goto
failure
;
}
...
...
@@ -265,9 +260,8 @@ esxVI_SessionIsActive(virConnectPtr conn, esxVI_Context *ctx,
request
=
virBufferContentAndReset
(
&
buffer
);
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
request
,
ESX_VI__SOAP__RESPONSE_XPATH
(
"SessionIsActive"
),
&
response
,
esxVI_Boolean_False
)
<
0
||
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
"SessionIsActive"
,
request
,
&
response
,
esxVI_Occurrence_RequiredItem
)
<
0
||
esxVI_Boolean_Deserialize
(
conn
,
response
->
node
,
active
)
<
0
)
{
goto
failure
;
}
...
...
@@ -331,9 +325,8 @@ esxVI_RetrieveProperties(virConnectPtr conn, esxVI_Context *ctx,
request
=
virBufferContentAndReset
(
&
buffer
);
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
request
,
ESX_VI__SOAP__RESPONSE_XPATH
(
"RetrieveProperties"
),
&
response
,
esxVI_Boolean_True
)
<
0
||
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
"RetrieveProperties"
,
request
,
&
response
,
esxVI_Occurrence_List
)
<
0
||
esxVI_ObjectContent_DeserializeList
(
conn
,
response
->
node
,
objectContentList
)
<
0
)
{
goto
failure
;
...
...
@@ -608,8 +601,8 @@ esxVI_CancelTask(virConnectPtr conn, esxVI_Context *ctx,
request
=
virBufferContentAndReset
(
&
buffer
);
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
request
,
NULL
,
&
response
,
esxVI_
Boolean_Fals
e
)
<
0
)
{
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
"UnregisterVM"
,
request
,
&
response
,
esxVI_
Occurrence_Non
e
)
<
0
)
{
goto
failure
;
}
...
...
@@ -659,8 +652,8 @@ esxVI_UnregisterVM(virConnectPtr conn, esxVI_Context *ctx,
request
=
virBufferContentAndReset
(
&
buffer
);
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
request
,
NULL
,
&
response
,
esxVI_
Boolean_Fals
e
)
<
0
)
{
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
"AnswerVM"
,
request
,
&
response
,
esxVI_
Occurrence_Non
e
)
<
0
)
{
goto
failure
;
}
...
...
@@ -781,9 +774,8 @@ esxVI_CreateFilter(virConnectPtr conn, esxVI_Context *ctx,
request
=
virBufferContentAndReset
(
&
buffer
);
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
request
,
ESX_VI__SOAP__RESPONSE_XPATH
(
"CreateFilter"
),
&
response
,
esxVI_Boolean_False
)
<
0
||
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
"CreateFilter"
,
request
,
&
response
,
esxVI_Occurrence_RequiredItem
)
<
0
||
esxVI_ManagedObjectReference_Deserialize
(
conn
,
response
->
node
,
propertyFilter
,
"PropertyFilter"
)
<
0
)
{
...
...
@@ -839,8 +831,8 @@ esxVI_DestroyPropertyFilter(virConnectPtr conn, esxVI_Context *ctx,
request
=
virBufferContentAndReset
(
&
buffer
);
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
request
,
NULL
,
&
response
,
esxVI_Boolean_Fals
e
)
<
0
)
{
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
"DestroyPropertyFilter"
,
request
,
&
response
,
esxVI_Occurrence_Non
e
)
<
0
)
{
goto
failure
;
}
...
...
@@ -901,9 +893,8 @@ esxVI_WaitForUpdates(virConnectPtr conn, esxVI_Context *ctx,
request
=
virBufferContentAndReset
(
&
buffer
);
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
request
,
ESX_VI__SOAP__RESPONSE_XPATH
(
"WaitForUpdates"
),
&
response
,
esxVI_Boolean_False
)
<
0
||
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
"WaitForUpdates"
,
request
,
&
response
,
esxVI_Occurrence_RequiredItem
)
<
0
||
esxVI_UpdateSet_Deserialize
(
conn
,
response
->
node
,
updateSet
)
<
0
)
{
goto
failure
;
}
...
...
@@ -1003,9 +994,8 @@ esxVI_ValidateMigration(virConnectPtr conn, esxVI_Context *ctx,
request
=
virBufferContentAndReset
(
&
buffer
);
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
request
,
ESX_VI__SOAP__RESPONSE_XPATH
(
"ValidateMigration"
),
&
response
,
esxVI_Boolean_True
)
<
0
||
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
"ValidateMigration"
,
request
,
&
response
,
esxVI_Occurrence_List
)
<
0
||
esxVI_Event_DeserializeList
(
conn
,
response
->
node
,
eventList
)
<
0
)
{
goto
failure
;
}
...
...
@@ -1073,9 +1063,8 @@ esxVI_FindByIp(virConnectPtr conn, esxVI_Context *ctx,
request
=
virBufferContentAndReset
(
&
buffer
);
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
request
,
ESX_VI__SOAP__RESPONSE_XPATH
(
"FindByIp"
),
&
response
,
esxVI_Boolean_False
)
<
0
||
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
"FindByIp"
,
request
,
&
response
,
esxVI_Occurrence_OptionalItem
)
<
0
||
esxVI_ManagedObjectReference_Deserialize
(
conn
,
response
->
node
,
managedObjectReference
,
vmSearch
==
esxVI_Boolean_True
?
"VirtualMachine"
...
...
@@ -1149,10 +1138,8 @@ esxVI_FindByUuid(virConnectPtr conn, esxVI_Context *ctx,
request
=
virBufferContentAndReset
(
&
buffer
);
/* FIXME: Use esxVI_Occurrence instead of expectList */
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
request
,
ESX_VI__SOAP__RESPONSE_XPATH
(
"FindByUuid"
),
&
response
,
esxVI_Boolean_True
)
<
0
)
{
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
"FindByUuid"
,
request
,
&
response
,
esxVI_Occurrence_OptionalItem
)
<
0
)
{
goto
failure
;
}
...
...
@@ -1233,9 +1220,8 @@ esxVI_QueryAvailablePerfMetric(virConnectPtr conn, esxVI_Context *ctx,
request
=
virBufferContentAndReset
(
&
buffer
);
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
request
,
ESX_VI__SOAP__RESPONSE_XPATH
(
"QueryAvailablePerfMetric"
),
&
response
,
esxVI_Boolean_True
)
<
0
||
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
"QueryAvailablePerfMetric"
,
request
,
&
response
,
esxVI_Occurrence_List
)
<
0
||
esxVI_PerfMetricId_DeserializeList
(
conn
,
response
->
node
,
perfMetricIdList
)
<
0
)
{
goto
failure
;
...
...
@@ -1298,9 +1284,8 @@ esxVI_QueryPerfCounter(virConnectPtr conn, esxVI_Context *ctx,
request
=
virBufferContentAndReset
(
&
buffer
);
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
request
,
ESX_VI__SOAP__RESPONSE_XPATH
(
"QueryPerfCounter"
),
&
response
,
esxVI_Boolean_True
)
<
0
||
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
"QueryPerfCounter"
,
request
,
&
response
,
esxVI_Occurrence_List
)
<
0
||
esxVI_PerfCounterInfo_DeserializeList
(
conn
,
response
->
node
,
perfCounterInfoList
)
<
0
)
{
goto
failure
;
...
...
@@ -1363,9 +1348,8 @@ esxVI_QueryPerf(virConnectPtr conn, esxVI_Context *ctx,
request
=
virBufferContentAndReset
(
&
buffer
);
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
request
,
ESX_VI__SOAP__RESPONSE_XPATH
(
"QueryPerf"
),
&
response
,
esxVI_Boolean_True
)
<
0
||
if
(
esxVI_Context_Execute
(
conn
,
ctx
,
"QueryPerf"
,
request
,
&
response
,
esxVI_Occurrence_List
)
<
0
||
esxVI_PerfEntityMetric_DeserializeList
(
conn
,
response
->
node
,
perfEntityMetricList
)
<
0
)
{
goto
failure
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录