)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"1be85be274f4823a1c968a694c63188728acb883","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Agentless L3 plugins, such as used by networking-ovn, are required"},{"line_number":10,"context_line":"to inherit from L3_NAT_db_mixin instead of L3_NAT_dbonly_mixin when"},{"line_number":11,"context_line":"the ML2 plugin is used. This is because the do_notify\u003dFalse argument"},{"line_number":12,"context_line":"is passed to the L3 plugin\u0027s disassociate_floatingips() method."},{"line_number":13,"context_line":"However, the argument doesn\u0027t exist in the parent class method."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bacf61ea_b7baa0df","line":11,"updated":"2016-07-28 21:34:00.000000000","message":"I am confused: I think this is true even in general, irrespective of ML2, in that the dbonly part is what should be used if the service plugin has no L3 agent, and with that ML2 has nothing to do.","commit_id":"617646e67ad6fe62934ec5b4583d7e7143b5ec9d"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"f2680aa68c01cb4606064b1ced691929e2224ec8","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Agentless L3 plugins, such as used by networking-ovn, are required"},{"line_number":10,"context_line":"to inherit from L3_NAT_db_mixin instead of L3_NAT_dbonly_mixin when"},{"line_number":11,"context_line":"the ML2 plugin is used. This is because the do_notify\u003dFalse argument"},{"line_number":12,"context_line":"is passed to the L3 plugin\u0027s disassociate_floatingips() method."},{"line_number":13,"context_line":"However, the argument doesn\u0027t exist in the parent class method."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bacf61ea_b921d24f","line":11,"in_reply_to":"bacf61ea_b7baa0df","updated":"2016-07-29 14:20:05.000000000","message":"You\u0027re correct. I just noticed the problem because do_notify didn\u0027t exist when called from ML2. I will fix the commit message.","commit_id":"617646e67ad6fe62934ec5b4583d7e7143b5ec9d"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"1be85be274f4823a1c968a694c63188728acb883","unresolved":false,"context_lines":[{"line_number":10,"context_line":"to inherit from L3_NAT_db_mixin instead of L3_NAT_dbonly_mixin when"},{"line_number":11,"context_line":"the ML2 plugin is used. This is because the do_notify\u003dFalse argument"},{"line_number":12,"context_line":"is passed to the L3 plugin\u0027s disassociate_floatingips() method."},{"line_number":13,"context_line":"However, the argument doesn\u0027t exist in the parent class method."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"In addition, agentless L3 plugins implicitly pick up callbacks"},{"line_number":16,"context_line":"intended for use by L3 agents. Such callbacks would fail unless"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bacf61ea_579b6472","line":13,"updated":"2016-07-28 21:34:00.000000000","message":"Good catch. I think the signature mismatch between L3_NAT_db_mixin and L3_NAT_dbonly_mixin for disassociate_floatingips deserves to be in its own patch.","commit_id":"617646e67ad6fe62934ec5b4583d7e7143b5ec9d"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"f2680aa68c01cb4606064b1ced691929e2224ec8","unresolved":false,"context_lines":[{"line_number":10,"context_line":"to inherit from L3_NAT_db_mixin instead of L3_NAT_dbonly_mixin when"},{"line_number":11,"context_line":"the ML2 plugin is used. This is because the do_notify\u003dFalse argument"},{"line_number":12,"context_line":"is passed to the L3 plugin\u0027s disassociate_floatingips() method."},{"line_number":13,"context_line":"However, the argument doesn\u0027t exist in the parent class method."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"In addition, agentless L3 plugins implicitly pick up callbacks"},{"line_number":16,"context_line":"intended for use by L3 agents. Such callbacks would fail unless"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bacf61ea_b9e8b2e3","line":13,"in_reply_to":"bacf61ea_579b6472","updated":"2016-07-29 14:20:05.000000000","message":"I\u0027ll split into its own patch.","commit_id":"617646e67ad6fe62934ec5b4583d7e7143b5ec9d"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"1be85be274f4823a1c968a694c63188728acb883","unresolved":false,"context_lines":[{"line_number":12,"context_line":"is passed to the L3 plugin\u0027s disassociate_floatingips() method."},{"line_number":13,"context_line":"However, the argument doesn\u0027t exist in the parent class method."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"In addition, agentless L3 plugins implicitly pick up callbacks"},{"line_number":16,"context_line":"intended for use by L3 agents. Such callbacks would fail unless"},{"line_number":17,"context_line":"the L3 plugin inherits from L3_NAT_db_mixin."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bacf61ea_17c60c49","line":15,"updated":"2016-07-28 21:34:00.000000000","message":"that\u0027s due to the module\u0027s level import, let me elaborate more inline.","commit_id":"617646e67ad6fe62934ec5b4583d7e7143b5ec9d"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"e75ea93f10c205df8908d874a6c31a6ad7f6d378","unresolved":false,"context_lines":[{"line_number":11,"context_line":"One reason is that the do_notify\u003dFalse argument is passed to the"},{"line_number":12,"context_line":"L3 plugin\u0027s disassociate_floatingips() method by the ML2 plugin"},{"line_number":13,"context_line":"during delete_port(). However, the argument doesn\u0027t exist in the"},{"line_number":14,"context_line":"parent class method. This patch fixes the signature mismatch."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"In addition, agentless L3 plugins implicitly pick up callbacks"},{"line_number":17,"context_line":"intended for use by L3 agents. Such callbacks will fail unless"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"bacf61ea_5eb7d5f4","line":14,"updated":"2016-07-29 15:54:20.000000000","message":"I so wish this nonsense was never put to place...but oh well...can only fight so many battles :)","commit_id":"c6b30c392f4bd778e1b69fe1a1b82c9832b83e29"}],"neutron/db/l3_db.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"1be85be274f4823a1c968a694c63188728acb883","unresolved":false,"context_lines":[{"line_number":1833,"context_line":"        events.AFTER_UPDATE)"},{"line_number":1834,"context_line":""},{"line_number":1835,"context_line":""},{"line_number":1836,"context_line":"# NOTE(rtheis): Allow l3 service plugins (potentially out of true) to"},{"line_number":1837,"context_line":"# unsubscribe callbacks intended for plugins utilizing an L3 agent."},{"line_number":1838,"context_line":"# This is needed because of the implicit subscription below."},{"line_number":1839,"context_line":"def unsubscribe_l3_agent_callbacks():"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_17928c9f","line":1836,"range":{"start_line":1836,"start_character":63,"end_line":1836,"end_character":64},"updated":"2016-07-28 21:34:00.000000000","message":"tree :)","commit_id":"617646e67ad6fe62934ec5b4583d7e7143b5ec9d"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"1be85be274f4823a1c968a694c63188728acb883","unresolved":false,"context_lines":[{"line_number":1836,"context_line":"# NOTE(rtheis): Allow l3 service plugins (potentially out of true) to"},{"line_number":1837,"context_line":"# unsubscribe callbacks intended for plugins utilizing an L3 agent."},{"line_number":1838,"context_line":"# This is needed because of the implicit subscription below."},{"line_number":1839,"context_line":"def unsubscribe_l3_agent_callbacks():"},{"line_number":1840,"context_line":"    registry.unsubscribe("},{"line_number":1841,"context_line":"        _notify_routers_callback, resources.PORT, events.AFTER_DELETE)"},{"line_number":1842,"context_line":"    registry.unsubscribe("}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_f7d1b8ce","line":1839,"updated":"2016-07-28 21:34:00.000000000","message":"I wonder if we\u0027d be better off splitting the callback registrations and move those related to an agent based L3 plugin within the scope of L3RpcNotifierMixin and the rest within the scope of the L3_NAT_dbonly_mixin classes; this way you can avoid introducing this block altogether. Perhaps it\u0027s time we remove the call at 1857, I was being overly cautious but I think we should be fine without it.","commit_id":"617646e67ad6fe62934ec5b4583d7e7143b5ec9d"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"b0a8b86736313b3d1f2dad59c1df963cd3ca8044","unresolved":false,"context_lines":[{"line_number":1836,"context_line":"# NOTE(rtheis): Allow l3 service plugins (potentially out of true) to"},{"line_number":1837,"context_line":"# unsubscribe callbacks intended for plugins utilizing an L3 agent."},{"line_number":1838,"context_line":"# This is needed because of the implicit subscription below."},{"line_number":1839,"context_line":"def unsubscribe_l3_agent_callbacks():"},{"line_number":1840,"context_line":"    registry.unsubscribe("},{"line_number":1841,"context_line":"        _notify_routers_callback, resources.PORT, events.AFTER_DELETE)"},{"line_number":1842,"context_line":"    registry.unsubscribe("}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_3e1ae17d","line":1839,"in_reply_to":"bacf61ea_1ed71d4c","updated":"2016-07-29 16:02:32.000000000","message":"Findings are over in https://review.openstack.org/#/c/348933/","commit_id":"617646e67ad6fe62934ec5b4583d7e7143b5ec9d"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"76bea5f3f4b317b74d47e4c68d8900fa636be1e1","unresolved":false,"context_lines":[{"line_number":1836,"context_line":"# NOTE(rtheis): Allow l3 service plugins (potentially out of true) to"},{"line_number":1837,"context_line":"# unsubscribe callbacks intended for plugins utilizing an L3 agent."},{"line_number":1838,"context_line":"# This is needed because of the implicit subscription below."},{"line_number":1839,"context_line":"def unsubscribe_l3_agent_callbacks():"},{"line_number":1840,"context_line":"    registry.unsubscribe("},{"line_number":1841,"context_line":"        _notify_routers_callback, resources.PORT, events.AFTER_DELETE)"},{"line_number":1842,"context_line":"    registry.unsubscribe("}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_f86061d1","line":1839,"in_reply_to":"bacf61ea_39b7a2d9","updated":"2016-07-29 15:18:55.000000000","message":"I did an OpenStack code search and it appears that the implicit subscription is still used. So, I\u0027m not sure how to remove the implicit subscription without breaking such plugins.","commit_id":"617646e67ad6fe62934ec5b4583d7e7143b5ec9d"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"f2680aa68c01cb4606064b1ced691929e2224ec8","unresolved":false,"context_lines":[{"line_number":1836,"context_line":"# NOTE(rtheis): Allow l3 service plugins (potentially out of true) to"},{"line_number":1837,"context_line":"# unsubscribe callbacks intended for plugins utilizing an L3 agent."},{"line_number":1838,"context_line":"# This is needed because of the implicit subscription below."},{"line_number":1839,"context_line":"def unsubscribe_l3_agent_callbacks():"},{"line_number":1840,"context_line":"    registry.unsubscribe("},{"line_number":1841,"context_line":"        _notify_routers_callback, resources.PORT, events.AFTER_DELETE)"},{"line_number":1842,"context_line":"    registry.unsubscribe("}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_39b7a2d9","line":1839,"in_reply_to":"bacf61ea_f7d1b8ce","updated":"2016-07-29 14:20:05.000000000","message":"I agree and will update accordingly.","commit_id":"617646e67ad6fe62934ec5b4583d7e7143b5ec9d"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b6de4fb5d3cf44b59739ceffab17da24d350a35e","unresolved":false,"context_lines":[{"line_number":1836,"context_line":"# NOTE(rtheis): Allow l3 service plugins (potentially out of true) to"},{"line_number":1837,"context_line":"# unsubscribe callbacks intended for plugins utilizing an L3 agent."},{"line_number":1838,"context_line":"# This is needed because of the implicit subscription below."},{"line_number":1839,"context_line":"def unsubscribe_l3_agent_callbacks():"},{"line_number":1840,"context_line":"    registry.unsubscribe("},{"line_number":1841,"context_line":"        _notify_routers_callback, resources.PORT, events.AFTER_DELETE)"},{"line_number":1842,"context_line":"    registry.unsubscribe("}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_1ed71d4c","line":1839,"in_reply_to":"bacf61ea_f86061d1","updated":"2016-07-29 15:50:30.000000000","message":"can you share your findings?","commit_id":"617646e67ad6fe62934ec5b4583d7e7143b5ec9d"}]}
