Exemple #1
0
def _get_quota_data(request,
                    tenant_mode=True,
                    disabled_quotas=None,
                    tenant_id=None):
    quotasets = []
    if not tenant_id:
        tenant_id = request.user.tenant_id
    if disabled_quotas is None:
        disabled_quotas = get_disabled_quotas(request)

    qs = base.QuotaSet()

    if NOVA_QUOTA_FIELDS - disabled_quotas:
        if tenant_mode:
            quotasets.append(nova.tenant_quota_get(request, tenant_id))
        else:
            quotasets.append(nova.default_quota_get(request, tenant_id))

    if CINDER_QUOTA_FIELDS - disabled_quotas:
        try:
            if tenant_mode:
                quotasets.append(cinder.tenant_quota_get(request, tenant_id))
            else:
                quotasets.append(cinder.default_quota_get(request, tenant_id))
        except cinder.cinder_exception.ClientException:
            disabled_quotas.update(CINDER_QUOTA_FIELDS)
            msg = _("Unable to retrieve volume limit information.")
            exceptions.handle(request, msg)

    for quota in itertools.chain(*quotasets):
        if quota.name not in disabled_quotas:
            qs[quota.name] = quota.limit
    return qs
Exemple #2
0
def _get_quota_data(request, tenant_mode=True, disabled_quotas=None,
                    tenant_id=None):
    quotasets = []
    if not tenant_id:
        tenant_id = request.user.tenant_id
    if disabled_quotas is None:
        disabled_quotas = get_disabled_quotas(request)

    qs = base.QuotaSet()

    if NOVA_QUOTA_FIELDS - disabled_quotas:
        if tenant_mode:
            quotasets.append(nova.tenant_quota_get(request, tenant_id))
        else:
            quotasets.append(nova.default_quota_get(request, tenant_id))

    if CINDER_QUOTA_FIELDS - disabled_quotas:
        try:
            if tenant_mode:
                quotasets.append(cinder.tenant_quota_get(request, tenant_id))
            else:
                quotasets.append(cinder.default_quota_get(request, tenant_id))
        except cinder.cinder_exception.ClientException:
            disabled_quotas.update(CINDER_QUOTA_FIELDS)
            msg = _("Unable to retrieve volume limit information.")
            exceptions.handle(request, msg)

    for quota in itertools.chain(*quotasets):
        if quota.name not in disabled_quotas:
            qs[quota.name] = quota.limit
    return qs
Exemple #3
0
def get_default_quota_data(request, disabled_quotas=None, tenant_id=None):
    quotasets = []
    if not tenant_id:
        tenant_id = request.user.tenant_id
    if disabled_quotas is None:
        disabled_quotas = get_disabled_quotas(request)

    if NOVA_QUOTA_FIELDS - disabled_quotas:
        quotasets.append(nova.default_quota_get(request, tenant_id))

    if CINDER_QUOTA_FIELDS - disabled_quotas:
        try:
            quotasets.append(cinder.default_quota_get(request, tenant_id))
        except cinder.cinder_exception.ClientException:
            disabled_quotas.update(CINDER_QUOTA_FIELDS)
            msg = _("Unable to retrieve volume quota information.")
            exceptions.handle(request, msg)

    if NEUTRON_QUOTA_FIELDS - disabled_quotas:
        # TODO(jpichon): There is no API to access the Neutron default quotas
        # (LP#1204956). For now, use the values from the current project.
        try:
            quotasets.append(
                neutron.tenant_quota_get(request, tenant_id=tenant_id))
        except Exception:
            disabled_quotas.update(NEUTRON_QUOTA_FIELDS)
            msg = _('Unable to retrieve Neutron quota information.')
            exceptions.handle(request, msg)

    qs = base.QuotaSet()
    for quota in itertools.chain(*quotasets):
        if quota.name not in disabled_quotas and quota.name in QUOTA_FIELDS:
            qs[quota.name] = quota.limit
    return qs
    def __init__(self, request, *args, **kwargs):
        super(CommonAccountQuotaAction, self).__init__(request, *args,
                                                       **kwargs)

        # set fields min value to -1
        for field in self.fields:
            self.fields[field].widget.attrs.update({'min': '-1'})

        # populate volume type quotas
        for volume_type in cinder.volume_type_list(self.request):
            self.fields['quota_gigabytes_' +
                        volume_type.name] = forms.IntegerField(label=_(
                            "%s (GB)" % volume_type.name),
                                                               required=False)

        # display default quota values
        for quota in nova.itenant_quota_get(self.request, None):
            field = 'quota_' + quota.name
            if self.fields.get(field):
                self.fields[field].widget.attrs.update(
                    {'placeholder': str(quota.limit)})

        for quota in cinder.default_quota_get(self.request, None):
            field = 'quota_' + quota.name
            if self.fields.get(field):
                self.fields[field].widget.attrs.update(
                    {'placeholder': str(quota.limit)})
Exemple #5
0
 def prepare_action_context(self, request, context):
     try:
         quota_defaults = cinder.default_quota_get(request,
                                                   request.user.tenant_id)
         for field in quotas.CINDER_QUOTA_FIELDS:
             context[field] = quota_defaults.get(field).limit
     except Exception:
         exceptions.handle(request,
                           _('Unable to retrieve default volume quotas.'))
     return context
Exemple #6
0
 def prepare_action_context(self, request, context):
     try:
         quota_defaults = cinder.default_quota_get(request,
                                                   request.user.tenant_id)
         for field in quotas.CINDER_QUOTA_FIELDS:
             context[field] = quota_defaults.get(field).limit
     except Exception:
         exceptions.handle(request,
                           _('Unable to retrieve default volume quotas.'))
     return context
Exemple #7
0
def _get_quota_data(request,
                    tenant_mode=True,
                    disabled_quotas=None,
                    tenant_id=None):
    quotasets = []
    if not tenant_id:
        tenant_id = request.user.tenant_id
    if disabled_quotas is None:
        disabled_quotas = get_disabled_quotas(request)

    qs = base.QuotaSet()

    if 'instances' not in disabled_quotas:
        if tenant_mode:
            quotasets.append(nova.tenant_quota_get(request, tenant_id))
        else:
            quotasets.append(nova.default_quota_get(request, tenant_id))

    if 'volumes' not in disabled_quotas:
        try:
            if tenant_mode:
                quotasets.append(cinder.tenant_quota_get(request, tenant_id))
            else:
                quotasets.append(cinder.default_quota_get(request, tenant_id))
        except cinder.cinder_exception.ClientException:
            disabled_quotas.update(CINDER_QUOTA_FIELDS)
            msg = _("Unable to retrieve volume limit information.")
            exceptions.handle(request, msg)

    #mj - add the tenant_quota info from neutron - this is replaced in Queens
    if 'network' not in disabled_quotas:
        try:
            if tenant_mode:
                quotasets.append(
                    neutron.tenant_quota_get(request, tenant_id=tenant_id))
            else:
                quotasets.append(neutron.default_quota_get(request, tenant_id))

        except Exception:
            disabled_quotas.update(NEUTRON_QUOTA_FIELDS)
            msg = _('Unable to retrieve Neutron quota information.')

    for quota in itertools.chain(*quotasets):
        if quota.name not in disabled_quotas:
            qs[quota.name] = quota.limit
    return qs
Exemple #8
0
def get_default_quota_data(request, disabled_quotas=None, tenant_id=None):
    quotasets = []
    if not tenant_id:
        tenant_id = request.user.tenant_id
    if disabled_quotas is None:
        disabled_quotas = get_disabled_quotas(request)

    if NOVA_QUOTA_FIELDS - disabled_quotas:
        try:
            quotasets.append(nova.default_quota_get(request, tenant_id))
        except Exception:
            disabled_quotas.update(NOVA_QUOTA_FIELDS)
            msg = _('Unable to retrieve Nova quota information.')
            exceptions.handle(request, msg)

    if CINDER_QUOTA_FIELDS - disabled_quotas:
        try:
            quotasets.append(cinder.default_quota_get(request, tenant_id))
        except cinder.cinder_exception.ClientException:
            disabled_quotas.update(CINDER_QUOTA_FIELDS)
            msg = _("Unable to retrieve volume quota information.")
            exceptions.handle(request, msg)

    if NEUTRON_QUOTA_FIELDS - disabled_quotas:
        try:
            quotasets.append(neutron.default_quota_get(request,
                                                       tenant_id=tenant_id))
        except Exception:
            disabled_quotas.update(NEUTRON_QUOTA_FIELDS)
            msg = _('Unable to retrieve Neutron quota information.')
            exceptions.handle(request, msg)

    qs = base.QuotaSet()
    for quota in itertools.chain(*quotasets):
        if quota.name not in disabled_quotas and quota.name in QUOTA_FIELDS:
            qs[quota.name] = quota.limit
    return qs