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')

参考

官方文档