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.
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: 98ec-40d3- a79f-365703949b 3b."
"Error: Failed to update subnet "90.90.0.0/24": No more IP addresses available on network a9bb6abf-
Error in neutron log:
2015-11-10 12:07:09.656 DEBUG neutron.api.v2.base [req-c585fc85- 2143-4d09- 95bb-615be2fac2 da admin 507df20dc0be462 db98373c6bcf6a8 8c] Request body: {u'subnet': {u'dns_ nameservers' : [], u'allocation_ pools': [{u'start request_ body /opt/stack/ neutron/ neutron/ api/v2/ base.py: 645 api.v2. resource [req-c585fc85- 2143-4d09- 95bb-615be2fac2 da admin 507df20dc0be462 db98373c6bcf6a8 8c] update failed (client error): No more IP addresses available on network a9bb6a 40d3-a79f- 365703949b3b.
': 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_
2015-11-10 12:07:09.754 INFO neutron.
bf-98ec-
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.
IPAvailabili tyRange) .join(models_ v2.IPAllocation Pool)
https:/ /github. com/openstack/ neutron/ blob/master/ neutron/ db/db_base_ plugin_ v2.py#L458
Need to reword this validation to support pluggable IPAM.