Example #1
0
def overview(request):
    template_name = 'overview/_overview.html'
    client = CephClient()
    context = dict()
    context['status'] = client.status()
    context['report'] = client.report()
    return render(request, template_name, context)
Example #2
0
def jsonResponse(request):
    m = request.GET['m']
    client = CephClient()
    if m == 'tree':
        context = dict()
        context['data'] = client.osd_tree()
        if len(context['data']):
            data = context['data'][0]
    elif m == 'overview':
        data = client.pool_df(name=request.GET['name'],
                              stats=request.GET['stats'])

    elif m == 'query':
        #pdb.set_trace()
        dist = client.image_dist(pool=request.GET['pool'],
                                 id=request.GET['id'])
        data = {
            'pg': [{
                'key': 'objects',
                'values': []
            }],
            'osd': [{
                'key': 'objects',
                'values': []
            }]
        }

        for pgid, value in dist['pg'].items():
            data['pg'][0]['values'].append({'x': pgid, 'y': value})
        for osdid, value in dist['osd'].items():
            data['osd'][0]['values'].append({'x': 'osd.' + osdid, 'y': value})

    return HttpResponse(json.dumps(data), content_type="application/json")
Example #3
0
def createRule(request):
    success_page = 'viewRules'
    client = CephClient()
    client.create_crush_rule(name=request.POST['name'],
                             root=request.POST['root'],
                             type=request.POST['type'],
                             mode=request.POST['choose_mode'])
    return HttpResponseRedirect(success_page)
Example #4
0
def pool(request):
    template_name = 'pool/_pool.html'
    client = CephClient()
    context = {'pool_df': client.df()['pools']}
    for pool in context['pool_df']:
        pool['ruleset'] = client.pool_get(pool['name'],
                                          'crush_ruleset')['crush_ruleset']
        pool['size'] = client.pool_get(pool['name'], 'size')['size']
    return render(request, template_name, context)
Example #5
0
def distribution(request):
    template_name = 'distribution/_distribution.html'
    client = CephClient()
    context = {'pools': client.list_pools()}
    if context['pools']:
        first_pool = context['pools'][0]['poolname'].encode('ascii', 'ignore')
        context['images'] = client.image_list(first_pool)
    else:
        context['images'] = []
    return render(request, template_name, context)
Example #6
0
def view_rules(request):
    template_name = "crush_rule/view_rules.html"
    client = CephClient()
    rules = client.crush_rules()
    return render(request, template_name, {'rules': rules})
Example #7
0
def deleteRule(request):
    success_page = 'viewRules'
    client = CephClient()
    client.delete_crush_rule(name=request.POST['name'])
    return True
Example #8
0
def view_rules(request):
    client = CephClient()
Example #9
0
def osdTree(request):
    template_name = 'ceph/_json.html'
    client = CephClient()
    context = dict()
    context['data'] = client.osd_tree()
    return render(request, template_name, {'status': context['status']})
Example #10
0
def crush_rule(request):
    template_name = "crush_rule/_rule_list.html"
    client = CephClient()
    rules = client.crush_rules()
    return render(request, template_name, {'rules': rules})
Example #11
0
def json_response(request):
    try:
        m = request.GET['m']

        if m == 'overview':
            client = GraphiteClient()
            data = client.pool_df(name=request.GET['name'],
                                  stats=(request.GET['stats']).split(','))

        elif m == 'tree':
            client = CephClient()
            context = dict()
            context['data'] = client.osd_tree()
            data = context['data']

        elif m == 'osd_info':
            client = GraphiteClient()
            data = client.osd_info(hostname=request.GET['host'],
                                   osdid=request.GET['id'])

        elif m == 'osd_io':
            client = GraphiteClient()
            data = client.osd_io()

        elif m == 'query':
            client = CephClient()
            pool = request.GET['pool'].encode('ascii', 'ignore')
            id = request.GET['id'].encode('ascii', 'ignore')
            dist = client.image_dist(pool=pool, id=id)
            data = {
                'pg': [{
                    'key': 'objects',
                    'values': []
                }],
                'osd': [{
                    'key': 'objects',
                    'values': []
                }]
            }

            for pgid, value in dist['pg'].items():
                data['pg'][0]['values'].append({'x': pgid, 'y': value})
            for osdid, value in dist['osd'].items():
                data['osd'][0]['values'].append({
                    'x': 'osd.' + str(osdid),
                    'y': value
                })

        elif m == 'image_list':
            client = CephClient()
            pool = request.GET['pool'].pool.encode('ascii', 'ignore')
            data = client.image_list(pool=pool)
        elif m == 'create_pool':
            client = CephClient()
            data = client.create_pool(request.GET['name'], request.GET['pg'],
                                      request.GET['type'],
                                      request.GET['crush_rule'])

        elif m == 'delete_pool':
            client = CephClient()
            data = client.delete_pool(request.GET['pool'])

        elif m == 'create_rule':
            client = CephClient()
            data = client.create_crush_rule(request.GET['name'],
                                            request.GET['root'],
                                            request.GET['type'],
                                            request.GET['mode'])

        elif m == 'delete_rule':
            client = CephClient()
            data = client.delete_crush_rule(request.GET['rule'])
    except MultiValueDictKeyError as e:
        return HttpResponseBadRequest(content=str(e) + " is required")
    return HttpResponse(json.dumps(data), content_type="application/json")