利用ceph的python API接口做ceph简单操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
class radosObj: instance=None cluster=None def __init__(self): self.conf="/etc/ceph/ceph.conf" self.keyring="/etc/ceph/ceph.keyring" self.cephcmd="/usr/bin/ceph" self.cluster=None @classmethod def Inst(cls): if cls.instance is None: cls.instance = radosObj() cls.instance.connect() return cls.instance def connect(self): if self.cluster is None: self.cluster=rados.Rados(conffile=self.conf) self.cluster.connect(timeout=5) return self.cluster def get_fsid(self): return self.cluster.get_fsid() def get_cluster_stats(self): result={} result = self.cluster.get_cluster_stats() return result def get_list_pools(self): result={} result['value'] = self.cluster.list_pools() return result def delete_pool(self,poolname): value=self.cluster.delete_pool(poolname) return value def create_pool(self,poolname): value=self.cluster.create_pool(poolname) return value def isexists(self,poolname): value=self.cluster.pool_exists(poolname) return value |
测试程序
1 2 3 4 5 |
print radosObj.Inst().get_fsid() print radosObj.Inst().get_cluster_stats() pools= radosObj.Inst().get_list_pools() for pool in pools['value']: print pool |
结果
1 2 3 4 |
[root@ceph01 ~]# python ceph_common.py dbb4bf43-7b1d-4641-b0ce-2d667d02b3fe {'kb': 9424876L, 'num_objects': 0L, 'kb_avail': 9390964L, 'kb_used': 33912L} rbd |