利用ceph的Rados class 进行操作(python)

利用ceph的python API接口做ceph简单操作

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

测试程序

print radosObj.Inst().get_fsid() 
print radosObj.Inst().get_cluster_stats() 
pools= radosObj.Inst().get_list_pools() 
for pool in pools['value']:
    print pool

结果

[root@ceph01 ~]# python ceph_common.py 
dbb4bf43-7b1d-4641-b0ce-2d667d02b3fe
{'kb': 9424876L, 'num_objects': 0L, 'kb_avail': 9390964L, 'kb_used': 33912L}
rbd

发表评论

您的电子邮箱地址不会被公开。