def delete_project_users_action(request, tenant_id, user_id): """ :param request: request object :param tenant_id: id of the tenant :param user_id: id of the user :return view<'get_project_list'> """ try: vms = Distribution.objects.filter(user_id=user_id) for vm in vms: instance = api.server_get(request, vm.instance_id) if instance.tenant_id == tenant_id: vm.delete() api.remove_tenant_user(request, tenant_id, user_id) except Unauthorized: raise except Exception, e: msg = 'Unable to delete user from tenant.' LOG.error('Unable to delete user %s from tenant %s. %s' % (user_id, tenant_id, e)) return HttpResponse( { "message": msg, "statusCode": UI_RESPONSE_DWZ_ERROR }, status=UI_RESPONSE_ERROR)
def get_client_instance_power(request, project_id, instance_id): """ :param request: request object :param instance_id: the instance id :return: the instance's power """ if request.is_ajax(): switch_tenants(request, project_id) try: instance = api.server_get(request, instance_id) except Unauthorized: raise except exceptions.ClientException: return HttpResponse(content=instance_id, status=UI_RESPONSE_NOTFOUND) if 1 == getattr(instance, 'OS-EXT-STS:power_state', 'None'): setattr(instance, 'power_state', 'Running') elif 3 == getattr(instance, 'OS-EXT-STS:power_state', 'None'): setattr(instance, 'power_state', 'Paused') elif 5 == getattr(instance, 'OS-EXT-STS:power_state', 'None'): setattr(instance, 'power_state', 'Suspended') else: setattr(instance, 'power_state', 'No state') return HttpResponse(jsonutils.dumps( {instance_id: getattr(instance, 'power_state', 'None')})) raise NotFound
def get_instance_name(request): instance_name = None instance_id = request.GET['instance_id'] try: instance = api.server_get(request, instance_id) instance_name = instance.name except Unauthorized: raise except Exception, ex: LOG.error("instance is not found error is %s") % ex
def associate_ip_action(request, ip_id): """ :param request:request object,ip_id :return:view<'virtual_address_manage/index_ip.html'> """ form = AssociateIPForm(request, ip_id, request.POST) if form.is_valid(): data = form.cleaned_data instance_old = api.server_get(request, data['instance_id']) try: q_instance_id = data['instance_id'] if q_instance_id: target_id = api.network.floating_ip_target_get_by_instance( request, q_instance_id) api.network.floating_ip_associate(request, ip_id, target_id) msg = get_text('Successfully associated Floating IP %(ip)s with Instance: %(inst)s') \ % {"ip": data['floating_ip'], "inst": data['instance_id']} except Unauthorized: raise except Exception, exe: if exe.message.find( 'fixed IP already has a floating IP on external network' ) != -1: msg = get_text('Error associated Floating IP %(ip)s with Instance %(inst)s, as that the instance already has a floating IP.')\ % {"ip": data['floating_ip'], "inst": getattr(instance_old , 'name' , 'unknown')} else: msg = get_text('Error associated Floating IP %(ip)s with Instance %(inst)s, please create a router with external interfaces for the subnet that the instance was in.') \ % {"ip": data['floating_ip'], "inst": getattr(instance_old , 'name' , 'unknown')} LOG.error( 'Error associated Floating IP %(ip)s with Instance %(inst)s .The error is %(e)s' % { "ip": data['floating_ip'], "inst": getattr(instance_old, 'name', 'unknown'), "e": exe.message }) return HttpResponse( { "message": msg, "statusCode": UI_RESPONSE_DWZ_ERROR }, status=UI_RESPONSE_ERROR) return HttpResponse( { "message": msg, "statusCode": UI_RESPONSE_DWZ_SUCCESS, "object_name": (' Floating IP %(ip)s Instance %(inst)s') % { "ip": data['floating_ip'], "inst": getattr(instance_old, 'name', 'unknown') } }, status=UI_RESPONSE_DWZ_SUCCESS)
def __init__(self, request, instance_id, *args, **kwargs): super(UpdateInstanceForm, self).__init__(*args, **kwargs) try: instance = api.server_get(request, instance_id) self.fields['name'].initial = getattr(instance, 'name', None) except Unauthorized: raise except NotFound: raise except Exception, e: LOG.error('Unable to retrieve instance list,%s ' % e)
def reboot_instance_client(request, project_id ,instance_id): if request.is_ajax(): switch_tenants(request, project_id) try: instance = api.server_get(request, instance_id) instance_status = instance.status if instance_status.lower() in ('active', 'suspend', 'shutoff',): api.server_reboot(request, instance_id) instance_next = api.server_get(request, instance_id) return HttpResponse(jsonutils.dumps({instance_id: 'success', "status": getattr(instance_next, 'status', 'None')})) else: LOG.info('Can not reboot instance,the status is wrong!') return HttpResponse(jsonutils.dumps({instance_id: 'failed'})) except Unauthorized: raise except exceptions.NotFound, e: msg = _('Can not found instance (%s)') % instance_id LOG.error(msg) return HttpResponse(jsonutils.dumps({instance_id: 'failed'})) except Exception, e: LOG.error('Can not reboot instance!') return HttpResponse(jsonutils.dumps({instance_id: 'failed'}))
def get_client_instance_task(request,project_id, instance_id): """ :param request: request object :param instance_id: the instance id :return: the instance's task """ if request.is_ajax(): switch_tenants(request, project_id) try: instance = api.server_get(request, instance_id) except Unauthorized: raise except exceptions.ClientException: return HttpResponse(content=instance_id, status=UI_RESPONSE_NOTFOUND) return HttpResponse(jsonutils.dumps( {instance_id: getattr(instance, 'OS-EXT-STS:task_state', 'None')})) raise NotFound
def search_image_status(request, instance_id): """ :param request: request object :return view<'image_template_manage/create.html'>: the view create image form """ try: instance = api.server_get(request, instance_id) instance_id = getattr(instance, 'id', None) instance_name = getattr(instance, 'name', None) console = api.nova.server_spice_console(request, instance_id) except Unauthorized: raise except exceptions.NotFound, exc: msg = _('Can not retrieve spice url!') LOG.error('Can not retrieve spice url!error is %s.' % exc) return HttpResponse(jsonutils.dumps(ui_response(message=msg)))
def get_instance_show_data(request, instance_id): """ :param request: request object :param instance_id: the id of one instance,its information will show :return _instance: one instance object """ try: instance = api.server_get(request, instance_id) instance.volumes = api.nova.instance_volumes_list(request, instance_id) # Sort by device name instance.volumes.sort(key=lambda vol: vol.device) instance.full_flavor = api.flavor_get(request, instance.flavor["id"]) instance.security_groups = api.server_security_groups( request, instance_id) except Unauthorized: raise except Exception, ex: if ex.code == UI_RESPONSE_NOTFOUND: msg = _('Can not found instance (%s)' % ex) else: msg = _('Unable to retrieve details for instance "%s".' % ex) LOG.error(msg) instance = None
def associate_ip_action(request , ip_id): """ :param request:request object,ip_id :return:view<'virtual_address_manage/index_ip.html'> """ form = AssociateIPForm(request , ip_id , request.POST) if form.is_valid(): data = form.cleaned_data instance_old = api.server_get(request , data['instance_id']) try: q_instance_id = data['instance_id'] if q_instance_id: target_id = api.network.floating_ip_target_get_by_instance( request, q_instance_id) api.network.floating_ip_associate(request , ip_id , target_id) msg = get_text('Successfully associated Floating IP %(ip)s with Instance: %(inst)s') \ % {"ip": data['floating_ip'], "inst": data['instance_id']} except Unauthorized: raise except Exception , exe: if exe.message.find('fixed IP already has a floating IP on external network') != -1: msg = get_text('Error associated Floating IP %(ip)s with Instance %(inst)s, as that the instance already has a floating IP.')\ % {"ip": data['floating_ip'], "inst": getattr(instance_old , 'name' , 'unknown')} else: msg = get_text('Error associated Floating IP %(ip)s with Instance %(inst)s, please create a router with external interfaces for the subnet that the instance was in.') \ % {"ip": data['floating_ip'], "inst": getattr(instance_old , 'name' , 'unknown')} LOG.error('Error associated Floating IP %(ip)s with Instance %(inst)s .The error is %(e)s' % {"ip": data['floating_ip'], "inst": getattr(instance_old , 'name' , 'unknown') , "e":exe.message}) return HttpResponse({"message":msg , "statusCode":UI_RESPONSE_DWZ_ERROR} , status = UI_RESPONSE_ERROR) return HttpResponse({"message":msg , "statusCode":UI_RESPONSE_DWZ_SUCCESS , "object_name":(' Floating IP %(ip)s Instance %(inst)s') % {"ip": data['floating_ip'], "inst": getattr(instance_old,'name', 'unknown')}} , status = UI_RESPONSE_DWZ_SUCCESS)
return shortcuts.render(request , 'virtual_address_manage/disassociate_ip.html' , {'ip_id':ip_id, 'instance_id':instance_id}) @check_permission('Disassociate IP') @require_POST @UIResponse('Virtual Address Manage', 'get_floating_ips_address') def disassociate_ip_action(request , ip_id , instance_id): """ :param request:request object, ip_id, instance_id :return:view<'virtual_address_manage/index_ip.html'> """ try: api.network.floating_ip_disassociate(request , ip_id , instance_id) except Unauthorized: raise except Exception , exe: msg = 'disassociate ip error.' LOG.error('disassociate ip error.the error is %s' % exe.message) return HttpResponse({ "message":msg , "statusCode":UI_RESPONSE_DWZ_ERROR } , status = UI_RESPONSE_ERROR) try: ip_old = api.tenant_floating_ip_get(request , ip_id) instance_old = api.server_get(request , instance_id) except Unauthorized: raise except Exception , exe: LOG.error('get IP info or instance info error.the error is %s' % exe.message) return HttpResponse({"message":"disassociate ip successfully!" , "statusCode":UI_RESPONSE_DWZ_SUCCESS , "object_name":(' Floating IP %(ip)s Instance %(inst)s') % {"ip": getattr(ip_old,'ip','unknown') , "inst": getattr(instance_old , 'name' , 'unknown')}} , status = UI_RESPONSE_DWZ_SUCCESS)
try: api.network.floating_ip_disassociate(request, ip_id, instance_id) except Unauthorized: raise except Exception, exe: msg = 'disassociate ip error.' LOG.error('disassociate ip error.the error is %s' % exe.message) return HttpResponse( { "message": msg, "statusCode": UI_RESPONSE_DWZ_ERROR }, status=UI_RESPONSE_ERROR) try: ip_old = api.tenant_floating_ip_get(request, ip_id) instance_old = api.server_get(request, instance_id) except Unauthorized: raise except Exception, exe: LOG.error('get IP info or instance info error.the error is %s' % exe.message) return HttpResponse( { "message": "disassociate ip successfully!", "statusCode": UI_RESPONSE_DWZ_SUCCESS, "object_name": (' Floating IP %(ip)s Instance %(inst)s') % { "ip": getattr(ip_old, 'ip', 'unknown'), "inst": getattr(instance_old, 'name', 'unknown') } }, status=UI_RESPONSE_DWZ_SUCCESS)