summaryrefslogtreecommitdiffstats
path: root/src/pybind/mgr/restful/api/crush.py
blob: 79f9007b6fdc8f1cff07b79775bef1dd71c731b7 (plain)
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
from pecan import expose
from pecan.rest import RestController

from restful import common, context

from restful.decorators import auth


class CrushRule(RestController):
    @expose(template='json')
    @auth
    def get(self, **kwargs):
        """
        Show crush rules
        """
        crush = context.instance.get('osd_map_crush')
        rules = crush['rules']

        for rule in rules:
            rule['osd_count'] = len(common.crush_rule_osds(crush['buckets'], rule))

        return rules

class Crush(RestController):
    rule = CrushRule()