Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
avocado
提交
8f9204fa
A
avocado
项目概览
openeuler
/
avocado
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
avocado
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
8f9204fa
编写于
12月 04, 2018
作者:
C
Caio Carrara
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'clebergnu/pevogam-lv-rebase-batch2'
Signed-off-by:
N
Caio Carrara
<
ccarrara@redhat.com
>
上级
104f19ad
12c6ff77
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
72 addition
and
40 deletion
+72
-40
avocado/utils/lv_utils.py
avocado/utils/lv_utils.py
+72
-40
未找到文件。
avocado/utils/lv_utils.py
浏览文件 @
8f9204fa
...
...
@@ -339,14 +339,24 @@ def lv_remove(vg_name, lv_name):
process
.
run
(
cmd
,
sudo
=
True
)
def
lv_create
(
vg_name
,
lv_name
,
lv_size
,
force_flag
=
True
):
def
lv_create
(
vg_name
,
lv_name
,
lv_size
,
force_flag
=
True
,
pool_name
=
None
,
pool_size
=
"1G"
):
"""
Create a
L
ogical volume in a volume group.
Create a
(possibly thin) l
ogical volume in a volume group.
The volume group must already exist.
:param vg_name: Name of the volume group
:param lv_name: Name of the logical volume
:param lv_size: Size for the logical volume to be created
:param force_flag: Whether to abort if volume already exists
or remove and recreate it
:param pool_name: Name of thin pool or None for regular volume
:param pool_size: Size of thin pool if it will be created
A thin pool will be created if pool parameters are provided
and the thin pool doesn't already exist.
The volume group must already exist.
"""
if
not
vg_check
(
vg_name
):
...
...
@@ -356,8 +366,50 @@ def lv_create(vg_name, lv_name, lv_size, force_flag=True):
elif
lv_check
(
vg_name
,
lv_name
)
and
force_flag
:
lv_remove
(
vg_name
,
lv_name
)
cmd
=
"lvcreate --size %s --name %s %s -y"
%
(
lv_size
,
lv_name
,
vg_name
)
process
.
run
(
cmd
,
sudo
=
True
)
lv_cmd
=
"lvcreate --name %s"
%
lv_name
if
pool_name
is
not
None
:
if
not
lv_check
(
vg_name
,
pool_name
):
tp_cmd
=
"lvcreate --thinpool %s --size %s %s -y"
%
(
pool_name
,
pool_size
,
vg_name
)
try
:
process
.
run
(
tp_cmd
,
sudo
=
True
)
except
process
.
CmdError
as
detail
:
LOGGER
.
debug
(
detail
)
raise
LVException
(
"Create thin volume pool failed."
)
LOGGER
.
debug
(
"Created thin volume pool: %s"
,
pool_name
)
lv_cmd
+=
" --virtualsize %s"
%
lv_size
lv_cmd
+=
" --thin %s/%s -y"
%
(
vg_name
,
pool_name
)
else
:
lv_cmd
+=
" --size %s"
%
lv_size
lv_cmd
+=
" %s -y"
%
vg_name
try
:
process
.
run
(
lv_cmd
,
sudo
=
True
)
except
process
.
CmdError
as
detail
:
LOGGER
.
error
(
detail
)
raise
LVException
(
"Create thin volume failed."
)
LOGGER
.
debug
(
"Created thin volume:%s"
,
lv_name
)
def
thin_lv_create
(
vg_name
,
thinpool_name
=
"lvthinpool"
,
thinpool_size
=
"1.5G"
,
thinlv_name
=
"lvthin"
,
thinlv_size
=
"1G"
):
"""
Create a thin volume from given volume group.
Note: this is a deprecated API and will be removed soon.
:param vg_name: An exist volume group
:param thinpool_name: The name of thin pool
:param thinpool_size: The size of thin pool to be created
:param thinlv_name: The name of thin volume
:param thinlv_size: The size of thin volume
"""
LOGGER
.
warn
(
"thin_lv_create() is a deprecated API and will be removed "
"soon. Please resort to using lv_create() which is now "
"capable of creathing thin logical volumes"
)
lv_create
(
vg_name
=
vg_name
,
lv_name
=
thinlv_name
,
lv_size
=
thinlv_size
,
pool_name
=
thinpool_name
,
pool_size
=
thinpool_size
)
return
(
thinpool_name
,
thinlv_name
)
def
lv_list
(
vg_name
=
None
):
...
...
@@ -396,58 +448,38 @@ def lv_list(vg_name=None):
return
volumes
def
thin_lv_create
(
vg_name
,
thinpool_name
=
"lvthinpool"
,
thinpool_size
=
"1.5G"
,
thinlv_name
=
"lvthin"
,
thinlv_size
=
"1G"
):
"""
Create a thin volume from given volume group.
:param vg_name: An exist volume group
:param thinpool_name: The name of thin pool
:param thinpool_size: The size of thin pool to be created
:param thinlv_name: The name of thin volume
:param thinlv_size: The size of thin volume
"""
tp_cmd
=
"lvcreate --thinpool %s --size %s %s -y"
%
(
thinpool_name
,
thinpool_size
,
vg_name
)
try
:
process
.
run
(
tp_cmd
,
sudo
=
True
)
except
process
.
CmdError
as
detail
:
LOGGER
.
debug
(
detail
)
raise
LVException
(
"Create thin volume pool failed."
)
LOGGER
.
debug
(
"Created thin volume pool: %s"
,
thinpool_name
)
lv_cmd
=
(
"lvcreate --name %s --virtualsize %s "
"--thin %s/%s -y"
%
(
thinlv_name
,
thinlv_size
,
vg_name
,
thinpool_name
))
try
:
process
.
run
(
lv_cmd
,
sudo
=
True
)
except
process
.
CmdError
as
detail
:
LOGGER
.
error
(
detail
)
raise
LVException
(
"Create thin volume failed."
)
LOGGER
.
debug
(
"Created thin volume:%s"
,
thinlv_name
)
return
(
thinpool_name
,
thinlv_name
)
def
lv_take_snapshot
(
vg_name
,
lv_name
,
lv_snapshot_name
,
lv_snapshot_size
):
lv_snapshot_name
,
lv_snapshot_size
=
None
,
pool_name
=
None
):
"""
Take a snapshot of the original Logical volume.
:param vg_name: An existing volume group
:param lv_name: An existing logical volume
:param lv_snapshot_name: Name of the snapshot be to created
:param lv_snapshot_size: Size of the snapshot
:param lv_snapshot_size: Size of the snapshot or None for thin
snapshot of a thin volume
:param pool_name: Name of thin pool or None for regular snapshot
or snapshot in the same thin pool like the volume
"""
if
not
vg_check
(
vg_name
):
raise
LVException
(
"Volume group could not be found"
)
if
pool_name
is
not
None
and
not
lv_check
(
vg_name
,
pool_name
):
raise
LVException
(
"Snapshot's thin pool could not be found"
)
if
lv_check
(
vg_name
,
lv_snapshot_name
):
raise
LVException
(
"Snapshot already exists"
)
if
not
lv_check
(
vg_name
,
lv_name
):
raise
LVException
(
"Snapshot's origin could not be found"
)
cmd
=
(
"lvcreate --size %s --snapshot --name %s /dev/%s/%s -y"
%
(
lv_snapshot_size
,
lv_snapshot_name
,
vg_name
,
lv_name
))
# thin snapshot extensions (from thin or external volume)
cmd
=
(
"lvcreate --snapshot --name %s /dev/%s/%s --ignoreactivationskip"
%
(
lv_snapshot_name
,
vg_name
,
lv_name
))
if
lv_snapshot_size
is
not
None
:
cmd
+=
" --size %s"
%
lv_snapshot_size
if
pool_name
is
not
None
:
cmd
+=
" --thinpool %s/%s"
%
(
vg_name
,
pool_name
)
try
:
process
.
run
(
cmd
,
sudo
=
True
)
except
process
.
CmdError
as
ex
:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录