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

相關文章
相關標籤/搜索