def volume_mount_ceph_ajax(req): vm_uuid = req.POST.get('vm_uuid', None) volume_id = req.POST.get('volume_id', None) volume = _get_volume_by_id(req.user, volume_id) dicts = {} dicts['res'] = False if not volume: dicts['alert_msg'] = '参数错误' else: if volume['vm']: dicts['alert_msg'] = '云硬盘已挂载' else: res = api_volume_mount({ 'req_user': req.user, 'vm_uuid': vm_uuid, 'volume_id': volume_id }) if res['res']: dicts['res'] = True dicts['alert_msg'] = '挂载成功!' elif res['err'] in ERROR_CN: dicts['alert_msg'] = ERROR_CN[res['err']] else: dicts['alert_msg'] = '挂载失败' return HttpResponse(json.dumps(dicts), content_type='application/json')
def volume_vm_create_view(req): vmid = req.GET.get('vmid') obj_res = api_vm_get({'req_user': req.user, 'uuid': vmid}) if obj_res['res']: obj = obj_res['info'] else: return HttpResponseRedirect('/vmadmin/vm/list/') dicts = {} if req.method == 'POST': size = req.POST.get('size', None) group_id = obj['group_id'] backend = req.POST.get('backend', 'GFS') remarks = req.POST.get('remarks', None) if not size or not size.isdigit() or float(size) <= 0: dicts['alert_msg'] = '参数错误' size = int(float(size) * 1024) res = api_volume_create({ 'req_user': req.user, 'host_id': obj['host_id'], 'group_id': int(group_id), 'size': size, 'backend': backend }) if res['res']: mount_res = api_volume_mount({ 'req_user': req.user, 'vm_uuid': vmid, 'volume_id': res['volume_id'] }) if not mount_res['res']: messages.error( req, '挂载失败:' + ERROR_CN.get(mount_res['err'], mount_res['err'])) return HttpResponseRedirect('/vmadmin/vm/list/') else: if res['err'] in ERROR_CN: dicts['alert_msg'] = ERROR_CN[res['err']] else: dicts['alert_msg'] = res['err'] dicts['vmobj'] = obj return render(req, 'vmadmin_volume_vm_create.html', dicts)
def volume_mount_ceph_view(req): dicts = {} if req.method == 'POST': print(req.POST) vm_uuid = req.POST.get('vm_uuid', None) volume_id = req.POST.get('volume_id', None) volume = _get_volume_by_id(req.user, volume_id) if not volume: dicts['alert_msg'] = '参数错误' else: if volume['vm']: dicts['alert_msg'] = '云硬盘已挂载' else: res = api_volume_mount({'req_user': req.user, 'vm_uuid':vm_uuid, 'volume_id':volume_id}) if res['res']: dicts['alert_msg'] = '挂载成功!' elif res['err'] in ERROR_CN: dicts['alert_msg'] = ERROR_CN[res['err']] else: dicts['alert_msg'] = '挂载失败' volume_id = req.GET.get('volume_id', None) vm_id = req.GET.get('vm_id', None) volume = None vm = None if volume_id != None: volume = _get_volume_by_id(req.user, volume_id) if vm_id != None: vm = _get_vm_by_id(req.user, vm_id) volume_list = [] vm_list = [] if vm: volume_list_info = api_volume_get_list({'req_user': req.user, 'group_id': vm['group_id']}) if volume_list_info['res']: for vol in volume_list_info['list']: if not vol['enable']: continue if vol['group_id'] != vm['group_id']: continue if vol['vm']: continue if req.user.is_superuser or vol['user_name'] == req.user.username: volume_list.append(vol) # cephpool_list = _get_cephpool_list_by_center_id(req.user, vm['center_id']) # for cephpool in cephpool_list: # volume_list_info = api_volume_get_list({'req_user': req.user, 'cephpool_id': cephpool['id']}) # if volume_list_info['res']: # volume_list += volume_list_info['list'] mounted_volume_list_info = api_volume_get_list({'req_user': req.user, 'vm_uuid':vm['uuid']}) if mounted_volume_list_info['res']: vm['volumes'] = mounted_volume_list_info['list'] elif volume: vm_list_info = api_vm_get_list({'req_user': req.user, 'group_id': volume['group_id']}) if vm_list_info['res']: if req.user.is_superuser: vm_list += vm_list_info['list'] else: for vm_info in vm_list_info['list']: if vm_info['creator'] == req.user.username: vm_list.append(vm_info) # volume_cephpool_info = api_ceph_get({'req_user': req.user, 'cephpool_id': volume['cephpool_id']}) # if volume_cephpool_info['res']: # group_list_info = api_group_get_list({'req_user': req.user, 'center_id': volume_cephpool_info['info']['center_id']}) # if group_list_info['res']: # for group in group_list_info['list']: # vm_list_info = api_vm_get_list({'req_user': req.user, 'group_id': group['id']}) # if vm_list_info['res']: # if req.user.is_superuser: # vm_list += vm_list_info['list'] # else: # for vm_info in vm_list_info['list']: # if vm_info['creator'] == req.user.username: # vm_list.append(vm_info) dicts['volume'] = volume dicts['vm'] = vm dicts['volume_list'] = volume_list dicts['vm_list'] = vm_list if volume and volume['enable'] == False: dicts['alert_msg'] = '该设备不可用' return render_to_response('vmadmin_volume_mount_ceph.html', dicts, context_instance=RequestContext(req))
def volume_mount_ceph_view(req): dicts = {} if req.method == 'POST': print(req.POST) vm_uuid = req.POST.get('vm_uuid', None) volume_id = req.POST.get('volume_id', None) volume = _get_volume_by_id(req.user, volume_id) if not volume: dicts['alert_msg'] = '参数错误' else: if volume['vm']: dicts['alert_msg'] = '云硬盘已挂载' else: res = api_volume_mount({ 'req_user': req.user, 'vm_uuid': vm_uuid, 'volume_id': volume_id }) if res['res']: dicts['alert_msg'] = '挂载成功!' elif res['err'] in ERROR_CN: dicts['alert_msg'] = ERROR_CN[res['err']] else: dicts['alert_msg'] = '挂载失败' volume_id = req.GET.get('volume_id', None) vm_id = req.GET.get('vm_id', None) volume = None vm = None if volume_id != None: volume = _get_volume_by_id(req.user, volume_id) if vm_id != None: vm = _get_vm_by_id(req.user, vm_id) volume_list = [] vm_list = [] if vm: volume_list_info = api_volume_get_list({ 'req_user': req.user, 'group_id': vm['group_id'] }) if volume_list_info['res']: for vol in volume_list_info['list']: if not vol['enable']: continue if vol['group_id'] != vm['group_id']: continue if vol['vm']: continue if req.user.is_superuser or vol[ 'user_name'] == req.user.username: volume_list.append(vol) # cephpool_list = _get_cephpool_list_by_center_id(req.user, vm['center_id']) # for cephpool in cephpool_list: # volume_list_info = api_volume_get_list({'req_user': req.user, 'cephpool_id': cephpool['id']}) # if volume_list_info['res']: # volume_list += volume_list_info['list'] mounted_volume_list_info = api_volume_get_list({ 'req_user': req.user, 'vm_uuid': vm['uuid'] }) if mounted_volume_list_info['res']: vm['volumes'] = mounted_volume_list_info['list'] elif volume: vm_list_info = api_vm_get_list({ 'req_user': req.user, 'group_id': volume['group_id'] }) if vm_list_info['res']: if req.user.is_superuser: vm_list += vm_list_info['list'] else: for vm_info in vm_list_info['list']: if vm_info['creator'] == req.user.username: vm_list.append(vm_info) # volume_cephpool_info = api_ceph_get({'req_user': req.user, 'cephpool_id': volume['cephpool_id']}) # if volume_cephpool_info['res']: # group_list_info = api_group_get_list({'req_user': req.user, 'center_id': volume_cephpool_info['info']['center_id']}) # if group_list_info['res']: # for group in group_list_info['list']: # vm_list_info = api_vm_get_list({'req_user': req.user, 'group_id': group['id']}) # if vm_list_info['res']: # if req.user.is_superuser: # vm_list += vm_list_info['list'] # else: # for vm_info in vm_list_info['list']: # if vm_info['creator'] == req.user.username: # vm_list.append(vm_info) dicts['volume'] = volume dicts['vm'] = vm dicts['volume_list'] = volume_list dicts['vm_list'] = vm_list if volume and volume['enable'] == False: dicts['alert_msg'] = '该设备不可用' return render_to_response('vmadmin_volume_mount_ceph.html', dicts, context_instance=RequestContext(req))
def volume_mount_ceph_view(req): dicts = {} if req.method == 'POST': print(req.POST) vm_uuid = req.POST.get('vm_uuid', None) volume_id = req.POST.get('volume_id', None) volume = _get_volume_by_id(req.user, volume_id) if not volume: dicts['alert_msg'] = '参数错误' else: if volume['vm']: dicts['alert_msg'] = '云硬盘已挂载' else: res = api_volume_mount({ 'req_user': req.user, 'vm_uuid': vm_uuid, 'volume_id': volume_id }) if res['res']: dicts['alert_msg'] = '挂载成功!' elif res['err'] in ERROR_CN: dicts['alert_msg'] = ERROR_CN[res['err']] else: dicts['alert_msg'] = '挂载失败' volume_id = req.GET.get('volume_id', None) vm_id = req.GET.get('vm_id', None) volume = None vm = None if volume_id != None: volume = _get_volume_by_id(req.user, volume_id) if vm_id != None: vm = _get_vm_by_id(req.user, vm_id) volume_list = [] vm_list = [] if vm: template = 'vmadmin_volume_mount_ceph.html' volume_list_info = api_volume_get_list({ 'req_user': req.user, 'group_id': vm['group_id'] }) if volume_list_info['res']: for vol in volume_list_info['list']: if not vol['enable']: continue if vol['group_id'] != vm['group_id']: continue if vol['vm']: continue if req.user.is_superuser or vol[ 'user_name'] == req.user.username: volume_list.append(vol) # cephpool_list = _get_cephpool_list_by_center_id(req.user, vm['center_id']) # for cephpool in cephpool_list: # volume_list_info = api_volume_get_list({'req_user': req.user, 'cephpool_id': cephpool['id']}) # if volume_list_info['res']: # volume_list += volume_list_info['list'] mounted_volume_list_info = api_volume_get_list({ 'req_user': req.user, 'vm_uuid': vm['uuid'] }) if mounted_volume_list_info['res']: vm['volumes'] = mounted_volume_list_info['list'] elif volume: template = 'vmadmin_volume_mount_to_vm.html' vm_list_info = api_vm_get_list({ 'req_user': req.user, 'group_id': volume['group_id'] }) if vm_list_info['res']: if req.user.is_superuser: vm_list += vm_list_info['list'] else: for vm_info in vm_list_info['list']: if vm_info['creator'] == req.user.username: vm_list.append(vm_info) else: raise Http404() def attach_mounted_volumes(vm_info): mounted_volume_info = api_volume_get_list({ 'req_user': req.user, 'vm_uuid': vm_info['uuid'] }) if mounted_volume_info['res']: vm_info['volumes'] = mounted_volume_info['list'] return vm_info vm_list = filter(attach_mounted_volumes, vm_list) dicts['volume'] = volume dicts['vm'] = vm dicts['volume_list'] = volume_list dicts['vm_list'] = vm_list if volume and volume['enable'] == False: dicts['alert_msg'] = '该设备不可用' return render(req, template, dicts)