)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"43c588f177dc27923985281d4841a15900e7142f","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Support callbacks for L3 plugins without an agent"},{"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."},{"line_number":11,"context_line":"One reason is due to an L3 NAT DB signature mismatch which was"},{"line_number":12,"context_line":"fixed by [1]. Another reason is that agentless L3 plugins implicitly"},{"line_number":13,"context_line":"pick up callbacks intended for use by L3 agents. Such callbacks will"},{"line_number":14,"context_line":"fail unless the L3 plugin inherits from L3_NAT_db_mixin. This patch"},{"line_number":15,"context_line":"supports callbacks for L3 plugins without an agent. The callbacks"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"bacf61ea_093f57d7","line":12,"range":{"start_line":9,"start_character":0,"end_line":12,"end_character":12},"updated":"2016-08-02 17:18:17.000000000","message":"is this first sentence still correct? When looking at [1], you inherit from dbonly. Is this supposed to be \u0027were\u0027 rather than \u0027are\u0027. This is a bit confusing.\n\n[1] https://review.openstack.org/#/c/348559/3/networking_ovn/l3/l3_ovn.py@41","commit_id":"7e92fc1ef6243e50d7d058e3d3d40e05929da5dc"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"938ddadaefe3fe4390c942456a7f0797c3b81220","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Support callbacks for L3 plugins without an agent"},{"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."},{"line_number":11,"context_line":"One reason is due to an L3 NAT DB signature mismatch which was"},{"line_number":12,"context_line":"fixed by [1]. Another reason is that agentless L3 plugins implicitly"},{"line_number":13,"context_line":"pick up callbacks intended for use by L3 agents. Such callbacks will"},{"line_number":14,"context_line":"fail unless the L3 plugin inherits from L3_NAT_db_mixin. This patch"},{"line_number":15,"context_line":"supports callbacks for L3 plugins without an agent. The callbacks"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"bacf61ea_3498ae6a","line":12,"range":{"start_line":9,"start_character":0,"end_line":12,"end_character":12},"in_reply_to":"bacf61ea_093f57d7","updated":"2016-08-02 17:26:49.000000000","message":"I will fix.","commit_id":"7e92fc1ef6243e50d7d058e3d3d40e05929da5dc"}],"neutron/db/l3_db.py":[{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"e2e1fdc32c7d2a430c73faf0ff1583b41908873a","unresolved":false,"context_lines":[{"line_number":1838,"context_line":"# NOTE(rtheis): Allow l3 service plugins (potentially out of tree) to"},{"line_number":1839,"context_line":"# unsubscribe callbacks intended for plugins utilizing an L3 agent."},{"line_number":1840,"context_line":"# This is needed because of the implicit subscription below."},{"line_number":1841,"context_line":"def unsubscribe_l3_agent_callbacks():"},{"line_number":1842,"context_line":"    registry.unsubscribe("},{"line_number":1843,"context_line":"        _notify_routers_callback, resources.PORT, events.AFTER_DELETE)"},{"line_number":1844,"context_line":"    registry.unsubscribe("}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_fbefbbe6","line":1841,"updated":"2016-07-29 15:42:03.000000000","message":"Hi Armando, I did an OpenStack code search and it appears that the implicit subscription is still used. I\u0027m still looking into how to avoid this unsubscribe function.","commit_id":"1a1173b80ce8d78a7f4dda898c2efe0f3b664631"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"2e71e95b0535c1f6afc0e131874a8ca927a8b0d8","unresolved":false,"context_lines":[{"line_number":1838,"context_line":"# NOTE(rtheis): Allow l3 service plugins (potentially out of tree) to"},{"line_number":1839,"context_line":"# unsubscribe callbacks intended for plugins utilizing an L3 agent."},{"line_number":1840,"context_line":"# This is needed because of the implicit subscription below."},{"line_number":1841,"context_line":"def unsubscribe_l3_agent_callbacks():"},{"line_number":1842,"context_line":"    registry.unsubscribe("},{"line_number":1843,"context_line":"        _notify_routers_callback, resources.PORT, events.AFTER_DELETE)"},{"line_number":1844,"context_line":"    registry.unsubscribe("}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_9e766dd5","line":1841,"in_reply_to":"bacf61ea_3e8ae11b","updated":"2016-07-29 16:00:57.000000000","message":"Sorry, I should have done that.  \n\nHere\u0027s my search: http://codesearch.openstack.org/?q\u003dExtraRoute_db_mixin\u0026i\u003dnope\u0026files\u003d\u0026repos\u003d\n\nHere\u0027s one hit that appears to rely on the implicit subscription: http://git.openstack.org/cgit/openstack/dragonflow/tree/dragonflow/neutron/services/l3_router_plugin.py\n\nI also noticed that networking-ovn is impacted by the removal so I\u0027ve pushed https://review.openstack.org/#/c/348897/.","commit_id":"1a1173b80ce8d78a7f4dda898c2efe0f3b664631"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"d16aabaa54facaeddfc149d50d8208d76c7e3bfd","unresolved":false,"context_lines":[{"line_number":1838,"context_line":"# NOTE(rtheis): Allow l3 service plugins (potentially out of tree) to"},{"line_number":1839,"context_line":"# unsubscribe callbacks intended for plugins utilizing an L3 agent."},{"line_number":1840,"context_line":"# This is needed because of the implicit subscription below."},{"line_number":1841,"context_line":"def unsubscribe_l3_agent_callbacks():"},{"line_number":1842,"context_line":"    registry.unsubscribe("},{"line_number":1843,"context_line":"        _notify_routers_callback, resources.PORT, events.AFTER_DELETE)"},{"line_number":1844,"context_line":"    registry.unsubscribe("}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_3e8ae11b","line":1841,"in_reply_to":"bacf61ea_fbefbbe6","updated":"2016-07-29 15:55:15.000000000","message":"can you share what you found? Because I am not advocating to remove the method, but just the module invocation at line 1859","commit_id":"1a1173b80ce8d78a7f4dda898c2efe0f3b664631"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"e496fdd91d07810060486a02723046281e2df848","unresolved":false,"context_lines":[{"line_number":1661,"context_line":"    # callback multiple times."},{"line_number":1662,"context_line":"    def __new__(cls):"},{"line_number":1663,"context_line":"        subscribe()"},{"line_number":1664,"context_line":"        return super(L3RpcNotifierMixin, cls).__new__(cls)"},{"line_number":1665,"context_line":""},{"line_number":1666,"context_line":"    @staticmethod"},{"line_number":1667,"context_line":"    def _subscribe_callbacks():"}],"source_content_type":"text/x-python","patch_set":5,"id":"bacf61ea_2c88a970","line":1664,"updated":"2016-08-01 17:02:06.000000000","message":"what super() are you intending to call here? There\u0027s none.","commit_id":"0f579aa3ce73c10f0300078fc2386211a274c73c"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"ec164b27e0d24abccb1cfbe2b8b109048991eede","unresolved":false,"context_lines":[{"line_number":1661,"context_line":"    # callback multiple times."},{"line_number":1662,"context_line":"    def __new__(cls):"},{"line_number":1663,"context_line":"        subscribe()"},{"line_number":1664,"context_line":"        return super(L3RpcNotifierMixin, cls).__new__(cls)"},{"line_number":1665,"context_line":""},{"line_number":1666,"context_line":"    @staticmethod"},{"line_number":1667,"context_line":"    def _subscribe_callbacks():"}],"source_content_type":"text/x-python","patch_set":5,"id":"bacf61ea_8756ce03","line":1664,"in_reply_to":"bacf61ea_2c88a970","updated":"2016-08-01 17:19:38.000000000","message":"I will fix.","commit_id":"0f579aa3ce73c10f0300078fc2386211a274c73c"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"5947d9ff95e0277e9522781a42f265b158ac7d55","unresolved":false,"context_lines":[{"line_number":1729,"context_line":"            {\u0027subnet_id\u0027: router_interface_info[\u0027subnet_id\u0027]})"},{"line_number":1730,"context_line":""},{"line_number":1731,"context_line":"        mapping \u003d {\u0027add\u0027: \u0027create\u0027, \u0027remove\u0027: \u0027delete\u0027}"},{"line_number":1732,"context_line":"        notifier \u003d n_rpc.get_notifier(\u0027network\u0027)"},{"line_number":1733,"context_line":"        router_event \u003d \u0027router.interface.%s\u0027 % mapping[action]"},{"line_number":1734,"context_line":"        notifier.info(context, router_event,"},{"line_number":1735,"context_line":"                      {\u0027router_interface\u0027: router_interface_info})"}],"source_content_type":"text/x-python","patch_set":5,"id":"bacf61ea_351e3070","line":1732,"updated":"2016-08-01 15:50:54.000000000","message":"Hi Armando, should these event notifications be in L3_NAT_dbonly_mixin?  Since I\u0027m not sure how they are used, I\u0027ve left them as-is.","commit_id":"0f579aa3ce73c10f0300078fc2386211a274c73c"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"356a1f58b66ef7d19a375faf0adc9be785ea006c","unresolved":false,"context_lines":[{"line_number":154,"context_line":"    _dns_integration \u003d None"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    @staticmethod"},{"line_number":157,"context_line":"    def _subscribe_callbacks():"},{"line_number":158,"context_line":"        registry.subscribe("},{"line_number":159,"context_line":"            _prevent_l3_port_delete_callback, resources.PORT,"},{"line_number":160,"context_line":"            events.BEFORE_DELETE)"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_308bcc20","line":157,"updated":"2016-08-01 23:11:07.000000000","message":"have you consider having this be in the __new__ method for this mixin? If you did, you wouldn\u0027t need to explicitly invoke the subscribe_no_rpc from  OVN","commit_id":"8db1fa091ac36e7894f8322420a385f1380f1470"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"b8e4bfb06f86c68f0a3f9f936e653bd50c4a6d90","unresolved":false,"context_lines":[{"line_number":154,"context_line":"    _dns_integration \u003d None"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    @staticmethod"},{"line_number":157,"context_line":"    def _subscribe_callbacks():"},{"line_number":158,"context_line":"        registry.subscribe("},{"line_number":159,"context_line":"            _prevent_l3_port_delete_callback, resources.PORT,"},{"line_number":160,"context_line":"            events.BEFORE_DELETE)"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_7a9228f7","line":157,"in_reply_to":"bacf61ea_308bcc20","updated":"2016-08-02 12:01:22.000000000","message":"Yes, I did consider it and not sure why I didn\u0027t do it.  I will update this.","commit_id":"8db1fa091ac36e7894f8322420a385f1380f1470"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"356a1f58b66ef7d19a375faf0adc9be785ea006c","unresolved":false,"context_lines":[{"line_number":1660,"context_line":"    # operation is idempotent so there is no harm in registering the same"},{"line_number":1661,"context_line":"    # callback multiple times."},{"line_number":1662,"context_line":"    def __new__(cls):"},{"line_number":1663,"context_line":"        subscribe()"},{"line_number":1664,"context_line":"        return object.__new__(cls)"},{"line_number":1665,"context_line":""},{"line_number":1666,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_50eac074","line":1663,"updated":"2016-08-01 23:11:07.000000000","message":"have this register the other relevant subscriptions.","commit_id":"8db1fa091ac36e7894f8322420a385f1380f1470"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"b8e4bfb06f86c68f0a3f9f936e653bd50c4a6d90","unresolved":false,"context_lines":[{"line_number":1660,"context_line":"    # operation is idempotent so there is no harm in registering the same"},{"line_number":1661,"context_line":"    # callback multiple times."},{"line_number":1662,"context_line":"    def __new__(cls):"},{"line_number":1663,"context_line":"        subscribe()"},{"line_number":1664,"context_line":"        return object.__new__(cls)"},{"line_number":1665,"context_line":""},{"line_number":1666,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_3a7a70bd","line":1663,"in_reply_to":"bacf61ea_50eac074","updated":"2016-08-02 12:01:22.000000000","message":"Done","commit_id":"8db1fa091ac36e7894f8322420a385f1380f1470"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"356a1f58b66ef7d19a375faf0adc9be785ea006c","unresolved":false,"context_lines":[{"line_number":1852,"context_line":"    l3plugin.notify_routers_updated(context, router_ids)"},{"line_number":1853,"context_line":""},{"line_number":1854,"context_line":""},{"line_number":1855,"context_line":"def subscribe():"},{"line_number":1856,"context_line":"    L3_NAT_dbonly_mixin._subscribe_callbacks()"},{"line_number":1857,"context_line":"    L3RpcNotifierMixin._subscribe_callbacks()"},{"line_number":1858,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_3098ec1b","line":1855,"updated":"2016-08-01 23:11:07.000000000","message":"at this point this can be a simple pass, because mixin initialization would do the job for you.","commit_id":"8db1fa091ac36e7894f8322420a385f1380f1470"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"b8e4bfb06f86c68f0a3f9f936e653bd50c4a6d90","unresolved":false,"context_lines":[{"line_number":1852,"context_line":"    l3plugin.notify_routers_updated(context, router_ids)"},{"line_number":1853,"context_line":""},{"line_number":1854,"context_line":""},{"line_number":1855,"context_line":"def subscribe():"},{"line_number":1856,"context_line":"    L3_NAT_dbonly_mixin._subscribe_callbacks()"},{"line_number":1857,"context_line":"    L3RpcNotifierMixin._subscribe_callbacks()"},{"line_number":1858,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_dab7d482","line":1855,"in_reply_to":"bacf61ea_1702f709","updated":"2016-08-02 12:01:22.000000000","message":"Done","commit_id":"8db1fa091ac36e7894f8322420a385f1380f1470"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"4d7cae7b89dd0ccfdb481cf93e0cf1edb8a2e132","unresolved":false,"context_lines":[{"line_number":1852,"context_line":"    l3plugin.notify_routers_updated(context, router_ids)"},{"line_number":1853,"context_line":""},{"line_number":1854,"context_line":""},{"line_number":1855,"context_line":"def subscribe():"},{"line_number":1856,"context_line":"    L3_NAT_dbonly_mixin._subscribe_callbacks()"},{"line_number":1857,"context_line":"    L3RpcNotifierMixin._subscribe_callbacks()"},{"line_number":1858,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_1702f709","line":1855,"in_reply_to":"bacf61ea_3098ec1b","updated":"2016-08-02 03:32:13.000000000","message":"And this can be deprecated too.","commit_id":"8db1fa091ac36e7894f8322420a385f1380f1470"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"356a1f58b66ef7d19a375faf0adc9be785ea006c","unresolved":false,"context_lines":[{"line_number":1857,"context_line":"    L3RpcNotifierMixin._subscribe_callbacks()"},{"line_number":1858,"context_line":""},{"line_number":1859,"context_line":""},{"line_number":1860,"context_line":"def subscribe_no_rpc():"},{"line_number":1861,"context_line":"    L3_NAT_dbonly_mixin._subscribe_callbacks()"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_709ee407","line":1860,"updated":"2016-08-01 23:11:07.000000000","message":"if you followed comment at line 157 you would not need this.","commit_id":"8db1fa091ac36e7894f8322420a385f1380f1470"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"b8e4bfb06f86c68f0a3f9f936e653bd50c4a6d90","unresolved":false,"context_lines":[{"line_number":1857,"context_line":"    L3RpcNotifierMixin._subscribe_callbacks()"},{"line_number":1858,"context_line":""},{"line_number":1859,"context_line":""},{"line_number":1860,"context_line":"def subscribe_no_rpc():"},{"line_number":1861,"context_line":"    L3_NAT_dbonly_mixin._subscribe_callbacks()"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_1aae8c2d","line":1860,"in_reply_to":"bacf61ea_709ee407","updated":"2016-08-02 12:01:22.000000000","message":"Done","commit_id":"8db1fa091ac36e7894f8322420a385f1380f1470"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"9f5d795381913f999beff737904346bbf86a9854","unresolved":false,"context_lines":[{"line_number":1736,"context_line":"            {\u0027subnet_id\u0027: router_interface_info[\u0027subnet_id\u0027]})"},{"line_number":1737,"context_line":""},{"line_number":1738,"context_line":"        mapping \u003d {\u0027add\u0027: \u0027create\u0027, \u0027remove\u0027: \u0027delete\u0027}"},{"line_number":1739,"context_line":"        notifier \u003d n_rpc.get_notifier(\u0027network\u0027)"},{"line_number":1740,"context_line":"        router_event \u003d \u0027router.interface.%s\u0027 % mapping[action]"},{"line_number":1741,"context_line":"        notifier.info(context, router_event,"},{"line_number":1742,"context_line":"                      {\u0027router_interface\u0027: router_interface_info})"}],"source_content_type":"text/x-python","patch_set":7,"id":"bacf61ea_d77046df","line":1739,"updated":"2016-08-02 13:28:31.000000000","message":"Hi Armando, following up on a previous question...\n\nShould these event notifications be in L3_NAT_dbonly_mixin? Since I\u0027m not sure how they are used, I\u0027ve left them as-is.","commit_id":"7e92fc1ef6243e50d7d058e3d3d40e05929da5dc"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"938ddadaefe3fe4390c942456a7f0797c3b81220","unresolved":false,"context_lines":[{"line_number":1736,"context_line":"            {\u0027subnet_id\u0027: router_interface_info[\u0027subnet_id\u0027]})"},{"line_number":1737,"context_line":""},{"line_number":1738,"context_line":"        mapping \u003d {\u0027add\u0027: \u0027create\u0027, \u0027remove\u0027: \u0027delete\u0027}"},{"line_number":1739,"context_line":"        notifier \u003d n_rpc.get_notifier(\u0027network\u0027)"},{"line_number":1740,"context_line":"        router_event \u003d \u0027router.interface.%s\u0027 % mapping[action]"},{"line_number":1741,"context_line":"        notifier.info(context, router_event,"},{"line_number":1742,"context_line":"                      {\u0027router_interface\u0027: router_interface_info})"}],"source_content_type":"text/x-python","patch_set":7,"id":"bacf61ea_74cd0686","line":1739,"in_reply_to":"bacf61ea_6901b339","updated":"2016-08-02 17:26:49.000000000","message":"will do","commit_id":"7e92fc1ef6243e50d7d058e3d3d40e05929da5dc"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"28b6e626a2ec80ec7512a7f2473563e5c9714ee6","unresolved":false,"context_lines":[{"line_number":1736,"context_line":"            {\u0027subnet_id\u0027: router_interface_info[\u0027subnet_id\u0027]})"},{"line_number":1737,"context_line":""},{"line_number":1738,"context_line":"        mapping \u003d {\u0027add\u0027: \u0027create\u0027, \u0027remove\u0027: \u0027delete\u0027}"},{"line_number":1739,"context_line":"        notifier \u003d n_rpc.get_notifier(\u0027network\u0027)"},{"line_number":1740,"context_line":"        router_event \u003d \u0027router.interface.%s\u0027 % mapping[action]"},{"line_number":1741,"context_line":"        notifier.info(context, router_event,"},{"line_number":1742,"context_line":"                      {\u0027router_interface\u0027: router_interface_info})"}],"source_content_type":"text/x-python","patch_set":7,"id":"bacf61ea_6901b339","line":1739,"in_reply_to":"bacf61ea_d77046df","updated":"2016-08-02 17:14:10.000000000","message":"let\u0027s leave these as is.","commit_id":"7e92fc1ef6243e50d7d058e3d3d40e05929da5dc"}],"neutron/tests/unit/extensions/test_l3.py":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"b8df07c8e26cf1eb59b5a6f0c59e042245c5659c","unresolved":false,"context_lines":[{"line_number":1982,"context_line":""},{"line_number":1983,"context_line":"    def test_floatingip_with_assoc_fails(self):"},{"line_number":1984,"context_line":"        self._test_floatingip_with_assoc_fails("},{"line_number":1985,"context_line":"            \u0027neutron.db.l3_db.L3_NAT_dbonly_mixin._check_and_get_fip_assoc\u0027)"},{"line_number":1986,"context_line":""},{"line_number":1987,"context_line":"    def test_create_floatingip_with_assoc("},{"line_number":1988,"context_line":"        self, expected_status\u003dl3_constants.FLOATINGIP_STATUS_ACTIVE):"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_e64dc59a","line":1985,"updated":"2016-08-02 21:17:21.000000000","message":"this change seems unnecessary. I checked out this patch and this test passes in the old and new state.","commit_id":"c7c9c398dbf74456c2a04ebc634e7eaddd5e0ec7"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"2a6198abe0702a86ecc68c332fff57e7de749c4a","unresolved":false,"context_lines":[{"line_number":1982,"context_line":""},{"line_number":1983,"context_line":"    def test_floatingip_with_assoc_fails(self):"},{"line_number":1984,"context_line":"        self._test_floatingip_with_assoc_fails("},{"line_number":1985,"context_line":"            \u0027neutron.db.l3_db.L3_NAT_dbonly_mixin._check_and_get_fip_assoc\u0027)"},{"line_number":1986,"context_line":""},{"line_number":1987,"context_line":"    def test_create_floatingip_with_assoc("},{"line_number":1988,"context_line":"        self, expected_status\u003dl3_constants.FLOATINGIP_STATUS_ACTIVE):"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_27497bd1","line":1985,"in_reply_to":"bacf61ea_e64dc59a","updated":"2016-08-03 11:49:26.000000000","message":"Kevin and I discussed on IRC yesterday.  This change is for plugins that don\u0027t use L3_NAT_db_mixin.  I noticed this problem when fixing https://review.openstack.org/#/c/348559/.","commit_id":"c7c9c398dbf74456c2a04ebc634e7eaddd5e0ec7"}]}
