cinderlib是一个基于cinder项目的python lib,基于cinderlib用户可以在无需运行任何cinder服务或者周边服务(例如KeyStone、MySQL、RabbitMQ)的情况下,提供存储驱动程序的CRUD功能。
介绍
cinderlib提供以下基于Volume的基本操作:
- Create volume
- Delete volume
- Extend volume
- Clone volume
- Create snapshot
- Delete snapshot
- Create volume from snapshot
- Connect volume
- Disconnect volume
- Local attach
- Local detach
- Validate connector
- Extra Specs for specific backend functionality.
- Backend QoS
- Multi-pool support
需要注意:针对不同的后端驱动,上述操作是否全部支持取决于实现
Demo
1
2
3
4
5
6
7
8
9
10
|
# 安装Python3
yum -y install gcc gcc-c++ openssl-devel zlib-devel libffi-devel glib2 glib2-devel libmount libmount-devel pixman pixman-devel bzip2 bzip2-libs bzip2-devel libxslt gnutls gnutls-devel libxml2-devel libtirpc-devel
wget https://www.python.org/ftp/python/3.6.15/Python-3.6.15.tgz
tar -xf Python-3.6.15.tgz && cd Python-3.6.15
./configure --prefix=/usr/local --with-ssl
make altinstall
ln -s /usr/local/bin/python3.6 /usr/bin/python3
ln -s /usr/local/bin/pip3.6 /usr/bin/pip3
pip3 install --upgrade pip
pip3 install virtualenv
|
获取cinder lib
1
2
3
|
virtualenv venv
source venv/bin/activate
pip3 install cinderlib
|
创建vg
1
2
|
pvcreate /dev/sdc
vgcreate cinder-volume /dev/sdc
|
执行以下测试代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import cinderlib as cl
# Initialize the LVM driver
lvm = cl.Backend(volume_driver='cinder.volume.drivers.lvm.LVMVolumeDriver',
volume_group='cinder-volumes',
target_protocol='iscsi',
target_helper='lioadm',
volume_backend_name='lvm_iscsi')
# Create a 1GB volume
vol = lvm.create_volume(1, name='lvm-vol')
# Export, initialize, and do a local attach of the volume
attach = vol.attach()
print('Volume %s attached to %s' % (vol.id, attach.path))
# Snapshot it
snap = vol.create_snapshot('lvm-snap')
|
参考
官方文档