Example #1
0
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)
Example #2
0
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
Example #3
0
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
Example #4
0
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)
Example #5
0
 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)
Example #6
0
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'}))
Example #7
0
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
Example #8
0
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)))
Example #9
0
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
Example #10
0
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)
Example #11
0
    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)
Example #12
0
 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)