)]}'
{"neutron/db/l3_db.py":[{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"f4b4c3f4367dc5fd9edef10f59a918c403d5ada4","unresolved":false,"context_lines":[{"line_number":273,"context_line":"        return candidates"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def _create_router_gw_port(self, context, router, network_id, ext_ips):"},{"line_number":276,"context_line":"        if ext_ips and len(ext_ips) \u003e 2:"},{"line_number":277,"context_line":"            msg \u003d _(\"Routers support only 2 external IPs\")"},{"line_number":278,"context_line":"            raise n_exc.BadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"},{"line_number":279,"context_line":"        # Port has no \u0027tenant-id\u0027, as it is hidden from user"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6ced46_6b7b4c28","line":276,"updated":"2015-03-25 15:57:29.000000000","message":"didn\u0027t see the update path has similar check. \n\nsince we are supporting multiple subnets on the router gw port, the check may be removed.\n\nOn the other hand, it may not make sense to have more than one subnet per address family because there is only one router gw port, and there is only one default route per family. But if desired, it can be addressed in a separate bug.","commit_id":"0114007bcd0cb0165b8409df1652057749c4c074"},{"author":{"_account_id":13409,"name":"Andrew Boik","email":"drew.boik@gmail.com","username":"dboik"},"change_message_id":"7eedfee2b9ef1598fa3c893dc8a2d564abeb27b6","unresolved":false,"context_lines":[{"line_number":273,"context_line":"        return candidates"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def _create_router_gw_port(self, context, router, network_id, ext_ips):"},{"line_number":276,"context_line":"        if ext_ips and len(ext_ips) \u003e 2:"},{"line_number":277,"context_line":"            msg \u003d _(\"Routers support only 2 external IPs\")"},{"line_number":278,"context_line":"            raise n_exc.BadRequest(resource\u003d\u0027router\u0027, msg\u003dmsg)"},{"line_number":279,"context_line":"        # Port has no \u0027tenant-id\u0027, as it is hidden from user"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a6ced46_ab01c407","line":276,"in_reply_to":"1a6ced46_6b7b4c28","updated":"2015-03-25 16:05:21.000000000","message":"Removing this check. Will move it to update_router()  in a separate patch","commit_id":"0114007bcd0cb0165b8409df1652057749c4c074"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"7646e208d893ec69086f5c8b7d8ce16775030d3e","unresolved":false,"context_lines":[{"line_number":428,"context_line":""},{"line_number":429,"context_line":"        #TODO(nati) Refactor here when we have router insertion model"},{"line_number":430,"context_line":"        router \u003d self._ensure_router_not_in_use(context, id)"},{"line_number":431,"context_line":"        self._delete_current_gw_port(context, id, router, None)"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"        router_ports \u003d router.attached_ports.all()"},{"line_number":434,"context_line":"        for rp in router_ports:"}],"source_content_type":"text/x-python","patch_set":14,"id":"da9b358b_0a83b157","line":431,"updated":"2015-03-31 11:14:28.000000000","message":"(No action required.) This would have been a nice opportunity to make this more readable by changing the 4th arg to \u0027new_network\u003dNone\u0027.","commit_id":"e2666293c449ca98c52fc7f661be43323ee36828"}],"neutron/tests/unit/test_l3_plugin.py":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"8ce6234dd09cea1684b7c81553efd926b5ca918b","unresolved":false,"context_lines":[{"line_number":849,"context_line":""},{"line_number":850,"context_line":"    def test_router_update_gateway_add_multiple_prefixes_ipv6(self):"},{"line_number":851,"context_line":"        with self.network() as n:"},{"line_number":852,"context_line":"            with self.subnet(network\u003dn) as s1, self.subnet(network\u003dn,"},{"line_number":853,"context_line":"                    ip_version\u003d6, cidr\u003d\u00272001:db8::/32\u0027) as s2, ("},{"line_number":854,"context_line":"                            self.router()) as r:"},{"line_number":855,"context_line":"                self._set_net_external(n[\u0027network\u0027][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_a2d6af25","line":852,"updated":"2015-03-17 12:27:57.000000000","message":"The 2nd with is quite unreadable, you can use \\ or contextlib.nested","commit_id":"d6dcb2891793a9f3a7aa865f07307085990f0b9f"},{"author":{"_account_id":13409,"name":"Andrew Boik","email":"drew.boik@gmail.com","username":"dboik"},"change_message_id":"ba40afa51380c1e3b45df9fa5d354a3374526f87","unresolved":false,"context_lines":[{"line_number":849,"context_line":""},{"line_number":850,"context_line":"    def test_router_update_gateway_add_multiple_prefixes_ipv6(self):"},{"line_number":851,"context_line":"        with self.network() as n:"},{"line_number":852,"context_line":"            with self.subnet(network\u003dn) as s1, self.subnet(network\u003dn,"},{"line_number":853,"context_line":"                    ip_version\u003d6, cidr\u003d\u00272001:db8::/32\u0027) as s2, ("},{"line_number":854,"context_line":"                            self.router()) as r:"},{"line_number":855,"context_line":"                self._set_net_external(n[\u0027network\u0027][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_9581ccfd","line":852,"in_reply_to":"9a80dd14_a2d6af25","updated":"2015-03-17 19:14:54.000000000","message":"I agree, it\u0027s really ugly. contextlib.nested is deprecated, so I\u0027ll use \\ to continue the line. I hope no one has a problem with that as it isn\u0027t the preferred way, but it will be more readable than it is now.","commit_id":"d6dcb2891793a9f3a7aa865f07307085990f0b9f"},{"author":{"_account_id":6620,"name":"Abishek Subramanian","email":"absubram@cisco.com","username":"absubram"},"change_message_id":"136e9a0d789201d2395fb588b9ac3e90e6b53b5c","unresolved":false,"context_lines":[{"line_number":849,"context_line":""},{"line_number":850,"context_line":"    def test_router_update_gateway_add_multiple_prefixes_ipv6(self):"},{"line_number":851,"context_line":"        with self.network() as n:"},{"line_number":852,"context_line":"            with self.subnet(network\u003dn) as s1, \\"},{"line_number":853,"context_line":"                self.subnet(network\u003dn, ip_version\u003d6, cidr\u003d\u00272001:db8::/32\u0027) \\"},{"line_number":854,"context_line":"                as s2, (self.router()) as r:"},{"line_number":855,"context_line":"                self._set_net_external(n[\u0027network\u0027][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a80dd14_6619dd21","line":852,"updated":"2015-03-18 18:19:34.000000000","message":"Would parenthesis work? I did note the comment from version 3 of the patch.","commit_id":"8aeeda37b1cf4549e65603ac7931621ccaf5dce6"},{"author":{"_account_id":13409,"name":"Andrew Boik","email":"drew.boik@gmail.com","username":"dboik"},"change_message_id":"8911734f9acb1e8ae1a80d28d87403bfcfd4fa36","unresolved":false,"context_lines":[{"line_number":849,"context_line":""},{"line_number":850,"context_line":"    def test_router_update_gateway_add_multiple_prefixes_ipv6(self):"},{"line_number":851,"context_line":"        with self.network() as n:"},{"line_number":852,"context_line":"            with self.subnet(network\u003dn) as s1, \\"},{"line_number":853,"context_line":"                self.subnet(network\u003dn, ip_version\u003d6, cidr\u003d\u00272001:db8::/32\u0027) \\"},{"line_number":854,"context_line":"                as s2, (self.router()) as r:"},{"line_number":855,"context_line":"                self._set_net_external(n[\u0027network\u0027][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a80dd14_a97806f9","line":852,"in_reply_to":"9a80dd14_6619dd21","updated":"2015-03-18 18:46:41.000000000","message":"I\u0027ve tried many different ways of arranging the parentheses before Cedric\u0027s comment, but none of them read clearly so this is the best I could come up with :(\n\nIf you have another suggestion, I\u0027d be happy to hear that, but the problem is you can only do a line break at certain places in the \u0027with\u0027 statement or else it causes a syntax error.","commit_id":"8aeeda37b1cf4549e65603ac7931621ccaf5dce6"}]}
