Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
316ed4cb
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看板
提交
316ed4cb
编写于
12月 14, 2005
作者:
D
Daniel Veillard
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
* src/xml.c: add dump of os/boot informations
Daniel
上级
5462d542
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
118 addition
and
3 deletion
+118
-3
ChangeLog
ChangeLog
+4
-0
src/xml.c
src/xml.c
+114
-3
未找到文件。
ChangeLog
浏览文件 @
316ed4cb
Wed Dec 14 16:28:24 CET 2005 Daniel Veillard <veillard@redhat.com>
* src/xml.c: add dump of os/boot informations
Wed Dec 14 13:35:39 CET 2005 Daniel Veillard <veillard@redhat.com>
Wed Dec 14 13:35:39 CET 2005 Daniel Veillard <veillard@redhat.com>
* src/xml.c: added dump of physical vbd and read-only status
* src/xml.c: added dump of physical vbd and read-only status
...
...
src/xml.c
浏览文件 @
316ed4cb
...
@@ -167,6 +167,39 @@ done:
...
@@ -167,6 +167,39 @@ done:
return
(
ret
);
return
(
ret
);
}
}
/**
* virDomainGetVMInfo:
* @domain: a domain object
* @vm: the xenstore vm path
* @name: the value's path
*
* Extract one information the device used by the domain from xensttore
*
* Returns the new string or NULL in case of error
*/
static
char
*
virDomainGetVMInfo
(
virDomainPtr
domain
,
const
char
*
vm
,
const
char
*
name
)
{
struct
xs_transaction_handle
*
t
;
char
s
[
256
];
char
*
ret
=
NULL
;
unsigned
int
len
=
0
;
snprintf
(
s
,
255
,
"%s/%s"
,
vm
,
name
);
s
[
255
]
=
0
;
t
=
xs_transaction_start
(
domain
->
conn
->
xshandle
);
if
(
t
==
NULL
)
goto
done
;
ret
=
xs_read
(
domain
->
conn
->
xshandle
,
t
,
&
s
[
0
],
&
len
);
done:
if
(
t
!=
NULL
)
xs_transaction_end
(
domain
->
conn
->
xshandle
,
t
,
0
);
return
(
ret
);
}
/**
/**
* virDomainGetXMLDevice:
* virDomainGetXMLDevice:
* @domain: a domain object
* @domain: a domain object
...
@@ -300,9 +333,18 @@ virDomainGetXMLInterface(virDomainPtr domain, virBufferPtr buf, long dev) {
...
@@ -300,9 +333,18 @@ virDomainGetXMLInterface(virDomainPtr domain, virBufferPtr buf, long dev) {
type
=
virDomainGetXMLDeviceInfo
(
domain
,
"vif"
,
dev
,
"bridge"
);
type
=
virDomainGetXMLDeviceInfo
(
domain
,
"vif"
,
dev
,
"bridge"
);
if
(
type
==
NULL
)
{
if
(
type
==
NULL
)
{
TODO
virBufferVSprintf
(
buf
,
" <interface type='default'>
\n
"
);
fprintf
(
stderr
,
"Don't know how to handle non bridge interfaces
\n
"
);
val
=
virDomainGetXMLDeviceInfo
(
domain
,
"vif"
,
dev
,
"mac"
);
return
(
-
1
);
if
(
val
!=
NULL
)
{
virBufferVSprintf
(
buf
,
" <mac address='%s'/>
\n
"
,
val
);
free
(
val
);
}
val
=
virDomainGetXMLDeviceInfo
(
domain
,
"vif"
,
dev
,
"script"
);
if
(
val
!=
NULL
)
{
virBufferVSprintf
(
buf
,
" <script path='%s'/>
\n
"
,
val
);
free
(
val
);
}
virBufferAdd
(
buf
,
" </interface>
\n
"
,
17
);
}
else
{
}
else
{
virBufferVSprintf
(
buf
,
" <interface type='bridge'>
\n
"
);
virBufferVSprintf
(
buf
,
" <interface type='bridge'>
\n
"
);
virBufferVSprintf
(
buf
,
" <source bridge='%s'/>
\n
"
,
type
);
virBufferVSprintf
(
buf
,
" <source bridge='%s'/>
\n
"
,
type
);
...
@@ -377,6 +419,74 @@ done:
...
@@ -377,6 +419,74 @@ done:
return
(
ret
);
return
(
ret
);
}
}
/**
* virDomainGetXMLBoot:
* @domain: a domain object
* @buf: the output buffer object
*
* Extract the boot informations used to start that domain
*
* Returns 0 in case of success, -1 in case of failure
*/
static
int
virDomainGetXMLBoot
(
virDomainPtr
domain
,
virBufferPtr
buf
)
{
struct
xs_transaction_handle
*
t
;
char
*
vm
,
*
str
;
char
query
[
200
];
virConnectPtr
conn
;
int
len
;
conn
=
domain
->
conn
;
if
((
conn
==
NULL
)
||
(
conn
->
magic
!=
VIR_CONNECT_MAGIC
))
return
(
-
1
);
t
=
xs_transaction_start
(
conn
->
xshandle
);
if
(
t
==
NULL
)
return
(
-
1
);
snprintf
(
query
,
199
,
"/local/domain/%d/vm"
,
virDomainGetID
(
domain
));
query
[
199
]
=
0
;
vm
=
xs_read
(
domain
->
conn
->
xshandle
,
t
,
&
query
[
0
],
&
len
);
if
(
t
!=
NULL
)
xs_transaction_end
(
domain
->
conn
->
xshandle
,
t
,
0
);
if
(
vm
==
NULL
)
return
(
-
1
);
virBufferAdd
(
buf
,
" <os>
\n
"
,
7
);
str
=
virDomainGetVMInfo
(
domain
,
vm
,
"image/ostype"
);
if
(
str
!=
NULL
)
{
virBufferVSprintf
(
buf
,
" <type>%s</type>
\n
"
,
str
);
free
(
str
);
}
str
=
virDomainGetVMInfo
(
domain
,
vm
,
"image/kernel"
);
if
(
str
!=
NULL
)
{
virBufferVSprintf
(
buf
,
" <kernel>%s</kernel>
\n
"
,
str
);
free
(
str
);
}
str
=
virDomainGetVMInfo
(
domain
,
vm
,
"image/ramdisk"
);
if
(
str
!=
NULL
)
{
if
(
str
[
0
]
!=
0
)
virBufferVSprintf
(
buf
,
" <initrd>%s</initrd>
\n
"
,
str
);
free
(
str
);
}
str
=
virDomainGetVMInfo
(
domain
,
vm
,
"image/cmdline"
);
if
(
str
!=
NULL
)
{
if
(
str
[
0
]
!=
0
)
virBufferVSprintf
(
buf
,
" <cmdline>%s</cmdline>
\n
"
,
str
);
free
(
str
);
}
virBufferAdd
(
buf
,
" </os>
\n
"
,
8
);
free
(
vm
);
return
(
0
);
}
/**
/**
* virDomainGetXMLDesc:
* virDomainGetXMLDesc:
* @domain: a domain object
* @domain: a domain object
...
@@ -411,6 +521,7 @@ virDomainGetXMLDesc(virDomainPtr domain, int flags) {
...
@@ -411,6 +521,7 @@ virDomainGetXMLDesc(virDomainPtr domain, int flags) {
virBufferVSprintf
(
&
buf
,
"<domain type='xen' id='%d'>
\n
"
,
virBufferVSprintf
(
&
buf
,
"<domain type='xen' id='%d'>
\n
"
,
virDomainGetID
(
domain
));
virDomainGetID
(
domain
));
virBufferVSprintf
(
&
buf
,
" <name>%s</name>
\n
"
,
virDomainGetName
(
domain
));
virBufferVSprintf
(
&
buf
,
" <name>%s</name>
\n
"
,
virDomainGetName
(
domain
));
virDomainGetXMLBoot
(
domain
,
&
buf
);
virBufferVSprintf
(
&
buf
,
" <memory>%lu</memory>
\n
"
,
info
.
maxMem
);
virBufferVSprintf
(
&
buf
,
" <memory>%lu</memory>
\n
"
,
info
.
maxMem
);
virBufferVSprintf
(
&
buf
,
" <vcpu>%d</vcpu>
\n
"
,
(
int
)
info
.
nrVirtCpu
);
virBufferVSprintf
(
&
buf
,
" <vcpu>%d</vcpu>
\n
"
,
(
int
)
info
.
nrVirtCpu
);
virBufferAdd
(
&
buf
,
" <devices>
\n
"
,
12
);
virBufferAdd
(
&
buf
,
" <devices>
\n
"
,
12
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录