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

from restful import common, context
from collections import defaultdict

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()