initial code repo
[stor4nfv.git] / src / ceph / src / pybind / mgr / restful / api / crush.py
diff --git a/src/ceph/src/pybind/mgr/restful/api/crush.py b/src/ceph/src/pybind/mgr/restful/api/crush.py
new file mode 100644 (file)
index 0000000..11a0426
--- /dev/null
@@ -0,0 +1,26 @@
+from pecan import expose
+from pecan.rest import RestController
+
+from restful import common, module
+from collections import defaultdict
+
+from restful.decorators import auth
+
+
+class CrushRule(RestController):
+    @expose(template='json')
+    @auth
+    def get(self, **kwargs):
+        """
+        Show crush rules
+        """
+        rules = module.instance.get('osd_map_crush')['rules']
+        nodes = module.instance.get('osd_map_tree')['nodes']
+
+        for rule in rules:
+            rule['osd_count'] = len(common.crush_rule_osds(nodes, rule))
+
+        return rules
+
+class Crush(RestController):
+    rule = CrushRule()