Skip to content

subnetpools: Missing pointer in createOpts.DefaultQuota #3791

Description

@winiciusallan

What happened?

SubnetPool has a quota system that controls how many addresses a project can consume from one subnet pool. In Neutron API, it is possible to create a subnet pool with default_quota equal to 0, and that means that no quota will be enforced.

❯ openstack subnet pool create --share --pool-prefix 203.0.113.0/24 \
--default-prefix-length 26 --default-quota 0 demo-subnetpool4
+-------------------+--------------------------------------+
| Field             | Value                                |
+-------------------+--------------------------------------+
| address_scope_id  | None                                 |
| created_at        | 2026-06-08T11:08:59Z                 |
| default_prefixlen | 26                                   |
| default_quota     | 0                                    |
| description       |                                      |
| id                | 31ca4379-a60a-4fb0-982f-8d74419cd492 |
| ip_version        | 4                                    |
| is_default        | False                                |
| max_prefixlen     | 32                                   |
| min_prefixlen     | 8                                    |
| name              | demo-subnetpool4                     |
| prefixes          | 203.0.113.0/24                       |
| project_id        | 3be7410b56364804a951b51397b0e0ff     |
| revision_number   | 0                                    |
| shared            | True                                 |
| tags              |                                      |
| updated_at        | 2026-06-08T11:08:59Z                 |
+-------------------+--------------------------------------+

This snippet shows that if default_quota is zero, it will skip the quota enforcement.

https://github.com/openstack/neutron/blob/570efdbe1886c202f5b1bcaadc14acc4c9ca9da2/neutron/ipam/subnet_alloc.py#L109-L120

Therefore, we are missing a pointer in createOpts.DefaultQuota in our SubnetPool API, so we can accept 0 as a valid value.

Version

v2 (current)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Fields

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions