Comment 0 for bug 1514810

Revision history for this message
Pavel Bondar (pasha117) wrote :

Bug reproducible only if pluggable IPAM is in effect.

Steps to reproduce:
1. Enable pluggable IPAM by setting ipam_driver to 'internal' (or another ipam driver).
2. Create Network.
3. Create Subnet with unchecked 'Enable DHCP' option.
4. Verify Subnet is created.
5. Edit Subnet and check 'Enable DHCP' option, press 'Save'

Observed error in UI:
"Error: Failed to update subnet "90.90.0.0/24": No more IP addresses available on network a9bb6abf-98ec-40d3-a79f-365703949b3b."

Error in neutron log:

2015-11-10 12:07:09.656 DEBUG neutron.api.v2.base [req-c585fc85-2143-4d09-95bb-615be2fac2da admin 507df20dc0be462db98373c6bcf6a88c] Request body: {u'subnet': {u'dns_nameservers': [], u'allocation_pools': [{u'start
': u'90.90.0.2', u'end': u'90.90.0.254'}], u'host_routes': [], u'name': u'niny', u'enable_dhcp': True}} from (pid=29244) prepare_request_body /opt/stack/neutron/neutron/api/v2/base.py:645
2015-11-10 12:07:09.754 INFO neutron.api.v2.resource [req-c585fc85-2143-4d09-95bb-615be2fac2da admin 507df20dc0be462db98373c6bcf6a88c] update failed (client error): No more IP addresses available on network a9bb6a
bf-98ec-40d3-a79f-365703949b3b.

Root cause:
Query in _validate_subnet is not compatible with pluggable IPAM.
It directly queries tables for built-in IPAM.

range_qry = context.session.query(models_v2.
                        IPAvailabilityRange).join(models_v2.IPAllocationPool)

https://github.com/openstack/neutron/blob/master/neutron/db/db_base_plugin_v2.py#L458

Need to reword this validation to support pluggable IPAM.