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)
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)
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)
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))
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))
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)
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)
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)
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)
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)
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)
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')
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))