Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
554d82a2
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看板
提交
554d82a2
编写于
1月 20, 2009
作者:
D
Daniel P. Berrange
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Use global thread-local error for all python error reporting
上级
839c6de5
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
30 addition
and
26 deletion
+30
-26
ChangeLog
ChangeLog
+5
-0
python/libvir.c
python/libvir.c
+22
-22
python/libvir.py
python/libvir.py
+3
-4
未找到文件。
ChangeLog
浏览文件 @
554d82a2
Tue Jan 20 22:06:53 GMT 2009 Daniel P. Berrange <berrange@redhat.com>
* python/libvir.c, python/libvir.py: Use global thread
local error variable for all exceptions.
Tue Jan 20 13:35:36 PST 2009 John Levon <john.levon@sun.com>
* qemud/qemud.c: respect LIBVIRT_DEBUG when logging to syslog
...
...
python/libvir.c
浏览文件 @
554d82a2
...
...
@@ -438,23 +438,23 @@ static PyObject *libvirt_virPythonErrorFuncCtxt = NULL;
static
PyObject
*
libvirt_virGetLastError
(
PyObject
*
self
ATTRIBUTE_UNUSED
,
PyObject
*
args
ATTRIBUTE_UNUSED
)
{
virError
err
;
virError
*
err
;
PyObject
*
info
;
if
(
virCopyLastError
(
&
err
)
<=
0
)
if
(
(
err
=
virGetLastError
())
==
NULL
)
return
VIR_PY_NONE
;
if
((
info
=
PyTuple_New
(
9
))
==
NULL
)
return
VIR_PY_NONE
;
PyTuple_SetItem
(
info
,
0
,
PyInt_FromLong
((
long
)
err
.
code
));
PyTuple_SetItem
(
info
,
1
,
PyInt_FromLong
((
long
)
err
.
domain
));
PyTuple_SetItem
(
info
,
2
,
libvirt_constcharPtrWrap
(
err
.
message
));
PyTuple_SetItem
(
info
,
3
,
PyInt_FromLong
((
long
)
err
.
level
));
PyTuple_SetItem
(
info
,
4
,
libvirt_constcharPtrWrap
(
err
.
str1
));
PyTuple_SetItem
(
info
,
5
,
libvirt_constcharPtrWrap
(
err
.
str2
));
PyTuple_SetItem
(
info
,
6
,
libvirt_constcharPtrWrap
(
err
.
str3
));
PyTuple_SetItem
(
info
,
7
,
PyInt_FromLong
((
long
)
err
.
int1
));
PyTuple_SetItem
(
info
,
8
,
PyInt_FromLong
((
long
)
err
.
int2
));
PyTuple_SetItem
(
info
,
0
,
PyInt_FromLong
((
long
)
err
->
code
));
PyTuple_SetItem
(
info
,
1
,
PyInt_FromLong
((
long
)
err
->
domain
));
PyTuple_SetItem
(
info
,
2
,
libvirt_constcharPtrWrap
(
err
->
message
));
PyTuple_SetItem
(
info
,
3
,
PyInt_FromLong
((
long
)
err
->
level
));
PyTuple_SetItem
(
info
,
4
,
libvirt_constcharPtrWrap
(
err
->
str1
));
PyTuple_SetItem
(
info
,
5
,
libvirt_constcharPtrWrap
(
err
->
str2
));
PyTuple_SetItem
(
info
,
6
,
libvirt_constcharPtrWrap
(
err
->
str3
));
PyTuple_SetItem
(
info
,
7
,
PyInt_FromLong
((
long
)
err
->
int1
));
PyTuple_SetItem
(
info
,
8
,
PyInt_FromLong
((
long
)
err
->
int2
));
return
info
;
}
...
...
@@ -462,7 +462,7 @@ libvirt_virGetLastError(PyObject *self ATTRIBUTE_UNUSED, PyObject *args ATTRIBUT
static
PyObject
*
libvirt_virConnGetLastError
(
PyObject
*
self
ATTRIBUTE_UNUSED
,
PyObject
*
args
)
{
virError
err
;
virError
*
err
;
PyObject
*
info
;
virConnectPtr
conn
;
PyObject
*
pyobj_conn
;
...
...
@@ -471,20 +471,20 @@ libvirt_virConnGetLastError(PyObject *self ATTRIBUTE_UNUSED, PyObject *args)
return
(
NULL
);
conn
=
(
virConnectPtr
)
PyvirConnect_Get
(
pyobj_conn
);
if
(
virConnCopyLastError
(
conn
,
&
err
)
<=
0
)
if
(
(
err
=
virConnGetLastError
(
conn
))
==
NULL
)
return
VIR_PY_NONE
;
if
((
info
=
PyTuple_New
(
9
))
==
NULL
)
return
VIR_PY_NONE
;
PyTuple_SetItem
(
info
,
0
,
PyInt_FromLong
((
long
)
err
.
code
));
PyTuple_SetItem
(
info
,
1
,
PyInt_FromLong
((
long
)
err
.
domain
));
PyTuple_SetItem
(
info
,
2
,
libvirt_constcharPtrWrap
(
err
.
message
));
PyTuple_SetItem
(
info
,
3
,
PyInt_FromLong
((
long
)
err
.
level
));
PyTuple_SetItem
(
info
,
4
,
libvirt_constcharPtrWrap
(
err
.
str1
));
PyTuple_SetItem
(
info
,
5
,
libvirt_constcharPtrWrap
(
err
.
str2
));
PyTuple_SetItem
(
info
,
6
,
libvirt_constcharPtrWrap
(
err
.
str3
));
PyTuple_SetItem
(
info
,
7
,
PyInt_FromLong
((
long
)
err
.
int1
));
PyTuple_SetItem
(
info
,
8
,
PyInt_FromLong
((
long
)
err
.
int2
));
PyTuple_SetItem
(
info
,
0
,
PyInt_FromLong
((
long
)
err
->
code
));
PyTuple_SetItem
(
info
,
1
,
PyInt_FromLong
((
long
)
err
->
domain
));
PyTuple_SetItem
(
info
,
2
,
libvirt_constcharPtrWrap
(
err
->
message
));
PyTuple_SetItem
(
info
,
3
,
PyInt_FromLong
((
long
)
err
->
level
));
PyTuple_SetItem
(
info
,
4
,
libvirt_constcharPtrWrap
(
err
->
str1
));
PyTuple_SetItem
(
info
,
5
,
libvirt_constcharPtrWrap
(
err
->
str2
));
PyTuple_SetItem
(
info
,
6
,
libvirt_constcharPtrWrap
(
err
->
str3
));
PyTuple_SetItem
(
info
,
7
,
PyInt_FromLong
((
long
)
err
->
int1
));
PyTuple_SetItem
(
info
,
8
,
PyInt_FromLong
((
long
)
err
->
int2
));
return
info
;
}
...
...
python/libvir.py
浏览文件 @
554d82a2
...
...
@@ -26,10 +26,9 @@ class libvirtError(Exception):
elif
vol
is
not
None
:
conn
=
vol
.
_conn
if
conn
is
None
:
err
=
virGetLastError
()
else
:
err
=
conn
.
virConnGetLastError
()
# Never call virConnGetLastError().
# virGetLastError() is now thread local
err
=
virGetLastError
()
if
err
is
None
:
msg
=
defmsg
else
:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录