Reviewed:  https://review.openstack.org/529090
Committed: 
https://git.openstack.org/cgit/openstack/neutron/commit/?id=bab1ae881285ad4381a7e8bec0563d4611bdc2d1
Submitter: Zuul
Branch:    master

commit bab1ae881285ad4381a7e8bec0563d4611bdc2d1
Author: Gary Kotton <[email protected]>
Date:   Tue Dec 19 07:09:42 2017 -0800

    L3: prevent associating a FIP to a DHCP port
    
    We should not allow a floating IP to be assigned to a DHCP port.
    
    Change-Id: I6bf940b6e9195dc7d99e13fbe4454b08488cab0f
    Closes-bug: #1739071


** Changed in: neutron
       Status: In Progress => Fix Released

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1739071

Title:
  Floating IP assigned to a DHCP port leads to a exception if DHCP port
  is deleted

Status in neutron:
  Fix Released

Bug description:
  A DHCP port should not be allowed to have a floating IP assigned to
  it. Here is the trace for when this port is deleted.

  root@loadbalancer01:~# neutron subnet-update  
2d370a99-f177-4b85-892e-56def086e046 --disable-dhcp
  Request Failed: internal server error while processing your request.
  Neutron server returns request_ids: 
['req-f43b7e82-58eb-400e-a9ac-3341f3324e8c']

  Backtrace from neutron-server.log file:
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource 
[req-f43b7e82-58eb-400e-a9ac-3341f3324e8c ab32ddb0a8e54a6eb756a0a1d82f8345 
1cb4e51898b04cbabdacb0b84b6a7e7e - - -] update failed: No details.
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource Traceback (most 
recent call last):
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/neutron/api/v2/resource.py", line 93, in 
resource
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource result = 
method(request=request, **args)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/neutron/api/v2/base.py", line 617, in update
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource return 
self._update(request, id, body, **kwargs)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/neutron/db/api.py", line 95, in wrapped
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource setattr(e, 
'_RETRY_EXCEEDED', True)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource 
self.force_reraise()
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in 
force_reraise
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource 
six.reraise(self.type_, self.value, self.tb)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/neutron/db/api.py", line 91, in wrapped
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource return f(*args, 
**kwargs)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/oslo_db/api.py", line 151, in wrapper
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource ectxt.value = 
e.inner_exc
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource 
self.force_reraise()
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in 
force_reraise
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource 
six.reraise(self.type_, self.value, self.tb)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/oslo_db/api.py", line 139, in wrapper
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource return f(*args, 
**kwargs)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/neutron/db/api.py", line 131, in wrapped
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource 
traceback.format_exc())
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource 
self.force_reraise()
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in 
force_reraise
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource 
six.reraise(self.type_, self.value, self.tb)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/neutron/db/api.py", line 126, in wrapped
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource return 
f(*dup_args, **dup_kwargs)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/neutron/api/v2/base.py", line 665, in _update
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource obj = 
obj_updater(request.context, id, **kwargs)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/vmware_nsx/plugins/nsx_v/plugin.py", line 
2646, in update_subnet
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource return 
self._safe_update_subnet(context, id, subnet)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/vmware_nsx/plugins/nsx_v/plugin.py", line 
2681, in _safe_update_subnet
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource 
self._update_subnet_dhcp_status(subnet, context)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/vmware_nsx/plugins/nsx_v/plugin.py", line 
2774, in _update_subnet_dhcp_status
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource 
self.ipam.delete_port(context, port['id'])
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/neutron/db/ipam_pluggable_backend.py", line 
403, in delete_port
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource port['fixed_ips'])
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/neutron/db/ipam_pluggable_backend.py", line 
93, in _ipam_deallocate_ips
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource "external system 
for %s"), addresses)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource 
self.force_reraise()
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in 
force_reraise
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource 
six.reraise(self.type_, self.value, self.tb)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/neutron/db/ipam_pluggable_backend.py", line 
69, in _ipam_deallocate_ips
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource ipam_subnet = 
ipam_driver.get_subnet(ip['subnet_id'])
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/neutron/ipam/drivers/neutrondb_ipam/driver.py",
 line 266, in get_subnet
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource return 
NeutronDbSubnet.load(subnet_id, self._context)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/neutron/ipam/drivers/neutrondb_ipam/driver.py",
 line 91, in load
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource ctx, 
neutron_subnet_id)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/neutron/ipam/drivers/neutrondb_ipam/db_api.py",
 line 30, in load_by_neutron_subnet_id
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource context, 
neutron_subnet_id=neutron_subnet_id)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/neutron/objects/base.py", line 436, in 
get_objects
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource with 
db_api.autonested_transaction(context.session):
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/contextlib.py", line 17, in __enter__
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource return 
self.gen.next()
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/neutron/db/api.py", line 232, in 
autonested_transaction
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource session_context = 
sess.begin(subtransactions=True)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 744, in begin
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource self, 
nested=nested)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 181, in 
__init__
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource 
self._take_snapshot()
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 265, in 
_take_snapshot
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource 
self.session.flush()
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2027, in 
flush
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource 
self._flush(objects)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2145, in 
_flush
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource 
transaction.rollback(_capture_exception=True)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 60, in 
__exit__
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource 
compat.reraise(exc_type, exc_value, exc_tb)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2109, in 
_flush
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource 
flush_context.execute()
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 373, in 
execute
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource rec.execute(self)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 561, in 
execute
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource uow
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 249, in 
delete_obj
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource 
cached_connections, mapper, table, delete)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 892, in 
_emit_delete_statements
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource c = 
connection.execute(statement, del_objects)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 914, in 
execute
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource return meth(self, 
multiparams, params)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/sqlalchemy/sql/elements.py", line 323, in 
_execute_on_connection
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource return 
connection._execute_clauseelement(self, multiparams, params)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1010, in 
_execute_clauseelement
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource compiled_sql, 
distilled_params
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1146, in 
_execute_context
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource context)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1337, in 
_handle_dbapi_exception
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource 
util.raise_from_cause(newraise, exc_info)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 200, in 
raise_from_cause
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource 
reraise(type(exception), exception, tb=exc_tb)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1139, in 
_execute_context
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource context)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 450, in 
do_execute
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource 
cursor.execute(statement, parameters)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/pymysql/cursors.py", line 166, in execute
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource result = 
self._query(query)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/pymysql/cursors.py", line 322, in _query
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource conn.query(q)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/pymysql/connections.py", line 835, in query
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource 
self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/pymysql/connections.py", line 1019, in 
_read_query_result
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource result.read()
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/pymysql/connections.py", line 1302, in read
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource first_packet = 
self.connection._read_packet()
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/pymysql/connections.py", line 981, in 
_read_packet
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource 
packet.check_error()
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/pymysql/connections.py", line 393, in 
check_error
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource 
err.raise_mysql_exception(self._data)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource File 
"/usr/lib/python2.7/dist-packages/pymysql/err.py", line 107, in 
raise_mysql_exception
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource raise 
errorclass(errno, errval)
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource DBReferenceError: 
(pymysql.err.IntegrityError) (1451, u'Cannot delete or update a parent row: a 
foreign key constraint fails (`neutron`.`floatingips`, CONSTRAINT 
`floatingips_ibfk_1` FOREIGN KEY (`fixed_port_id`) REFERENCES `ports` (`id`))') 
[SQL: u'DELETE FROM ports WHERE ports.id = %(id)s'] [parameters: {'id': 
u'e7aa58b7-8210-4ac5-967e-8b210cfe4e87'}]
  2017-12-17 05:45:58.568 3666 ERROR neutron.api.v2.resource

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1739071/+subscriptions

-- 
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to