def volumes_backup_t(request): global volume global volume_backup ret={} username = request.user.username host_id=request.GET.get('id') if host_id: return_data = volume_backup.show_detail(host_id,username=username)['backup'] ret['status'] = return_data['status'] ret['id'] = return_data['id'] ret['name'] = return_data['name'] ret = json_data(ret) return ret else: ret['totalList'] = [] return_data = volume_backup.list_detail(username=username) returnvolume = ReturnVolume(volume.list(username=username)['volumes']) for i in return_data['backups']: sys={} sys['name']=i['name'] sys['description']=i['description'] sys['size']=i['size'] sys['status']=i['status'] try: # sys['volume_name'] = volume.show_detail(i['volume_id'])['volume']['displayName'] sys['volume_name'] = returnvolume.Volume_name(i['volume_id']) sys['volume_id'] = i['volume_id'] except: sys['volume_name'] = '-' sys['volume_id'] = False sys['id']=i['id'] ret['totalList'].append(sys) ret = json_data(ret) return ret
def volumes_host(request): global volume global volume_attach ret = {} username = request.user.username host_id = request.POST.get('host_id') host_name = request.POST.get('host_name') data = request.POST.get('data') volumes_id = eval(data)['id'] volumes_name = eval(data)['name'] return_data = volume_attach.attach(host_id, volumes_id,username=username) if return_data != 1: while True: time.sleep(1) return_show = volume.show_detail(volumes_id,username=username)['volume']['status'] if return_show != 'attaching': ret['vm'] = host_name ret['status'] = True ret['volumes'] = volumes_name break else: ret['vm'] = host_name ret['status'] = False ret['volumes'] = volumes_name ret = json_data(ret) return ret
def volumes_amend(request): global volume # login() ret = {} username = request.user.username size = request.POST.get('count') volumes_size = eval(request.POST.get('data'))['size'] volumes_id = eval(request.POST.get('data'))['id'] volumes_name = eval(request.POST.get('data'))['name'] if volume.show_detail(volumes_id,username=username)['volume']['status'] == 'available': return_data = volume.extend(volumes_id, size,username = username) if return_data != 1: ret['name'] = volumes_name ret['status'] = True ret['size'] = size ret['volumes_size'] = volumes_size else: ret['name'] = volumes_name ret['status'] = False ret['size'] = size ret['volumes_size'] = volumes_size else: ret['name'] = volumes_name ret['status'] = 'error' ret['totalList'] = "磁盘无法动态添加" ret = json_data(ret) return ret
def instances_search(request): # login() global imagess global flavorss global vm_manage ret = {} username = request.user.username key = request.GET.get('keys') value = request.GET.get('value') if not value: key = "name" pass if key == 'image': image_list = imagess.list(username=username) for i in image_list['images']: if i['name'] == value: value = i['id'] break elif key == "flavor": flavor_list = flavorss.list(username=username) for i in flavor_list['flavors']: if i['name'] == value: value = i['id'] break elif key == "status": value = value.upper() dict_d = {key: value} currentPages = request.GET.get('currentPage') pageSizes = request.GET.get('pageSize') if currentPages and pageSizes: minpageSizes = (int(currentPages) - 1) * int(pageSizes) maxpageSizes = int(currentPages) * int(pageSizes) else: minpageSizes = 0 maxpageSizes = 0 host_list = vm_manage.list_detail(dict_d,username=username) ret['totalList'] = [] for host in host_list['servers'][minpageSizes:maxpageSizes]: sys = {} sys['id'] = host['id'] sys['name'] = host['name'] try: sys['image'] = imagess.show_detail(host['image']['id'],username=username)['image']['name'] except: sys['image'] = '-' sys['flavor'] = flavorss.show_detail(host['flavor']['id'],username=username)['flavor']['name'] sys['created'] = time_handle(host['created']) sys['status'] = host['status'] for key, value in host['addresses'].items(): for ip in value: for keys, values in ip.items(): if keys == "addr": sys['ip'] = values ret['totalList'].append(sys) ret['currentPage'] = 1 ret['totalPageNum'] = len(host_list['servers']) ret = json_data(ret) return ret
def vmdisk_show(request): global vm_manage ret = {} username = request.user.username vm_id = request.GET.get('id') vm_details = vm_manage.show_detail(vm_id,username=username)['server'] ret['disk_list'] = volumes_deal(vm_details['name'], vm_details, vm_id,username) ret = json_data(ret) return ret
def instances(request): global vm_manage ret = {} username = request.user.username # login() for i in vm_manage.list(username=username)['servers']: ret[i['name']] = i['id'] ret = json_data(ret) return ret
def openstack_project(request): ret = {} username = request.user.username # login() try: return_data = get_project(user_name=username) ret['totalList'] = [] for i in return_data['projects']: sys = {} sys['name'] = i['name'] sys['id'] = i['id'] sys['desc'] = i['description'] sys['domain_id'] = i['domain_id'] sys['domain_name'] = 'default' ret['totalList'].append(sys) ret = json_data(ret) return ret except: openstack_log.error("project异常") ret = json_data(ret) return ret
def backup_delete(request): ret={} username = request.user.username global volume_backup backup_id=request.POST.get('id') request_data=volume_backup.delete(backup_id=backup_id,username=username) if request_data != 1: ret['status'] = True else: ret['status'] = False ret=json_data(ret) return ret
def snapshot_delete(request): global volume_snaps ret={} username = request.user.username snapshot_id=request.POST.get('id') return_data=volume_snaps.delete(snapshot_id,username=username) if return_data != 1: ret['status'] = True else: ret['status'] = False ret = json_data(ret) return ret
def instances_log(request,id,line): global host_vm_start username = request.user.username return_data='' if line=='000': return_data=host_vm_start.get_console_log(id,username=username) else: return_data=host_vm_start.get_console_log(id,line,username=username) json_status = json_data(return_data) response = HttpResponse(json_status) response['Access-Control-Allow-Origin'] = '*' response['Content-Type'] = 'application/json' return response
def snapshot_redact(request): global volume_snaps ret={} username = request.user.username snapshot_id=request.POST.get('id') snapshot_name=request.POST.get('name') snapshot_desc=request.POST.get('desc') return_data=volume_snaps.change(snapshot_id,des=snapshot_desc,name=snapshot_name,username=username) if return_data != 1: ret['status']=True else: ret['status']=False ret = json_data(ret) return ret
def backup_restore(request): global volume_backup ret={} username = request.user.username name=request.POST.get('name') disk=request.POST.get('disk') backup_id=request.POST.get('id') return_data=volume_backup.restore(backup_id=backup_id,volume_id=disk,volume_name=name,username=username) if return_data != 1: ret['status'] = True else: ret['status'] = False ret = json_data(ret) return ret
def instances_log(request, id, line): global host_vm_start username = request.user.username return_data = '' if line == '000': return_data = host_vm_start.get_console_log(id, username=username) else: return_data = host_vm_start.get_console_log(id, line, username=username) json_status = json_data(return_data) response = HttpResponse(json_status) response['Access-Control-Allow-Origin'] = '*' response['Content-Type'] = 'application/json' return response
def volumes_delete(request): global volume # login() ret = {} sys = {} username = request.user.username volumes_dic = eval(request.POST.get('volumes_object')) for key, value in volumes_dic.iteritems(): return_data = volume.delete(key,username=username) if return_data != 1: ret[value] = True else: ret[value] = False ret = json_data(ret) return ret
def volumes_backup_p(request): global volume_backup ret = {} username = request.user.username # login() name = request.POST.get('name') volumes_id = eval(request.POST.get('data'))['id'] volumes_name = eval(request.POST.get('data'))['name'] desc = request.POST.get('desc') return_data=volume_backup.create(volumes_id,name,username=username) if return_data != 1: ret['status'] = True else: ret['status'] = False ret = json_data(ret) return ret
def instances_backup_show(request): ret={} backup_id=request.GET.get('id') vm_snap=Vm_snap(backup_id) return_data=vm_snap.list_snap() ret['data']=[] for i in return_data: sys={} sys['name']=i['image_name'].replace(i['vm_id'],'') if sys['name'] == 'root': continue sys['id']= i['image_id'] sys['vm_id']=i['vm_id'] sys['time']=i['time'].strftime('%Y-%m-%d %H:%M:%S') ret['data'].append(sys) ret=json_data(ret) return ret
def snapshot_create(request): global volume ret={} username = request.user.username name=request.POST.get('name') snapshot=request.POST.get('snapshot') desc=request.POST.get('desc') type=request.POST.get('type') size=request.POST.get('size') snapshot_id=request.POST.get('id') return_data=volume.create(size=size,name=name,des=desc,snapshot_id=snapshot_id,username=username) if return_data != 1: ret['status']=True else: ret['status']=False ret = json_data(ret) return ret
def volumes_create(request): global volume # login() ret = {} username = request.user.username volumes_name = request.POST.get('name') volumes_count = int(request.POST.get('count')) volumes_type = request.POST.get('type') volumes_size = request.POST.get('size') volumes_des = request.POST.get('desc') return_data = volume.create_multiple(volumes_name, volumes_count, volumes_size, 'nova', volumes_des,username=username) if return_data != 1: ret[volumes_name] = True else: ret[volumes_name] = False ret = json_data(ret) return ret
def cpu_monitor(request,vm_name): ret={} ret['date'] = [] ret['cpu_monitor'] = [] date=request.GET.get('date').split('_') time_stamp=sendhttpdate(date[1],int(date[0])) data=sendhttpdata(time_stamp,metric='sys.cpu.util',aggregator='sum',compute='*',instance=vm_name) return_data=sendhttp(MONITOR_URL,data) for i in return_data: sys={} sys['legend']=i['metric'] sys['data'] = [] for key in sorted(i['dps'].iterkeys()): ret['date'].append(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(float(key)))) sys['data'].append(str(i['dps'][key])[:4]) ret['cpu_monitor'].append(sys) ret = json_data(ret) return ret
def volumes_Redact(request): global volume ret = {} username = request.user.username # login() openstack_log.info(request.POST) volumes_id = request.POST.get('id') volumes_name = request.POST.get('name') volumes_desc = request.POST.get('desc') return_data = volume.change(volumes_id, name=volumes_name, description=volumes_desc,username=username) openstack_log.info(return_data) if return_data != 1: ret['name'] = volumes_name ret['status'] = True ret['desc'] = volumes_desc else: ret['status'] = False ret = json_data(ret) return ret
def images(request): """ 获取images""" global imagess sys = {} username = request.user.username if request.method == 'GET': sys['totalList'] = [] sys['name'] = {} for i in imagess.list_detail(username=username)["images"]: openstack_log.info(i) ret = {} if len(i['metadata']) > 0: try: if i['metadata']['image_type'] == "snapshot": continue except: ret['public'] = "YES" ret['type_image'] = "镜像" sys['name'][i['id']] = i['name'] ret['name'] = i['name'] ret['format'] = 'QCOW2' ret['image_status'] = i['status'] ret['id'] = i['id'] ret['size'] = size_handle(i['OS-EXT-IMG-SIZE:size']) else: ret['public'] = "YES" ret['type_image'] = "镜像" sys['name'][i['id']] = i['name'] ret['name'] = i['name'] ret['format'] = 'QCOW2' ret['image_status'] = i['status'] ret['id'] = i['id'] ret['size'] = size_handle(i['OS-EXT-IMG-SIZE:size']) sys['totalList'].append(ret) sys['currentPage'] = 1 sys['totalPageNum'] = len(sys['totalList']) openstack_log.info(sys) json_status = json_data(sys) response = HttpResponse(json_status) response['Access-Control-Allow-Origin'] = '*' response['Content-Type'] = 'application/json' return response
def volumes_backup_get(request): global volume_snaps global volume ret = {} username = request.user.username # login() ret['totalList'] = [] returnvolume=ReturnVolume(volume.list(username=username)['volumes']) for i in volume_snaps.list_detail(username=username)['snapshots']: sys = {} sys['id']=i['id'] sys['displayName'] = i['displayName'] sys['displayDescription'] = i['displayDescription'] sys['size'] = i['size'] sys['status'] = i['status'] #sys['volume_name'] = volume.show_detail(i['volumeId'])['volume']['displayName'] sys['volume_name'] = returnvolume.Volume_name(i['volumeId']) ret['totalList'].append(sys) ret = json_data(ret) return ret
def network_monitor_packets(request,vm_name): ret = {} ret['network_monitor_packets'] = [] date=request.GET.get('date').split('_') time_stamp=sendhttpdate(date[1],int(date[0])) metrics=['sys.nic.tx_packets_second','sys.nic.rx_packets_second'] for i in metrics: ret['date'] = [] data = sendhttpdata(time_stamp, metric=i, aggregator='sum', compute='*', instance=vm_name,name='*') return_data = sendhttp(MONITOR_URL, data) for i in return_data: sys = {} sys['legend'] = i['tags']['name']+'_'+i['metric'] sys['data'] = [] for key in sorted(i['dps'].iterkeys()): ret['date'].append(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(float(key)))) sys['data'].append(str(i['dps'][key])) ret['network_monitor_packets'].append(sys) ret['date'].sort() ret = json_data(ret) return ret
def mem_monitor(request,vm_name): ret = {} ret['mem_monitor'] = [] date=request.GET.get('date').split('_') time_stamp=sendhttpdate(date[1],int(date[0])) metrics=['sys.mem.free_mem','sys.mem.total_mem','sys.mem.util'] for i in metrics: ret['date'] = [] data = sendhttpdata(time_stamp, metric=i, aggregator='sum', compute='*', instance=vm_name) return_data = sendhttp(MONITOR_URL, data) for i in return_data: sys = {} sys['legend'] = i['metric'] sys['data'] = [] for key in sorted(i['dps'].iterkeys()): ret['date'].append(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(float(key)))) sys['data'].append(str(round(i['dps'][key]/1024,2))) ret['mem_monitor'].append(sys) ret['date'].sort() ret = json_data(ret) return ret
def volumes_snapshot(request): global volume_snaps ret = {} # login() username = request.user.username name = request.POST.get('name') volumes_id = eval(request.POST.get('data'))['id'] volumes_name = eval(request.POST.get('data'))['name'] desc = request.POST.get('desc') return_data = volume_snaps.create(volumes_id, name, desc,username=username) openstack_log.info(return_data) if return_data != 1: ret['volumes_name'] = volumes_name ret['status'] = True ret['name'] = name else: ret['volumes_name'] = volumes_name ret['status'] = False ret['name'] = name ret = json_data(ret) return ret
def volumes_uninstall(request): # login() global volume_attach ret = {} username = request.user.username data = eval(request.POST.get('data')) host_id = data['host_id'] host_name = data['host_name'] volumes_id = data['id'] volumes_name = data['name'] return_data = volume_attach.delete(host_id, volumes_id,username=username) if return_data != 1: ret['host_name'] = host_name ret['status'] = True ret['volumes_name'] = volumes_name else: ret['host_name'] = host_name ret['status'] = False ret['volumes_name'] = volumes_name ret = json_data(ret) return ret
def flavors(request): global flavorss ret = {} username = request.user.username ret['totalList'] = [] ret['name'] = {} if request.method == 'GET': for i in flavorss.list_detail(username=username)["flavors"]: sys = {} ret['name'][i['id']] = i['name'] sys['id'] = i['id'] sys['name'] = i['name'] sys['ram'] = i['ram'] sys['vcpus'] = i['vcpus'] sys['disk'] = i['disk'] sys['public'] = 'yes' ret['totalList'].append(sys) ret['currentPage'] = 1 ret['totalPageNum'] = len(ret['totalList']) if request.method == "POST": host_method = request.POST.get('method') if host_method == 'single': flavor_id = request.POST.get('id') flavor_list = flavorss.show_detail(flavor_id, username=username) ret['cpu'] = flavor_list['flavor']['vcpus'] ret['ram'] = flavor_list['flavor']['ram'] ret['name'] = flavor_list['flavor']['name'] if host_method == "update": pass json_status = json_data(ret) response = HttpResponse(json_status) response['Access-Control-Allow-Origin'] = '*' response["Access-Control-Allow-Headers"] = "*" response['Content-Type'] = 'application/json' return response
def flavors(request): global flavorss ret = {} username = request.user.username ret['totalList'] = [] ret['name'] = {} if request.method == 'GET': for i in flavorss.list_detail(username=username)["flavors"]: sys = {} ret['name'][i['id']] = i['name'] sys['id'] = i['id'] sys['name'] = i['name'] sys['ram'] = i['ram'] sys['vcpus'] = i['vcpus'] sys['disk'] = i['disk'] sys['public'] = 'yes' ret['totalList'].append(sys) ret['currentPage'] = 1 ret['totalPageNum'] = len(ret['totalList']) if request.method == "POST": host_method = request.POST.get('method') if host_method == 'single': flavor_id = request.POST.get('id') flavor_list = flavorss.show_detail(flavor_id,username=username) ret['cpu'] = flavor_list['flavor']['vcpus'] ret['ram'] = flavor_list['flavor']['ram'] ret['name'] = flavor_list['flavor']['name'] if host_method == "update": pass json_status = json_data(ret) response = HttpResponse(json_status) response['Access-Control-Allow-Origin'] = '*' response["Access-Control-Allow-Headers"] = "*" response['Content-Type'] = 'application/json' return response
def instances_backup(request): ret = {} username = request.user.username # login() instances_id = request.POST.get('id') instances_name = request.POST.get('name') instances_name_b = request.POST.get('name_bakup') openstack_log.info(request.POST) vm_snap = Vm_snap(instances_id) return_data = vm_snap.create(instances_name_b,username=username) if return_data == 2: ret['name'] = instances_name ret['status'] = False ret['return'] = False elif return_data != 1: ret['name'] = instances_name ret['status'] = True else: ret['name'] = instances_name ret['status'] = False ret['return'] = True ret = json_data(ret) return ret
def vm_uninstall(request): global volume_attach global vm_manage ret = {} username = request.user.username data = eval(request.POST.get('data')) host_id = data['host_id'] volumes_id = data['disk_id'] host_name = data['host_name'] volumes_name = data['disk_name'] return_data = volume_attach.delete(host_id, volumes_id,username=username) if return_data != 1: vm_details = vm_manage.show_detail(host_id,username=username)['server'] ret['disk_list'] = volumes_deal(host_name, vm_details, volumes_id,username) ret['host_name'] = host_name ret['status'] = True ret['volumes_name'] = volumes_name else: ret['host_name'] = host_name ret['status'] = False ret['volumes_name'] = volumes_name ret = json_data(ret) return ret
def instances_backup_delete(request): ret={} username = request.user.username vm_id = request.GET.get('id') backup_name=str(vm_id)+str(request.GET.get('backup_name')) vm_snap=Vm_snap(vm_id) return_data=vm_snap.delete_node(backup_name,username=username) if return_data != 1: #ret['status'] = True return_data = vm_snap.list_snap() ret['data'] = [] for i in return_data: sys = {} sys['name'] = i['image_name'].replace(i['vm_id'], '') if sys['name'] == 'root': continue sys['id'] = i['image_id'] sys['vm_id'] = i['vm_id'] sys['time'] = i['time'].strftime('%Y-%m-%d %H:%M:%S') ret['data'].append(sys) else: ret['status'] = False ret=json_data(ret) return ret
def instances(request): global imagess global flavorss global vm_manage global volume_s global host_vm_start ret = {} disk = [] sys = {} username = request.user.username if request.method == "GET": host_id = request.GET.get('name') if host_id: return_data = vm_manage.show_detail(host_id, username=username)['server'] ret['status'] = return_data['status'] ret['id'] = return_data['id'] ret['name'] = return_data['name'] json_status = json_data(ret) response = HttpResponse(json_status) response['Access-Control-Allow-Origin'] = '*' response['Content-Type'] = 'application/json' return response host_list = vm_manage.list_detail(username=username) currentPages = request.GET.get('currentPage') pageSizes = request.GET.get('pageSize') if currentPages and pageSizes: minpageSizes = (int(currentPages) - 1) * int(pageSizes) maxpageSizes = int(currentPages) * int(pageSizes) else: minpageSizes = 0 maxpageSizes = 0 ret['totalList'] = [] #test_list = [] returnimages = ReturnImages(imagess.list(username=username)['images']) returnflavor = ReturnFlavor( flavorss.list(username=username)['flavors']) for host in host_list['servers']: sys = {} sys['id'] = host['id'] sys['name'] = host['name'] sys['instance_name'] = host['OS-EXT-SRV-ATTR:instance_name'] try: sys['image'] = returnimages.images_name(host['image']['id']) except: sys['image'] = '-' # sys['flavor'] = flavorss.show_detail(host['flavor']['id'])['flavor']['name'] sys['flavor'] = returnflavor.images_name(host['flavor']['id']) sys['created'] = time_handle(host['created']) sys['status'] = host['status'] for key, value in host['addresses'].items(): for ip in value: for keys, values in ip.items(): if keys == "addr": sys['ip'] = values ret['totalList'].append(sys) # test_list.append(sys) ret['currentPage'] = 1 ret['totalPageNum'] = len(host_list['servers']) if request.method == "POST": host_method = request.POST.get('method') if host_method == "create": host_name = request.POST.get('name') host_count = request.POST.get('count') host_flavor = request.POST.get('type') host_image = request.POST.get('images') host_password = '******' host_userdata = base64.b64encode('aaa') for keys, values in request.POST.items(): if 'disk' in keys: disk.append({"size": values}) host_create = vm_manage.create_multiple(host_name, host_flavor, host_image, host_password, int(host_count), int(host_count), key_name='', disk=disk, username=username) if host_create != 1: ret['status'] = True openstack_log.info("虚拟机创建:{0}".format(host_create)) else: ret['status'] = False elif host_method == "start": request_list = request.POST.getlist('data')[0] for keys, values in eval(request_list).items(): if vm_manage.show_detail( keys, username=username )['server']['OS-EXT-STS:vm_state'] != "active": host_vm_startstatus = host_vm_start.start( keys, username=username) if host_vm_startstatus == 1: ret[values] = False else: ret[values] = True else: ret[values] = "stopped" elif host_method == "stop": request_list = request.POST.getlist('data')[0] for keys, values in eval(request_list).items(): if vm_manage.show_detail( keys, username=username )['server']['OS-EXT-STS:vm_state'] != "stopped": host_vm_startstatus = host_vm_start.stop(keys, username=username) if host_vm_startstatus == 1: ret[values] = False else: while True: if vm_manage.show_detail( keys, username=username )['server']['OS-EXT-STS:vm_state'] == "stopped": ret[values] = True break else: ret[values] = "stopped" elif host_method == "restart": type = request.POST.get('type') if type == "restart": pass else: request_list = request.POST.getlist('data')[0] for keys, values in eval(request_list).items(): host_vm_startstatus = host_vm_start.reboot( keys, username=username) if host_vm_startstatus == 1: ret[values] = False else: ret[values] = True elif host_method == "delete": request_list = request.POST.getlist('data')[0] for keys, values in eval(request_list).items(): host_vm_delete = vm_manage.delete(keys, username=username) if host_vm_delete == 1: ret[values] = False else: while True: try: return_data = vm_manage.show_detail( keys, username=username)['server'] except: ret[values] = True openstack_log.info("虚拟机删除成功:{0}".format(keys)) break elif host_method == "vnc": host_id = eval(request.POST.get('data'))['host_id'] host_vnc = host_vm_start.get_console(host_id, username=username) if host_vnc == 1: return_data = {} return_data['console'] = {} return_data['console']['url'] = False ret = return_data else: ret = host_vnc elif host_method == "update": type_vm = request.POST.get('type_vm') if type_vm == "flavor": host_id = request.POST.get('host_id') host_name = request.POST.get('host_name') type = request.POST.get('type') return_data = host_vm_start.resize(host_id, type, username=username) if return_data == 1: ret[host_name] = False else: ret[host_name] = True elif type_vm == "image": host_id = request.POST.get('host_id') host_name = request.POST.get('host_name') type = request.POST.get('type') return_data = host_vm_start.rebuild(host_id, type, host_name, username=username) if return_data == 1: ret[host_name] = False else: ret[host_name] = True elif host_method == "host_status": pass json_status = json_data(ret) response = HttpResponse(json_status) response['Access-Control-Allow-Origin'] = '*' response['Content-Type'] = 'application/json' return response
def instances(request): global imagess global flavorss global vm_manage global volume_s global host_vm_start ret = {} disk = [] sys = {} username = request.user.username if request.method == "GET": host_id=request.GET.get('name') if host_id: return_data=vm_manage.show_detail(host_id,username=username)['server'] ret['status']=return_data['status'] ret['id']=return_data['id'] ret['name']=return_data['name'] json_status = json_data(ret) response = HttpResponse(json_status) response['Access-Control-Allow-Origin'] = '*' response['Content-Type'] = 'application/json' return response host_list = vm_manage.list_detail(username=username) currentPages = request.GET.get('currentPage') pageSizes = request.GET.get('pageSize') if currentPages and pageSizes: minpageSizes = (int(currentPages) - 1) * int(pageSizes) maxpageSizes = int(currentPages) * int(pageSizes) else: minpageSizes = 0 maxpageSizes = 0 ret['totalList'] = [] #test_list = [] returnimages = ReturnImages(imagess.list(username=username)['images']) returnflavor = ReturnFlavor(flavorss.list(username=username)['flavors']) for host in host_list['servers']: sys = {} sys['id'] = host['id'] sys['name'] = host['name'] sys['instance_name']=host['OS-EXT-SRV-ATTR:instance_name'] try: sys['image'] = returnimages.images_name(host['image']['id']) except: sys['image'] = '-' # sys['flavor'] = flavorss.show_detail(host['flavor']['id'])['flavor']['name'] sys['flavor'] = returnflavor.images_name(host['flavor']['id']) sys['created'] = time_handle(host['created']) sys['status'] = host['status'] for key, value in host['addresses'].items(): for ip in value: for keys, values in ip.items(): if keys == "addr": sys['ip'] = values ret['totalList'].append(sys) # test_list.append(sys) ret['currentPage'] = 1 ret['totalPageNum'] = len(host_list['servers']) if request.method == "POST": host_method = request.POST.get('method') if host_method == "create": host_name = request.POST.get('name') host_count = request.POST.get('count') host_flavor = request.POST.get('type') host_image = request.POST.get('images') host_password = '******' host_userdata = base64.b64encode('aaa') for keys, values in request.POST.items(): if 'disk' in keys: disk.append({"size": values}) host_create = vm_manage.create_multiple(host_name, host_flavor, host_image, host_password, int(host_count), int(host_count),key_name='',disk=disk,username=username) if host_create != 1: ret['status'] = True openstack_log.info("虚拟机创建:{0}".format(host_create)) else: ret['status'] = False elif host_method == "start": request_list = request.POST.getlist('data')[0] for keys, values in eval(request_list).items(): if vm_manage.show_detail(keys,username=username)['server']['OS-EXT-STS:vm_state'] != "active": host_vm_startstatus = host_vm_start.start(keys,username=username) if host_vm_startstatus == 1: ret[values] = False else: ret[values] = True else: ret[values] = "stopped" elif host_method == "stop": request_list = request.POST.getlist('data')[0] for keys, values in eval(request_list).items(): if vm_manage.show_detail(keys,username=username)['server']['OS-EXT-STS:vm_state'] != "stopped": host_vm_startstatus = host_vm_start.stop(keys,username=username) if host_vm_startstatus == 1: ret[values] = False else: while True: if vm_manage.show_detail(keys,username=username)['server']['OS-EXT-STS:vm_state'] == "stopped": ret[values] = True break else: ret[values] = "stopped" elif host_method == "restart": type = request.POST.get('type') if type == "restart": pass else: request_list = request.POST.getlist('data')[0] for keys, values in eval(request_list).items(): host_vm_startstatus = host_vm_start.reboot(keys,username=username) if host_vm_startstatus == 1: ret[values] = False else: ret[values] = True elif host_method == "delete": request_list = request.POST.getlist('data')[0] for keys, values in eval(request_list).items(): host_vm_delete = vm_manage.delete(keys,username=username) if host_vm_delete == 1: ret[values] = False else: while True: try: return_data = vm_manage.show_detail(keys,username=username)['server'] except: ret[values] = True openstack_log.info("虚拟机删除成功:{0}".format(keys)) break elif host_method == "vnc": host_id = eval(request.POST.get('data'))['host_id'] host_vnc = host_vm_start.get_console(host_id,username=username) if host_vnc == 1: return_data = {} return_data['console'] = {} return_data['console']['url'] = False ret = return_data else: ret = host_vnc elif host_method == "update": type_vm = request.POST.get('type_vm') if type_vm == "flavor": host_id = request.POST.get('host_id') host_name = request.POST.get('host_name') type = request.POST.get('type') return_data = host_vm_start.resize(host_id, type,username=username) if return_data == 1: ret[host_name] = False else: ret[host_name] = True elif type_vm == "image": host_id = request.POST.get('host_id') host_name = request.POST.get('host_name') type = request.POST.get('type') return_data = host_vm_start.rebuild(host_id, type, host_name,username=username) if return_data == 1: ret[host_name] = False else: ret[host_name] = True elif host_method == "host_status": pass json_status = json_data(ret) response = HttpResponse(json_status) response['Access-Control-Allow-Origin'] = '*' response['Content-Type'] = 'application/json' return response
def volumes(request): global volume_s global vm_manage global volume_attach ret = {} username = request.user.username if request.method == "GET": host_id=request.GET.get('name') if host_id: return_data=volume_s.show_detail(host_id,username=username)['volume'] if not return_data['displayName']: ret['name'] = return_data['id'] else: ret['name'] = return_data['displayName'] ret['id'] = return_data['id'] ret['status']=return_data['status'] json_status = json_data(ret) response = HttpResponse(json_status) response['Access-Control-Allow-Origin'] = '*' response['Content-Type'] = 'application/json' return response ret['totalList'] = [] volumes_list = volume_s.list_detail(username=username) returnvm = ReturnVm(vm_manage.list(username=username)['servers']) for disk in volumes_list['volumes']: sys = {} if not disk['displayName']: sys['name'] = disk['id'] else: sys['name'] = disk['displayName'] sys['id'] = disk['id'] sys['size'] = disk['size'] if disk['status'] == 'deleting': continue sys['status']=disk['status'] sys['voumetype'] = 'ceph' sys['created'] = time_handle(disk['createdAt']) sys['backupd'] = time_handle(disk['createdAt']) sys['displayDescription'] = disk['displayDescription'] if len(disk['attachments'][0].keys()) == 4: for disk_host in disk['attachments']: sys['device'] = disk_host['device'] try: #sys['servername'] = vm_manage.show_detail(disk_host['serverId'])['server']['name'] sys['servername'] = returnvm.vm_name(disk_host['serverId']) except: sys['servername'] = None sys['server_id'] = disk_host['serverId'] else: sys['device'] = '' sys['servername'] = '' ret['totalList'].append(sys) ret['currentPage'] = 1 ret['totalPageNum'] = len(ret['totalList']) if request.method == "POST": openstack_log.info(request.POST) host_method = request.POST.get('method') if host_method == 'attach': disk = request.POST.get('disk') host = request.POST.get('host') ret['totalList'] = [] for i in json.loads(disk): sys = {} return_data = volume_attach.attach(host, i,username=username) if return_data == 1: sys['status'] = False else: vm_details = vm_manage.show_detail(host,username=username)['server'] ret['disk_list'] = volumes_deal(vm_details['name'], vm_details, i,username) sys['device'] = return_data['volumeAttachment']['device'] sys['servername'] = vm_details['name'] volume_d = volume_s.show_detail(i,username=username) if volume_d['volume']['displayName'] == None: sys['volumename'] = volume_d['volume']['id'] else: sys['volumename'] = volume_d['volume']['displayName'] sys['status'] = True ret['totalList'].append(sys) openstack_log.info(ret) json_status = json_data(ret) response = HttpResponse(json_status) response['Access-Control-Allow-Origin'] = '*' response['Content-Type'] = 'application/json' return response