calamari项目结构解析

calamari-common

结构图

config.py

此文件定义了CalamariConfig类,用于读取calamari的配置文件,默认是"/etc/calamari/calamari.conf"node

salt_wrapper.py

定义了SaltEventSource类,此类用于处理salt服务的 MasterEvent类的关闭和重链接python

 

types.py

此文件里包含一些对ceph概念的对象封装,会将ceph的json数据转成python对象web

定义了:SyncObject,OsdMap,MdsMap等类json

 

SyncObject:(VersionedSyncObject,OsdMap,MdsMap等类的基类)app

ceph集群的一个对象类,calamari server对ceph集群的一个复制异步

将json序列化数据对象包在python对象里测试

-用相似id-to-entry字典的东西来装饰spa

-此类有个通用方式供查看对象的版本线程

util.py

此文件定义了一个叫memoize的装饰器,在types.py的OsdMap类里用到server

calamari-web

结构图

conf

结构图

Cthulhu

结构图

manager

cluster_monitor.py

SyncObjects: 此类做用->版本化对象的数据

ClusterMonitor: 此类做用->远程管理ceph集群此类会衍生两个线程,一个监听salt事件,另外一个监听用户请求

crush_node_request_factory.py

CrushNodeRequestFactory: RequestFactory子类.映射REST API到CLI实现,具体实现增删改操做

crush_request_factory.py

CrushRequestFactory: RequestFactory的子类.实现CRUSH map修改操做,执行osd setcrushmap.

eventer.py

Eventer: gevent.greenlet.Greenlet的子类.监听ClusterMonitor 和 ServerMonitor数据的改变.Manager.py里的Manager类会用到

manager.py

Manager:经过salt服务远程操做ceph命令来管理ceph集群数据.此类是cthulhu组件的主要入口.

osd_request_factory.py

OsdRequestFactory: RequestFactory的子类,对osd进行修改操做

pool_request_factory.py

PoolRequestFactory: RequestFactory的子类.对ceph osd pool进行增删改的操做

request_collection.py

RequestCollection:管理用户请求的集合, 经过salt JID和 request ID索引.

此类包含一个锁

request_factory.py

RequestFactory:  用命令处理UserRequests的C[r]UD 操做,基类. 具体实如今子类处理

rpc.py

RpcInterface: 远程过程调用协议接口类, RpcThread会用到此类

RpcThread:  为用户的请求状态改变提供ZeroRPC API, manager.py里的Manager类会用到

 

server_monitor.py

ServerMonitor: 此类处理一些server和osd的一些更新的数据,在manager.py里的Manager类会用到

user_request.py

UserRequestBase:  ceph管理对象的request基类

UserRequest:继承自UserRequestBase

RadosRequest: 远程操做librados mon命令的用户请求类, 用于调用salt服务里ceph.rados_commands的方法, 继承自UserRequest

osd_request_factory.py里有用到

SaltRequest:  UserRequest子类,远程操做命令的用户请求,没有指定ceph命令时使用, rpc.py里有用到

OsdMapModifyingRequest: RadosRequest的子类.将执行RADOS命令后的数据同步成OsdMap对象

PoolCreatingRequest:OsdMapModifyingRequest子类,此类与OsdMapModifyingRequest类类似.只是多了对pool的处理

PgProgress:封装PgCreatingRequest用来建立操做 块时的状态。

PgCreatingRequest: OsdMapModifyingRequest子类.

1.发送一个工做到salt,直到反馈jid,则salt执行任务结束

2.获得反馈的数据后,将数据同步成OsdMap对象

3.OsdMap数据更新后,等待被建立PG的离开状态为'creating'

persistence

persister.py

Persister: gevent.greenlet.Greenlet的子类.异步持久化更新的数据的队列

servers.py

Server: 表结构,主机信息表格的定义

Service:表结构,ceph服务信息表格的定义

sync_objects.py

SyncObject:表结构,定义存储ClusterMonitor信息的表格.

 

测试:

calamari环境搭建完成的前提下

export CALAMARI_CONFIG="/home/zhennan/calamari.conf"

命令:/opt/calamari/venv/bin/python  /usr/bin/nosetests  test_manager.py

因为calamari是在独立的虚拟环境下运行,因此python环境要指定虚拟环境的:/opt/calamari/venv/bin/python

相关文章
相关标签/搜索