def get_datasource(page_index, keyword): paginate_opts = { "limit": 10000, "marker": 0, "sort_keys": 'id', "sort_dir": 'asc', "osd_name": keyword, "server_name": keyword, "zone_name": keyword, "state": keyword } #get the datasource datasource = vsmapi.osd_status_sort_and_filter(None, paginate_opts) #get the paginate paginate = calculate_paginate(page_index, len(datasource)) #orgnize the data osd_data = {"osd_list": [], "paginate": paginate} for item in datasource: capacity_total = 0 if not item.device['total_capacity_kb'] else int( item.device['total_capacity_kb'] / 1024) capacity_used = 0 if not item.device['used_capacity_kb'] else int( item.device['used_capacity_kb'] / 1024) capacity_avail = 0 if not item.device['avail_capacity_kb'] else int( item.device['avail_capacity_kb'] / 1024) capacity_percent_used = 0 if not item.device[ 'total_capacity_kb'] else item.device[ 'used_capacity_kb'] * 100 / item.device['total_capacity_kb'] osd = { "id": item.id, "osd_name": item.osd_name, "vsm_status": item.operation_status, "osd_state": item.state, "crush_weight": item.weight, "capacity_total": capacity_total, "capacity_used": capacity_used, "capacity_avail": capacity_avail, "capacity_percent_used": capacity_percent_used, "server": item.service['host'], "storage_group": item.storage_group['name'], "zone": item.zone, "updated_at": get_time_delta(item.updated_at), "deviceInfo": "", "page_index": paginate["page_index"], "page_count": paginate["page_count"], "pager_index": paginate["pager_index"], "pager_count": paginate["pager_count"], } osd_data["osd_list"].append(osd) return osd_data
def get_datasource(page_index,keyword): paginate_opts = { "limit":10000, "marker":0, "sort_keys":'id', "sort_dir":'asc', "osd_name":keyword, "server_name":keyword, "zone_name":keyword, "state":keyword } #get the datasource datasource = vsmapi.osd_status_sort_and_filter(None,paginate_opts) #get the paginate paginate = calculate_paginate(page_index,len(datasource)) #organize the data osd_data = {"osd_list":[],"paginate":paginate} index = 0 for item in datasource: index += 1 if index <= paginate['data_start_index'] or index > paginate['data_end_index']: continue capacity_total = 0 if not item.device['total_capacity_kb'] else int(item.device['total_capacity_kb']/1024) capacity_used = 0 if not item.device['used_capacity_kb'] else int(item.device['used_capacity_kb']/1024) capacity_avail = 0 if not item.device['avail_capacity_kb'] else int(item.device['avail_capacity_kb']/1024) capacity_percent_used = 0 if not item.device['total_capacity_kb'] else item.device['used_capacity_kb'] * 100 / item.device['total_capacity_kb'] osd = { "id":item.id, "osd_name": item.osd_name, "vsm_status": item.operation_status, "osd_state": item.state, "crush_weight": item.weight, "capacity_total":capacity_total, "capacity_used":capacity_used, "capacity_avail":capacity_avail, "capacity_percent_used":capacity_percent_used, "server": item.service['host'], "storage_group": item.storage_group['name'], "zone": item.zone, "updated_at": get_time_delta(item.updated_at), "deviceInfo":"", "page_index":paginate["page_index"], "page_count":paginate["page_count"], "pager_index":paginate["pager_index"], "pager_count":paginate["pager_count"], } osd_data["osd_list"].append(osd) return osd_data
def get_server_by_name(request): data = json.loads(request.body) server_name = data["name"] server_list = get_server_list(request, lambda x: x['name'] == server_name) server = {} paginate_opts = { "limit": 10000, "marker": 0, "sort_keys": 'id', "sort_dir": 'asc', "osd_name": "", "server_name": server_name, "zone_name": "", "state": "" } if (len(server_list) > 0): osd_list = vsmapi.osd_status_sort_and_filter(request, paginate_opts) server = { "id": server_list[0]["id"], "IP": server_list[0]["primary_public_ip"], "name": server_list[0]["name"], "zone_id": server_list[0]["zone_id"], "is_monitor": server_list[0]["is_monitor"], "is_storage": server_list[0]["is_storage"], "osd_list": [] } for osd in osd_list: osd_item = { "osd_id": osd.id, "osd_name": osd.osd_name, "zone": osd.zone, "weight": osd.weight, "journal": osd.device['path'], "data": osd.device['journal'], } server["osd_list"].append(osd_item) return HttpResponse(json.dumps(server))
def get_server_by_name(request): data = json.loads(request.body) server_name = data["name"] server_list = get_server_list(request,lambda x:x['name'] == server_name) server = {} paginate_opts = { "limit":10000, "marker":0, "sort_keys":'id', "sort_dir":'asc', "osd_name":"", "server_name":server_name, "zone_name":"", "state":"" } if(len(server_list)>0): osd_list = vsmapi.osd_status_sort_and_filter(request,paginate_opts) server = { "id":server_list[0]["id"], "IP":server_list[0]["primary_public_ip"], "name":server_list[0]["name"], "zone_id":server_list[0]["zone_id"], "is_monitor":server_list[0]["is_monitor"], "is_storage":server_list[0]["is_storage"], "osd_list":[] } for osd in osd_list: osd_item = { "osd_id":osd.id, "osd_name":osd.osd_name, "zone": osd.zone, "weight": osd.weight, "journal":osd.device['path'], "data": osd.device['journal'], } server["osd_list"].append(osd_item) return HttpResponse(json.dumps(server))