Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
tp-qemu
提交
fc238870
T
tp-qemu
项目概览
openeuler
/
tp-qemu
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
tp-qemu
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
fc238870
编写于
6月 13, 2014
作者:
L
Lucas Meneghel Rodrigues
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #58 from FengYang/qemu-img
qemu.tests.qemu_img: Support gluster
上级
6046958a
d2f83457
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
60 addition
and
41 deletion
+60
-41
qemu/tests/qemu_img.py
qemu/tests/qemu_img.py
+60
-41
未找到文件。
qemu/tests/qemu_img.py
浏览文件 @
fc238870
...
...
@@ -3,7 +3,7 @@ import os
import
logging
import
commands
from
autotest.client.shared
import
utils
,
error
from
virttest
import
utils_misc
,
env_process
,
storage
,
data_dir
from
virttest
import
utils_misc
,
env_process
,
storage
,
data_dir
,
gluster
@
error
.
context_aware
...
...
@@ -23,8 +23,35 @@ def run(test, params, env):
raise
error
.
TestError
(
"Binary of 'qemu-img' not found"
)
image_format
=
params
[
"image_format"
]
image_size
=
params
.
get
(
"image_size"
,
"10G"
)
enable_gluster
=
params
.
get
(
"enable_gluster"
,
"no"
)
==
"yes"
image_name
=
storage
.
get_image_filename
(
params
,
data_dir
.
get_data_dir
())
def
remove
(
path
):
try
:
os
.
remove
(
path
)
except
OSError
:
pass
def
_get_image_filename
(
img_name
,
enable_gluster
=
False
,
img_fmt
=
None
):
"""
Generate an image path.
:param image_name: Force name of image.
:param enable_gluster: Enable gluster or not.
:param image_format: Format for image.
"""
if
enable_gluster
:
gluster_uri
=
gluster
.
create_gluster_uri
(
params
)
image_filename
=
"%s%s"
%
(
gluster_uri
,
img_name
)
if
img_fmt
:
image_filename
+=
".%s"
%
img_fmt
else
:
if
img_fmt
:
img_name
=
"%s.%s"
%
(
img_name
,
img_fmt
)
image_filename
=
utils_misc
.
get_path
(
data_dir
.
get_data_dir
(),
img_name
)
return
image_filename
def
_check
(
cmd
,
img
):
"""
Simple 'qemu-img check' function implementation.
...
...
@@ -53,8 +80,8 @@ def run(test, params, env):
:param cmd: qemu-img base command.
"""
test_image
=
utils_misc
.
get_path
(
data_dir
.
get_data_dir
()
,
params
[
"image_name_dd"
]
)
test_image
=
_get_image_filename
(
params
[
"image_name_dd"
]
,
enable_gluster
)
create_image_cmd
=
params
[
"create_image_cmd"
]
create_image_cmd
=
create_image_cmd
%
test_image
msg
=
" Create image %s by command %s"
%
(
test_image
,
create_image_cmd
)
...
...
@@ -71,8 +98,8 @@ def run(test, params, env):
if
not
status
:
raise
error
.
TestFail
(
"Check image '%s' got error: %s"
%
(
output_image
,
output
))
os
.
remove
(
output_image
)
os
.
remove
(
test_image
)
remove
(
output_image
)
remove
(
test_image
)
def
_create
(
cmd
,
img_name
,
fmt
,
img_size
=
None
,
base_img
=
None
,
base_img_fmt
=
None
,
encrypted
=
"no"
,
...
...
@@ -131,15 +158,15 @@ def run(test, params, env):
image_large
=
params
[
"image_name_large"
]
device
=
params
.
get
(
"device"
)
if
not
device
:
img
=
utils_misc
.
get_path
(
data_dir
.
get_data_dir
(),
image_large
)
img
+=
'.'
+
image_format
img
=
_get_image_filename
(
image_large
,
enable_gluster
,
image_format
)
else
:
img
=
device
_create
(
cmd
,
img_name
=
img
,
fmt
=
image_format
,
img_size
=
params
[
"image_size_large"
],
preallocated
=
params
.
get
(
"preallocated"
,
"off"
),
cluster_size
=
params
.
get
(
"image_cluster_size"
))
os
.
remove
(
img
)
remove
(
img
)
def
_convert
(
cmd
,
output_fmt
,
img_name
,
output_filename
,
fmt
=
None
,
compressed
=
"no"
,
encrypted
=
"no"
):
...
...
@@ -196,12 +223,12 @@ def run(test, params, env):
if
dest_img_fmt
==
"qcow2"
:
status
,
output
=
_check
(
cmd
,
output_filename
)
if
status
:
os
.
remove
(
output_filename
)
remove
(
output_filename
)
else
:
raise
error
.
TestFail
(
"Check image '%s' failed with error: %s"
%
(
output_filename
,
output
))
else
:
os
.
remove
(
output_filename
)
remove
(
output_filename
)
def
_info
(
cmd
,
img
,
sub_info
=
None
,
fmt
=
None
):
"""
...
...
@@ -259,7 +286,8 @@ def run(test, params, env):
sn_name
=
"snapshot%d"
%
i
crtcmd
+=
" -c %s %s"
%
(
sn_name
,
image_name
)
msg
=
"Created snapshot '%s' in '%s' by command %s"
%
(
sn_name
,
image_name
,
crtcmd
)
image_name
,
crtcmd
)
error
.
context
(
msg
,
logging
.
info
)
status
,
output
=
commands
.
getstatusoutput
(
crtcmd
)
if
status
!=
0
:
...
...
@@ -298,32 +326,28 @@ def run(test, params, env):
"""
logging
.
info
(
"Commit testing started!"
)
image_name
=
params
.
get
(
"image_name"
,
"image"
)
image_name
=
os
.
path
.
join
(
data_dir
.
get_data_dir
(),
image_name
)
image_name
=
storage
.
get_image_filename
(
params
,
data_dir
.
get_data_dir
())
pre_name
=
'.'
.
join
(
image_name
.
split
(
'.'
)[:
-
1
])
image_format
=
params
.
get
(
"image_format"
,
"qcow2"
)
overlay_file_name
=
"%s_overlay
"
%
(
image_name
)
overlay_file_name
=
"%s_overlay
.%s"
%
(
pre_name
,
image_format
)
file_create_cmd
=
params
.
get
(
"file_create_cmd"
,
"touch /commit_testfile"
)
file_info_cmd
=
params
.
get
(
"file_info_cmd"
,
"ls / | grep commit_testfile"
)
file_exist_chk_cmd
=
params
.
get
(
"file_exist_chk_cmd"
,
"[ -e /commit_testfile ] && echo $?"
)
file_not_exist_chk_cmd
=
params
.
get
(
"file_not_exist_chk_cmd"
,
"[ ! -e /commit_testfile ] && echo $?"
)
file_del_cmd
=
params
.
get
(
"file_del_cmd"
,
"rm -f /commit_testfile"
)
try
:
# Remove the existing overlay file
overlay_file
=
"%s.%s"
%
(
overlay_file_name
,
image_format
)
if
os
.
path
.
isfile
(
overlay_file
):
os
.
remove
(
overlay_file
)
if
os
.
path
.
isfile
(
overlay_file_name
):
remove
(
overlay_file_name
)
# Create the new overlay file
create_cmd
=
"%s create -b %s.%s -f %s %s.%s"
%
(
cmd
,
image_name
,
image_format
,
image_format
,
overlay_file_name
,
image_format
)
create_cmd
=
"%s create -b %s -f %s %s"
%
(
cmd
,
image_name
,
image_format
,
overlay_file_name
)
msg
=
"Create overlay file by command: %s"
%
create_cmd
error
.
context
(
msg
,
logging
.
info
)
try
:
...
...
@@ -335,7 +359,7 @@ def run(test, params, env):
# Set the qemu harddisk to the overlay file
logging
.
info
(
"Original image_name is: %s"
,
params
.
get
(
'image_name'
))
params
[
'image_name'
]
=
overlay_fil
e_name
params
[
'image_name'
]
=
pr
e_name
logging
.
info
(
"Param image_name changed to: %s"
,
params
.
get
(
'image_name'
))
...
...
@@ -360,9 +384,8 @@ def run(test, params, env):
vm
.
destroy
()
# Execute the commit command
cmitcmd
=
"%s commit -f %s %s.%s"
%
(
cmd
,
image_format
,
overlay_file_name
,
image_format
)
cmitcmd
=
"%s commit -f %s %s"
%
(
cmd
,
image_format
,
overlay_file_name
)
error
.
context
(
"Committing image by command %s"
%
cmitcmd
,
logging
.
info
)
try
:
...
...
@@ -388,8 +411,8 @@ def run(test, params, env):
finally
:
# Remove the overlay file
if
os
.
path
.
isfile
(
overlay_file
):
os
.
remove
(
overlay_fil
e
)
if
os
.
path
.
isfile
(
overlay_file
_name
):
remove
(
overlay_file_nam
e
)
def
_rebase
(
cmd
,
img_name
,
base_img
,
backing_fmt
,
mode
=
"unsafe"
):
"""
...
...
@@ -430,24 +453,23 @@ def run(test, params, env):
" support 'rebase' subcommand"
)
sn_fmt
=
params
.
get
(
"snapshot_format"
,
"qcow2"
)
sn1
=
params
[
"image_name_snapshot1"
]
sn1
=
utils_misc
.
get_path
(
data_dir
.
get_data_dir
(),
sn1
)
+
".%s"
%
sn_fmt
sn1
=
_get_image_filename
(
sn1
,
enable_gluster
,
sn_fmt
)
base_img
=
storage
.
get_image_filename
(
params
,
data_dir
.
get_data_dir
())
_create
(
cmd
,
sn1
,
sn_fmt
,
base_img
=
base_img
,
base_img_fmt
=
image_format
)
# Create snapshot2 based on snapshot1
sn2
=
params
[
"image_name_snapshot2"
]
sn2
=
utils_misc
.
get_path
(
data_dir
.
get_data_dir
(),
sn2
)
+
".%s"
%
sn_fmt
sn2
=
_get_image_filename
(
sn2
,
enable_gluster
,
sn_fmt
)
_create
(
cmd
,
sn2
,
sn_fmt
,
base_img
=
sn1
,
base_img_fmt
=
sn_fmt
)
rebase_mode
=
params
.
get
(
"rebase_mode"
)
if
rebase_mode
==
"unsafe"
:
os
.
remove
(
sn1
)
remove
(
sn1
)
_rebase
(
cmd
,
sn2
,
base_img
,
image_format
,
mode
=
rebase_mode
)
# Boot snapshot image after rebase
img_name
,
img_format
=
sn2
.
split
(
'.'
)
img_format
=
sn2
.
split
(
'.'
)[
-
1
]
img_name
=
"."
.
join
(
sn2
.
split
(
'.'
)[:
-
1
])
_boot
(
img_name
,
img_format
)
# Check sn2's format and backing_file
...
...
@@ -461,11 +483,8 @@ def run(test, params, env):
if
not
status
:
raise
error
.
TestFail
(
"Check image '%s' failed after rebase;"
"got error: %s"
%
(
sn2
,
output
))
try
:
os
.
remove
(
sn2
)
os
.
remove
(
sn1
)
except
Exception
:
pass
remove
(
sn2
)
remove
(
sn1
)
def
_boot
(
img_name
,
img_fmt
):
"""
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录