Reviewed: https://review.openstack.org/470063 Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=abe9938367f3f7cf21e5c0e42ee7b9b81b4960b0 Submitter: Jenkins Branch: master
commit abe9938367f3f7cf21e5c0e42ee7b9b81b4960b0 Author: Swaminathan Vasudevan <svasude...@suse.com> Date: Thu Jun 1 15:49:38 2017 -0700 DVR: Fix DVR Router snat ports and gateway ports host binding issue DVR snat ports and gateway ports are not bound to any host and so we don't see the snat namespace getting created. The issue is the _build_routers_list in l3_dvr_db.py is not called due to the inheritance order. Change-Id: I56f9de31524aeef262cf2a78be3abf8487c21a12 Closes-Bug: #1695101 ** 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/1695101 Title: DVR Router ports and gateway ports are not bound to any host and no snat namespace created Status in neutron: Fix Released Bug description: In the Pike cycle there were some refactoring to the DVR db classes and resource handler mixin. This lead to the regression where it was not creating the SNAT namespace for the DVR routers if it has gateway configured. The only namespace seen was the fipnamespace. This was the patch set that caused the regression. https://review.openstack.org/#/c/457592/5 On further debugging it was found that the snat ports and the distributed router ports were not host bound. The neutron was trying to bind it to a 'null' host. The '_build_routers_list' function in the l3_dvr_db.py was not called and hence the host binding was missing. We have seen a similar issue a while back, #1369012 (Fix KeyError on missing gw_port_host for L3 agent in DVR mode The issue here is the order of inheritance of the classes. If the order of inheritance of the classes are messed up, then the functions that are over-ridden are not called in the right order or skipped. So with this we have seen the same problem, where the '_build_routers_list' in the l3_db_gwmode.py was called and not the one in the 'l3_dvr_db.py' file. This is the current order of inheritance. class L3_NAT_with_dvr_db_mixin(l3_db.L3_NAT_db_mixin, l3_attrs_db.ExtraAttributesMixin, DVRResourceOperationHandler, _DVRAgentInterfaceMixin): If the order is shuffled, it works fine and here is the shuffled order. class L3_NAT_with_dvr_db_mixin(DVRResourceOperationHandler, _DVRAgentInterfaceMixin, l3_attrs_db.ExtraAttributesMixin, l3_db.L3_NAT_db_mixin): This seems to fix the problem. To manage notifications about this bug go to: https://bugs.launchpad.net/neutron/+bug/1695101/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : yahoo-eng-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp