glusterfs.py文件
cinder/volume/drivers/glusterfs.py就是cinder调用glusterfs的驱动了
glusterfs.py只有一个GlusterfsDriver class,如下图所示
from os_brick.remotefs import remotefs as remotefs_brick # client端操作 from oslo_concurrency import processutils from oslo_config import cfg from oslo_log import log as logging from oslo_utils import fileutils from oslo_utils import units from cinder import exception from cinder.i18n import _, _LE, _LI, _LW from cinder.image import image_utils from cinder import utils from cinder.volume import driver # 很多定义的方法还没具体实现 from cinder.volume.drivers import remotefs as remotefs_drv # 基类 class GlusterfsDriver(remotefs_drv.RemoteFSSnapDriver, driver.CloneableVD, driver.ExtendVD): """Gluster based cinder driver. Creates file on Gluster share for using it as block device on hypervisor. Operations such as create/delete/extend volume/snapshot use locking on a per-process basis to prevent multiple threads from modifying qcow2 chains or the snapshot .info file simultaneously. """
class GlusterfsDriver的父类remotefs_drv.RemoteFSSnapDriver(主要看这个)
cinder/volume/drivers/remotefs.py有两个class,类RemoteFSSnapDriver从类RemoteFSDriver继承
class RemoteFSSnapDriver(RemoteFSDriver, driver.SnapshotVD): """Base class for remotefs drivers implementing qcow2 snapshots. Driver must implement: _local_volume_dir(self, volume) """
类RemoteFSSnapDriver主要是针对volume snapshot的一系列操作。
类RemoteFSDriver可以认为是一个base class,里面定义了很多基本方法
上面提到的class都是关于server端的封装。
client端的封装已经独立为一个项目:os-brick
os_brick/remotefs/remotefs.py,只有一个class RemoteFsClient,右边是类中定义的方法。
未完待续。。。。。。
时间: 2024-10-24 06:35:08