本文和大家分享的主要是
python開發(fā)中rados
命令的使用相關(guān)案例,一起來看看吧,希望對大家學習和使用這部分內(nèi)容有所幫助。
我們以前的管理平臺在python
平臺下面做的,內(nèi)部做的一些操作采用的是命令執(zhí)行,然后解析的方式去做的,
ceph
自身有
python
的
rados
接口,可以直接調(diào)用原生接口,然后直接解析
json
的方式,這樣更靠近底層
在看ceph-dash
內(nèi)部的實現(xiàn)的時候,發(fā)現(xiàn)里面的獲取集群信息的代碼可以留存?zhèn)溆?/span>
代碼實例
#!/usr/bin/env python# -*- coding: UTF-8 -*-
import json
from rados
import Rados
from rados
import Error
as RadosError
class
CephClusterCommand(dict):
"""
Issue a ceph command on the given cluster and provide the returned json
"""
def
__init__(self, cluster, **kwargs):
dict.__init__(self)
ret, buf, err = cluster.mon_command(json.dumps(kwargs), '', timeout=5)
if ret != 0:
self['err'] = err
else:
self.update(json.loads(buf))
config={'conffile': '/etc/ceph/ceph.conf', 'conf': {}}
with Rados(**config)
as cluster:
cluster_status = CephClusterCommand(cluster, prefix='status', format='json')
print cluster_status
總結(jié)
調(diào)用原生接口的好處在于,
只需要很少的庫就可以取得監(jiān)控系統(tǒng)所需要的值
最近在研究系統(tǒng)的時候發(fā)現(xiàn)一個問題
跟著錯誤的文檔實踐只會掉進同一個坑
在遇到一個小的錯誤的時候,翻到了一個github
的
Issue
,然后看到一個人把自己的配置過程和配置文件詳詳細細的都寫在
Issue
下面,然后就跟著他的過程走了一遍,發(fā)現(xiàn)不論怎么弄都是同樣的錯誤
而返回去根據(jù)另一個正確的文檔又走一遍的時候,發(fā)現(xiàn)終于跑通了,回顧了一遍,發(fā)現(xiàn)是那個錯誤的過程里面的配置文件里面是有配置項目,不兼容的,而軟件也沒有拋出相關(guān)的錯誤,然后在同一個地方找了兩天
所以如果有碰到無法解決的操作步驟文檔的時候,就盡量不要去根據(jù)那個文檔操作了,除非自己對細節(jié)弄的很清楚了
變更記錄
來源:zphj1987'Blog