Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
247ad915
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,发现更多精彩内容 >>
提交
247ad915
编写于
11月 13, 2014
作者:
M
Martin Kletzander
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Remove unnecessary curly brackets in rest of src/esx/
Signed-off-by:
N
Martin Kletzander
<
mkletzan@redhat.com
>
上级
090cb1e6
变更
11
显示空白变更内容
内联
并排
Showing
11 changed file
with
198 addition
and
396 deletion
+198
-396
src/esx/esx_device_monitor.c
src/esx/esx_device_monitor.c
+1
-2
src/esx/esx_interface_driver.c
src/esx/esx_interface_driver.c
+4
-8
src/esx/esx_network_driver.c
src/esx/esx_network_driver.c
+19
-38
src/esx/esx_nwfilter_driver.c
src/esx/esx_nwfilter_driver.c
+1
-2
src/esx/esx_secret_driver.c
src/esx/esx_secret_driver.c
+1
-2
src/esx/esx_storage_backend_iscsi.c
src/esx/esx_storage_backend_iscsi.c
+15
-30
src/esx/esx_storage_backend_vmfs.c
src/esx/esx_storage_backend_vmfs.c
+17
-34
src/esx/esx_storage_driver.c
src/esx/esx_storage_driver.c
+27
-54
src/esx/esx_util.c
src/esx/esx_util.c
+15
-30
src/esx/esx_vi.c
src/esx/esx_vi.c
+83
-166
src/esx/esx_vi_types.c
src/esx/esx_vi_types.c
+15
-30
未找到文件。
src/esx/esx_device_monitor.c
浏览文件 @
247ad915
...
@@ -43,9 +43,8 @@ esxNodeDeviceOpen(virConnectPtr conn,
...
@@ -43,9 +43,8 @@ esxNodeDeviceOpen(virConnectPtr conn,
{
{
virCheckFlags
(
VIR_CONNECT_RO
,
VIR_DRV_OPEN_ERROR
);
virCheckFlags
(
VIR_CONNECT_RO
,
VIR_DRV_OPEN_ERROR
);
if
(
conn
->
driver
->
no
!=
VIR_DRV_ESX
)
{
if
(
conn
->
driver
->
no
!=
VIR_DRV_ESX
)
return
VIR_DRV_OPEN_DECLINED
;
return
VIR_DRV_OPEN_DECLINED
;
}
return
VIR_DRV_OPEN_SUCCESS
;
return
VIR_DRV_OPEN_SUCCESS
;
}
}
...
...
src/esx/esx_interface_driver.c
浏览文件 @
247ad915
...
@@ -46,9 +46,8 @@ esxInterfaceOpen(virConnectPtr conn,
...
@@ -46,9 +46,8 @@ esxInterfaceOpen(virConnectPtr conn,
{
{
virCheckFlags
(
VIR_CONNECT_RO
,
VIR_DRV_OPEN_ERROR
);
virCheckFlags
(
VIR_CONNECT_RO
,
VIR_DRV_OPEN_ERROR
);
if
(
conn
->
driver
->
no
!=
VIR_DRV_ESX
)
{
if
(
conn
->
driver
->
no
!=
VIR_DRV_ESX
)
return
VIR_DRV_OPEN_DECLINED
;
return
VIR_DRV_OPEN_DECLINED
;
}
return
VIR_DRV_OPEN_SUCCESS
;
return
VIR_DRV_OPEN_SUCCESS
;
}
}
...
@@ -98,9 +97,8 @@ esxConnectListInterfaces(virConnectPtr conn, char **const names, int maxnames)
...
@@ -98,9 +97,8 @@ esxConnectListInterfaces(virConnectPtr conn, char **const names, int maxnames)
int
count
=
0
;
int
count
=
0
;
size_t
i
;
size_t
i
;
if
(
maxnames
==
0
)
{
if
(
maxnames
==
0
)
return
0
;
return
0
;
}
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
||
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
||
esxVI_LookupPhysicalNicList
(
priv
->
primary
,
&
physicalNicList
)
<
0
)
{
esxVI_LookupPhysicalNicList
(
priv
->
primary
,
&
physicalNicList
)
<
0
)
{
...
@@ -119,9 +117,8 @@ esxConnectListInterfaces(virConnectPtr conn, char **const names, int maxnames)
...
@@ -119,9 +117,8 @@ esxConnectListInterfaces(virConnectPtr conn, char **const names, int maxnames)
cleanup:
cleanup:
if
(
!
success
)
{
if
(
!
success
)
{
for
(
i
=
0
;
i
<
count
;
++
i
)
{
for
(
i
=
0
;
i
<
count
;
++
i
)
VIR_FREE
(
names
[
i
]);
VIR_FREE
(
names
[
i
]);
}
count
=
-
1
;
count
=
-
1
;
}
}
...
@@ -234,9 +231,8 @@ esxInterfaceGetXMLDesc(virInterfacePtr iface, unsigned int flags)
...
@@ -234,9 +231,8 @@ esxInterfaceGetXMLDesc(virInterfacePtr iface, unsigned int flags)
if
(
physicalNic
->
spec
->
ip
)
{
if
(
physicalNic
->
spec
->
ip
)
{
protocol
.
family
=
(
char
*
)
"ipv4"
;
protocol
.
family
=
(
char
*
)
"ipv4"
;
if
(
physicalNic
->
spec
->
ip
->
dhcp
==
esxVI_Boolean_True
)
{
if
(
physicalNic
->
spec
->
ip
->
dhcp
==
esxVI_Boolean_True
)
protocol
.
dhcp
=
1
;
protocol
.
dhcp
=
1
;
}
if
(
physicalNic
->
spec
->
ip
->
ipAddress
&&
if
(
physicalNic
->
spec
->
ip
->
ipAddress
&&
physicalNic
->
spec
->
ip
->
subnetMask
&&
physicalNic
->
spec
->
ip
->
subnetMask
&&
...
...
src/esx/esx_network_driver.c
浏览文件 @
247ad915
...
@@ -52,9 +52,8 @@ esxNetworkOpen(virConnectPtr conn,
...
@@ -52,9 +52,8 @@ esxNetworkOpen(virConnectPtr conn,
{
{
virCheckFlags
(
VIR_CONNECT_RO
,
VIR_DRV_OPEN_ERROR
);
virCheckFlags
(
VIR_CONNECT_RO
,
VIR_DRV_OPEN_ERROR
);
if
(
conn
->
driver
->
no
!=
VIR_DRV_ESX
)
{
if
(
conn
->
driver
->
no
!=
VIR_DRV_ESX
)
return
VIR_DRV_OPEN_DECLINED
;
return
VIR_DRV_OPEN_DECLINED
;
}
return
VIR_DRV_OPEN_SUCCESS
;
return
VIR_DRV_OPEN_SUCCESS
;
}
}
...
@@ -105,9 +104,8 @@ esxConnectListNetworks(virConnectPtr conn, char **const names, int maxnames)
...
@@ -105,9 +104,8 @@ esxConnectListNetworks(virConnectPtr conn, char **const names, int maxnames)
int
count
=
0
;
int
count
=
0
;
size_t
i
;
size_t
i
;
if
(
maxnames
==
0
)
{
if
(
maxnames
==
0
)
return
0
;
return
0
;
}
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
||
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
||
esxVI_LookupHostVirtualSwitchList
(
priv
->
primary
,
esxVI_LookupHostVirtualSwitchList
(
priv
->
primary
,
...
@@ -127,9 +125,8 @@ esxConnectListNetworks(virConnectPtr conn, char **const names, int maxnames)
...
@@ -127,9 +125,8 @@ esxConnectListNetworks(virConnectPtr conn, char **const names, int maxnames)
cleanup:
cleanup:
if
(
!
success
)
{
if
(
!
success
)
{
for
(
i
=
0
;
i
<
count
;
++
i
)
{
for
(
i
=
0
;
i
<
count
;
++
i
)
VIR_FREE
(
names
[
i
]);
VIR_FREE
(
names
[
i
]);
}
count
=
-
1
;
count
=
-
1
;
}
}
...
@@ -181,10 +178,9 @@ esxNetworkLookupByUUID(virConnectPtr conn, const unsigned char *uuid)
...
@@ -181,10 +178,9 @@ esxNetworkLookupByUUID(virConnectPtr conn, const unsigned char *uuid)
hostVirtualSwitch
=
hostVirtualSwitch
->
_next
)
{
hostVirtualSwitch
=
hostVirtualSwitch
->
_next
)
{
md5_buffer
(
hostVirtualSwitch
->
key
,
strlen
(
hostVirtualSwitch
->
key
),
md5
);
md5_buffer
(
hostVirtualSwitch
->
key
,
strlen
(
hostVirtualSwitch
->
key
),
md5
);
if
(
memcmp
(
uuid
,
md5
,
VIR_UUID_BUFLEN
)
==
0
)
{
if
(
memcmp
(
uuid
,
md5
,
VIR_UUID_BUFLEN
)
==
0
)
break
;
break
;
}
}
}
if
(
!
hostVirtualSwitch
)
{
if
(
!
hostVirtualSwitch
)
{
virUUIDFormat
(
uuid
,
uuid_string
);
virUUIDFormat
(
uuid
,
uuid_string
);
...
@@ -265,34 +261,30 @@ esxBandwidthToShapingPolicy(virNetDevBandwidthPtr bandwidth,
...
@@ -265,34 +261,30 @@ esxBandwidthToShapingPolicy(virNetDevBandwidthPtr bandwidth,
return
0
;
return
0
;
}
}
if
(
esxVI_HostNetworkTrafficShapingPolicy_Alloc
(
shapingPolicy
)
<
0
)
{
if
(
esxVI_HostNetworkTrafficShapingPolicy_Alloc
(
shapingPolicy
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
(
*
shapingPolicy
)
->
enabled
=
esxVI_Boolean_True
;
(
*
shapingPolicy
)
->
enabled
=
esxVI_Boolean_True
;
if
(
bandwidth
->
in
->
average
>
0
)
{
if
(
bandwidth
->
in
->
average
>
0
)
{
if
(
esxVI_Long_Alloc
(
&
(
*
shapingPolicy
)
->
averageBandwidth
)
<
0
)
{
if
(
esxVI_Long_Alloc
(
&
(
*
shapingPolicy
)
->
averageBandwidth
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
/* Scale kilobytes per second to bits per second */
/* Scale kilobytes per second to bits per second */
(
*
shapingPolicy
)
->
averageBandwidth
->
value
=
bandwidth
->
in
->
average
*
8
*
1000
;
(
*
shapingPolicy
)
->
averageBandwidth
->
value
=
bandwidth
->
in
->
average
*
8
*
1000
;
}
}
if
(
bandwidth
->
in
->
peak
>
0
)
{
if
(
bandwidth
->
in
->
peak
>
0
)
{
if
(
esxVI_Long_Alloc
(
&
(
*
shapingPolicy
)
->
peakBandwidth
)
<
0
)
{
if
(
esxVI_Long_Alloc
(
&
(
*
shapingPolicy
)
->
peakBandwidth
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
/* Scale kilobytes per second to bits per second */
/* Scale kilobytes per second to bits per second */
(
*
shapingPolicy
)
->
peakBandwidth
->
value
=
bandwidth
->
in
->
peak
*
8
*
1000
;
(
*
shapingPolicy
)
->
peakBandwidth
->
value
=
bandwidth
->
in
->
peak
*
8
*
1000
;
}
}
if
(
bandwidth
->
in
->
burst
>
0
)
{
if
(
bandwidth
->
in
->
burst
>
0
)
{
if
(
esxVI_Long_Alloc
(
&
(
*
shapingPolicy
)
->
burstSize
)
<
0
)
{
if
(
esxVI_Long_Alloc
(
&
(
*
shapingPolicy
)
->
burstSize
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
/* Scale kilobytes to bytes */
/* Scale kilobytes to bytes */
(
*
shapingPolicy
)
->
burstSize
->
value
=
bandwidth
->
in
->
burst
*
1024
;
(
*
shapingPolicy
)
->
burstSize
->
value
=
bandwidth
->
in
->
burst
*
1024
;
...
@@ -301,9 +293,8 @@ esxBandwidthToShapingPolicy(virNetDevBandwidthPtr bandwidth,
...
@@ -301,9 +293,8 @@ esxBandwidthToShapingPolicy(virNetDevBandwidthPtr bandwidth,
result
=
0
;
result
=
0
;
cleanup:
cleanup:
if
(
result
<
0
)
{
if
(
result
<
0
)
esxVI_HostNetworkTrafficShapingPolicy_Free
(
shapingPolicy
);
esxVI_HostNetworkTrafficShapingPolicy_Free
(
shapingPolicy
);
}
return
result
;
return
result
;
}
}
...
@@ -328,16 +319,14 @@ esxNetworkDefineXML(virConnectPtr conn, const char *xml)
...
@@ -328,16 +319,14 @@ esxNetworkDefineXML(virConnectPtr conn, const char *xml)
unsigned
char
md5
[
MD5_DIGEST_SIZE
];
/* MD5_DIGEST_SIZE = VIR_UUID_BUFLEN = 16 */
unsigned
char
md5
[
MD5_DIGEST_SIZE
];
/* MD5_DIGEST_SIZE = VIR_UUID_BUFLEN = 16 */
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
{
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
return
NULL
;
return
NULL
;
}
/* Parse network XML */
/* Parse network XML */
def
=
virNetworkDefParseString
(
xml
);
def
=
virNetworkDefParseString
(
xml
);
if
(
!
def
)
{
if
(
!
def
)
return
NULL
;
return
NULL
;
}
/* Check if an existing HostVirtualSwitch should be edited */
/* Check if an existing HostVirtualSwitch should be edited */
if
(
esxVI_LookupHostVirtualSwitchByName
(
priv
->
primary
,
def
->
name
,
if
(
esxVI_LookupHostVirtualSwitchByName
(
priv
->
primary
,
def
->
name
,
...
@@ -372,9 +361,8 @@ esxNetworkDefineXML(virConnectPtr conn, const char *xml)
...
@@ -372,9 +361,8 @@ esxNetworkDefineXML(virConnectPtr conn, const char *xml)
/* Verify that specified HostPortGroups don't exist already */
/* Verify that specified HostPortGroups don't exist already */
if
(
def
->
nPortGroups
>
0
)
{
if
(
def
->
nPortGroups
>
0
)
{
if
(
esxVI_LookupHostPortGroupList
(
priv
->
primary
,
&
hostPortGroupList
)
<
0
)
{
if
(
esxVI_LookupHostPortGroupList
(
priv
->
primary
,
&
hostPortGroupList
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
for
(
i
=
0
;
i
<
def
->
nPortGroups
;
++
i
)
{
for
(
i
=
0
;
i
<
def
->
nPortGroups
;
++
i
)
{
for
(
hostPortGroup
=
hostPortGroupList
;
hostPortGroup
;
for
(
hostPortGroup
=
hostPortGroupList
;
hostPortGroup
;
...
@@ -405,9 +393,8 @@ esxNetworkDefineXML(virConnectPtr conn, const char *xml)
...
@@ -405,9 +393,8 @@ esxNetworkDefineXML(virConnectPtr conn, const char *xml)
(
esxVI_HostVirtualSwitchBridge
*
)
hostVirtualSwitchBondBridge
;
(
esxVI_HostVirtualSwitchBridge
*
)
hostVirtualSwitchBondBridge
;
/* Lookup PhysicalNic list and match by name to get key */
/* Lookup PhysicalNic list and match by name to get key */
if
(
esxVI_LookupPhysicalNicList
(
priv
->
primary
,
&
physicalNicList
)
<
0
)
{
if
(
esxVI_LookupPhysicalNicList
(
priv
->
primary
,
&
physicalNicList
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
for
(
i
=
0
;
i
<
def
->
forward
.
nifs
;
++
i
)
{
for
(
i
=
0
;
i
<
def
->
forward
.
nifs
;
++
i
)
{
bool
found
=
false
;
bool
found
=
false
;
...
@@ -447,9 +434,8 @@ esxNetworkDefineXML(virConnectPtr conn, const char *xml)
...
@@ -447,9 +434,8 @@ esxNetworkDefineXML(virConnectPtr conn, const char *xml)
hostVirtualSwitchSpec
->
numPorts
->
value
=
128
;
hostVirtualSwitchSpec
->
numPorts
->
value
=
128
;
if
(
def
->
bandwidth
)
{
if
(
def
->
bandwidth
)
{
if
(
esxVI_HostNetworkPolicy_Alloc
(
&
hostVirtualSwitchSpec
->
policy
)
<
0
)
{
if
(
esxVI_HostNetworkPolicy_Alloc
(
&
hostVirtualSwitchSpec
->
policy
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
if
(
esxBandwidthToShapingPolicy
if
(
esxBandwidthToShapingPolicy
(
def
->
bandwidth
,
(
def
->
bandwidth
,
...
@@ -530,9 +516,8 @@ esxNetworkUndefine(virNetworkPtr network)
...
@@ -530,9 +516,8 @@ esxNetworkUndefine(virNetworkPtr network)
esxVI_HostPortGroup
*
hostPortGroup
=
NULL
;
esxVI_HostPortGroup
*
hostPortGroup
=
NULL
;
esxVI_HostPortGroupPort
*
hostPortGroupPort
=
NULL
;
esxVI_HostPortGroupPort
*
hostPortGroupPort
=
NULL
;
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
{
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
return
-
1
;
return
-
1
;
}
/* Lookup HostVirtualSwitch and HostPortGroup list*/
/* Lookup HostVirtualSwitch and HostPortGroup list*/
if
(
esxVI_LookupHostVirtualSwitchByName
(
priv
->
primary
,
network
->
name
,
if
(
esxVI_LookupHostVirtualSwitchByName
(
priv
->
primary
,
network
->
name
,
...
@@ -630,9 +615,8 @@ esxShapingPolicyToBandwidth(esxVI_HostNetworkTrafficShapingPolicy *shapingPolicy
...
@@ -630,9 +615,8 @@ esxShapingPolicyToBandwidth(esxVI_HostNetworkTrafficShapingPolicy *shapingPolicy
return
-
1
;
return
-
1
;
}
}
if
(
!
shapingPolicy
||
shapingPolicy
->
enabled
!=
esxVI_Boolean_True
)
{
if
(
!
shapingPolicy
||
shapingPolicy
->
enabled
!=
esxVI_Boolean_True
)
return
0
;
return
0
;
}
if
(
VIR_ALLOC
(
*
bandwidth
)
<
0
||
if
(
VIR_ALLOC
(
*
bandwidth
)
<
0
||
VIR_ALLOC
((
*
bandwidth
)
->
in
)
<
0
||
VIR_ALLOC
((
*
bandwidth
)
->
in
)
<
0
||
...
@@ -682,9 +666,8 @@ esxNetworkGetXMLDesc(virNetworkPtr network_, unsigned int flags)
...
@@ -682,9 +666,8 @@ esxNetworkGetXMLDesc(virNetworkPtr network_, unsigned int flags)
esxVI_String
*
networkName
=
NULL
;
esxVI_String
*
networkName
=
NULL
;
virNetworkDefPtr
def
;
virNetworkDefPtr
def
;
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
{
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
return
NULL
;
return
NULL
;
}
if
(
VIR_ALLOC
(
def
)
<
0
)
if
(
VIR_ALLOC
(
def
)
<
0
)
goto
cleanup
;
goto
cleanup
;
...
@@ -718,9 +701,8 @@ esxNetworkGetXMLDesc(virNetworkPtr network_, unsigned int flags)
...
@@ -718,9 +701,8 @@ esxNetworkGetXMLDesc(virNetworkPtr network_, unsigned int flags)
goto
cleanup
;
goto
cleanup
;
/* Find PhysicalNic by key */
/* Find PhysicalNic by key */
if
(
esxVI_LookupPhysicalNicList
(
priv
->
primary
,
&
physicalNicList
)
<
0
)
{
if
(
esxVI_LookupPhysicalNicList
(
priv
->
primary
,
&
physicalNicList
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
for
(
physicalNicKey
=
hostVirtualSwitch
->
pnic
;
for
(
physicalNicKey
=
hostVirtualSwitch
->
pnic
;
physicalNicKey
;
physicalNicKey
=
physicalNicKey
->
_next
)
{
physicalNicKey
;
physicalNicKey
=
physicalNicKey
->
_next
)
{
...
@@ -781,9 +763,8 @@ esxNetworkGetXMLDesc(virNetworkPtr network_, unsigned int flags)
...
@@ -781,9 +763,8 @@ esxNetworkGetXMLDesc(virNetworkPtr network_, unsigned int flags)
}
}
/* Find HostPortGroup by key */
/* Find HostPortGroup by key */
if
(
esxVI_LookupHostPortGroupList
(
priv
->
primary
,
&
hostPortGroupList
)
<
0
)
{
if
(
esxVI_LookupHostPortGroupList
(
priv
->
primary
,
&
hostPortGroupList
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
for
(
hostPortGroupKey
=
hostVirtualSwitch
->
portgroup
;
for
(
hostPortGroupKey
=
hostVirtualSwitch
->
portgroup
;
hostPortGroupKey
;
hostPortGroupKey
=
hostPortGroupKey
->
_next
)
{
hostPortGroupKey
;
hostPortGroupKey
=
hostPortGroupKey
->
_next
)
{
...
...
src/esx/esx_nwfilter_driver.c
浏览文件 @
247ad915
...
@@ -43,9 +43,8 @@ esxNWFilterOpen(virConnectPtr conn,
...
@@ -43,9 +43,8 @@ esxNWFilterOpen(virConnectPtr conn,
{
{
virCheckFlags
(
VIR_CONNECT_RO
,
VIR_DRV_OPEN_ERROR
);
virCheckFlags
(
VIR_CONNECT_RO
,
VIR_DRV_OPEN_ERROR
);
if
(
conn
->
driver
->
no
!=
VIR_DRV_ESX
)
{
if
(
conn
->
driver
->
no
!=
VIR_DRV_ESX
)
return
VIR_DRV_OPEN_DECLINED
;
return
VIR_DRV_OPEN_DECLINED
;
}
return
VIR_DRV_OPEN_SUCCESS
;
return
VIR_DRV_OPEN_SUCCESS
;
}
}
...
...
src/esx/esx_secret_driver.c
浏览文件 @
247ad915
...
@@ -41,9 +41,8 @@ esxSecretOpen(virConnectPtr conn, virConnectAuthPtr auth ATTRIBUTE_UNUSED,
...
@@ -41,9 +41,8 @@ esxSecretOpen(virConnectPtr conn, virConnectAuthPtr auth ATTRIBUTE_UNUSED,
{
{
virCheckFlags
(
VIR_CONNECT_RO
,
VIR_DRV_OPEN_ERROR
);
virCheckFlags
(
VIR_CONNECT_RO
,
VIR_DRV_OPEN_ERROR
);
if
(
conn
->
driver
->
no
!=
VIR_DRV_ESX
)
{
if
(
conn
->
driver
->
no
!=
VIR_DRV_ESX
)
return
VIR_DRV_OPEN_DECLINED
;
return
VIR_DRV_OPEN_DECLINED
;
}
return
VIR_DRV_OPEN_SUCCESS
;
return
VIR_DRV_OPEN_SUCCESS
;
}
}
...
...
src/esx/esx_storage_backend_iscsi.c
浏览文件 @
247ad915
...
@@ -104,9 +104,8 @@ esxConnectListStoragePools(virConnectPtr conn, char **const names,
...
@@ -104,9 +104,8 @@ esxConnectListStoragePools(virConnectPtr conn, char **const names,
esxVI_HostInternetScsiHbaStaticTarget
*
target
;
esxVI_HostInternetScsiHbaStaticTarget
*
target
;
size_t
i
;
size_t
i
;
if
(
maxnames
==
0
)
{
if
(
maxnames
==
0
)
return
0
;
return
0
;
}
if
(
esxVI_LookupHostInternetScsiHba
(
priv
->
primary
,
if
(
esxVI_LookupHostInternetScsiHba
(
priv
->
primary
,
&
hostInternetScsiHba
)
<
0
)
{
&
hostInternetScsiHba
)
<
0
)
{
...
@@ -140,10 +139,9 @@ esxConnectListStoragePools(virConnectPtr conn, char **const names,
...
@@ -140,10 +139,9 @@ esxConnectListStoragePools(virConnectPtr conn, char **const names,
cleanup:
cleanup:
if
(
!
success
)
{
if
(
!
success
)
{
for
(
i
=
0
;
i
<
count
;
++
i
)
{
for
(
i
=
0
;
i
<
count
;
++
i
)
VIR_FREE
(
names
[
i
]);
VIR_FREE
(
names
[
i
]);
}
}
}
esxVI_HostInternetScsiHba_Free
(
&
hostInternetScsiHba
);
esxVI_HostInternetScsiHba_Free
(
&
hostInternetScsiHba
);
...
@@ -222,10 +220,9 @@ esxStoragePoolLookupByUUID(virConnectPtr conn,
...
@@ -222,10 +220,9 @@ esxStoragePoolLookupByUUID(virConnectPtr conn,
target
;
target
=
target
->
_next
)
{
target
;
target
=
target
->
_next
)
{
md5_buffer
(
target
->
iScsiName
,
strlen
(
target
->
iScsiName
),
md5
);
md5_buffer
(
target
->
iScsiName
,
strlen
(
target
->
iScsiName
),
md5
);
if
(
memcmp
(
uuid
,
md5
,
VIR_UUID_STRING_BUFLEN
)
==
0
)
{
if
(
memcmp
(
uuid
,
md5
,
VIR_UUID_STRING_BUFLEN
)
==
0
)
break
;
break
;
}
}
}
if
(
!
target
)
{
if
(
!
target
)
{
/* pool not found, error handling done by the base driver */
/* pool not found, error handling done by the base driver */
...
@@ -304,16 +301,14 @@ esxStoragePoolGetXMLDesc(virStoragePoolPtr pool, unsigned int flags)
...
@@ -304,16 +301,14 @@ esxStoragePoolGetXMLDesc(virStoragePoolPtr pool, unsigned int flags)
memset
(
&
def
,
0
,
sizeof
(
def
));
memset
(
&
def
,
0
,
sizeof
(
def
));
if
(
esxVI_LookupHostInternetScsiHba
(
priv
->
primary
,
&
hostInternetScsiHba
))
{
if
(
esxVI_LookupHostInternetScsiHba
(
priv
->
primary
,
&
hostInternetScsiHba
))
goto
cleanup
;
goto
cleanup
;
}
for
(
target
=
hostInternetScsiHba
->
configuredStaticTarget
;
for
(
target
=
hostInternetScsiHba
->
configuredStaticTarget
;
target
;
target
=
target
->
_next
)
{
target
;
target
=
target
->
_next
)
{
if
(
STREQ
(
target
->
iScsiName
,
pool
->
name
))
{
if
(
STREQ
(
target
->
iScsiName
,
pool
->
name
))
break
;
break
;
}
}
}
if
(
!
target
)
{
if
(
!
target
)
{
/* pool not found */
/* pool not found */
...
@@ -338,9 +333,8 @@ esxStoragePoolGetXMLDesc(virStoragePoolPtr pool, unsigned int flags)
...
@@ -338,9 +333,8 @@ esxStoragePoolGetXMLDesc(virStoragePoolPtr pool, unsigned int flags)
def
.
source
.
hosts
[
0
].
name
=
target
->
address
;
def
.
source
.
hosts
[
0
].
name
=
target
->
address
;
if
(
target
->
port
)
{
if
(
target
->
port
)
def
.
source
.
hosts
[
0
].
port
=
target
->
port
->
value
;
def
.
source
.
hosts
[
0
].
port
=
target
->
port
->
value
;
}
/* TODO: add CHAP authentication params */
/* TODO: add CHAP authentication params */
xml
=
virStoragePoolDefFormat
(
&
def
);
xml
=
virStoragePoolDefFormat
(
&
def
);
...
@@ -403,9 +397,8 @@ esxStoragePoolListVolumes(virStoragePoolPtr pool, char **const names,
...
@@ -403,9 +397,8 @@ esxStoragePoolListVolumes(virStoragePoolPtr pool, char **const names,
return
0
;
return
0
;
}
}
if
(
esxVI_LookupScsiLunList
(
priv
->
primary
,
&
scsiLunList
)
<
0
)
{
if
(
esxVI_LookupScsiLunList
(
priv
->
primary
,
&
scsiLunList
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
for
(
scsiLun
=
scsiLunList
;
scsiLun
&&
count
<
maxnames
;
for
(
scsiLun
=
scsiLunList
;
scsiLun
&&
count
<
maxnames
;
scsiLun
=
scsiLun
->
_next
)
{
scsiLun
=
scsiLun
->
_next
)
{
...
@@ -425,9 +418,8 @@ esxStoragePoolListVolumes(virStoragePoolPtr pool, char **const names,
...
@@ -425,9 +418,8 @@ esxStoragePoolListVolumes(virStoragePoolPtr pool, char **const names,
cleanup:
cleanup:
if
(
!
success
)
{
if
(
!
success
)
{
for
(
i
=
0
;
i
<
count
;
++
i
)
{
for
(
i
=
0
;
i
<
count
;
++
i
)
VIR_FREE
(
names
[
i
]);
VIR_FREE
(
names
[
i
]);
}
count
=
-
1
;
count
=
-
1
;
}
}
...
@@ -452,9 +444,8 @@ esxStorageVolLookupByName(virStoragePoolPtr pool,
...
@@ -452,9 +444,8 @@ esxStorageVolLookupByName(virStoragePoolPtr pool,
unsigned
char
md5
[
MD5_DIGEST_SIZE
];
unsigned
char
md5
[
MD5_DIGEST_SIZE
];
char
uuid_string
[
VIR_UUID_STRING_BUFLEN
]
=
""
;
char
uuid_string
[
VIR_UUID_STRING_BUFLEN
]
=
""
;
if
(
esxVI_LookupScsiLunList
(
priv
->
primary
,
&
scsiLunList
)
<
0
)
{
if
(
esxVI_LookupScsiLunList
(
priv
->
primary
,
&
scsiLunList
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
for
(
scsiLun
=
scsiLunList
;
scsiLun
;
for
(
scsiLun
=
scsiLunList
;
scsiLun
;
scsiLun
=
scsiLun
->
_next
)
{
scsiLun
=
scsiLun
->
_next
)
{
...
@@ -500,9 +491,8 @@ esxStorageVolLookupByPath(virConnectPtr conn, const char *path)
...
@@ -500,9 +491,8 @@ esxStorageVolLookupByPath(virConnectPtr conn, const char *path)
unsigned
char
md5
[
MD5_DIGEST_SIZE
];
unsigned
char
md5
[
MD5_DIGEST_SIZE
];
char
uuid_string
[
VIR_UUID_STRING_BUFLEN
]
=
""
;
char
uuid_string
[
VIR_UUID_STRING_BUFLEN
]
=
""
;
if
(
esxVI_LookupScsiLunList
(
priv
->
primary
,
&
scsiLunList
)
<
0
)
{
if
(
esxVI_LookupScsiLunList
(
priv
->
primary
,
&
scsiLunList
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
for
(
scsiLun
=
scsiLunList
;
scsiLun
;
scsiLun
=
scsiLun
->
_next
)
{
for
(
scsiLun
=
scsiLunList
;
scsiLun
;
scsiLun
=
scsiLun
->
_next
)
{
hostScsiDisk
=
esxVI_HostScsiDisk_DynamicCast
(
scsiLun
);
hostScsiDisk
=
esxVI_HostScsiDisk_DynamicCast
(
scsiLun
);
...
@@ -548,13 +538,11 @@ esxStorageVolLookupByKey(virConnectPtr conn, const char *key)
...
@@ -548,13 +538,11 @@ esxStorageVolLookupByKey(virConnectPtr conn, const char *key)
char
uuid_string
[
VIR_UUID_STRING_BUFLEN
]
=
""
;
char
uuid_string
[
VIR_UUID_STRING_BUFLEN
]
=
""
;
/* key may be LUN device path */
/* key may be LUN device path */
if
(
STRPREFIX
(
key
,
"/"
))
{
if
(
STRPREFIX
(
key
,
"/"
))
return
esxStorageVolLookupByPath
(
conn
,
key
);
return
esxStorageVolLookupByPath
(
conn
,
key
);
}
if
(
esxVI_LookupScsiLunList
(
priv
->
primary
,
&
scsiLunList
)
<
0
)
{
if
(
esxVI_LookupScsiLunList
(
priv
->
primary
,
&
scsiLunList
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
for
(
scsiLun
=
scsiLunList
;
scsiLun
;
for
(
scsiLun
=
scsiLunList
;
scsiLun
;
scsiLun
=
scsiLun
->
_next
)
{
scsiLun
=
scsiLun
->
_next
)
{
...
@@ -631,9 +619,8 @@ esxStorageVolGetInfo(virStorageVolPtr volume,
...
@@ -631,9 +619,8 @@ esxStorageVolGetInfo(virStorageVolPtr volume,
esxVI_ScsiLun
*
scsiLun
;
esxVI_ScsiLun
*
scsiLun
;
esxVI_HostScsiDisk
*
hostScsiDisk
=
NULL
;
esxVI_HostScsiDisk
*
hostScsiDisk
=
NULL
;
if
(
esxVI_LookupScsiLunList
(
priv
->
primary
,
&
scsiLunList
)
<
0
)
{
if
(
esxVI_LookupScsiLunList
(
priv
->
primary
,
&
scsiLunList
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
for
(
scsiLun
=
scsiLunList
;
scsiLun
;
for
(
scsiLun
=
scsiLunList
;
scsiLun
;
scsiLun
=
scsiLun
->
_next
)
{
scsiLun
=
scsiLun
->
_next
)
{
...
@@ -687,9 +674,8 @@ esxStorageVolGetXMLDesc(virStorageVolPtr volume,
...
@@ -687,9 +674,8 @@ esxStorageVolGetXMLDesc(virStorageVolPtr volume,
memset
(
&
pool
,
0
,
sizeof
(
pool
));
memset
(
&
pool
,
0
,
sizeof
(
pool
));
memset
(
&
def
,
0
,
sizeof
(
def
));
memset
(
&
def
,
0
,
sizeof
(
def
));
if
(
esxVI_LookupScsiLunList
(
priv
->
primary
,
&
scsiLunList
)
<
0
)
{
if
(
esxVI_LookupScsiLunList
(
priv
->
primary
,
&
scsiLunList
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
for
(
scsiLun
=
scsiLunList
;
scsiLun
;
for
(
scsiLun
=
scsiLunList
;
scsiLun
;
scsiLun
=
scsiLun
->
_next
)
{
scsiLun
=
scsiLun
->
_next
)
{
...
@@ -715,9 +701,8 @@ esxStorageVolGetXMLDesc(virStorageVolPtr volume,
...
@@ -715,9 +701,8 @@ esxStorageVolGetXMLDesc(virStorageVolPtr volume,
virUUIDFormat
(
md5
,
uuid_string
);
virUUIDFormat
(
md5
,
uuid_string
);
if
(
VIR_STRDUP
(
def
.
key
,
uuid_string
)
<
0
)
{
if
(
VIR_STRDUP
(
def
.
key
,
uuid_string
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
/* iSCSI LUN exposes a block device */
/* iSCSI LUN exposes a block device */
def
.
type
=
VIR_STORAGE_VOL_BLOCK
;
def
.
type
=
VIR_STORAGE_VOL_BLOCK
;
...
...
src/esx/esx_storage_backend_vmfs.c
浏览文件 @
247ad915
...
@@ -120,9 +120,8 @@ esxConnectNumOfStoragePools(virConnectPtr conn)
...
@@ -120,9 +120,8 @@ esxConnectNumOfStoragePools(virConnectPtr conn)
esxVI_ObjectContent
*
datastoreList
=
NULL
;
esxVI_ObjectContent
*
datastoreList
=
NULL
;
esxVI_ObjectContent
*
datastore
=
NULL
;
esxVI_ObjectContent
*
datastore
=
NULL
;
if
(
esxVI_LookupDatastoreList
(
priv
->
primary
,
NULL
,
&
datastoreList
)
<
0
)
{
if
(
esxVI_LookupDatastoreList
(
priv
->
primary
,
NULL
,
&
datastoreList
)
<
0
)
return
-
1
;
return
-
1
;
}
for
(
datastore
=
datastoreList
;
datastore
;
for
(
datastore
=
datastoreList
;
datastore
;
datastore
=
datastore
->
_next
)
{
datastore
=
datastore
->
_next
)
{
...
@@ -149,9 +148,8 @@ esxConnectListStoragePools(virConnectPtr conn, char **const names,
...
@@ -149,9 +148,8 @@ esxConnectListStoragePools(virConnectPtr conn, char **const names,
int
count
=
0
;
int
count
=
0
;
size_t
i
;
size_t
i
;
if
(
maxnames
==
0
)
{
if
(
maxnames
==
0
)
return
0
;
return
0
;
}
if
(
esxVI_String_AppendValueToList
(
&
propertyNameList
,
if
(
esxVI_String_AppendValueToList
(
&
propertyNameList
,
"summary.name"
)
<
0
||
"summary.name"
)
<
0
||
...
@@ -185,9 +183,8 @@ esxConnectListStoragePools(virConnectPtr conn, char **const names,
...
@@ -185,9 +183,8 @@ esxConnectListStoragePools(virConnectPtr conn, char **const names,
cleanup:
cleanup:
if
(
!
success
)
{
if
(
!
success
)
{
for
(
i
=
0
;
i
<
count
;
++
i
)
{
for
(
i
=
0
;
i
<
count
;
++
i
)
VIR_FREE
(
names
[
i
]);
VIR_FREE
(
names
[
i
]);
}
count
=
-
1
;
count
=
-
1
;
}
}
...
@@ -295,10 +292,9 @@ esxStoragePoolLookupByUUID(virConnectPtr conn,
...
@@ -295,10 +292,9 @@ esxStoragePoolLookupByUUID(virConnectPtr conn,
md5_buffer
(
hostMount
->
mountInfo
->
path
,
md5_buffer
(
hostMount
->
mountInfo
->
path
,
strlen
(
hostMount
->
mountInfo
->
path
),
md5
);
strlen
(
hostMount
->
mountInfo
->
path
),
md5
);
if
(
memcmp
(
uuid
,
md5
,
VIR_UUID_BUFLEN
)
==
0
)
{
if
(
memcmp
(
uuid
,
md5
,
VIR_UUID_BUFLEN
)
==
0
)
break
;
break
;
}
}
}
if
(
!
datastore
)
{
if
(
!
datastore
)
{
/* Not found, let the base storage driver handle error reporting */
/* Not found, let the base storage driver handle error reporting */
...
@@ -580,9 +576,8 @@ esxStoragePoolListVolumes(virStoragePoolPtr pool, char **const names,
...
@@ -580,9 +576,8 @@ esxStoragePoolListVolumes(virStoragePoolPtr pool, char **const names,
return
-
1
;
return
-
1
;
}
}
if
(
maxnames
==
0
)
{
if
(
maxnames
==
0
)
return
0
;
return
0
;
}
if
(
esxVI_LookupDatastoreContentByDatastoreName
(
priv
->
primary
,
pool
->
name
,
if
(
esxVI_LookupDatastoreContentByDatastoreName
(
priv
->
primary
,
pool
->
name
,
&
searchResultsList
)
<
0
)
{
&
searchResultsList
)
<
0
)
{
...
@@ -626,9 +621,8 @@ esxStoragePoolListVolumes(virStoragePoolPtr pool, char **const names,
...
@@ -626,9 +621,8 @@ esxStoragePoolListVolumes(virStoragePoolPtr pool, char **const names,
cleanup:
cleanup:
if
(
!
success
)
{
if
(
!
success
)
{
for
(
i
=
0
;
i
<
count
;
++
i
)
{
for
(
i
=
0
;
i
<
count
;
++
i
)
VIR_FREE
(
names
[
i
]);
VIR_FREE
(
names
[
i
]);
}
count
=
-
1
;
count
=
-
1
;
}
}
...
@@ -807,9 +801,8 @@ esxStorageVolLookupByKey(virConnectPtr conn, const char *key)
...
@@ -807,9 +801,8 @@ esxStorageVolLookupByKey(virConnectPtr conn, const char *key)
goto
cleanup
;
goto
cleanup
;
}
}
if
(
esxUtil_ReformatUuid
(
uuid_string
,
key_candidate
)
<
0
)
{
if
(
esxUtil_ReformatUuid
(
uuid_string
,
key_candidate
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
if
(
STREQ
(
key
,
key_candidate
))
{
if
(
STREQ
(
key
,
key_candidate
))
{
/* Found matching UUID */
/* Found matching UUID */
...
@@ -873,9 +866,8 @@ esxStorageVolCreateXML(virStoragePoolPtr pool,
...
@@ -873,9 +866,8 @@ esxStorageVolCreateXML(virStoragePoolPtr pool,
/* Parse config */
/* Parse config */
def
=
virStorageVolDefParseString
(
&
poolDef
,
xmldesc
);
def
=
virStorageVolDefParseString
(
&
poolDef
,
xmldesc
);
if
(
!
def
)
{
if
(
!
def
)
goto
cleanup
;
goto
cleanup
;
}
if
(
def
->
type
!=
VIR_STORAGE_VOL_FILE
)
{
if
(
def
->
type
!=
VIR_STORAGE_VOL_FILE
)
{
virReportError
(
VIR_ERR_INTERNAL_ERROR
,
"%s"
,
virReportError
(
VIR_ERR_INTERNAL_ERROR
,
"%s"
,
...
@@ -914,16 +906,14 @@ esxStorageVolCreateXML(virStoragePoolPtr pool,
...
@@ -914,16 +906,14 @@ esxStorageVolCreateXML(virStoragePoolPtr pool,
directoryName
=
esxUtil_EscapeDatastoreItem
(
unescapedDirectoryName
);
directoryName
=
esxUtil_EscapeDatastoreItem
(
unescapedDirectoryName
);
if
(
!
directoryName
)
{
if
(
!
directoryName
)
goto
cleanup
;
goto
cleanup
;
}
fileName
=
esxUtil_EscapeDatastoreItem
(
unescapedDirectoryAndFileName
+
fileName
=
esxUtil_EscapeDatastoreItem
(
unescapedDirectoryAndFileName
+
strlen
(
unescapedDirectoryName
)
+
1
);
strlen
(
unescapedDirectoryName
)
+
1
);
if
(
!
fileName
)
{
if
(
!
fileName
)
goto
cleanup
;
goto
cleanup
;
}
if
(
virAsprintf
(
&
datastorePathWithoutFileName
,
"[%s] %s"
,
pool
->
name
,
if
(
virAsprintf
(
&
datastorePathWithoutFileName
,
"[%s] %s"
,
pool
->
name
,
directoryName
)
<
0
)
directoryName
)
<
0
)
...
@@ -1012,15 +1002,13 @@ esxStorageVolCreateXML(virStoragePoolPtr pool,
...
@@ -1012,15 +1002,13 @@ esxStorageVolCreateXML(virStoragePoolPtr pool,
goto
cleanup
;
goto
cleanup
;
}
}
if
(
esxUtil_ReformatUuid
(
uuid_string
,
key
)
<
0
)
{
if
(
esxUtil_ReformatUuid
(
uuid_string
,
key
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
}
else
{
}
else
{
/* Fall back to the path as key */
/* Fall back to the path as key */
if
(
VIR_STRDUP
(
key
,
datastorePath
)
<
0
)
{
if
(
VIR_STRDUP
(
key
,
datastorePath
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
}
}
}
else
{
}
else
{
virReportError
(
VIR_ERR_INTERNAL_ERROR
,
virReportError
(
VIR_ERR_INTERNAL_ERROR
,
_
(
"Creation of %s volumes is not supported"
),
_
(
"Creation of %s volumes is not supported"
),
...
@@ -1099,9 +1087,8 @@ esxStorageVolCreateXMLFrom(virStoragePoolPtr pool,
...
@@ -1099,9 +1087,8 @@ esxStorageVolCreateXMLFrom(virStoragePoolPtr pool,
/* Parse config */
/* Parse config */
def
=
virStorageVolDefParseString
(
&
poolDef
,
xmldesc
);
def
=
virStorageVolDefParseString
(
&
poolDef
,
xmldesc
);
if
(
!
def
)
{
if
(
!
def
)
goto
cleanup
;
goto
cleanup
;
}
if
(
def
->
type
!=
VIR_STORAGE_VOL_FILE
)
{
if
(
def
->
type
!=
VIR_STORAGE_VOL_FILE
)
{
virReportError
(
VIR_ERR_INTERNAL_ERROR
,
"%s"
,
virReportError
(
VIR_ERR_INTERNAL_ERROR
,
"%s"
,
...
@@ -1140,16 +1127,14 @@ esxStorageVolCreateXMLFrom(virStoragePoolPtr pool,
...
@@ -1140,16 +1127,14 @@ esxStorageVolCreateXMLFrom(virStoragePoolPtr pool,
directoryName
=
esxUtil_EscapeDatastoreItem
(
unescapedDirectoryName
);
directoryName
=
esxUtil_EscapeDatastoreItem
(
unescapedDirectoryName
);
if
(
!
directoryName
)
{
if
(
!
directoryName
)
goto
cleanup
;
goto
cleanup
;
}
fileName
=
esxUtil_EscapeDatastoreItem
(
unescapedDirectoryAndFileName
+
fileName
=
esxUtil_EscapeDatastoreItem
(
unescapedDirectoryAndFileName
+
strlen
(
unescapedDirectoryName
)
+
1
);
strlen
(
unescapedDirectoryName
)
+
1
);
if
(
!
fileName
)
{
if
(
!
fileName
)
goto
cleanup
;
goto
cleanup
;
}
if
(
virAsprintf
(
&
datastorePathWithoutFileName
,
"[%s] %s"
,
pool
->
name
,
if
(
virAsprintf
(
&
datastorePathWithoutFileName
,
"[%s] %s"
,
pool
->
name
,
directoryName
)
<
0
)
directoryName
)
<
0
)
...
@@ -1204,15 +1189,13 @@ esxStorageVolCreateXMLFrom(virStoragePoolPtr pool,
...
@@ -1204,15 +1189,13 @@ esxStorageVolCreateXMLFrom(virStoragePoolPtr pool,
goto
cleanup
;
goto
cleanup
;
}
}
if
(
esxUtil_ReformatUuid
(
uuid_string
,
key
)
<
0
)
{
if
(
esxUtil_ReformatUuid
(
uuid_string
,
key
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
}
else
{
}
else
{
/* Fall back to the path as key */
/* Fall back to the path as key */
if
(
VIR_STRDUP
(
key
,
datastorePath
)
<
0
)
{
if
(
VIR_STRDUP
(
key
,
datastorePath
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
}
}
}
else
{
}
else
{
virReportError
(
VIR_ERR_INTERNAL_ERROR
,
virReportError
(
VIR_ERR_INTERNAL_ERROR
,
_
(
"Creation of %s volumes is not supported"
),
_
(
"Creation of %s volumes is not supported"
),
...
...
src/esx/esx_storage_driver.c
浏览文件 @
247ad915
...
@@ -60,9 +60,8 @@ esxStorageOpen(virConnectPtr conn,
...
@@ -60,9 +60,8 @@ esxStorageOpen(virConnectPtr conn,
{
{
virCheckFlags
(
VIR_CONNECT_RO
,
VIR_DRV_OPEN_ERROR
);
virCheckFlags
(
VIR_CONNECT_RO
,
VIR_DRV_OPEN_ERROR
);
if
(
conn
->
driver
->
no
!=
VIR_DRV_ESX
)
{
if
(
conn
->
driver
->
no
!=
VIR_DRV_ESX
)
return
VIR_DRV_OPEN_DECLINED
;
return
VIR_DRV_OPEN_DECLINED
;
}
return
VIR_DRV_OPEN_SUCCESS
;
return
VIR_DRV_OPEN_SUCCESS
;
}
}
...
@@ -85,16 +84,14 @@ esxConnectNumOfStoragePools(virConnectPtr conn)
...
@@ -85,16 +84,14 @@ esxConnectNumOfStoragePools(virConnectPtr conn)
size_t
i
;
size_t
i
;
int
tmp
;
int
tmp
;
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
{
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
return
-
1
;
return
-
1
;
}
for
(
i
=
0
;
i
<
LAST_BACKEND
;
++
i
)
{
for
(
i
=
0
;
i
<
LAST_BACKEND
;
++
i
)
{
tmp
=
backends
[
i
]
->
connectNumOfStoragePools
(
conn
);
tmp
=
backends
[
i
]
->
connectNumOfStoragePools
(
conn
);
if
(
tmp
<
0
)
{
if
(
tmp
<
0
)
return
-
1
;
return
-
1
;
}
count
+=
tmp
;
count
+=
tmp
;
}
}
...
@@ -113,20 +110,17 @@ esxConnectListStoragePools(virConnectPtr conn, char **const names, int maxnames)
...
@@ -113,20 +110,17 @@ esxConnectListStoragePools(virConnectPtr conn, char **const names, int maxnames)
size_t
i
;
size_t
i
;
int
tmp
;
int
tmp
;
if
(
maxnames
==
0
)
{
if
(
maxnames
==
0
)
return
0
;
return
0
;
}
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
{
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
return
-
1
;
return
-
1
;
}
for
(
i
=
0
;
i
<
LAST_BACKEND
;
++
i
)
{
for
(
i
=
0
;
i
<
LAST_BACKEND
;
++
i
)
{
tmp
=
backends
[
i
]
->
connectListStoragePools
(
conn
,
&
names
[
count
],
maxnames
-
count
);
tmp
=
backends
[
i
]
->
connectListStoragePools
(
conn
,
&
names
[
count
],
maxnames
-
count
);
if
(
tmp
<
0
)
{
if
(
tmp
<
0
)
goto
cleanup
;
goto
cleanup
;
}
count
+=
tmp
;
count
+=
tmp
;
}
}
...
@@ -135,9 +129,8 @@ esxConnectListStoragePools(virConnectPtr conn, char **const names, int maxnames)
...
@@ -135,9 +129,8 @@ esxConnectListStoragePools(virConnectPtr conn, char **const names, int maxnames)
cleanup:
cleanup:
if
(
!
success
)
{
if
(
!
success
)
{
for
(
i
=
0
;
i
<
count
;
++
i
)
{
for
(
i
=
0
;
i
<
count
;
++
i
)
VIR_FREE
(
names
[
i
]);
VIR_FREE
(
names
[
i
]);
}
count
=
-
1
;
count
=
-
1
;
}
}
...
@@ -176,17 +169,15 @@ esxStoragePoolLookupByName(virConnectPtr conn, const char *name)
...
@@ -176,17 +169,15 @@ esxStoragePoolLookupByName(virConnectPtr conn, const char *name)
virCheckNonNullArgReturn
(
name
,
NULL
);
virCheckNonNullArgReturn
(
name
,
NULL
);
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
{
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
return
NULL
;
return
NULL
;
}
for
(
i
=
0
;
i
<
LAST_BACKEND
;
++
i
)
{
for
(
i
=
0
;
i
<
LAST_BACKEND
;
++
i
)
{
pool
=
backends
[
i
]
->
storagePoolLookupByName
(
conn
,
name
);
pool
=
backends
[
i
]
->
storagePoolLookupByName
(
conn
,
name
);
if
(
pool
)
{
if
(
pool
)
return
pool
;
return
pool
;
}
}
}
virReportError
(
VIR_ERR_NO_STORAGE_POOL
,
virReportError
(
VIR_ERR_NO_STORAGE_POOL
,
_
(
"Could not find storage pool with name '%s'"
),
name
);
_
(
"Could not find storage pool with name '%s'"
),
name
);
...
@@ -204,18 +195,16 @@ esxStoragePoolLookupByUUID(virConnectPtr conn, const unsigned char *uuid)
...
@@ -204,18 +195,16 @@ esxStoragePoolLookupByUUID(virConnectPtr conn, const unsigned char *uuid)
virStoragePoolPtr
pool
;
virStoragePoolPtr
pool
;
char
uuid_string
[
VIR_UUID_STRING_BUFLEN
]
=
""
;
char
uuid_string
[
VIR_UUID_STRING_BUFLEN
]
=
""
;
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
{
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
return
NULL
;
return
NULL
;
}
/* invoke backend drive method to search all known pools */
/* invoke backend drive method to search all known pools */
for
(
i
=
0
;
i
<
LAST_BACKEND
;
++
i
)
{
for
(
i
=
0
;
i
<
LAST_BACKEND
;
++
i
)
{
pool
=
backends
[
i
]
->
storagePoolLookupByUUID
(
conn
,
uuid
);
pool
=
backends
[
i
]
->
storagePoolLookupByUUID
(
conn
,
uuid
);
if
(
pool
)
{
if
(
pool
)
return
pool
;
return
pool
;
}
}
}
virUUIDFormat
(
uuid
,
uuid_string
);
virUUIDFormat
(
uuid
,
uuid_string
);
virReportError
(
VIR_ERR_NO_STORAGE_POOL
,
virReportError
(
VIR_ERR_NO_STORAGE_POOL
,
...
@@ -243,9 +232,8 @@ esxStoragePoolRefresh(virStoragePoolPtr pool, unsigned int flags)
...
@@ -243,9 +232,8 @@ esxStoragePoolRefresh(virStoragePoolPtr pool, unsigned int flags)
virCheckNonNullArgReturn
(
pool
->
privateData
,
-
1
);
virCheckNonNullArgReturn
(
pool
->
privateData
,
-
1
);
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
{
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
return
-
1
;
return
-
1
;
}
return
backend
->
storagePoolRefresh
(
pool
,
flags
);
return
backend
->
storagePoolRefresh
(
pool
,
flags
);
}
}
...
@@ -262,9 +250,8 @@ esxStoragePoolGetInfo(virStoragePoolPtr pool, virStoragePoolInfoPtr info)
...
@@ -262,9 +250,8 @@ esxStoragePoolGetInfo(virStoragePoolPtr pool, virStoragePoolInfoPtr info)
memset
(
info
,
0
,
sizeof
(
*
info
));
memset
(
info
,
0
,
sizeof
(
*
info
));
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
{
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
return
-
1
;
return
-
1
;
}
return
backend
->
storagePoolGetInfo
(
pool
,
info
);
return
backend
->
storagePoolGetInfo
(
pool
,
info
);
}
}
...
@@ -279,9 +266,8 @@ esxStoragePoolGetXMLDesc(virStoragePoolPtr pool, unsigned int flags)
...
@@ -279,9 +266,8 @@ esxStoragePoolGetXMLDesc(virStoragePoolPtr pool, unsigned int flags)
virCheckNonNullArgReturn
(
pool
->
privateData
,
NULL
);
virCheckNonNullArgReturn
(
pool
->
privateData
,
NULL
);
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
{
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
return
NULL
;
return
NULL
;
}
return
backend
->
storagePoolGetXMLDesc
(
pool
,
flags
);
return
backend
->
storagePoolGetXMLDesc
(
pool
,
flags
);
}
}
...
@@ -326,9 +312,8 @@ esxStoragePoolNumOfVolumes(virStoragePoolPtr pool)
...
@@ -326,9 +312,8 @@ esxStoragePoolNumOfVolumes(virStoragePoolPtr pool)
virCheckNonNullArgReturn
(
pool
->
privateData
,
-
1
);
virCheckNonNullArgReturn
(
pool
->
privateData
,
-
1
);
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
{
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
return
-
1
;
return
-
1
;
}
return
backend
->
storagePoolNumOfVolumes
(
pool
);
return
backend
->
storagePoolNumOfVolumes
(
pool
);
}
}
...
@@ -344,9 +329,8 @@ esxStoragePoolListVolumes(virStoragePoolPtr pool, char **const names,
...
@@ -344,9 +329,8 @@ esxStoragePoolListVolumes(virStoragePoolPtr pool, char **const names,
virCheckNonNullArgReturn
(
pool
->
privateData
,
-
1
);
virCheckNonNullArgReturn
(
pool
->
privateData
,
-
1
);
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
{
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
return
-
1
;
return
-
1
;
}
return
backend
->
storagePoolListVolumes
(
pool
,
names
,
maxnames
);
return
backend
->
storagePoolListVolumes
(
pool
,
names
,
maxnames
);
}
}
...
@@ -361,9 +345,8 @@ esxStorageVolLookupByName(virStoragePoolPtr pool, const char *name)
...
@@ -361,9 +345,8 @@ esxStorageVolLookupByName(virStoragePoolPtr pool, const char *name)
virCheckNonNullArgReturn
(
pool
->
privateData
,
NULL
);
virCheckNonNullArgReturn
(
pool
->
privateData
,
NULL
);
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
{
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
return
NULL
;
return
NULL
;
}
return
backend
->
storageVolLookupByName
(
pool
,
name
);
return
backend
->
storageVolLookupByName
(
pool
,
name
);
}
}
...
@@ -375,9 +358,8 @@ esxStorageVolLookupByPath(virConnectPtr conn, const char *path)
...
@@ -375,9 +358,8 @@ esxStorageVolLookupByPath(virConnectPtr conn, const char *path)
{
{
esxPrivate
*
priv
=
conn
->
privateData
;
esxPrivate
*
priv
=
conn
->
privateData
;
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
{
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
return
NULL
;
return
NULL
;
}
/*
/*
* FIXME: calling backends blindly may set unwanted error codes
* FIXME: calling backends blindly may set unwanted error codes
...
@@ -408,17 +390,15 @@ esxStorageVolLookupByKey(virConnectPtr conn, const char *key)
...
@@ -408,17 +390,15 @@ esxStorageVolLookupByKey(virConnectPtr conn, const char *key)
esxPrivate
*
priv
=
conn
->
privateData
;
esxPrivate
*
priv
=
conn
->
privateData
;
size_t
i
;
size_t
i
;
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
{
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
return
NULL
;
return
NULL
;
}
for
(
i
=
0
;
i
<
LAST_BACKEND
;
++
i
)
{
for
(
i
=
0
;
i
<
LAST_BACKEND
;
++
i
)
{
volume
=
backends
[
i
]
->
storageVolLookupByKey
(
conn
,
key
);
volume
=
backends
[
i
]
->
storageVolLookupByKey
(
conn
,
key
);
if
(
volume
)
{
if
(
volume
)
return
volume
;
return
volume
;
}
}
}
virReportError
(
VIR_ERR_NO_STORAGE_VOL
,
virReportError
(
VIR_ERR_NO_STORAGE_VOL
,
_
(
"Could not find storage volume with key '%s'"
),
_
(
"Could not find storage volume with key '%s'"
),
...
@@ -438,9 +418,8 @@ esxStorageVolCreateXML(virStoragePoolPtr pool, const char *xmldesc,
...
@@ -438,9 +418,8 @@ esxStorageVolCreateXML(virStoragePoolPtr pool, const char *xmldesc,
virCheckNonNullArgReturn
(
pool
->
privateData
,
NULL
);
virCheckNonNullArgReturn
(
pool
->
privateData
,
NULL
);
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
{
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
return
NULL
;
return
NULL
;
}
return
backend
->
storageVolCreateXML
(
pool
,
xmldesc
,
flags
);
return
backend
->
storageVolCreateXML
(
pool
,
xmldesc
,
flags
);
}
}
...
@@ -456,9 +435,8 @@ esxStorageVolCreateXMLFrom(virStoragePoolPtr pool, const char *xmldesc,
...
@@ -456,9 +435,8 @@ esxStorageVolCreateXMLFrom(virStoragePoolPtr pool, const char *xmldesc,
virCheckNonNullArgReturn
(
pool
->
privateData
,
NULL
);
virCheckNonNullArgReturn
(
pool
->
privateData
,
NULL
);
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
{
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
return
NULL
;
return
NULL
;
}
return
backend
->
storageVolCreateXMLFrom
(
pool
,
xmldesc
,
sourceVolume
,
flags
);
return
backend
->
storageVolCreateXMLFrom
(
pool
,
xmldesc
,
sourceVolume
,
flags
);
}
}
...
@@ -473,9 +451,8 @@ esxStorageVolDelete(virStorageVolPtr volume, unsigned int flags)
...
@@ -473,9 +451,8 @@ esxStorageVolDelete(virStorageVolPtr volume, unsigned int flags)
virCheckNonNullArgReturn
(
volume
->
privateData
,
-
1
);
virCheckNonNullArgReturn
(
volume
->
privateData
,
-
1
);
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
{
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
return
-
1
;
return
-
1
;
}
return
backend
->
storageVolDelete
(
volume
,
flags
);
return
backend
->
storageVolDelete
(
volume
,
flags
);
}
}
...
@@ -490,9 +467,8 @@ esxStorageVolWipe(virStorageVolPtr volume, unsigned int flags)
...
@@ -490,9 +467,8 @@ esxStorageVolWipe(virStorageVolPtr volume, unsigned int flags)
virCheckNonNullArgReturn
(
volume
->
privateData
,
-
1
);
virCheckNonNullArgReturn
(
volume
->
privateData
,
-
1
);
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
{
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
return
-
1
;
return
-
1
;
}
return
backend
->
storageVolWipe
(
volume
,
flags
);
return
backend
->
storageVolWipe
(
volume
,
flags
);
}
}
...
@@ -507,9 +483,8 @@ esxStorageVolGetInfo(virStorageVolPtr volume, virStorageVolInfoPtr info)
...
@@ -507,9 +483,8 @@ esxStorageVolGetInfo(virStorageVolPtr volume, virStorageVolInfoPtr info)
virCheckNonNullArgReturn
(
volume
->
privateData
,
-
1
);
virCheckNonNullArgReturn
(
volume
->
privateData
,
-
1
);
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
{
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
return
-
1
;
return
-
1
;
}
return
backend
->
storageVolGetInfo
(
volume
,
info
);
return
backend
->
storageVolGetInfo
(
volume
,
info
);
}
}
...
@@ -524,9 +499,8 @@ esxStorageVolGetXMLDesc(virStorageVolPtr volume, unsigned int flags)
...
@@ -524,9 +499,8 @@ esxStorageVolGetXMLDesc(virStorageVolPtr volume, unsigned int flags)
virCheckNonNullArgReturn
(
volume
->
privateData
,
NULL
);
virCheckNonNullArgReturn
(
volume
->
privateData
,
NULL
);
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
{
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
return
NULL
;
return
NULL
;
}
return
backend
->
storageVolGetXMLDesc
(
volume
,
flags
);
return
backend
->
storageVolGetXMLDesc
(
volume
,
flags
);
}
}
...
@@ -541,9 +515,8 @@ esxStorageVolGetPath(virStorageVolPtr volume)
...
@@ -541,9 +515,8 @@ esxStorageVolGetPath(virStorageVolPtr volume)
virCheckNonNullArgReturn
(
volume
->
privateData
,
NULL
);
virCheckNonNullArgReturn
(
volume
->
privateData
,
NULL
);
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
{
if
(
esxVI_EnsureSession
(
priv
->
primary
)
<
0
)
return
NULL
;
return
NULL
;
}
return
backend
->
storageVolGetPath
(
volume
);
return
backend
->
storageVolGetPath
(
volume
);
}
}
...
...
src/esx/esx_util.c
浏览文件 @
247ad915
...
@@ -166,9 +166,8 @@ esxUtil_ParseUri(esxUtil_ParsedUri **parsedUri, virURIPtr uri)
...
@@ -166,9 +166,8 @@ esxUtil_ParseUri(esxUtil_ParsedUri **parsedUri, virURIPtr uri)
result
=
0
;
result
=
0
;
cleanup:
cleanup:
if
(
result
<
0
)
{
if
(
result
<
0
)
esxUtil_FreeParsedUri
(
parsedUri
);
esxUtil_FreeParsedUri
(
parsedUri
);
}
return
result
;
return
result
;
}
}
...
@@ -179,9 +178,8 @@ esxUtil_ParseUri(esxUtil_ParsedUri **parsedUri, virURIPtr uri)
...
@@ -179,9 +178,8 @@ esxUtil_ParseUri(esxUtil_ParsedUri **parsedUri, virURIPtr uri)
void
void
esxUtil_FreeParsedUri
(
esxUtil_ParsedUri
**
parsedUri
)
esxUtil_FreeParsedUri
(
esxUtil_ParsedUri
**
parsedUri
)
{
{
if
(
!
parsedUri
||
!
(
*
parsedUri
))
{
if
(
!
parsedUri
||
!
(
*
parsedUri
))
return
;
return
;
}
VIR_FREE
((
*
parsedUri
)
->
transport
);
VIR_FREE
((
*
parsedUri
)
->
transport
);
VIR_FREE
((
*
parsedUri
)
->
vCenter
);
VIR_FREE
((
*
parsedUri
)
->
vCenter
);
...
@@ -197,19 +195,17 @@ int
...
@@ -197,19 +195,17 @@ int
esxUtil_ParseVirtualMachineIDString
(
const
char
*
id_string
,
int
*
id
)
esxUtil_ParseVirtualMachineIDString
(
const
char
*
id_string
,
int
*
id
)
{
{
/* Try to parse an integer from the complete string. */
/* Try to parse an integer from the complete string. */
if
(
virStrToLong_i
(
id_string
,
NULL
,
10
,
id
)
==
0
)
{
if
(
virStrToLong_i
(
id_string
,
NULL
,
10
,
id
)
==
0
)
return
0
;
return
0
;
}
/*
/*
* If that fails try to parse an integer from the string tail
* If that fails try to parse an integer from the string tail
* assuming the naming scheme Virtual Center seems to use.
* assuming the naming scheme Virtual Center seems to use.
*/
*/
if
(
STRPREFIX
(
id_string
,
"vm-"
))
{
if
(
STRPREFIX
(
id_string
,
"vm-"
))
{
if
(
virStrToLong_i
(
id_string
+
3
,
NULL
,
10
,
id
)
==
0
)
{
if
(
virStrToLong_i
(
id_string
+
3
,
NULL
,
10
,
id
)
==
0
)
return
0
;
return
0
;
}
}
}
return
-
1
;
return
-
1
;
}
}
...
@@ -234,9 +230,8 @@ esxUtil_ParseDatastorePath(const char *datastorePath, char **datastoreName,
...
@@ -234,9 +230,8 @@ esxUtil_ParseDatastorePath(const char *datastorePath, char **datastoreName,
return
-
1
;
return
-
1
;
}
}
if
(
VIR_STRDUP
(
copyOfDatastorePath
,
datastorePath
)
<
0
)
{
if
(
VIR_STRDUP
(
copyOfDatastorePath
,
datastorePath
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
/* Expected format: '[<datastore>] <path>' where <path> is optional */
/* Expected format: '[<datastore>] <path>' where <path> is optional */
if
(
!
(
tmp
=
STRSKIP
(
copyOfDatastorePath
,
"["
))
||
*
tmp
==
']'
||
if
(
!
(
tmp
=
STRSKIP
(
copyOfDatastorePath
,
"["
))
||
*
tmp
==
']'
||
...
@@ -270,31 +265,26 @@ esxUtil_ParseDatastorePath(const char *datastorePath, char **datastoreName,
...
@@ -270,31 +265,26 @@ esxUtil_ParseDatastorePath(const char *datastorePath, char **datastoreName,
/* Split <path> into <directory>/<file> and remove /<file> */
/* Split <path> into <directory>/<file> and remove /<file> */
tmp
=
strrchr
(
preliminaryDirectoryAndFileName
,
'/'
);
tmp
=
strrchr
(
preliminaryDirectoryAndFileName
,
'/'
);
if
(
tmp
)
{
if
(
tmp
)
*
tmp
=
'\0'
;
*
tmp
=
'\0'
;
}
if
(
VIR_STRDUP
(
*
directoryName
,
preliminaryDirectoryAndFileName
)
<
0
)
{
if
(
VIR_STRDUP
(
*
directoryName
,
preliminaryDirectoryAndFileName
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
}
}
result
=
0
;
result
=
0
;
cleanup:
cleanup:
if
(
result
<
0
)
{
if
(
result
<
0
)
{
if
(
datastoreName
)
{
if
(
datastoreName
)
VIR_FREE
(
*
datastoreName
);
VIR_FREE
(
*
datastoreName
);
}
if
(
directoryName
)
{
if
(
directoryName
)
VIR_FREE
(
*
directoryName
);
VIR_FREE
(
*
directoryName
);
}
if
(
directoryAndFileName
)
{
if
(
directoryAndFileName
)
VIR_FREE
(
*
directoryAndFileName
);
VIR_FREE
(
*
directoryAndFileName
);
}
}
}
VIR_FREE
(
copyOfDatastorePath
);
VIR_FREE
(
copyOfDatastorePath
);
...
@@ -408,22 +398,19 @@ esxUtil_EscapeBase64(const char *string)
...
@@ -408,22 +398,19 @@ esxUtil_EscapeBase64(const char *string)
virBufferAddChar
(
&
buffer
,
base64
[(
c1
>>
2
)
&
0x3f
]);
virBufferAddChar
(
&
buffer
,
base64
[(
c1
>>
2
)
&
0x3f
]);
virBufferAddChar
(
&
buffer
,
base64
[((
c1
<<
4
)
+
(
c2
>>
4
))
&
0x3f
]);
virBufferAddChar
(
&
buffer
,
base64
[((
c1
<<
4
)
+
(
c2
>>
4
))
&
0x3f
]);
if
(
length
>
1
)
{
if
(
length
>
1
)
virBufferAddChar
(
&
buffer
,
base64
[((
c2
<<
2
)
+
(
c3
>>
6
))
&
0x3f
]);
virBufferAddChar
(
&
buffer
,
base64
[((
c2
<<
2
)
+
(
c3
>>
6
))
&
0x3f
]);
}
if
(
length
>
2
)
{
if
(
length
>
2
)
virBufferAddChar
(
&
buffer
,
base64
[
c3
&
0x3f
]);
virBufferAddChar
(
&
buffer
,
base64
[
c3
&
0x3f
]);
}
length
-=
length
>
3
?
3
:
length
;
length
-=
length
>
3
?
3
:
length
;
}
}
if
(
*
tmp1
!=
'\0'
)
{
if
(
*
tmp1
!=
'\0'
)
virBufferAddChar
(
&
buffer
,
'-'
);
virBufferAddChar
(
&
buffer
,
'-'
);
}
}
}
}
}
if
(
virBufferCheckError
(
&
buffer
)
<
0
)
if
(
virBufferCheckError
(
&
buffer
)
<
0
)
return
NULL
;
return
NULL
;
...
@@ -450,10 +437,9 @@ esxUtil_ReplaceSpecialWindowsPathChars(char *string)
...
@@ -450,10 +437,9 @@ esxUtil_ReplaceSpecialWindowsPathChars(char *string)
--
length
;
--
length
;
}
}
if
(
*
tmp
!=
'\0'
)
{
if
(
*
tmp
!=
'\0'
)
++
tmp
;
++
tmp
;
}
}
}
}
}
...
@@ -472,9 +458,8 @@ esxUtil_EscapeDatastoreItem(const char *string)
...
@@ -472,9 +458,8 @@ esxUtil_EscapeDatastoreItem(const char *string)
escaped1
=
virVMXEscapeHexPercent
(
replaced
);
escaped1
=
virVMXEscapeHexPercent
(
replaced
);
if
(
!
escaped1
)
{
if
(
!
escaped1
)
goto
cleanup
;
goto
cleanup
;
}
escaped2
=
esxUtil_EscapeBase64
(
escaped1
);
escaped2
=
esxUtil_EscapeBase64
(
escaped1
);
...
...
src/esx/esx_vi.c
浏览文件 @
247ad915
...
@@ -98,26 +98,22 @@ ESX_VI__TEMPLATE__FREE(CURL,
...
@@ -98,26 +98,22 @@ ESX_VI__TEMPLATE__FREE(CURL,
if
(
shared
)
{
if
(
shared
)
{
esxVI_SharedCURL_Remove
(
shared
,
item
);
esxVI_SharedCURL_Remove
(
shared
,
item
);
if
(
shared
->
count
==
0
)
{
if
(
shared
->
count
==
0
)
esxVI_SharedCURL_Free
(
&
shared
);
esxVI_SharedCURL_Free
(
&
shared
);
}
}
}
if
(
multi
)
{
if
(
multi
)
{
esxVI_MultiCURL_Remove
(
multi
,
item
);
esxVI_MultiCURL_Remove
(
multi
,
item
);
if
(
multi
->
count
==
0
)
{
if
(
multi
->
count
==
0
)
esxVI_MultiCURL_Free
(
&
multi
);
esxVI_MultiCURL_Free
(
&
multi
);
}
}
}
if
(
item
->
handle
)
{
if
(
item
->
handle
)
curl_easy_cleanup
(
item
->
handle
);
curl_easy_cleanup
(
item
->
handle
);
}
if
(
item
->
headers
)
{
if
(
item
->
headers
)
curl_slist_free_all
(
item
->
headers
);
curl_slist_free_all
(
item
->
headers
);
}
virMutexDestroy
(
&
item
->
lock
);
virMutexDestroy
(
&
item
->
lock
);
})
})
...
@@ -129,19 +125,16 @@ esxVI_CURL_ReadString(char *data, size_t size, size_t nmemb, void *userdata)
...
@@ -129,19 +125,16 @@ esxVI_CURL_ReadString(char *data, size_t size, size_t nmemb, void *userdata)
size_t
available
=
0
;
size_t
available
=
0
;
size_t
requested
=
size
*
nmemb
;
size_t
requested
=
size
*
nmemb
;
if
(
!
content
)
{
if
(
!
content
)
return
0
;
return
0
;
}
available
=
strlen
(
content
);
available
=
strlen
(
content
);
if
(
available
==
0
)
{
if
(
available
==
0
)
return
0
;
return
0
;
}
if
(
requested
>
available
)
{
if
(
requested
>
available
)
requested
=
available
;
requested
=
available
;
}
memcpy
(
data
,
content
,
requested
);
memcpy
(
data
,
content
,
requested
);
...
@@ -162,9 +155,8 @@ esxVI_CURL_WriteBuffer(char *data, size_t size, size_t nmemb, void *userdata)
...
@@ -162,9 +155,8 @@ esxVI_CURL_WriteBuffer(char *data, size_t size, size_t nmemb, void *userdata)
* are meant to download small things such as VMX files, VMDK metadata
* are meant to download small things such as VMX files, VMDK metadata
* files and SOAP responses.
* files and SOAP responses.
*/
*/
if
(
size
*
nmemb
>
INT32_MAX
/
2
-
virBufferUse
(
buffer
))
{
if
(
size
*
nmemb
>
INT32_MAX
/
2
-
virBufferUse
(
buffer
))
return
0
;
return
0
;
}
virBufferAdd
(
buffer
,
data
,
size
*
nmemb
);
virBufferAdd
(
buffer
,
data
,
size
*
nmemb
);
...
@@ -193,9 +185,8 @@ esxVI_CURL_Debug(CURL *curl ATTRIBUTE_UNUSED, curl_infotype type,
...
@@ -193,9 +185,8 @@ esxVI_CURL_Debug(CURL *curl ATTRIBUTE_UNUSED, curl_infotype type,
* To handle this properly in order to pass the info string to VIR_DEBUG
* To handle this properly in order to pass the info string to VIR_DEBUG
* a zero terminated copy of the info string has to be allocated.
* a zero terminated copy of the info string has to be allocated.
*/
*/
if
(
VIR_ALLOC_N
(
buffer
,
size
+
1
)
<
0
)
{
if
(
VIR_ALLOC_N
(
buffer
,
size
+
1
)
<
0
)
return
0
;
return
0
;
}
if
(
!
virStrncpy
(
buffer
,
info
,
size
,
size
+
1
))
{
if
(
!
virStrncpy
(
buffer
,
info
,
size
,
size
+
1
))
{
VIR_FREE
(
buffer
);
VIR_FREE
(
buffer
);
...
@@ -204,9 +195,8 @@ esxVI_CURL_Debug(CURL *curl ATTRIBUTE_UNUSED, curl_infotype type,
...
@@ -204,9 +195,8 @@ esxVI_CURL_Debug(CURL *curl ATTRIBUTE_UNUSED, curl_infotype type,
switch
(
type
)
{
switch
(
type
)
{
case
CURLINFO_TEXT
:
case
CURLINFO_TEXT
:
if
(
size
>
0
&&
buffer
[
size
-
1
]
==
'\n'
)
{
if
(
size
>
0
&&
buffer
[
size
-
1
]
==
'\n'
)
buffer
[
size
-
1
]
=
'\0'
;
buffer
[
size
-
1
]
=
'\0'
;
}
VIR_DEBUG
(
"CURLINFO_TEXT [[[[%s]]]]"
,
buffer
);
VIR_DEBUG
(
"CURLINFO_TEXT [[[[%s]]]]"
,
buffer
);
break
;
break
;
...
@@ -430,9 +420,8 @@ esxVI_CURL_Download(esxVI_CURL *curl, const char *url, char **content,
...
@@ -430,9 +420,8 @@ esxVI_CURL_Download(esxVI_CURL *curl, const char *url, char **content,
if
(
virBufferCheckError
(
&
buffer
)
<
0
)
if
(
virBufferCheckError
(
&
buffer
)
<
0
)
goto
cleanup
;
goto
cleanup
;
if
(
length
)
{
if
(
length
)
*
length
=
virBufferUse
(
&
buffer
);
*
length
=
virBufferUse
(
&
buffer
);
}
*
content
=
virBufferContentAndReset
(
&
buffer
);
*
content
=
virBufferContentAndReset
(
&
buffer
);
...
@@ -557,13 +546,11 @@ ESX_VI__TEMPLATE__FREE(SharedCURL,
...
@@ -557,13 +546,11 @@ ESX_VI__TEMPLATE__FREE(SharedCURL,
return
;
return
;
}
}
if
(
item
->
handle
)
{
if
(
item
->
handle
)
curl_share_cleanup
(
item
->
handle
);
curl_share_cleanup
(
item
->
handle
);
}
for
(
i
=
0
;
i
<
ARRAY_CARDINALITY
(
item
->
locks
);
++
i
)
{
for
(
i
=
0
;
i
<
ARRAY_CARDINALITY
(
item
->
locks
);
++
i
)
virMutexDestroy
(
&
item
->
locks
[
i
]);
virMutexDestroy
(
&
item
->
locks
[
i
]);
}
})
})
int
int
...
@@ -735,9 +722,8 @@ ESX_VI__TEMPLATE__FREE(MultiCURL,
...
@@ -735,9 +722,8 @@ ESX_VI__TEMPLATE__FREE(MultiCURL,
return
;
return
;
}
}
if
(
item
->
handle
)
{
if
(
item
->
handle
)
curl_multi_cleanup
(
item
->
handle
);
curl_multi_cleanup
(
item
->
handle
);
}
#if ESX_EMULATE_CURL_MULTI_WAIT
#if ESX_EMULATE_CURL_MULTI_WAIT
VIR_FREE
(
item
->
pollfds
);
VIR_FREE
(
item
->
pollfds
);
...
@@ -856,9 +842,8 @@ esxVI_MultiCURL_Wait(esxVI_MultiCURL *multi, int *runningHandles)
...
@@ -856,9 +842,8 @@ esxVI_MultiCURL_Wait(esxVI_MultiCURL *multi, int *runningHandles)
curl_multi_timeout
(
multi
->
handle
,
&
timeout
);
curl_multi_timeout
(
multi
->
handle
,
&
timeout
);
if
(
timeout
<
0
)
{
if
(
timeout
<
0
)
timeout
=
1000
;
/* default to 1 sec timeout */
timeout
=
1000
;
/* default to 1 sec timeout */
}
do
{
do
{
rc
=
poll
(
multi
->
pollfds
,
multi
->
npollfds
,
timeout
);
rc
=
poll
(
multi
->
pollfds
,
multi
->
npollfds
,
timeout
);
...
@@ -980,9 +965,8 @@ ESX_VI__TEMPLATE__ALLOC(Context)
...
@@ -980,9 +965,8 @@ ESX_VI__TEMPLATE__ALLOC(Context)
/* esxVI_Context_Free */
/* esxVI_Context_Free */
ESX_VI__TEMPLATE__FREE
(
Context
,
ESX_VI__TEMPLATE__FREE
(
Context
,
{
{
if
(
item
->
sessionLock
)
{
if
(
item
->
sessionLock
)
virMutexDestroy
(
item
->
sessionLock
);
virMutexDestroy
(
item
->
sessionLock
);
}
esxVI_CURL_Free
(
&
item
->
curl
);
esxVI_CURL_Free
(
&
item
->
curl
);
VIR_FREE
(
item
->
url
);
VIR_FREE
(
item
->
url
);
...
@@ -1036,9 +1020,8 @@ esxVI_Context_Connect(esxVI_Context *ctx, const char *url,
...
@@ -1036,9 +1020,8 @@ esxVI_Context_Connect(esxVI_Context *ctx, const char *url,
return
-
1
;
return
-
1
;
}
}
if
(
esxVI_RetrieveServiceContent
(
ctx
,
&
ctx
->
service
)
<
0
)
{
if
(
esxVI_RetrieveServiceContent
(
ctx
,
&
ctx
->
service
)
<
0
)
return
-
1
;
return
-
1
;
}
if
(
STRNEQ
(
ctx
->
service
->
about
->
apiType
,
"HostAgent"
)
&&
if
(
STRNEQ
(
ctx
->
service
->
about
->
apiType
,
"HostAgent"
)
&&
STRNEQ
(
ctx
->
service
->
about
->
apiType
,
"VirtualCenter"
))
{
STRNEQ
(
ctx
->
service
->
about
->
apiType
,
"VirtualCenter"
))
{
...
@@ -1121,9 +1104,8 @@ esxVI_Context_Connect(esxVI_Context *ctx, const char *url,
...
@@ -1121,9 +1104,8 @@ esxVI_Context_Connect(esxVI_Context *ctx, const char *url,
ctx
->
hasQueryVirtualDiskUuid
=
true
;
ctx
->
hasQueryVirtualDiskUuid
=
true
;
}
}
if
(
ctx
->
productLine
==
esxVI_ProductLine_VPX
)
{
if
(
ctx
->
productLine
==
esxVI_ProductLine_VPX
)
ctx
->
hasSessionIsActive
=
true
;
ctx
->
hasSessionIsActive
=
true
;
}
if
(
esxVI_Login
(
ctx
,
username
,
password
,
NULL
,
&
ctx
->
session
)
<
0
||
if
(
esxVI_Login
(
ctx
,
username
,
password
,
NULL
,
&
ctx
->
session
)
<
0
||
esxVI_BuildSelectSetCollection
(
ctx
)
<
0
)
{
esxVI_BuildSelectSetCollection
(
ctx
)
<
0
)
{
...
@@ -1212,9 +1194,8 @@ esxVI_Context_LookupManagedObjectsByPath(esxVI_Context *ctx, const char *path)
...
@@ -1212,9 +1194,8 @@ esxVI_Context_LookupManagedObjectsByPath(esxVI_Context *ctx, const char *path)
if
(
folder
)
{
if
(
folder
)
{
/* It's a folder, use it as new lookup root */
/* It's a folder, use it as new lookup root */
if
(
root
!=
ctx
->
service
->
rootFolder
)
{
if
(
root
!=
ctx
->
service
->
rootFolder
)
esxVI_ManagedObjectReference_Free
(
&
root
);
esxVI_ManagedObjectReference_Free
(
&
root
);
}
root
=
folder
->
_reference
;
root
=
folder
->
_reference
;
folder
->
_reference
=
NULL
;
folder
->
_reference
=
NULL
;
...
@@ -1227,9 +1208,8 @@ esxVI_Context_LookupManagedObjectsByPath(esxVI_Context *ctx, const char *path)
...
@@ -1227,9 +1208,8 @@ esxVI_Context_LookupManagedObjectsByPath(esxVI_Context *ctx, const char *path)
}
}
/* Build datacenter path */
/* Build datacenter path */
if
(
virBufferUse
(
&
buffer
)
>
0
)
{
if
(
virBufferUse
(
&
buffer
)
>
0
)
virBufferAddChar
(
&
buffer
,
'/'
);
virBufferAddChar
(
&
buffer
,
'/'
);
}
virBufferAdd
(
&
buffer
,
item
,
-
1
);
virBufferAdd
(
&
buffer
,
item
,
-
1
);
...
@@ -1255,9 +1235,8 @@ esxVI_Context_LookupManagedObjectsByPath(esxVI_Context *ctx, const char *path)
...
@@ -1255,9 +1235,8 @@ esxVI_Context_LookupManagedObjectsByPath(esxVI_Context *ctx, const char *path)
goto
cleanup
;
goto
cleanup
;
}
}
if
(
root
!=
ctx
->
service
->
rootFolder
)
{
if
(
root
!=
ctx
->
service
->
rootFolder
)
esxVI_ManagedObjectReference_Free
(
&
root
);
esxVI_ManagedObjectReference_Free
(
&
root
);
}
root
=
ctx
->
datacenter
->
hostFolder
;
root
=
ctx
->
datacenter
->
hostFolder
;
...
@@ -1272,9 +1251,8 @@ esxVI_Context_LookupManagedObjectsByPath(esxVI_Context *ctx, const char *path)
...
@@ -1272,9 +1251,8 @@ esxVI_Context_LookupManagedObjectsByPath(esxVI_Context *ctx, const char *path)
if
(
folder
)
{
if
(
folder
)
{
/* It's a folder, use it as new lookup root */
/* It's a folder, use it as new lookup root */
if
(
root
!=
ctx
->
datacenter
->
hostFolder
)
{
if
(
root
!=
ctx
->
datacenter
->
hostFolder
)
esxVI_ManagedObjectReference_Free
(
&
root
);
esxVI_ManagedObjectReference_Free
(
&
root
);
}
root
=
folder
->
_reference
;
root
=
folder
->
_reference
;
folder
->
_reference
=
NULL
;
folder
->
_reference
=
NULL
;
...
@@ -1288,9 +1266,8 @@ esxVI_Context_LookupManagedObjectsByPath(esxVI_Context *ctx, const char *path)
...
@@ -1288,9 +1266,8 @@ esxVI_Context_LookupManagedObjectsByPath(esxVI_Context *ctx, const char *path)
}
}
/* Build compute resource path */
/* Build compute resource path */
if
(
virBufferUse
(
&
buffer
)
>
0
)
{
if
(
virBufferUse
(
&
buffer
)
>
0
)
virBufferAddChar
(
&
buffer
,
'/'
);
virBufferAddChar
(
&
buffer
,
'/'
);
}
virBufferAdd
(
&
buffer
,
item
,
-
1
);
virBufferAdd
(
&
buffer
,
item
,
-
1
);
...
@@ -1355,9 +1332,8 @@ esxVI_Context_LookupManagedObjectsByPath(esxVI_Context *ctx, const char *path)
...
@@ -1355,9 +1332,8 @@ esxVI_Context_LookupManagedObjectsByPath(esxVI_Context *ctx, const char *path)
result
=
0
;
result
=
0
;
cleanup:
cleanup:
if
(
result
<
0
)
{
if
(
result
<
0
)
virBufferFreeAndReset
(
&
buffer
);
virBufferFreeAndReset
(
&
buffer
);
}
if
(
root
!=
ctx
->
service
->
rootFolder
&&
if
(
root
!=
ctx
->
service
->
rootFolder
&&
(
!
ctx
->
datacenter
||
root
!=
ctx
->
datacenter
->
hostFolder
))
{
(
!
ctx
->
datacenter
||
root
!=
ctx
->
datacenter
->
hostFolder
))
{
...
@@ -1431,9 +1407,8 @@ esxVI_Context_Execute(esxVI_Context *ctx, const char *methodName,
...
@@ -1431,9 +1407,8 @@ esxVI_Context_Execute(esxVI_Context *ctx, const char *methodName,
return
-
1
;
return
-
1
;
}
}
if
(
esxVI_Response_Alloc
(
response
)
<
0
)
{
if
(
esxVI_Response_Alloc
(
response
)
<
0
)
return
-
1
;
return
-
1
;
}
virMutexLock
(
&
ctx
->
curl
->
lock
);
virMutexLock
(
&
ctx
->
curl
->
lock
);
...
@@ -1448,9 +1423,8 @@ esxVI_Context_Execute(esxVI_Context *ctx, const char *methodName,
...
@@ -1448,9 +1423,8 @@ esxVI_Context_Execute(esxVI_Context *ctx, const char *methodName,
virMutexUnlock
(
&
ctx
->
curl
->
lock
);
virMutexUnlock
(
&
ctx
->
curl
->
lock
);
if
((
*
response
)
->
responseCode
<
0
)
{
if
((
*
response
)
->
responseCode
<
0
)
goto
cleanup
;
goto
cleanup
;
}
if
(
virBufferCheckError
(
&
buffer
)
<
0
)
if
(
virBufferCheckError
(
&
buffer
)
<
0
)
goto
cleanup
;
goto
cleanup
;
...
@@ -1462,9 +1436,8 @@ esxVI_Context_Execute(esxVI_Context *ctx, const char *methodName,
...
@@ -1462,9 +1436,8 @@ esxVI_Context_Execute(esxVI_Context *ctx, const char *methodName,
_
(
"(esx execute response)"
),
_
(
"(esx execute response)"
),
&
xpathContext
);
&
xpathContext
);
if
(
!
(
*
response
)
->
document
)
{
if
(
!
(
*
response
)
->
document
)
goto
cleanup
;
goto
cleanup
;
}
xmlXPathRegisterNs
(
xpathContext
,
BAD_CAST
"soapenv"
,
xmlXPathRegisterNs
(
xpathContext
,
BAD_CAST
"soapenv"
,
BAD_CAST
"http://schemas.xmlsoap.org/soap/envelope/"
);
BAD_CAST
"http://schemas.xmlsoap.org/soap/envelope/"
);
...
@@ -1710,9 +1683,8 @@ esxVI_Enumeration_Deserialize(const esxVI_Enumeration *enumeration,
...
@@ -1710,9 +1683,8 @@ esxVI_Enumeration_Deserialize(const esxVI_Enumeration *enumeration,
*
value
=
0
;
/* undefined */
*
value
=
0
;
/* undefined */
if
(
esxVI_String_DeserializeValue
(
node
,
&
name
)
<
0
)
{
if
(
esxVI_String_DeserializeValue
(
node
,
&
name
)
<
0
)
return
-
1
;
return
-
1
;
}
for
(
i
=
0
;
enumeration
->
values
[
i
].
name
;
++
i
)
{
for
(
i
=
0
;
enumeration
->
values
[
i
].
name
;
++
i
)
{
if
(
STREQ
(
name
,
enumeration
->
values
[
i
].
name
))
{
if
(
STREQ
(
name
,
enumeration
->
values
[
i
].
name
))
{
...
@@ -1755,9 +1727,8 @@ esxVI_List_Append(esxVI_List **list, esxVI_List *item)
...
@@ -1755,9 +1727,8 @@ esxVI_List_Append(esxVI_List **list, esxVI_List *item)
next
=
*
list
;
next
=
*
list
;
while
(
next
->
_next
)
{
while
(
next
->
_next
)
next
=
next
->
_next
;
next
=
next
->
_next
;
}
next
->
_next
=
item
;
next
->
_next
=
item
;
...
@@ -1810,9 +1781,8 @@ esxVI_List_CastFromAnyType(esxVI_AnyType *anyType, esxVI_List **list,
...
@@ -1810,9 +1781,8 @@ esxVI_List_CastFromAnyType(esxVI_AnyType *anyType, esxVI_List **list,
return
-
1
;
return
-
1
;
}
}
if
(
!
anyType
)
{
if
(
!
anyType
)
return
0
;
return
0
;
}
if
(
!
STRPREFIX
(
anyType
->
other
,
"ArrayOf"
))
{
if
(
!
STRPREFIX
(
anyType
->
other
,
"ArrayOf"
))
{
virReportError
(
VIR_ERR_INTERNAL_ERROR
,
virReportError
(
VIR_ERR_INTERNAL_ERROR
,
...
@@ -1865,15 +1835,13 @@ esxVI_List_Serialize(esxVI_List *list, const char *element,
...
@@ -1865,15 +1835,13 @@ esxVI_List_Serialize(esxVI_List *list, const char *element,
return
-
1
;
return
-
1
;
}
}
if
(
!
list
)
{
if
(
!
list
)
return
0
;
return
0
;
}
for
(
item
=
list
;
item
;
item
=
item
->
_next
)
{
for
(
item
=
list
;
item
;
item
=
item
->
_next
)
{
if
(
serializeFunc
(
item
,
element
,
output
)
<
0
)
{
if
(
serializeFunc
(
item
,
element
,
output
)
<
0
)
return
-
1
;
return
-
1
;
}
}
}
return
0
;
return
0
;
}
}
...
@@ -1890,9 +1858,8 @@ esxVI_List_Deserialize(xmlNodePtr node, esxVI_List **list,
...
@@ -1890,9 +1858,8 @@ esxVI_List_Deserialize(xmlNodePtr node, esxVI_List **list,
return
-
1
;
return
-
1
;
}
}
if
(
!
node
)
{
if
(
!
node
)
return
0
;
return
0
;
}
for
(;
node
;
node
=
node
->
next
)
{
for
(;
node
;
node
=
node
->
next
)
{
if
(
node
->
type
!=
XML_ELEMENT_NODE
)
{
if
(
node
->
type
!=
XML_ELEMENT_NODE
)
{
...
@@ -2193,9 +2160,8 @@ esxVI_LookupObjectContentByType(esxVI_Context *ctx,
...
@@ -2193,9 +2160,8 @@ esxVI_LookupObjectContentByType(esxVI_Context *ctx,
return
-
1
;
return
-
1
;
}
}
if
(
esxVI_ObjectSpec_Alloc
(
&
objectSpec
)
<
0
)
{
if
(
esxVI_ObjectSpec_Alloc
(
&
objectSpec
)
<
0
)
return
-
1
;
return
-
1
;
}
objectSpec
->
obj
=
root
;
objectSpec
->
obj
=
root
;
objectSpec
->
skip
=
esxVI_Boolean_False
;
objectSpec
->
skip
=
esxVI_Boolean_False
;
...
@@ -2254,9 +2220,8 @@ esxVI_LookupObjectContentByType(esxVI_Context *ctx,
...
@@ -2254,9 +2220,8 @@ esxVI_LookupObjectContentByType(esxVI_Context *ctx,
}
}
}
}
if
(
esxVI_PropertySpec_Alloc
(
&
propertySpec
)
<
0
)
{
if
(
esxVI_PropertySpec_Alloc
(
&
propertySpec
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
propertySpec
->
type
=
(
char
*
)
type
;
propertySpec
->
type
=
(
char
*
)
type
;
propertySpec
->
pathSet
=
propertyNameList
;
propertySpec
->
pathSet
=
propertyNameList
;
...
@@ -2325,13 +2290,11 @@ esxVI_LookupObjectContentByType(esxVI_Context *ctx,
...
@@ -2325,13 +2290,11 @@ esxVI_LookupObjectContentByType(esxVI_Context *ctx,
propertySpec
->
pathSet
=
NULL
;
propertySpec
->
pathSet
=
NULL
;
}
}
if
(
!
objectSpec_isAppended
)
{
if
(
!
objectSpec_isAppended
)
esxVI_ObjectSpec_Free
(
&
objectSpec
);
esxVI_ObjectSpec_Free
(
&
objectSpec
);
}
if
(
!
propertySpec_isAppended
)
{
if
(
!
propertySpec_isAppended
)
esxVI_PropertySpec_Free
(
&
propertySpec
);
esxVI_PropertySpec_Free
(
&
propertySpec
);
}
esxVI_PropertyFilterSpec_Free
(
&
propertyFilterSpec
);
esxVI_PropertyFilterSpec_Free
(
&
propertyFilterSpec
);
...
@@ -2463,9 +2426,8 @@ esxVI_GetLong(esxVI_ObjectContent *objectContent, const char *propertyName,
...
@@ -2463,9 +2426,8 @@ esxVI_GetLong(esxVI_ObjectContent *objectContent, const char *propertyName,
for
(
dynamicProperty
=
objectContent
->
propSet
;
dynamicProperty
;
for
(
dynamicProperty
=
objectContent
->
propSet
;
dynamicProperty
;
dynamicProperty
=
dynamicProperty
->
_next
)
{
dynamicProperty
=
dynamicProperty
->
_next
)
{
if
(
STREQ
(
dynamicProperty
->
name
,
propertyName
))
{
if
(
STREQ
(
dynamicProperty
->
name
,
propertyName
))
{
if
(
esxVI_Long_CastFromAnyType
(
dynamicProperty
->
val
,
value
)
<
0
)
{
if
(
esxVI_Long_CastFromAnyType
(
dynamicProperty
->
val
,
value
)
<
0
)
return
-
1
;
return
-
1
;
}
break
;
break
;
}
}
...
@@ -2709,9 +2671,8 @@ esxVI_GetVirtualMachineIdentity(esxVI_ObjectContent *virtualMachine,
...
@@ -2709,9 +2671,8 @@ esxVI_GetVirtualMachineIdentity(esxVI_ObjectContent *virtualMachine,
return
0
;
return
0
;
failure:
failure:
if
(
name
)
{
if
(
name
)
VIR_FREE
(
*
name
);
VIR_FREE
(
*
name
);
}
return
-
1
;
return
-
1
;
}
}
...
@@ -2760,9 +2721,8 @@ esxVI_GetSnapshotTreeNames(esxVI_VirtualMachineSnapshotTree *snapshotTreeList,
...
@@ -2760,9 +2721,8 @@ esxVI_GetSnapshotTreeNames(esxVI_VirtualMachineSnapshotTree *snapshotTreeList,
count
++
;
count
++
;
}
}
if
(
count
>=
nameslen
)
{
if
(
count
>=
nameslen
)
break
;
break
;
}
if
(
recurse
)
{
if
(
recurse
)
{
result
=
esxVI_GetSnapshotTreeNames
(
snapshotTree
->
childSnapshotList
,
result
=
esxVI_GetSnapshotTreeNames
(
snapshotTree
->
childSnapshotList
,
...
@@ -2770,9 +2730,8 @@ esxVI_GetSnapshotTreeNames(esxVI_VirtualMachineSnapshotTree *snapshotTreeList,
...
@@ -2770,9 +2730,8 @@ esxVI_GetSnapshotTreeNames(esxVI_VirtualMachineSnapshotTree *snapshotTreeList,
nameslen
-
count
,
nameslen
-
count
,
true
,
leaves
);
true
,
leaves
);
if
(
result
<
0
)
{
if
(
result
<
0
)
goto
failure
;
goto
failure
;
}
count
+=
result
;
count
+=
result
;
}
}
...
@@ -2781,9 +2740,8 @@ esxVI_GetSnapshotTreeNames(esxVI_VirtualMachineSnapshotTree *snapshotTreeList,
...
@@ -2781,9 +2740,8 @@ esxVI_GetSnapshotTreeNames(esxVI_VirtualMachineSnapshotTree *snapshotTreeList,
return
count
;
return
count
;
failure:
failure:
for
(
i
=
0
;
i
<
count
;
++
i
)
{
for
(
i
=
0
;
i
<
count
;
++
i
)
VIR_FREE
(
names
[
i
]);
VIR_FREE
(
names
[
i
]);
}
return
-
1
;
return
-
1
;
}
}
...
@@ -2817,9 +2775,8 @@ esxVI_GetSnapshotTreeByName
...
@@ -2817,9 +2775,8 @@ esxVI_GetSnapshotTreeByName
if
(
esxVI_GetSnapshotTreeByName
(
candidate
->
childSnapshotList
,
name
,
if
(
esxVI_GetSnapshotTreeByName
(
candidate
->
childSnapshotList
,
name
,
snapshotTree
,
snapshotTreeParent
,
snapshotTree
,
snapshotTreeParent
,
occurrence
)
>
0
)
{
occurrence
)
>
0
)
{
if
(
snapshotTreeParent
&&
!
(
*
snapshotTreeParent
))
{
if
(
snapshotTreeParent
&&
!
(
*
snapshotTreeParent
))
*
snapshotTreeParent
=
candidate
;
*
snapshotTreeParent
=
candidate
;
}
return
1
;
return
1
;
}
}
...
@@ -2987,13 +2944,11 @@ esxVI_LookupVirtualMachineByName(esxVI_Context *ctx, const char *name,
...
@@ -2987,13 +2944,11 @@ esxVI_LookupVirtualMachineByName(esxVI_Context *ctx, const char *name,
goto
cleanup
;
goto
cleanup
;
}
}
if
(
STRNEQ
(
name
,
name_candidate
))
{
if
(
STRNEQ
(
name
,
name_candidate
))
continue
;
continue
;
}
if
(
esxVI_ObjectContent_DeepCopy
(
virtualMachine
,
candidate
)
<
0
)
{
if
(
esxVI_ObjectContent_DeepCopy
(
virtualMachine
,
candidate
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
break
;
break
;
}
}
...
@@ -3126,9 +3081,8 @@ esxVI_LookupDatastoreByName(esxVI_Context *ctx, const char *name,
...
@@ -3126,9 +3081,8 @@ esxVI_LookupDatastoreByName(esxVI_Context *ctx, const char *name,
}
}
if
(
STREQ
(
name_candidate
,
name
))
{
if
(
STREQ
(
name_candidate
,
name
))
{
if
(
esxVI_ObjectContent_DeepCopy
(
datastore
,
candidate
)
<
0
)
{
if
(
esxVI_ObjectContent_DeepCopy
(
datastore
,
candidate
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
/* Found datastore with matching name */
/* Found datastore with matching name */
result
=
0
;
result
=
0
;
...
@@ -3199,9 +3153,8 @@ esxVI_LookupDatastoreByAbsolutePath(esxVI_Context *ctx,
...
@@ -3199,9 +3153,8 @@ esxVI_LookupDatastoreByAbsolutePath(esxVI_Context *ctx,
}
}
}
}
if
(
!
datastoreHostMountList
)
{
if
(
!
datastoreHostMountList
)
continue
;
continue
;
}
for
(
datastoreHostMount
=
datastoreHostMountList
;
for
(
datastoreHostMount
=
datastoreHostMountList
;
datastoreHostMount
;
datastoreHostMount
;
...
@@ -3212,9 +3165,8 @@ esxVI_LookupDatastoreByAbsolutePath(esxVI_Context *ctx,
...
@@ -3212,9 +3165,8 @@ esxVI_LookupDatastoreByAbsolutePath(esxVI_Context *ctx,
}
}
if
(
STRPREFIX
(
absolutePath
,
datastoreHostMount
->
mountInfo
->
path
))
{
if
(
STRPREFIX
(
absolutePath
,
datastoreHostMount
->
mountInfo
->
path
))
{
if
(
esxVI_ObjectContent_DeepCopy
(
datastore
,
candidate
)
<
0
)
{
if
(
esxVI_ObjectContent_DeepCopy
(
datastore
,
candidate
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
/* Found datastore with matching mount path */
/* Found datastore with matching mount path */
result
=
0
;
result
=
0
;
...
@@ -3284,13 +3236,11 @@ esxVI_LookupDatastoreHostMount(esxVI_Context *ctx,
...
@@ -3284,13 +3236,11 @@ esxVI_LookupDatastoreHostMount(esxVI_Context *ctx,
for
(
candidate
=
hostMountList
;
candidate
;
for
(
candidate
=
hostMountList
;
candidate
;
candidate
=
candidate
->
_next
)
{
candidate
=
candidate
->
_next
)
{
if
(
STRNEQ
(
ctx
->
hostSystem
->
_reference
->
value
,
candidate
->
key
->
value
))
{
if
(
STRNEQ
(
ctx
->
hostSystem
->
_reference
->
value
,
candidate
->
key
->
value
))
continue
;
continue
;
}
if
(
esxVI_DatastoreHostMount_DeepCopy
(
hostMount
,
candidate
)
<
0
)
{
if
(
esxVI_DatastoreHostMount_DeepCopy
(
hostMount
,
candidate
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
break
;
break
;
}
}
...
@@ -3392,9 +3342,8 @@ esxVI_LookupPendingTaskInfoListByVirtualMachine
...
@@ -3392,9 +3342,8 @@ esxVI_LookupPendingTaskInfoListByVirtualMachine
/* Lookup task info for each task */
/* Lookup task info for each task */
for
(
recentTask
=
recentTaskList
;
recentTask
;
for
(
recentTask
=
recentTaskList
;
recentTask
;
recentTask
=
recentTask
->
_next
)
{
recentTask
=
recentTask
->
_next
)
{
if
(
esxVI_LookupTaskInfoByTask
(
ctx
,
recentTask
,
&
taskInfo
)
<
0
)
{
if
(
esxVI_LookupTaskInfoByTask
(
ctx
,
recentTask
,
&
taskInfo
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
if
(
taskInfo
->
state
==
esxVI_TaskInfoState_Queued
||
if
(
taskInfo
->
state
==
esxVI_TaskInfoState_Queued
||
taskInfo
->
state
==
esxVI_TaskInfoState_Running
)
{
taskInfo
->
state
==
esxVI_TaskInfoState_Running
)
{
...
@@ -3412,9 +3361,8 @@ esxVI_LookupPendingTaskInfoListByVirtualMachine
...
@@ -3412,9 +3361,8 @@ esxVI_LookupPendingTaskInfoListByVirtualMachine
result
=
0
;
result
=
0
;
cleanup:
cleanup:
if
(
result
<
0
)
{
if
(
result
<
0
)
esxVI_TaskInfo_Free
(
pendingTaskInfoList
);
esxVI_TaskInfo_Free
(
pendingTaskInfoList
);
}
esxVI_String_Free
(
&
propertyNameList
);
esxVI_String_Free
(
&
propertyNameList
);
esxVI_ManagedObjectReference_Free
(
&
recentTaskList
);
esxVI_ManagedObjectReference_Free
(
&
recentTaskList
);
...
@@ -3509,9 +3457,8 @@ esxVI_LookupRootSnapshotTreeList
...
@@ -3509,9 +3457,8 @@ esxVI_LookupRootSnapshotTreeList
result
=
0
;
result
=
0
;
cleanup:
cleanup:
if
(
result
<
0
)
{
if
(
result
<
0
)
esxVI_VirtualMachineSnapshotTree_Free
(
rootSnapshotTreeList
);
esxVI_VirtualMachineSnapshotTree_Free
(
rootSnapshotTreeList
);
}
esxVI_String_Free
(
&
propertyNameList
);
esxVI_String_Free
(
&
propertyNameList
);
esxVI_ObjectContent_Free
(
&
virtualMachine
);
esxVI_ObjectContent_Free
(
&
virtualMachine
);
...
@@ -3651,9 +3598,8 @@ esxVI_LookupFileInfoByDatastorePath(esxVI_Context *ctx,
...
@@ -3651,9 +3598,8 @@ esxVI_LookupFileInfoByDatastorePath(esxVI_Context *ctx,
datastoreName
)
<
0
)
datastoreName
)
<
0
)
goto
cleanup
;
goto
cleanup
;
if
(
VIR_STRDUP
(
fileName
,
directoryAndFileName
)
<
0
)
{
if
(
VIR_STRDUP
(
fileName
,
directoryAndFileName
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
}
else
{
}
else
{
if
(
virAsprintf
(
&
datastorePathWithoutFileName
,
"[%s] %s"
,
if
(
virAsprintf
(
&
datastorePathWithoutFileName
,
"[%s] %s"
,
datastoreName
,
directoryName
)
<
0
)
datastoreName
,
directoryName
)
<
0
)
...
@@ -3669,10 +3615,9 @@ esxVI_LookupFileInfoByDatastorePath(esxVI_Context *ctx,
...
@@ -3669,10 +3615,9 @@ esxVI_LookupFileInfoByDatastorePath(esxVI_Context *ctx,
goto
cleanup
;
goto
cleanup
;
}
}
if
(
VIR_STRDUP
(
fileName
,
directoryAndFileName
+
length
+
1
)
<
0
)
{
if
(
VIR_STRDUP
(
fileName
,
directoryAndFileName
+
length
+
1
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
}
}
/* Lookup HostDatastoreBrowser */
/* Lookup HostDatastoreBrowser */
if
(
esxVI_String_AppendValueToList
(
&
propertyNameList
,
"browser"
)
<
0
||
if
(
esxVI_String_AppendValueToList
(
&
propertyNameList
,
"browser"
)
<
0
||
...
@@ -3736,9 +3681,8 @@ esxVI_LookupFileInfoByDatastorePath(esxVI_Context *ctx,
...
@@ -3736,9 +3681,8 @@ esxVI_LookupFileInfoByDatastorePath(esxVI_Context *ctx,
floppyImageFileQuery
=
NULL
;
floppyImageFileQuery
=
NULL
;
}
}
if
(
esxVI_String_Alloc
(
&
searchSpec
->
matchPattern
)
<
0
)
{
if
(
esxVI_String_Alloc
(
&
searchSpec
->
matchPattern
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
searchSpec
->
matchPattern
->
value
=
fileName
;
searchSpec
->
matchPattern
->
value
=
fileName
;
...
@@ -3786,9 +3730,8 @@ esxVI_LookupFileInfoByDatastorePath(esxVI_Context *ctx,
...
@@ -3786,9 +3730,8 @@ esxVI_LookupFileInfoByDatastorePath(esxVI_Context *ctx,
cleanup:
cleanup:
/* Don't double free fileName */
/* Don't double free fileName */
if
(
searchSpec
&&
searchSpec
->
matchPattern
)
{
if
(
searchSpec
&&
searchSpec
->
matchPattern
)
searchSpec
->
matchPattern
->
value
=
NULL
;
searchSpec
->
matchPattern
->
value
=
NULL
;
}
VIR_FREE
(
datastoreName
);
VIR_FREE
(
datastoreName
);
VIR_FREE
(
directoryName
);
VIR_FREE
(
directoryName
);
...
@@ -3967,18 +3910,16 @@ esxVI_LookupStorageVolumeKeyByDatastorePath(esxVI_Context *ctx,
...
@@ -3967,18 +3910,16 @@ esxVI_LookupStorageVolumeKeyByDatastorePath(esxVI_Context *ctx,
if
(
VIR_ALLOC_N
(
*
key
,
VIR_UUID_STRING_BUFLEN
)
<
0
)
if
(
VIR_ALLOC_N
(
*
key
,
VIR_UUID_STRING_BUFLEN
)
<
0
)
goto
cleanup
;
goto
cleanup
;
if
(
esxUtil_ReformatUuid
(
uuid_string
,
*
key
)
<
0
)
{
if
(
esxUtil_ReformatUuid
(
uuid_string
,
*
key
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
}
}
}
}
if
(
!
(
*
key
))
{
if
(
!
(
*
key
))
{
/* Other files don't have a UUID, fall back to the path as key */
/* Other files don't have a UUID, fall back to the path as key */
if
(
VIR_STRDUP
(
*
key
,
datastorePath
)
<
0
)
{
if
(
VIR_STRDUP
(
*
key
,
datastorePath
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
}
}
result
=
0
;
result
=
0
;
...
@@ -4157,17 +4098,15 @@ esxVI_LookupPhysicalNicByName(esxVI_Context *ctx, const char *name,
...
@@ -4157,17 +4098,15 @@ esxVI_LookupPhysicalNicByName(esxVI_Context *ctx, const char *name,
return
-
1
;
return
-
1
;
}
}
if
(
esxVI_LookupPhysicalNicList
(
ctx
,
&
physicalNicList
)
<
0
)
{
if
(
esxVI_LookupPhysicalNicList
(
ctx
,
&
physicalNicList
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
/* Search for a matching physical NIC */
/* Search for a matching physical NIC */
for
(
candidate
=
physicalNicList
;
candidate
;
for
(
candidate
=
physicalNicList
;
candidate
;
candidate
=
candidate
->
_next
)
{
candidate
=
candidate
->
_next
)
{
if
(
STRCASEEQ
(
candidate
->
device
,
name
))
{
if
(
STRCASEEQ
(
candidate
->
device
,
name
))
{
if
(
esxVI_PhysicalNic_DeepCopy
(
physicalNic
,
candidate
)
<
0
)
{
if
(
esxVI_PhysicalNic_DeepCopy
(
physicalNic
,
candidate
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
/* Found physical NIC with matching name */
/* Found physical NIC with matching name */
result
=
0
;
result
=
0
;
...
@@ -4206,17 +4145,15 @@ esxVI_LookupPhysicalNicByMACAddress(esxVI_Context *ctx, const char *mac,
...
@@ -4206,17 +4145,15 @@ esxVI_LookupPhysicalNicByMACAddress(esxVI_Context *ctx, const char *mac,
return
-
1
;
return
-
1
;
}
}
if
(
esxVI_LookupPhysicalNicList
(
ctx
,
&
physicalNicList
)
<
0
)
{
if
(
esxVI_LookupPhysicalNicList
(
ctx
,
&
physicalNicList
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
/* Search for a matching physical NIC */
/* Search for a matching physical NIC */
for
(
candidate
=
physicalNicList
;
candidate
;
for
(
candidate
=
physicalNicList
;
candidate
;
candidate
=
candidate
->
_next
)
{
candidate
=
candidate
->
_next
)
{
if
(
STRCASEEQ
(
candidate
->
mac
,
mac
))
{
if
(
STRCASEEQ
(
candidate
->
mac
,
mac
))
{
if
(
esxVI_PhysicalNic_DeepCopy
(
physicalNic
,
candidate
)
<
0
)
{
if
(
esxVI_PhysicalNic_DeepCopy
(
physicalNic
,
candidate
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
/* Found physical NIC with matching MAC address */
/* Found physical NIC with matching MAC address */
result
=
0
;
result
=
0
;
...
@@ -4299,9 +4236,8 @@ esxVI_LookupHostVirtualSwitchByName(esxVI_Context *ctx, const char *name,
...
@@ -4299,9 +4236,8 @@ esxVI_LookupHostVirtualSwitchByName(esxVI_Context *ctx, const char *name,
return
-
1
;
return
-
1
;
}
}
if
(
esxVI_LookupHostVirtualSwitchList
(
ctx
,
&
hostVirtualSwitchList
)
<
0
)
{
if
(
esxVI_LookupHostVirtualSwitchList
(
ctx
,
&
hostVirtualSwitchList
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
/* Search for a matching HostVirtualSwitch */
/* Search for a matching HostVirtualSwitch */
for
(
candidate
=
hostVirtualSwitchList
;
candidate
;
for
(
candidate
=
hostVirtualSwitchList
;
candidate
;
...
@@ -4421,9 +4357,8 @@ esxVI_HandleVirtualMachineQuestion
...
@@ -4421,9 +4357,8 @@ esxVI_HandleVirtualMachineQuestion
elementDescription
=
elementDescription
->
_next
)
{
elementDescription
=
elementDescription
->
_next
)
{
virBufferAsprintf
(
&
buffer
,
"'%s'"
,
elementDescription
->
label
);
virBufferAsprintf
(
&
buffer
,
"'%s'"
,
elementDescription
->
label
);
if
(
elementDescription
->
_next
)
{
if
(
elementDescription
->
_next
)
virBufferAddLit
(
&
buffer
,
", "
);
virBufferAddLit
(
&
buffer
,
", "
);
}
if
(
!
answerChoice
&&
if
(
!
answerChoice
&&
questionInfo
->
choice
->
defaultIndex
&&
questionInfo
->
choice
->
defaultIndex
&&
...
@@ -4489,9 +4424,8 @@ esxVI_HandleVirtualMachineQuestion
...
@@ -4489,9 +4424,8 @@ esxVI_HandleVirtualMachineQuestion
result
=
0
;
result
=
0
;
cleanup:
cleanup:
if
(
result
<
0
)
{
if
(
result
<
0
)
virBufferFreeAndReset
(
&
buffer
);
virBufferFreeAndReset
(
&
buffer
);
}
VIR_FREE
(
possibleAnswers
);
VIR_FREE
(
possibleAnswers
);
...
@@ -4533,16 +4467,14 @@ esxVI_WaitForTaskCompletion(esxVI_Context *ctx,
...
@@ -4533,16 +4467,14 @@ esxVI_WaitForTaskCompletion(esxVI_Context *ctx,
if
(
VIR_STRDUP
(
version
,
""
)
<
0
)
if
(
VIR_STRDUP
(
version
,
""
)
<
0
)
return
-
1
;
return
-
1
;
if
(
esxVI_ObjectSpec_Alloc
(
&
objectSpec
)
<
0
)
{
if
(
esxVI_ObjectSpec_Alloc
(
&
objectSpec
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
objectSpec
->
obj
=
task
;
objectSpec
->
obj
=
task
;
objectSpec
->
skip
=
esxVI_Boolean_False
;
objectSpec
->
skip
=
esxVI_Boolean_False
;
if
(
esxVI_PropertySpec_Alloc
(
&
propertySpec
)
<
0
)
{
if
(
esxVI_PropertySpec_Alloc
(
&
propertySpec
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
propertySpec
->
type
=
task
->
type
;
propertySpec
->
type
=
task
->
type
;
...
@@ -4581,9 +4513,8 @@ esxVI_WaitForTaskCompletion(esxVI_Context *ctx,
...
@@ -4581,9 +4513,8 @@ esxVI_WaitForTaskCompletion(esxVI_Context *ctx,
* esxVI_LookupTaskInfoByTask() and esxVI_CancelTask()
* esxVI_LookupTaskInfoByTask() and esxVI_CancelTask()
* don't overwrite the actual error
* don't overwrite the actual error
*/
*/
if
(
esxVI_LookupTaskInfoByTask
(
ctx
,
task
,
&
taskInfo
))
{
if
(
esxVI_LookupTaskInfoByTask
(
ctx
,
task
,
&
taskInfo
))
goto
cleanup
;
goto
cleanup
;
}
if
(
taskInfo
->
cancelable
==
esxVI_Boolean_True
)
{
if
(
taskInfo
->
cancelable
==
esxVI_Boolean_True
)
{
if
(
esxVI_CancelTask
(
ctx
,
task
)
<
0
&&
blocked
)
{
if
(
esxVI_CancelTask
(
ctx
,
task
)
<
0
&&
blocked
)
{
...
@@ -4602,17 +4533,15 @@ esxVI_WaitForTaskCompletion(esxVI_Context *ctx,
...
@@ -4602,17 +4533,15 @@ esxVI_WaitForTaskCompletion(esxVI_Context *ctx,
}
}
}
}
if
(
esxVI_WaitForUpdates
(
ctx
,
version
,
&
updateSet
)
<
0
)
{
if
(
esxVI_WaitForUpdates
(
ctx
,
version
,
&
updateSet
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
VIR_FREE
(
version
);
VIR_FREE
(
version
);
if
(
VIR_STRDUP
(
version
,
updateSet
->
version
)
<
0
)
if
(
VIR_STRDUP
(
version
,
updateSet
->
version
)
<
0
)
goto
cleanup
;
goto
cleanup
;
if
(
!
updateSet
->
filterSet
)
{
if
(
!
updateSet
->
filterSet
)
continue
;
continue
;
}
for
(
propertyFilterUpdate
=
updateSet
->
filterSet
;
for
(
propertyFilterUpdate
=
updateSet
->
filterSet
;
propertyFilterUpdate
;
propertyFilterUpdate
;
...
@@ -4634,27 +4563,22 @@ esxVI_WaitForTaskCompletion(esxVI_Context *ctx,
...
@@ -4634,27 +4563,22 @@ esxVI_WaitForTaskCompletion(esxVI_Context *ctx,
}
}
}
}
if
(
!
propertyValue
)
{
if
(
!
propertyValue
)
continue
;
continue
;
}
if
(
esxVI_TaskInfoState_CastFromAnyType
(
propertyValue
,
&
state
)
<
0
)
{
if
(
esxVI_TaskInfoState_CastFromAnyType
(
propertyValue
,
&
state
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
}
}
if
(
esxVI_DestroyPropertyFilter
(
ctx
,
propertyFilter
)
<
0
)
{
if
(
esxVI_DestroyPropertyFilter
(
ctx
,
propertyFilter
)
<
0
)
VIR_DEBUG
(
"DestroyPropertyFilter failed"
);
VIR_DEBUG
(
"DestroyPropertyFilter failed"
);
}
if
(
esxVI_TaskInfoState_CastFromAnyType
(
propertyValue
,
finalState
)
<
0
)
{
if
(
esxVI_TaskInfoState_CastFromAnyType
(
propertyValue
,
finalState
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
if
(
*
finalState
!=
esxVI_TaskInfoState_Success
)
{
if
(
*
finalState
!=
esxVI_TaskInfoState_Success
)
{
if
(
esxVI_LookupTaskInfoByTask
(
ctx
,
task
,
&
taskInfo
))
{
if
(
esxVI_LookupTaskInfoByTask
(
ctx
,
task
,
&
taskInfo
))
goto
cleanup
;
goto
cleanup
;
}
if
(
!
taskInfo
->
error
)
{
if
(
!
taskInfo
->
error
)
{
if
(
VIR_STRDUP
(
*
errorMessage
,
_
(
"Unknown error"
))
<
0
)
if
(
VIR_STRDUP
(
*
errorMessage
,
_
(
"Unknown error"
))
<
0
)
...
@@ -4677,21 +4601,17 @@ esxVI_WaitForTaskCompletion(esxVI_Context *ctx,
...
@@ -4677,21 +4601,17 @@ esxVI_WaitForTaskCompletion(esxVI_Context *ctx,
* Remove values given by the caller from the data structures to prevent
* Remove values given by the caller from the data structures to prevent
* them from being freed by the call to esxVI_PropertyFilterSpec_Free().
* them from being freed by the call to esxVI_PropertyFilterSpec_Free().
*/
*/
if
(
objectSpec
)
{
if
(
objectSpec
)
objectSpec
->
obj
=
NULL
;
objectSpec
->
obj
=
NULL
;
}
if
(
propertySpec
)
{
if
(
propertySpec
)
propertySpec
->
type
=
NULL
;
propertySpec
->
type
=
NULL
;
}
if
(
!
objectSpec_isAppended
)
{
if
(
!
objectSpec_isAppended
)
esxVI_ObjectSpec_Free
(
&
objectSpec
);
esxVI_ObjectSpec_Free
(
&
objectSpec
);
}
if
(
!
propertySpec_isAppended
)
{
if
(
!
propertySpec_isAppended
)
esxVI_PropertySpec_Free
(
&
propertySpec
);
esxVI_PropertySpec_Free
(
&
propertySpec
);
}
esxVI_PropertyFilterSpec_Free
(
&
propertyFilterSpec
);
esxVI_PropertyFilterSpec_Free
(
&
propertyFilterSpec
);
esxVI_ManagedObjectReference_Free
(
&
propertyFilter
);
esxVI_ManagedObjectReference_Free
(
&
propertyFilter
);
...
@@ -4849,10 +4769,9 @@ esxVI_LookupHostInternetScsiHbaStaticTargetByName
...
@@ -4849,10 +4769,9 @@ esxVI_LookupHostInternetScsiHbaStaticTargetByName
for
(
candidate
=
hostInternetScsiHba
->
configuredStaticTarget
;
for
(
candidate
=
hostInternetScsiHba
->
configuredStaticTarget
;
candidate
;
candidate
=
candidate
->
_next
)
{
candidate
;
candidate
=
candidate
->
_next
)
{
if
(
STREQ
(
candidate
->
iScsiName
,
name
))
{
if
(
STREQ
(
candidate
->
iScsiName
,
name
))
break
;
break
;
}
}
}
if
(
!
candidate
)
{
if
(
!
candidate
)
{
if
(
occurrence
==
esxVI_Occurrence_RequiredItem
)
{
if
(
occurrence
==
esxVI_Occurrence_RequiredItem
)
{
...
@@ -4863,9 +4782,8 @@ esxVI_LookupHostInternetScsiHbaStaticTargetByName
...
@@ -4863,9 +4782,8 @@ esxVI_LookupHostInternetScsiHbaStaticTargetByName
goto
cleanup
;
goto
cleanup
;
}
}
if
(
esxVI_HostInternetScsiHbaStaticTarget_DeepCopy
(
target
,
candidate
)
<
0
)
{
if
(
esxVI_HostInternetScsiHbaStaticTarget_DeepCopy
(
target
,
candidate
)
<
0
)
goto
cleanup
;
goto
cleanup
;
}
result
=
0
;
result
=
0
;
...
@@ -5044,9 +4962,8 @@ esxVI_LookupHostScsiTopologyLunListByTargetName
...
@@ -5044,9 +4962,8 @@ esxVI_LookupHostScsiTopologyLunListByTargetName
}
}
}
}
if
(
!
found
||
!
hostScsiTopologyTarget
)
{
if
(
!
found
||
!
hostScsiTopologyTarget
)
goto
cleanup
;
goto
cleanup
;
}
if
(
!
hostScsiTopologyTarget
->
lun
)
{
if
(
!
hostScsiTopologyTarget
->
lun
)
{
virReportError
(
VIR_ERR_INTERNAL_ERROR
,
"%s"
,
virReportError
(
VIR_ERR_INTERNAL_ERROR
,
"%s"
,
...
...
src/esx/esx_vi_types.c
浏览文件 @
247ad915
...
@@ -944,13 +944,11 @@ esxVI_AnyType_DeepCopy(esxVI_AnyType **dest, esxVI_AnyType *src)
...
@@ -944,13 +944,11 @@ esxVI_AnyType_DeepCopy(esxVI_AnyType **dest, esxVI_AnyType *src)
return
-
1
;
return
-
1
;
}
}
if
(
!
src
)
{
if
(
!
src
)
return
0
;
return
0
;
}
if
(
esxVI_AnyType_Alloc
(
dest
)
<
0
)
{
if
(
esxVI_AnyType_Alloc
(
dest
)
<
0
)
goto
failure
;
goto
failure
;
}
(
*
dest
)
->
_type
=
src
->
_type
;
(
*
dest
)
->
_type
=
src
->
_type
;
(
*
dest
)
->
node
=
xmlCopyNode
(
src
->
node
,
1
);
(
*
dest
)
->
node
=
xmlCopyNode
(
src
->
node
,
1
);
...
@@ -1015,9 +1013,8 @@ esxVI_AnyType_Deserialize(xmlNodePtr node, esxVI_AnyType **anyType)
...
@@ -1015,9 +1013,8 @@ esxVI_AnyType_Deserialize(xmlNodePtr node, esxVI_AnyType **anyType)
return
-
1
;
return
-
1
;
}
}
if
(
esxVI_AnyType_Alloc
(
anyType
)
<
0
)
{
if
(
esxVI_AnyType_Alloc
(
anyType
)
<
0
)
return
-
1
;
return
-
1
;
}
(
*
anyType
)
->
node
=
xmlCopyNode
(
node
,
1
);
(
*
anyType
)
->
node
=
xmlCopyNode
(
node
,
1
);
...
@@ -1151,10 +1148,9 @@ esxVI_String_ListContainsValue(esxVI_String *stringList, const char *value)
...
@@ -1151,10 +1148,9 @@ esxVI_String_ListContainsValue(esxVI_String *stringList, const char *value)
esxVI_String
*
string
;
esxVI_String
*
string
;
for
(
string
=
stringList
;
string
;
string
=
string
->
_next
)
{
for
(
string
=
stringList
;
string
;
string
=
string
->
_next
)
{
if
(
STREQ
(
string
->
value
,
value
))
{
if
(
STREQ
(
string
->
value
,
value
))
return
true
;
return
true
;
}
}
}
return
false
;
return
false
;
}
}
...
@@ -1167,16 +1163,14 @@ esxVI_String_AppendValueToList(esxVI_String **stringList, const char *value)
...
@@ -1167,16 +1163,14 @@ esxVI_String_AppendValueToList(esxVI_String **stringList, const char *value)
{
{
esxVI_String
*
string
=
NULL
;
esxVI_String
*
string
=
NULL
;
if
(
esxVI_String_Alloc
(
&
string
)
<
0
)
{
if
(
esxVI_String_Alloc
(
&
string
)
<
0
)
return
-
1
;
return
-
1
;
}
if
(
VIR_STRDUP
(
string
->
value
,
value
)
<
0
)
if
(
VIR_STRDUP
(
string
->
value
,
value
)
<
0
)
goto
failure
;
goto
failure
;
if
(
esxVI_String_AppendToList
(
stringList
,
string
)
<
0
)
{
if
(
esxVI_String_AppendToList
(
stringList
,
string
)
<
0
)
goto
failure
;
goto
failure
;
}
return
0
;
return
0
;
...
@@ -1194,16 +1188,14 @@ esxVI_String_AppendValueListToList(esxVI_String **stringList,
...
@@ -1194,16 +1188,14 @@ esxVI_String_AppendValueListToList(esxVI_String **stringList,
const
char
*
value
=
valueList
;
const
char
*
value
=
valueList
;
while
(
value
&&
*
value
!=
'\0'
)
{
while
(
value
&&
*
value
!=
'\0'
)
{
if
(
esxVI_String_AppendValueToList
(
&
stringListToAppend
,
value
)
<
0
)
{
if
(
esxVI_String_AppendValueToList
(
&
stringListToAppend
,
value
)
<
0
)
goto
failure
;
goto
failure
;
}
value
+=
strlen
(
value
)
+
1
;
value
+=
strlen
(
value
)
+
1
;
}
}
if
(
esxVI_String_AppendToList
(
stringList
,
stringListToAppend
)
<
0
)
{
if
(
esxVI_String_AppendToList
(
stringList
,
stringListToAppend
)
<
0
)
goto
failure
;
goto
failure
;
}
return
0
;
return
0
;
...
@@ -1230,9 +1222,8 @@ esxVI_String_DeepCopyValue(char **dest, const char *src)
...
@@ -1230,9 +1222,8 @@ esxVI_String_DeepCopyValue(char **dest, const char *src)
return
-
1
;
return
-
1
;
}
}
if
(
!
src
)
{
if
(
!
src
)
return
0
;
return
0
;
}
return
VIR_STRDUP
(
*
dest
,
src
);
return
VIR_STRDUP
(
*
dest
,
src
);
}
}
...
@@ -1263,9 +1254,8 @@ esxVI_String_SerializeValue(const char *value, const char *element,
...
@@ -1263,9 +1254,8 @@ esxVI_String_SerializeValue(const char *value, const char *element,
return
-
1
;
return
-
1
;
}
}
if
(
!
value
)
{
if
(
!
value
)
return
0
;
return
0
;
}
ESV_VI__XML_TAG__OPEN
(
output
,
element
,
"xsd:string"
);
ESV_VI__XML_TAG__OPEN
(
output
,
element
,
"xsd:string"
);
...
@@ -1483,9 +1473,8 @@ esxVI_DateTime_Deserialize(xmlNodePtr node, esxVI_DateTime **dateTime)
...
@@ -1483,9 +1473,8 @@ esxVI_DateTime_Deserialize(xmlNodePtr node, esxVI_DateTime **dateTime)
return
-
1
;
return
-
1
;
}
}
if
(
esxVI_DateTime_Alloc
(
dateTime
)
<
0
)
{
if
(
esxVI_DateTime_Alloc
(
dateTime
)
<
0
)
return
-
1
;
return
-
1
;
}
(
*
dateTime
)
->
value
=
(
*
dateTime
)
->
value
=
(
char
*
)
xmlNodeListGetString
(
node
->
doc
,
node
->
children
,
1
);
(
char
*
)
xmlNodeListGetString
(
node
->
doc
,
node
->
children
,
1
);
...
@@ -1577,9 +1566,8 @@ esxVI_DateTime_ConvertToCalendarTime(esxVI_DateTime *dateTime,
...
@@ -1577,9 +1566,8 @@ esxVI_DateTime_ConvertToCalendarTime(esxVI_DateTime *dateTime,
tz_offset
=
tz_hours
*
60
*
60
+
tz_minutes
*
60
;
tz_offset
=
tz_hours
*
60
*
60
+
tz_minutes
*
60
;
if
(
sign
==
'-'
)
{
if
(
sign
==
'-'
)
tz_offset
=
-
tz_offset
;
tz_offset
=
-
tz_offset
;
}
}
else
if
(
STREQ
(
tmp
,
"Z"
))
{
}
else
if
(
STREQ
(
tmp
,
"Z"
))
{
/* Z refers to UTC. tz_offset is already initialized to zero */
/* Z refers to UTC. tz_offset is already initialized to zero */
}
else
{
}
else
{
...
@@ -1657,9 +1645,8 @@ esxVI_MethodFault_Deserialize(xmlNodePtr node, esxVI_MethodFault **methodFault)
...
@@ -1657,9 +1645,8 @@ esxVI_MethodFault_Deserialize(xmlNodePtr node, esxVI_MethodFault **methodFault)
return
-
1
;
return
-
1
;
}
}
if
(
esxVI_MethodFault_Alloc
(
methodFault
)
<
0
)
{
if
(
esxVI_MethodFault_Alloc
(
methodFault
)
<
0
)
return
-
1
;
return
-
1
;
}
(
*
methodFault
)
->
_actualType
=
(
*
methodFault
)
->
_actualType
=
(
char
*
)
xmlGetNsProp
(
node
,
BAD_CAST
"type"
,
(
char
*
)
xmlGetNsProp
(
node
,
BAD_CAST
"type"
,
...
@@ -1723,9 +1710,8 @@ esxVI_ManagedObjectReference_Serialize
...
@@ -1723,9 +1710,8 @@ esxVI_ManagedObjectReference_Serialize
return
-
1
;
return
-
1
;
}
}
if
(
!
managedObjectReference
)
{
if
(
!
managedObjectReference
)
return
0
;
return
0
;
}
virBufferAddLit
(
output
,
"<"
);
virBufferAddLit
(
output
,
"<"
);
virBufferAdd
(
output
,
element
,
-
1
);
virBufferAdd
(
output
,
element
,
-
1
);
...
@@ -1753,9 +1739,8 @@ esxVI_ManagedObjectReference_Deserialize
...
@@ -1753,9 +1739,8 @@ esxVI_ManagedObjectReference_Deserialize
return
-
1
;
return
-
1
;
}
}
if
(
esxVI_ManagedObjectReference_Alloc
(
managedObjectReference
)
<
0
)
{
if
(
esxVI_ManagedObjectReference_Alloc
(
managedObjectReference
)
<
0
)
return
-
1
;
return
-
1
;
}
(
*
managedObjectReference
)
->
type
=
(
*
managedObjectReference
)
->
type
=
(
char
*
)
xmlGetNoNsProp
(
node
,
BAD_CAST
"type"
);
(
char
*
)
xmlGetNoNsProp
(
node
,
BAD_CAST
"type"
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录