View and Manage Quotas

Quotas exist in Designate for various resources, these are configurable by an operator globally, as well as on a per-tenant basis.

View Quotas

Users can view their quotas with a simple API call:

GET /v2/quotas/ HTTP/1.1
Accept: application/json
Content-Type: application/json

Response:

HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
X-Openstack-Request-Id: req-bfcd0723-624c-4ec2-bbd5-99e985efe8db

{
  "api_export_size": 1000,
  "recordset_records": 20,
  "zone_records": 500,
  "zone_recordsets": 500,
  "zones": 500
}

Administrators with the ability to use the X-Auth-All-Projects header can view the quotas of any user by making a similar API call to /v2/quotas/tenant.

Available Quotas

Zones

Quota Description Default
zones The number of zone allowed per tenant 10

Recordsets/Records

Quota Description Default
zone_recordsets Number of recordsets allowed per zone 500
zone_records Number of records allowed per zone 500
recordset_records Number of records allowed per recordset 20

Zone Exports

Quota Description Default
api_export_size Number of recordsets allowed in a zone export 1000

Editing Quotas

Global Configuration

All of the quotas above can be set as a default for all users by editing the [DEFAULT] configuration section, and setting each quota with quota_$name. for example:

[DEFAULT]
########################
## General Configuration
########################
quota_zones = 500
quota_zone_recordsets = 500
quota_zone_records = 500
quota_recordset_records = 20
quota_api_export_size = 1000

Per-Tenant via API

These quotas can be edited via API on a per-tenant basis. An administrator can edit quotas for any tenant, but they must supply the X-Auth-All-Projects header, and have permission to use it, they’ll also need the set-quotas permission in policy.json. For example, an admin setting the zones quota for tenant X would look like:

PATCH /v2/quotas/tenantX HTTP/1.1
Accept: application/json
Content-Type: application/json
X-Auth-All-Projects: True

{
  "zones": 100
}

The response would be:

HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
X-Openstack-Request-Id: req-bfcd0723-624c-4ec2-bbd5-99e985efe8db

{
  "api_export_size": 1000,
  "recordset_records": 20,
  "zone_records": 500,
  "zone_recordsets": 500,
  "zones": 100
}