예제 #1
0
def vm_detail_view(req):
    arg_vmid = req.GET.get('vmid')
    vm_res = api_vm_get({'req_user': req.user, 'uuid': arg_vmid})
    dicts = {}
    if vm_res['res']:
        dicts['vmobj'] = vm_res['info']
        vlan = api_net_get_vlan({'req_user': req.user, 'vlan_id': dicts['vmobj']['vlan_id']})
        if vlan['res']:
            dicts['vmobj']['br'] = vlan['info']['br']

        # 添加操作功能和挂载云硬盘 2018-07-12 yanghao
        dicts['vmobj']['can_operate'] = req.user.is_superuser or dicts['vmobj']['center_name'] == req.user.username

        from api.volume import get_volume_available
        volume_info = get_volume_available({'req_user': req.user,'group_id':dicts['vmobj']['group_id'],'vm_uuid':dicts['vmobj']['uuid']})
        # volume_info = api_volume_get_list({'req_user': req.user,'group_id':dicts['vmobj']['group_id']})
        ret_list = []
        if volume_info['res']:
            ret_list += volume_info['list']
        dicts['p'] = get_page(ret_list, req)
        
    else:
        if settings.DEBUG: print(vm_res['err'])
        return HttpResponseRedirect('../list/')
    return render(req,'vmadmin_detail.html', dicts)
예제 #2
0
def net_vlan_ip_list_view(req):
    dicts = {}
    arg_vlan = req.GET.get('vlan')
    #参数校验
    if arg_vlan:
        try:
            arg_vlan = int(arg_vlan)
        except:
            arg_vlan = None
    ip_list = []
    dicts['vlan_info'] = None
    if arg_vlan:
        vlan_info = api_net_get_vlan({
            'req_user': req.user,
            'vlan_id': arg_vlan
        })
        if vlan_info['res']:
            dicts['vlan_info'] = vlan_info['info']
            macips_info = api_net_get_vlan_ip_list({
                'req_user': req.user,
                'vlan_id': arg_vlan
            })
            if macips_info['res']:
                ip_list = macips_info['list']
    dicts['p'] = get_page(ip_list, req)
    return render(req, 'vmadmin_net_vlan_ip_list.html', dicts)
예제 #3
0
def net_vlan_list_view(req):
    dicts = {}
    vlan_list = []
    vlans_info = api_net_get_vlan_list_all()
    if vlans_info['res']:
        vlan_list.extend(vlans_info['list'])
    dicts['p'] = get_page(vlan_list, req)
    return render(req, 'vmadmin_net_vlan_list.html', dicts)
예제 #4
0
def volume_list_view(req):
    dicts = {}

    volume_info = api_volume_get_list({'req_user': req.user})
    ret_list= []
    if volume_info['res']:
        ret_list += volume_info['list']
    dicts['p'] = get_page(ret_list, req)
    return render_to_response('vmadmin_volume_list.html', dicts, context_instance=RequestContext(req))
예제 #5
0
파일: gpu_views.py 프로젝트: bobff/ev-cloud
def gpu_list_view(req):
    dicts = {}
    group_info = api_group_get_list({'req_user': req.user})
    ret_list = []
    gpu_info = api_gpu_get_list({'req_user': req.user})
    if gpu_info['res']:
        ret_list+=gpu_info['list']
    dicts['p'] = get_page(ret_list, req)
    return render_to_response('vmadmin_gpu_list.html', dicts, context_instance=RequestContext(req))
예제 #6
0
def gpu_list_view(req):
    dicts = {}
    group_info = api_group_get_list({'req_user': req.user})
    ret_list = []
    gpu_info = api_gpu_get_list({'req_user': req.user})
    if gpu_info['res']:
        ret_list+=gpu_info['list']
    dicts['p'] = get_page(ret_list, req)
    #return render_to_response('vmadmin_gpu_list.html', dicts, context_instance=RequestContext(req))
    return render(req, 'vmadmin_gpu_list.html',dicts)
예제 #7
0
def volume_list_view(req):
    dicts = {}

    volume_info = api_volume_get_list({'req_user': req.user})
    ret_list = []
    if volume_info['res']:
        ret_list += volume_info['list']
    dicts['p'] = get_page(ret_list, req)
    #return render_to_response('vmadmin_volume_list.html', dicts, context_instance=RequestContext(req))
    return render(req, 'vmadmin_volume_list.html', dicts)
예제 #8
0
def net_vlan_list_view(req):
    dicts = {}
    group_info = api_group_get_list({'req_user': req.user})
    vlan_list = []
    if group_info['res']:
        for group in group_info['list']:
            vlans_info = api_net_get_vlan_list({
                'req_user': req.user,
                'group_id': group['id']
            })
            if vlans_info['res']:
                vlan_list.extend(vlans_info['list'])
    dicts['p'] = get_page(vlan_list, req)
    return render(req, 'vmadmin_net_vlan_list.html', dicts)
예제 #9
0
def volume_list_view(req):
    dicts = {}

    volume_info = api_volume_get_list({'req_user': req.user})
    ret_list= []
    if volume_info['res']:
        ret_list += volume_info['list']

    #查询并设置挂载到的vm的ip信息   
    for volume in ret_list: 
        volume['vm_ipv4'] = None
        if volume['vm']:
            vm_info = api_vm_get({'req_user': req.user, 'uuid': volume['vm']})
            if vm_info['res']:
                volume['vm_ipv4'] = vm_info['info']['ipv4']

    dicts['p'] = get_page(ret_list, req)
    #return render_to_response('vmadmin_volume_list.html', dicts, context_instance=RequestContext(req))
    return render(req,'vmadmin_volume_list.html', dicts)
예제 #10
0
def host_err_log_list_view(req):
    dicts = {}

    group_info = api_group_get_list({'req_user': req.user})
    host_list = []
    host_log_list = []
    host_vm_log_list = [
    ]  #[(host_err,[vm_err,vm_err]),(host_err,[vm_err,vm_err]),...]

    if group_info['res']:
        for group in group_info['list']:
            host_info = api_host_get_list({
                'req_user': req.user,
                'group_id': group['id']
            })
            if host_info['res']:
                host_list.extend(host_info['list'])

    for host in host_list:
        h_log_info = api_monitoring_get_host_log_list({
            'req_user': req.user,
            'host_id': host['id']
        })
        if h_log_info['res']:
            host_log_list.extend(h_log_info['list'])
    for h_log in host_log_list:
        v_log_info = api_monitoring_get_vm_log_list({
            'req_user':
            req.user,
            'host_error_log_id':
            h_log['id']
        })
        v_log_list = []
        if v_log_info['res']:
            v_log_list = v_log_info['list']
            host_vm_log_list.append((h_log, v_log_list))

    dicts['p'] = get_page(host_vm_log_list, req)
    return render(req, 'vmadmin_monitoring_host_err_list.html', dicts)
예제 #11
0
def vm_list_view(req):
    dicts = {}

    #获取GET参数
    arg_center = req.GET.get('center')
    arg_group = req.GET.get('group')
    arg_host = req.GET.get('host')
    arg_ip = req.GET.get('ip')
    arg_creator = req.GET.get('creator')
    arg_text = req.GET.get('text')

    #参数校验
    if arg_center:
        try:
            arg_center = int(arg_center)
        except:
            arg_center = None
    if arg_group:
        try:
            arg_group = int(arg_group)
        except:
            arg_group = None
    if arg_host:
        try:
            arg_host = int(arg_host)
        except:
            arg_host = None
    if arg_ip:
        arg_ip = arg_ip.strip()
    if arg_text:
        arg_text = arg_text.strip()

    #获取分中心列表
    center_info = api_center_get_list({'req_user': req.user})
    if center_info['res']:
        dicts['center_list'] = center_info['list']
    else:
        dicts['center_list'] = []

    #根据分中心获取集群列表
    if arg_center:
        group_info = api_group_get_list({
            'req_user': req.user,
            'center_id': arg_center
        })
        if group_info['res']:
            dicts['group_list'] = group_info['list']

    #根据集群获取宿主机列表
    if arg_group:
        host_info = api_host_get_list({
            'req_user': req.user,
            'group_id': arg_group
        })
        if host_info['res']:
            dicts['host_list'] = host_info['list']

    #虚拟机列表筛选
    vm_list = []

    #根据主机筛选
    if arg_host and arg_group and arg_center:
        vms_info = api_vm_get_list({
            'req_user': req.user,
            'group_id': arg_group
        })
        if vms_info['res']:
            for vm in vms_info['list']:
                if vm['host_id'] == int(arg_host):
                    vm_list.append(vm)

    #根据集群筛选
    elif arg_group and arg_center:
        vms_info = api_vm_get_list({
            'req_user': req.user,
            'group_id': arg_group
        })
        if vms_info['res']:
            vm_list = vms_info['list']

    #根据分中心筛选
    elif arg_center:
        vm_list = get_vm_list_by_center(req.user, arg_center)
    else:
        for center in dicts['center_list']:
            vm_list += get_vm_list_by_center(req.user, center['id'])

    #从虚拟机列表中获取创建者集合
    creator_dic = {}
    for vm in vm_list:
        if vm['creator'] not in creator_dic:
            creator_dic[vm['creator']] = 1
    dicts['creator_list'] = list(creator_dic.keys())

    #根据创建者筛选
    if arg_creator:
        i = 0
        l = len(vm_list)
        while True:
            if i >= l:
                break
            if vm_list[i]['creator'] != arg_creator:
                del (vm_list[i])
                l -= 1
            else:
                i += 1

    #根据ip地址筛选
    if arg_ip:
        for i in range(len(vm_list) - 1, -1, -1):  #反向循环,删除列表中不合要求项 by hai
            if vm_list[i]['ipv4'].find(arg_ip) == -1: del (vm_list[i])

    #根据 主机编号-ip-备注 综合筛选
    if arg_text:
        for i in range(len(vm_list) - 1, -1, -1):  #反向循环,删除列表中不合要求项
            if vm_list[i]['ipv4'].find(arg_text) == -1:
                if vm_list[i]['remarks'].find(arg_text) == -1:
                    if vm_list[i]['uuid'].find(arg_text) == -1:
                        del (vm_list[i])

    vm_list = vm_list_sort(vm_list)

    dicts['p'] = get_page(vm_list, req)
    for vm in dicts['p'].object_list:
        vm['can_operate'] = req.user.is_superuser or vm[
            'creator'] == req.user.username
        res = api_volume_get_list({
            'req_user': req.user,
            'vm_uuid': vm['uuid']
        })
        if res['res']:
            vm['volumes'] = res['list']
        else:
            vm['volumes'] = []

    return render(req, 'vmadmin_list.html', dicts)
예제 #12
0
def net_batch_create_macip(req):
    dicts = {}
    res = True
    err = None

    #获取GET参数
    arg_vlan = req.GET.get('vlan')  #vlan_id
    arg_kind = req.GET.get('kind')  #生成方式
    arg_subnetip = req.GET.get('subnetip')  #子网ip
    arg_netmask = req.GET.get('netmask')
    arg_gateway = req.GET.get('gateway')
    arg_startip = req.GET.get('startip')
    arg_endip = req.GET.get('endip')

    #参数校验
    if arg_vlan:
        try:
            arg_vlan = int(arg_vlan)
        except:
            arg_vlan = None

    if arg_kind:
        arg_kind = arg_kind.strip()
    if arg_subnetip:
        arg_subnetip = arg_subnetip.strip()
    if arg_netmask:
        arg_netmask = arg_netmask.strip()
    if arg_gateway:
        arg_gateway = arg_gateway.strip()
    if arg_startip:
        arg_startip = arg_startip.strip()
    if arg_endip:
        arg_endip = arg_endip.strip()

    dicts['vlan_info'] = None
    macip_list = []
    if arg_vlan:
        vlan_info = api_net_get_vlan({
            'req_user': req.user,
            'vlan_id': arg_vlan
        })
    if arg_vlan and vlan_info['res']:
        dicts['vlan_info'] = vlan_info['info']
        if vlan_info['info']['ip_count'] > 0:
            dicts['err'] = "该VLAN已添加过ip"
        elif not vlan_info['info']['enable']:
            dicts['err'] = "该VLAN未启用"
        else:
            try:
                #根据子网ip和掩码生成ip列表
                if arg_kind == "netmask" and arg_subnetip and arg_netmask:
                    ip_str = arg_subnetip + "/" + arg_netmask
                    subnetip_obj = ipaddress.IPv4Network(ip_str)
                    for ip1 in subnetip_obj:
                        if str(ip1) == arg_gateway:
                            continue
                        r1, macip = _ip2macip(str(ip1))
                        if r1:
                            macip_list.append(macip)
                    if len(macip_list) > 0:
                        macip_list.pop(0)
                    if len(macip_list) > 0:
                        macip_list.pop(len(macip_list) - 1)
                elif arg_kind == "iprange" and arg_startip and arg_endip:
                    #根据ip范围生成ip列表
                    s_ip = ipaddress.IPv4Address(arg_startip)
                    e_ip = ipaddress.IPv4Address(arg_endip)
                    while e_ip >= s_ip:
                        r1, macip = _ip2macip(str(s_ip))
                        if r1:
                            macip_list.append(macip)
                        s_ip = s_ip + 1
            except Exception as e:
                print(e)

    else:
        dicts['err'] = "无法获取VLAN信息"

    if req.method == "GET":
        dicts['p'] = get_page(macip_list, req)
        return render(req, 'vmadmin_net_vlan_ip_batch_create.html', dicts)
    elif req.method == 'POST':  #添加入数据库
        success_count = 0
        for i in range(len(macip_list)):
            macip = macip_list[i]
            r2 = api_net_add_vlan_ip({
                'req_user': req.user,
                'vlan_id': arg_vlan,
                'mac': macip['mac'],
                'ipv4': macip['ipv4'],
                'enable': True
            })

            if r2['res']:
                macip_list[i]['res'] = True
                success_count += 1
            else:
                macip_list[i]['res'] = False
        fail_count = len(macip_list) - success_count
        dic = {
            "macip_list": macip_list,
            "success_count": success_count,
            "fail_count": fail_count
        }
        return HttpResponse(json.dumps(dic), content_type='application/json')
예제 #13
0
파일: vm_views.py 프로젝트: iselu/ev-cloud
def vm_list_view(req):
    dicts = {}
    
    #获取GET参数
    arg_center = req.GET.get('center')
    arg_group = req.GET.get('group')
    arg_host = req.GET.get('host')
    arg_ip = req.GET.get('ip')
    arg_creator = req.GET.get('creator')
    
    #参数校验
    if arg_center:
        try:
            arg_center = int(arg_center)
        except:
            arg_center = None
    if arg_group:
        try:
            arg_group = int(arg_group)
        except:
            arg_group = None
    if arg_host:
        try:
            arg_host = int(arg_host)
        except:
            arg_host = None
    if arg_ip:
        arg_ip = arg_ip.strip()
    
    #获取分中心列表
    center_info = api_center_get_list({'req_user': req.user})
    if center_info['res']:
        dicts['center_list'] = center_info['list']
    else:
        dicts['center_list'] = []
    
    #根据分中心获取集群列表
    if arg_center:
        group_info = api_group_get_list({'req_user': req.user, 'center_id': arg_center})
        if group_info['res']:
            dicts['group_list'] = group_info['list']
    
    #根据集群获取宿主机列表
    if arg_group:
        host_info = api_host_get_list({'req_user': req.user, 'group_id': arg_group})
        if host_info['res']:
            dicts['host_list'] = host_info['list']
            
    #虚拟机列表筛选
    vm_list = []
    
    #根据主机筛选
    if arg_host and arg_group and arg_center:
        vms_info = api_vm_get_list({'req_user': req.user, 'group_id': arg_group})
        if vms_info['res']:
            for vm in vms_info['list']:
                if vm['host_id'] == int(arg_host):
                    vm_list.append(vm)
    
    #根据集群筛选
    elif arg_group and arg_center:
        vms_info = api_vm_get_list({'req_user': req.user, 'group_id': arg_group})
        if vms_info['res']:
            vm_list = vms_info['list']
    
    #根据分中心筛选
    elif arg_center:
        vm_list = get_vm_list_by_center(req.user, arg_center)
    else:
        for center in dicts['center_list']:
            vm_list += get_vm_list_by_center(req.user, center['id'])
    
    #从虚拟机列表中获取创建者集合
    creator_dic = {}
    for vm in vm_list:
        if vm['creator'] not in creator_dic:
            creator_dic[vm['creator']] = 1
    dicts['creator_list'] = list(creator_dic.keys())
              
    #根据创建者筛选
    if arg_creator:
        i = 0
        l = len(vm_list)
        while True:
            if i >= l:
                break
            if vm_list[i]['creator'] != arg_creator:
                del(vm_list[i])
                l -= 1
            else:
                i += 1
    
    #根据ip地址筛选
    if arg_ip:
        i = 0
        l = len(vm_list)
        while True:
            if i >= l:
                break
            if vm_list[i]['ipv4'].find(arg_ip) == -1:
                del(vm_list[i])
                l -= 1
            else:
                i += 1
    
    vm_list = vm_list_sort(vm_list)
    
    dicts['p'] = get_page(vm_list, req)
    for vm in dicts['p'].object_list:
        vm['can_operate'] = req.user.is_superuser or vm['creator'] == req.user.username

    return render_to_response('vmadmin_list.html', dicts, context_instance=RequestContext(req))