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)
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")
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)
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)
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)
def view_rules(request): template_name = "crush_rule/view_rules.html" client = CephClient() rules = client.crush_rules() return render(request, template_name, {'rules': rules})
def deleteRule(request): success_page = 'viewRules' client = CephClient() client.delete_crush_rule(name=request.POST['name']) return True
def view_rules(request): client = CephClient()
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']})
def crush_rule(request): template_name = "crush_rule/_rule_list.html" client = CephClient() rules = client.crush_rules() return render(request, template_name, {'rules': rules})
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")