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
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)})
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
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
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