User cannot delete the port which is used by lb vip,but user can update it device_owner field

Bug #1480039 reported by zhaobo
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
neutron
Expired
Undecided
Unassigned

Bug Description

When exist a port which used by loadbalancer vip, and now as my env didn't setup the lb-agent,so I just want to delete the port.
The server showed "cannot be deleted directly via the port API: has device owner neutron:LOADBALANCER".But user can update this port's device_owner to anything.And rerun port-delete,server showed "Request Failed: internal server error while processing your request".

And the err log from (neutron)server.log is :
 from (pid=4719) _http_log_response /usr/local/lib/python2.7/dist-packages/keystoneclient/session.py:224
2015-07-31 11:20:50.238 DEBUG neutron.plugins.ml2.managers [req-9f8e0ef0-14b8-418f-9213-c5fd1df46cdb admin e921522145ec4c4082844237991d5d01] Extended port dict for driver 'port_security' from (pid=4719) extend_port_dict /opt/stack/neutron/neutron/plugins/ml2/managers.py:821
2015-07-31 11:20:50.239 INFO neutron.wsgi [req-9f8e0ef0-14b8-418f-9213-c5fd1df46cdb admin e921522145ec4c4082844237991d5d01] 10.250.10.88 - - [31/Jul/2015 11:20:50] "GET /v2.0/ports.json?fields=id&id=d7c270ef-2a37-413f-99a3-8299aa96dc01 HTTP/1.1" 200 272 0.094210
2015-07-31 11:20:50.262 DEBUG neutron.plugins.ml2.managers [req-fdb7d324-b110-4123-b48f-d390071a21fd admin e921522145ec4c4082844237991d5d01] Extended port dict for driver 'port_security' from (pid=4719) extend_port_dict /opt/stack/neutron/neutron/plugins/ml2/managers.py:821
2015-07-31 11:20:50.263 DEBUG neutron.plugins.ml2.plugin [req-fdb7d324-b110-4123-b48f-d390071a21fd admin e921522145ec4c4082844237991d5d01] Deleting port d7c270ef-2a37-413f-99a3-8299aa96dc01 from (pid=4719) _pre_delete_port /opt/stack/neutron/neutron/plugins/ml2/plugin.py:1253
2015-07-31 11:20:50.263 DEBUG neutron.callbacks.manager [req-fdb7d324-b110-4123-b48f-d390071a21fd admin e921522145ec4c4082844237991d5d01] Notify callbacks for port, before_delete from (pid=4719) _notify_loop /opt/stack/neutron/neutron/callbacks/manager.py:135
2015-07-31 11:20:50.264 DEBUG neutron.callbacks.manager [req-fdb7d324-b110-4123-b48f-d390071a21fd admin e921522145ec4c4082844237991d5d01] Calling callback neutron_lbaas.db.loadbalancer.loadbalancer_db._prevent_lbaas_port_delete_callback from (pid=4719) _notify_loop /opt/stack/neutron/neutron/callbacks/manager.py:141
2015-07-31 11:20:50.280 DEBUG neutron.callbacks.manager [req-fdb7d324-b110-4123-b48f-d390071a21fd admin e921522145ec4c4082844237991d5d01] Calling callback neutron.db.l3_db._prevent_l3_port_delete_callback from (pid=4719) _notify_loop /opt/stack/neutron/neutron/callbacks/manager.py:141
2015-07-31 11:20:50.307 DEBUG neutron.plugins.ml2.managers [req-fdb7d324-b110-4123-b48f-d390071a21fd admin e921522145ec4c4082844237991d5d01] Extended port dict for driver 'port_security' from (pid=4719) extend_port_dict /opt/stack/neutron/neutron/plugins/ml2/managers.py:821
2015-07-31 11:20:50.324 DEBUG neutron.plugins.ml2.managers [req-fdb7d324-b110-4123-b48f-d390071a21fd admin e921522145ec4c4082844237991d5d01] Extended network dict for driver 'port_security' from (pid=4719) extend_network_dict /opt/stack/neutron/neutron/plugins/ml2/managers.py:807
2015-07-31 11:20:50.328 DEBUG neutron.plugins.ml2.db [req-fdb7d324-b110-4123-b48f-d390071a21fd admin e921522145ec4c4082844237991d5d01] For port d7c270ef-2a37-413f-99a3-8299aa96dc01, host allinone, got binding levels [] from (pid=4719) get_binding_levels /opt/stack/neutron/neutron/plugins/ml2/db.py:177
2015-07-31 11:20:50.333 DEBUG neutron.plugins.ml2.plugin [req-fdb7d324-b110-4123-b48f-d390071a21fd admin e921522145ec4c4082844237991d5d01] Calling delete_port for d7c270ef-2a37-413f-99a3-8299aa96dc01 owned by bzhao from (pid=4719) delete_port /opt/stack/neutron/neutron/plugins/ml2/plugin.py:1317
2015-07-31 11:20:50.337 ERROR neutron.api.v2.resource [req-fdb7d324-b110-4123-b48f-d390071a21fd admin e921522145ec4c4082844237991d5d01] delete failed
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource Traceback (most recent call last):
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/opt/stack/neutron/neutron/api/v2/resource.py", line 83, in resource
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource result = method(request=request, **args)
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 146, in wrapper
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource ectxt.value = e.inner_exc
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 119, in __exit__
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource six.reraise(self.type_, self.value, self.tb)
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 136, in wrapper
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource return f(*args, **kwargs)
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/opt/stack/neutron/neutron/api/v2/base.py", line 499, in delete
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource obj_deleter(request.context, id, **kwargs)
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 146, in wrapper
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource ectxt.value = e.inner_exc
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 119, in __exit__
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource six.reraise(self.type_, self.value, self.tb)
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 136, in wrapper
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource return f(*args, **kwargs)
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/opt/stack/neutron/neutron/plugins/ml2/plugin.py", line 1318, in delete_port
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource super(Ml2Plugin, self).delete_port(context, id)
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/opt/stack/neutron/neutron/db/db_base_plugin_v2.py", line 909, in delete_port
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource self.ipam.delete_port(context, id)
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/opt/stack/neutron/neutron/db/ipam_backend_mixin.py", line 412, in delete_port
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource query.delete()
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2827, in delete
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource delete_op.exec_()
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 1086, in exec_
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource self._do_exec()
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 1264, in _do_exec
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource mapper=self.mapper)
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1023, in execute
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource bind, close_with_result=True).execute(clause, params or {})
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 914, in execute
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource return meth(self, multiparams, params)
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/elements.py", line 323, in _execute_on_connection
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource return connection._execute_clauseelement(self, multiparams, params)
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1010, in _execute_clauseelement
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource compiled_sql, distilled_params
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1146, in _execute_context
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource context)
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1337, in _handle_dbapi_exception
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource util.raise_from_cause(newraise, exc_info)
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 199, in raise_from_cause
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource reraise(type(exception), exception, tb=exc_tb)
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1139, in _execute_context
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource context)
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 450, in do_execute
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource cursor.execute(statement, parameters)
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 134, in execute
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource result = self._query(query)
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 282, in _query
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource conn.query(q)
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 768, in query
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource self._affected_rows = self._read_query_result(unbuffered=unbuffered)
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 929, in _read_query_result
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource result.read()
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1125, in read
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource first_packet = self.connection._read_packet()
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 893, in _read_packet
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource packet.check_error()
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 369, in check_error
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource err.raise_mysql_exception(self._data)
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/pymysql/err.py", line 120, in raise_mysql_exception
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource _check_mysql_exception(errinfo)
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/pymysql/err.py", line 112, in _check_mysql_exception
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource raise errorclass(errno, errorvalue)
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource DBReferenceError: (pymysql.err.IntegrityError) (1451, u'Cannot delete or update a parent row: a foreign key constraint fails (`neutron`.`vips`, CONSTRAINT `vips_ibfk_1` FOREIGN KEY (`port_id`) REFERENCES `ports` (`id`))') [SQL: u'DELETE FROM ports WHERE ports.id = %s'] [parameters: (u'd7c270ef-2a37-413f-99a3-8299aa96dc01',)]
2015-07-31 11:20:50.337 TRACE neutron.api.v2.resource

zhaobo (zhaobo6)
description: updated
Changed in neutron:
assignee: nobody → zhaobo (zhaobo6)
Revision history for this message
JohnsonYi (yichengli) wrote :

Same issue with fuel 6.1 env:
oslo.db.sqlalchemy.exc_filters [req-59a48283-093a-4756-8c62-13369429d32f ] DBAPIError exception wrapped from (IntegrityError) (1451, 'Cannot delete or update a parent row: a foreign key constraint fails (`neutron`.`vips`, CONSTRAINT `vips_ibfk_1` FOREIGN KEY (`port_id`) REFERENCES `ports` (`id`))') 'DELETE FROM ports WHERE ports.id = %s' ('9c35cd94-f589-4f2d-8719-f22e1bea00e0',)
2015-10-12 04:21:43.127 10393 TRACE oslo.db.sqlalchemy.exc_filters Traceback (most recent call last):
2015-10-12 04:21:43.127 10393 TRACE oslo.db.sqlalchemy.exc_filters File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 951, in _execute_context
2015-10-12 04:21:43.127 10393 TRACE oslo.db.sqlalchemy.exc_filters context)
2015-10-12 04:21:43.127 10393 TRACE oslo.db.sqlalchemy.exc_filters File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 436, in do_execute
2015-10-12 04:21:43.127 10393 TRACE oslo.db.sqlalchemy.exc_filters cursor.execute(statement, parameters)
2015-10-12 04:21:43.127 10393 TRACE oslo.db.sqlalchemy.exc_filters File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 205, in execute
2015-10-12 04:21:43.127 10393 TRACE oslo.db.sqlalchemy.exc_filters self.errorhandler(self, exc, value)
2015-10-12 04:21:43.127 10393 TRACE oslo.db.sqlalchemy.exc_filters File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
2015-10-12 04:21:43.127 10393 TRACE oslo.db.sqlalchemy.exc_filters raise errorclass, errorvalue
2015-10-12 04:21:43.127 10393 TRACE oslo.db.sqlalchemy.exc_filters IntegrityError: (1451, 'Cannot delete or update a parent row: a foreign key constraint fails (`neutron`.`vips`, CONSTRAINT `vips_ibfk_1` FOREIGN KEY (`port_id`) REFERENCES `ports` (`id`))')
2015-10-12 04:21:43.127 10393 TRACE oslo.db.sqlalchemy.exc_filters

Revision history for this message
Armando Migliaccio (armando-migliaccio) wrote :

This bug is > 240 days without activity. We are unsetting assignee and milestone and setting status to Incomplete in order to allow its expiry in 60 days.

If the bug is still valid, then update the bug status.

Changed in neutron:
assignee: zhaobo (zhaobo6) → nobody
status: New → Incomplete
Revision history for this message
Launchpad Janitor (janitor) wrote :

[Expired for neutron because there has been no activity for 60 days.]

Changed in neutron:
status: Incomplete → Expired
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.