]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph_manager: add object helpers
authorLoic Dachary <ldachary@redhat.com>
Fri, 21 Nov 2014 15:36:59 +0000 (16:36 +0100)
committerLoic Dachary <ldachary@redhat.com>
Tue, 13 Jan 2015 13:42:19 +0000 (14:42 +0100)
Add CephManager.methods to get information regarding the pools and PGs
used to store a given object.

Signed-off-by: Loic Dachary <ldachary@redhat.com>
tasks/ceph_manager.py

index 1d12d16585efcb5fc87fe329bb7c490033bd162f..90a045b7d7f5292bda0f559e2dc9b99df04c884b 100644 (file)
@@ -1235,6 +1235,32 @@ class CephManager:
 
         return None
 
+    def get_object_pg_with_shard(self, pool, name, osdid):
+        """
+        """
+        pool_dump = self.get_pool_dump(pool)
+        object_map = self.get_object_map(pool, name)
+        if pool_dump["type"] == CephManager.ERASURE_CODED_POOL:
+            shard = object_map['acting'].index(osdid)
+            return "{pgid}s{shard}".format(pgid=object_map['pgid'],
+                                           shard=shard)
+        else:
+            return object_map['pgid']
+
+    def get_object_primary(self, pool, name):
+        """
+        """
+        object_map = self.get_object_map(pool, name)
+        return object_map['acting_primary']
+
+    def get_object_map(self, pool, name):
+        """
+        osd map --format=json converted to a python object
+        :returns: the python object
+        """
+        out = self.raw_cluster_cmd('--format=json', 'osd', 'map', pool, name)
+        return json.loads('\n'.join(out.split('\n')[1:]))
+
     def get_osd_dump_json(self):
         """
         osd dump --format=json converted to a python object