Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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
Exemple #4
0
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
Exemple #5
0
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
Exemple #6
0
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
Exemple #7
0
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
Exemple #8
0
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
Exemple #9
0
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
Exemple #10
0
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
Exemple #11
0
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
Exemple #12
0
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
Exemple #13
0
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
Exemple #14
0
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
Exemple #15
0
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
Exemple #16
0
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
Exemple #17
0
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
Exemple #18
0
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
Exemple #19
0
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
Exemple #20
0
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
Exemple #21
0
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
Exemple #22
0
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
Exemple #23
0
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
Exemple #24
0
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
Exemple #25
0
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
Exemple #26
0
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
Exemple #27
0
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
Exemple #28
0
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
Exemple #29
0
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
Exemple #30
0
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
Exemple #31
0
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
Exemple #32
0
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
Exemple #33
0
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
Exemple #34
0
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
Exemple #35
0
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