Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
041a18be
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,发现更多精彩内容 >>
提交
041a18be
编写于
3月 03, 2010
作者:
M
Matthias Bolte
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
esx: Add esxVI_LookupVirtualMachineByName
Used in esxDomainLookupByName and to be used in esxDomainDefineXML later.
上级
bba36f7f
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
102 addition
and
41 deletion
+102
-41
src/esx/esx_driver.c
src/esx/esx_driver.c
+25
-41
src/esx/esx_vi.c
src/esx/esx_vi.c
+72
-0
src/esx/esx_vi.h
src/esx/esx_vi.h
+5
-0
未找到文件。
src/esx/esx_driver.c
浏览文件 @
041a18be
...
...
@@ -1206,12 +1206,10 @@ esxDomainLookupByName(virConnectPtr conn, const char *name)
{
esxPrivate
*
priv
=
conn
->
privateData
;
esxVI_String
*
propertyNameList
=
NULL
;
esxVI_ObjectContent
*
virtualMachineList
=
NULL
;
esxVI_ObjectContent
*
virtualMachine
=
NULL
;
esxVI_VirtualMachinePowerState
powerState
;
int
id_candidate
=
-
1
;
char
*
name_candidate
=
NULL
;
unsigned
char
uuid_candidate
[
VIR_UUID_BUFLEN
];
int
id
=
-
1
;
unsigned
char
uuid
[
VIR_UUID_BUFLEN
];
virDomainPtr
domain
=
NULL
;
if
(
esxVI_EnsureSession
(
priv
->
host
)
<
0
)
{
...
...
@@ -1220,59 +1218,45 @@ esxDomainLookupByName(virConnectPtr conn, const char *name)
if
(
esxVI_String_AppendValueListToList
(
&
propertyNameList
,
"configStatus
\0
"
"name
\0
"
"runtime.powerState
\0
"
"config.uuid
\0
"
)
<
0
||
esxVI_LookupObjectContentByType
(
priv
->
host
,
priv
->
host
->
vmFolder
,
"VirtualMachine"
,
propertyNameList
,
esxVI_Boolean_True
,
&
virtualMachineList
)
<
0
)
{
esxVI_LookupVirtualMachineByName
(
priv
->
host
,
name
,
propertyNameList
,
&
virtualMachine
,
esxVI_Occurrence_OptionalItem
)
<
0
)
{
goto
failure
;
}
for
(
virtualMachine
=
virtualMachineList
;
virtualMachine
!=
NULL
;
virtualMachine
=
virtualMachine
->
_next
)
{
VIR_FREE
(
name_candidate
);
if
(
esxVI_GetVirtualMachineIdentity
(
virtualMachine
,
&
id_candidate
,
&
name_candidate
,
uuid_candidate
)
<
0
)
{
goto
failure
;
}
if
(
STRNEQ
(
name
,
name_candidate
))
{
continue
;
}
if
(
virtualMachine
==
NULL
)
{
ESX_ERROR
(
VIR_ERR_NO_DOMAIN
,
"No domain with name '%s'"
,
name
);
goto
failure
;
}
if
(
esxVI_GetVirtualMachinePowerState
(
virtualMachine
,
&
powerState
)
<
0
)
{
goto
failure
;
}
domain
=
virGetDomain
(
conn
,
name_candidate
,
uuid_candidate
);
if
(
esxVI_GetVirtualMachineIdentity
(
virtualMachine
,
&
id
,
NULL
,
uuid
)
<
0
)
{
goto
failure
;
}
if
(
domain
==
NULL
)
{
goto
failure
;
}
if
(
esxVI_GetVirtualMachinePowerState
(
virtualMachine
,
&
powerState
)
<
0
)
{
goto
failure
;
}
/* Only running/suspended virtual machines have an ID != -1 */
if
(
powerState
!=
esxVI_VirtualMachinePowerState_PoweredOff
)
{
domain
->
id
=
id_candidate
;
}
else
{
domain
->
id
=
-
1
;
}
domain
=
virGetDomain
(
conn
,
name
,
uuid
);
break
;
if
(
domain
==
NULL
)
{
goto
failure
;
}
if
(
domain
==
NULL
)
{
ESX_ERROR
(
VIR_ERR_NO_DOMAIN
,
"No domain with name '%s'"
,
name
);
/* Only running/suspended virtual machines have an ID != -1 */
if
(
powerState
!=
esxVI_VirtualMachinePowerState_PoweredOff
)
{
domain
->
id
=
id
;
}
else
{
domain
->
id
=
-
1
;
}
cleanup:
esxVI_String_Free
(
&
propertyNameList
);
esxVI_ObjectContent_Free
(
&
virtualMachineList
);
VIR_FREE
(
name_candidate
);
esxVI_ObjectContent_Free
(
&
virtualMachine
);
return
domain
;
...
...
src/esx/esx_vi.c
浏览文件 @
041a18be
...
...
@@ -1876,6 +1876,78 @@ esxVI_LookupVirtualMachineByUuid(esxVI_Context *ctx, const unsigned char *uuid,
int
esxVI_LookupVirtualMachineByName
(
esxVI_Context
*
ctx
,
const
char
*
name
,
esxVI_String
*
propertyNameList
,
esxVI_ObjectContent
**
virtualMachine
,
esxVI_Occurrence
occurrence
)
{
int
result
=
0
;
esxVI_String
*
completePropertyNameList
=
NULL
;
esxVI_ObjectContent
*
virtualMachineList
=
NULL
;
esxVI_ObjectContent
*
candidate
=
NULL
;
char
*
name_candidate
=
NULL
;
if
(
virtualMachine
==
NULL
||
*
virtualMachine
!=
NULL
)
{
ESX_VI_ERROR
(
VIR_ERR_INTERNAL_ERROR
,
"Invalid argument"
);
return
-
1
;
}
if
(
esxVI_String_DeepCopyList
(
&
completePropertyNameList
,
propertyNameList
)
<
0
||
esxVI_String_AppendValueToList
(
&
completePropertyNameList
,
"name"
)
<
0
||
esxVI_LookupObjectContentByType
(
ctx
,
ctx
->
vmFolder
,
"VirtualMachine"
,
completePropertyNameList
,
esxVI_Boolean_True
,
&
virtualMachineList
)
<
0
)
{
goto
failure
;
}
for
(
candidate
=
virtualMachineList
;
candidate
!=
NULL
;
candidate
=
candidate
->
_next
)
{
VIR_FREE
(
name_candidate
);
if
(
esxVI_GetVirtualMachineIdentity
(
candidate
,
NULL
,
&
name_candidate
,
NULL
)
<
0
)
{
goto
failure
;
}
if
(
STRNEQ
(
name
,
name_candidate
))
{
continue
;
}
if
(
esxVI_ObjectContent_DeepCopy
(
virtualMachine
,
candidate
)
<
0
)
{
goto
failure
;
}
break
;
}
if
(
*
virtualMachine
==
NULL
)
{
if
(
occurrence
==
esxVI_Occurrence_OptionalItem
)
{
return
0
;
}
else
{
ESX_VI_ERROR
(
VIR_ERR_NO_DOMAIN
,
"Could not find domain with name '%s'"
,
name
);
goto
failure
;
}
}
cleanup:
esxVI_String_Free
(
&
completePropertyNameList
);
esxVI_ObjectContent_Free
(
&
virtualMachineList
);
VIR_FREE
(
name_candidate
);
return
result
;
failure:
result
=
-
1
;
goto
cleanup
;
}
int
esxVI_LookupVirtualMachineByUuidAndPrepareForTask
(
esxVI_Context
*
ctx
,
const
unsigned
char
*
uuid
,
...
...
src/esx/esx_vi.h
浏览文件 @
041a18be
...
...
@@ -237,6 +237,11 @@ int esxVI_LookupVirtualMachineByUuid(esxVI_Context *ctx,
esxVI_ObjectContent
**
virtualMachine
,
esxVI_Occurrence
occurrence
);
int
esxVI_LookupVirtualMachineByName
(
esxVI_Context
*
ctx
,
const
char
*
name
,
esxVI_String
*
propertyNameList
,
esxVI_ObjectContent
**
virtualMachine
,
esxVI_Occurrence
occurrence
);
int
esxVI_LookupVirtualMachineByUuidAndPrepareForTask
(
esxVI_Context
*
ctx
,
const
unsigned
char
*
uuid
,
esxVI_String
*
propertyNameList
,
esxVI_ObjectContent
**
virtualMachine
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录