cinder glusterfs driver代码结构

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

cinder glusterfs driver代码结构的相关文章

joomla代码结构原理,执行流程

joomla-安装 下载源码 解压到apache发布目录 访问http://xxx/installation/index.php 根据实际情况访问 按每步提示操作,mysql库要先建立,ftp可暂时不开 删除安装文件即可 joomla代码结构 Joomla 2.5主要目录结构 ├─administrator     # 后台程序部分 ├─cache             # 用于存放cache,需要保持可写 ├─components        # 组件,每个组件一个文件夹,通常是com_*

ReactNative入门(4)代码结构

一.了解index.ios.js 大家都清楚,React-Native就是在开发效率和用户体验间做的一种权衡.React-native是使用JS开发,开发效率高.发布能力强,不仅拥有hybrid的开发效率,同时拥有native app相媲美的用户体验.目前天猫也在这块开始试水. 用编辑器打开index.ios.js文件,分析代码结构: 1.第一句:var React = require('react-native');有Node.js开发经验的同学都清楚,require可以引入其他模块.如果没有

代码结构和标识符

对代码结构的标识注解: 添加 JAVA语言的语法基础之一: 标识符:最好不要用中文的标识符,虽然没有限制,但最好也不要用. 注意并标识符的规则和可以定义的名字. 课本33页有Java语言的关键字表格.

关于网页脚本代码结构的再思考

在很多说法中,总是建议将我们的javascript脚本加载在网页的最后,并用外部文件的形式,然而事实并不是这样,外挂的文件最好不要太多,脚本结构代码本身才是值得我们思考的问题.我们需要重新思考我们撰写的脚本的执行力,并把更优秀的javascript开发思路融入到我们的开发中. 我在读完了几篇关于javascript和jQuery的性能优化的文章之后,才恍然大悟,我以前所做的很多代码结构优化,最终只是让乌徒帮显得臃肿,于是重新设计脚本代码的结构,无论怎么样,乌徒帮现在的网页打开显得更加流畅了. 1

storm源码之storm代码结构【译】【转】

[原]storm源码之storm代码结构[译] 说明:本文翻译自Storm在GitHub上的官方Wiki中提供的Storm代码结构描述一节Structure of the codebase,希望对正在基于Storm进行源码级学习和研究的朋友有所帮助. Storm的源码共分为三个不同的层次. 首先,Storm在设计之初就考虑到了兼容多语言开发.Nimbus是一个thrift服务,topologies被定义为Thrift结构体.Thrift的运用使得Storm可以被任意开发语言使用. 其次,Stor

RYU控制器代码结构的总结

1. RYU的基本框架及开发须知 从框架中我们可以看到,在RYU控制器架构中,包括:Non-OF protocols.OF protocols. 各种libraries以及内嵌的APP,同时,RYU控制器提供给用户统一的REST API,供用户基于RYU框架开发自己的APP,同时,开发者可以根据自己的需要.添加所需的组件和库文件.值得注意的是,RYU架构只是提供给开发者一个平台,相当于一个没有应用软件的操作系统,开发者想基于这个框架实现自己想要的功能,就必须通过RYU提供的API编写相应功能的A

PHP扩展代码结构详解

PHP扩展代码结构详解: 这个是继:使用ext_skel和phpize构建php5扩展  内容 (拆分出来) Zend_API:深入_PHP_内核:http://cn2.php.net/manual/zh/internals2.ze1.php 我们使用ext_skel创建扩展 hello_module,该模块包含一个方法:hello_world. 使用ext_skel 生成的代码都是PHP_开头的宏, 而不是ZEND_开头. 实际上这两者是一样的. 在源代码src/main/PHP.h 中发现:

Storm系统架构以及代码结构学习

转自:http://blog.csdn.net/androidlushangderen/article/details/45955833 storm学习系列:http://blog.csdn.net/Androidlushangderen/article/category/2647213 前言 什么是storm,storm是做什么的,一个简单的描述,你可以理解为是一个“准实时”的Hadoop,Hadoop是专门做的是离线数据处理,而storm则弥补了Hadoop在这方面的不足,他是一个实时数据处

JSqlParser系列之二代码结构(原)

JSqlParser系列之二代码结构(原) 博客园 百味木屋原创,转载请注明出处. 上一篇文章简单介绍如何建立JSqlParser工程,本章对JSqlParser工程的代码结构作大致地介绍. 一.目录结构 JSqlParser的目录结构比较简单,主要有表达式,解析器,语句处理几个目录.下面这张图给出了一个具体的SQL语句与表达式: 接下来,简要介绍一下在JSqlParser中几个抽象概念. 二.SQL语句(statement) JSqlPaser将所有的SQL语句抽象为Statement,Sta