Manage Compute service quotas

As an administrative user, you can use the nova quota-* commands, which are provided by the python-novaclient package, to update the Compute service quotas for a specific project or project user, as well as update the quota defaults for a new project.

Compute quota descriptions

Quota name

Description

cores

Number of instance cores (VCPUs) allowed per project.

instances

Number of instances allowed per project.

key_pairs

Number of key pairs allowed per user.

metadata_items

Number of metadata items allowed per instance.

ram

Megabytes of instance ram allowed per project.

server_groups

Number of server groups per project.

server_group_members

Number of servers per server group.

The following quotas were previously available but were removed in microversion 2.36 as they proxied information available from the networking service.

Quota name

Description

fixed_ips

Number of fixed IP addresses allowed per project. This number must be equal to or greater than the number of allowed instances.

floating_ips

Number of floating IP addresses allowed per project.

networks

Number of networks allowed per project (nova-network only).

security_groups

Number of security groups per project.

security_group_rules

Number of security group rules per project.

Similarly, the following quotas were previously available but were removed in microversion 2.57 as the personality files feature was deprecated.

Quota name

Description

injected_files

Number of injected files allowed per project.

injected_file_content_bytes

Number of content bytes allowed per injected file.

injected_file_path_bytes

Length of injected file path.

View and update Compute quotas for a project

To view and update default quota values

  1. List all default quotas for all projects:

    $ openstack quota show --default
    +----------------------+----------+
    | Field                | Value    |
    +----------------------+----------+
    | backup-gigabytes     | 1000     |
    | backups              | 10       |
    | cores                | 20       |
    | fixed-ips            | -1       |
    | floating-ips         | 50       |
    | gigabytes            | 1000     |
    | health_monitors      | None     |
    | injected-file-size   | 10240    |
    | injected-files       | 5        |
    | injected-path-size   | 255      |
    | instances            | 10       |
    | key-pairs            | 100      |
    | l7_policies          | None     |
    | listeners            | None     |
    | load_balancers       | None     |
    | location             | None     |
    | name                 | None     |
    | networks             | 10       |
    | per-volume-gigabytes | -1       |
    | pools                | None     |
    | ports                | 50       |
    | project              | None     |
    | project_name         | project  |
    | properties           | 128      |
    | ram                  | 51200    |
    | rbac_policies        | 10       |
    | routers              | 10       |
    | secgroup-rules       | 100      |
    | secgroups            | 10       |
    | server-group-members | 10       |
    | server-groups        | 10       |
    | snapshots            | 10       |
    | subnet_pools         | -1       |
    | subnets              | 10       |
    | volumes              | 10       |
    +----------------------+----------+
    

    Note

    This lists default quotas for all services and not just nova.

  2. Update a default value for a new project, for example:

    $ openstack quota set --instances 15 --class default
    

To view quota values for an existing project

  1. List the currently set quota values for a project:

    $ openstack quota show PROJECT_NAME
    +----------------------+----------------------------------+
    | Field                | Value                            |
    +----------------------+----------------------------------+
    | backup-gigabytes     | 1000                             |
    | backups              | 10                               |
    | cores                | 32                               |
    | fixed-ips            | -1                               |
    | floating-ips         | 10                               |
    | gigabytes            | 1000                             |
    | health_monitors      | None                             |
    | injected-file-size   | 10240                            |
    | injected-files       | 5                                |
    | injected-path-size   | 255                              |
    | instances            | 10                               |
    | key-pairs            | 100                              |
    | l7_policies          | None                             |
    | listeners            | None                             |
    | load_balancers       | None                             |
    | location             | None                             |
    | name                 | None                             |
    | networks             | 20                               |
    | per-volume-gigabytes | -1                               |
    | pools                | None                             |
    | ports                | 60                               |
    | project              | c8156b55ec3b486193e73d2974196993 |
    | project_name         | project                          |
    | properties           | 128                              |
    | ram                  | 65536                            |
    | rbac_policies        | 10                               |
    | routers              | 10                               |
    | secgroup-rules       | 50                               |
    | secgroups            | 50                               |
    | server-group-members | 10                               |
    | server-groups        | 10                               |
    | snapshots            | 10                               |
    | subnet_pools         | -1                               |
    | subnets              | 20                               |
    | volumes              | 10                               |
    +----------------------+----------------------------------+
    

    Note

    This lists quotas for all services and not just nova.

To update quota values for an existing project

  1. Obtain the project ID.

    $ project=$(openstack project show -f value -c id PROJECT_NAME)
    
  2. Update a particular quota value.

    To update quotas for a project:

    $ openstack quota set --QUOTA_NAME QUOTA_VALUE PROJECT_NAME
    

    To update quotas for a class:

    $ openstack quota set --class --QUOTA_NAME QUOTA_VALUE CLASS_NAME
    

    Note

    Only the default class is supported by nova.

    For example:

    $ openstack quota set --instances 50 PROJECT_NAME
    $ openstack quota show PROJECT_NAME
    +----------------------+----------------------------------+
    | Field                | Value                            |
    +----------------------+----------------------------------+
    | ...                  | ...                              |
    | instances            | 50                               |
    | ...                  | ...                              |
    +----------------------+----------------------------------+
    

    Note

    To view a list of options for the openstack quota set command, run:

    $ openstack help quota set
    

View and update Compute quotas for a project user

To view quota values for a project user

  1. Place the user ID in a usable variable.

    $ projectUser=$(openstack user show -f value -c id USER_NAME)
    
  2. Place the user’s project ID in a usable variable, as follows:

    $ project=$(openstack project show -f value -c id PROJECT_NAME)
    
  3. List the currently set quota values for a project user.

    $ nova quota-show --user $projectUser --tenant $project
    

    For example:

    $ nova quota-show --user $projectUser --tenant $project
    +-----------------------------+-------+
    | Quota                       | Limit |
    +-----------------------------+-------+
    | instances                   | 10    |
    | cores                       | 20    |
    | ram                         | 51200 |
    | floating_ips                | 20    |
    | fixed_ips                   | -1    |
    | metadata_items              | 128   |
    | injected_files              | 5     |
    | injected_file_content_bytes | 10240 |
    | injected_file_path_bytes    | 255   |
    | key_pairs                   | 100   |
    | security_groups             | 10    |
    | security_group_rules        | 20    |
    | server_groups               | 10    |
    | server_group_members        | 10    |
    +-----------------------------+-------+
    

To update quota values for a project user

  1. Place the user ID in a usable variable.

    $ projectUser=$(openstack user show -f value -c id USER_NAME)
    
  2. Place the user’s project ID in a usable variable, as follows:

    $ project=$(openstack project show -f value -c id PROJECT_NAME)
    
  3. Update a particular quota value, as follows:

    $ nova quota-update  --user $projectUser --QUOTA_NAME QUOTA_VALUE $project
    

    For example:

    $ nova quota-update --user $projectUser --floating-ips 12 $project
    $ nova quota-show --user $projectUser --tenant $project
    +-----------------------------+-------+
    | Quota                       | Limit |
    +-----------------------------+-------+
    | instances                   | 10    |
    | cores                       | 20    |
    | ram                         | 51200 |
    | floating_ips                | 12    |
    | fixed_ips                   | -1    |
    | metadata_items              | 128   |
    | injected_files              | 5     |
    | injected_file_content_bytes | 10240 |
    | injected_file_path_bytes    | 255   |
    | key_pairs                   | 100   |
    | security_groups             | 10    |
    | security_group_rules        | 20    |
    | server_groups               | 10    |
    | server_group_members        | 10    |
    +-----------------------------+-------+
    

    Note

    To view a list of options for the nova quota-update command, run:

    $ nova help quota-update
    

To display the current quota usage for a project user

Use nova limits to get a list of the current quota values and the current quota usage:

$ nova limits --tenant PROJECT_NAME

+------+-----+-------+--------+------+----------------+
| Verb | URI | Value | Remain | Unit | Next_Available |
+------+-----+-------+--------+------+----------------+
+------+-----+-------+--------+------+----------------+

+--------------------+------+-------+
| Name               | Used | Max   |
+--------------------+------+-------+
| Cores              | 0    | 20    |
| Instances          | 0    | 10    |
| Keypairs           | -    | 100   |
| Personality        | -    | 5     |
| Personality Size   | -    | 10240 |
| RAM                | 0    | 51200 |
| Server Meta        | -    | 128   |
| ServerGroupMembers | -    | 10    |
| ServerGroups       | 0    | 10    |
+--------------------+------+-------+

Note

The nova limits command generates an empty table as a result of the Compute API, which prints an empty list for backward compatibility purposes.