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
Exemple #3
0
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))