)]}'
{"neutron/db/l3_db.py":[{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"a7609c64c715670e5e7897ceef95cf9b96ccef3a","unresolved":false,"context_lines":[{"line_number":1186,"context_line":"        # error during deletion."},{"line_number":1187,"context_line":"        # Elevated context in case router is owned by another tenant"},{"line_number":1188,"context_line":"        try:"},{"line_number":1189,"context_line":"            self.get_router(context.elevated(), port[\u0027device_id\u0027])"},{"line_number":1190,"context_line":"        except l3.RouterNotFound:"},{"line_number":1191,"context_line":"            LOG.debug(\"Router %(router_id)s corresponding to port %(port_id)s \""},{"line_number":1192,"context_line":"                      \"no longer exists, allowing deletion.\","}],"source_content_type":"text/x-python","patch_set":1,"id":"7a5de9d1_873aab97","line":1189,"updated":"2016-02-01 16:26:18.000000000","message":"DVR related UT failed for fake port object has no attribute \"device_id\", but I\u0027m not consider the right way is to fix those UTs.\n\nSince this patch is for ha router, I\u0027m not sure whether router existence checking also makes sense for DVR router. If not, I think maybe we can directly return after fixed_ips checking for DVR router.","commit_id":"80015a072ccb32f7b4e5efd72fbe249de69882fd"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"7611143175dbae89f6bfd5bf9e83760fd071bfed","unresolved":false,"context_lines":[{"line_number":1156,"context_line":""},{"line_number":1157,"context_line":"    def _router_exists(self, context, router_id):"},{"line_number":1158,"context_line":"        try:"},{"line_number":1159,"context_line":"            self.get_router(context.elevated(), router_id)"},{"line_number":1160,"context_line":"            return True"},{"line_number":1161,"context_line":"        except l3.RouterNotFound:"},{"line_number":1162,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a5de9d1_81703773","line":1159,"updated":"2016-02-02 08:23:01.000000000","message":"was thinking that we might need to worry about a class that overrides the retrieval method of get_router with a call to the backend.","commit_id":"3b41808b8624f5442d65ba638d1a2c1bdc22be00"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"16b24cd2ee8ee476817e76634405f4cd2d14ac05","unresolved":false,"context_lines":[{"line_number":1156,"context_line":""},{"line_number":1157,"context_line":"    def _router_exists(self, context, router_id):"},{"line_number":1158,"context_line":"        try:"},{"line_number":1159,"context_line":"            self.get_router(context.elevated(), router_id)"},{"line_number":1160,"context_line":"            return True"},{"line_number":1161,"context_line":"        except l3.RouterNotFound:"},{"line_number":1162,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a5de9d1_e62ee141","line":1159,"range":{"start_line":1159,"start_character":17,"end_line":1159,"end_character":27},"updated":"2016-02-02 08:00:41.000000000","message":"why not _get_router()? get_router() additionally calls _make_router_dict which we don\u0027t need here","commit_id":"3b41808b8624f5442d65ba638d1a2c1bdc22be00"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"f5c084c90ca10d90adb1922c2b8657c48c537d28","unresolved":false,"context_lines":[{"line_number":1156,"context_line":""},{"line_number":1157,"context_line":"    def _router_exists(self, context, router_id):"},{"line_number":1158,"context_line":"        try:"},{"line_number":1159,"context_line":"            self.get_router(context.elevated(), router_id)"},{"line_number":1160,"context_line":"            return True"},{"line_number":1161,"context_line":"        except l3.RouterNotFound:"},{"line_number":1162,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a5de9d1_21f14395","line":1159,"in_reply_to":"7a5de9d1_81703773","updated":"2016-02-02 08:31:40.000000000","message":"makes sense, thanks","commit_id":"3b41808b8624f5442d65ba638d1a2c1bdc22be00"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"16b24cd2ee8ee476817e76634405f4cd2d14ac05","unresolved":false,"context_lines":[{"line_number":1163,"context_line":""},{"line_number":1164,"context_line":"    def _floating_ip_exists(self, context, floating_ip_id):"},{"line_number":1165,"context_line":"        try:"},{"line_number":1166,"context_line":"            self.get_floatingip(context, floating_ip_id)"},{"line_number":1167,"context_line":"            return True"},{"line_number":1168,"context_line":"        except l3.FloatingIPNotFound:"},{"line_number":1169,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a5de9d1_26195922","line":1166,"range":{"start_line":1166,"start_character":17,"end_line":1166,"end_character":31},"updated":"2016-02-02 08:00:41.000000000","message":"ditto","commit_id":"3b41808b8624f5442d65ba638d1a2c1bdc22be00"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"7611143175dbae89f6bfd5bf9e83760fd071bfed","unresolved":false,"context_lines":[{"line_number":1163,"context_line":""},{"line_number":1164,"context_line":"    def _floating_ip_exists(self, context, floating_ip_id):"},{"line_number":1165,"context_line":"        try:"},{"line_number":1166,"context_line":"            self.get_floatingip(context, floating_ip_id)"},{"line_number":1167,"context_line":"            return True"},{"line_number":1168,"context_line":"        except l3.FloatingIPNotFound:"},{"line_number":1169,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a5de9d1_216b8386","line":1166,"updated":"2016-02-02 08:23:01.000000000","message":"same","commit_id":"3b41808b8624f5442d65ba638d1a2c1bdc22be00"}],"neutron/tests/unit/db/test_l3_db.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1e2c1f33d56262ac4c8135493fb574900cb83d97","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    @mock.patch.object(manager.NeutronManager, \u0027get_plugin\u0027)"},{"line_number":170,"context_line":"    def test_prevent_l3_port_existing_router(self, gp):"},{"line_number":171,"context_line":"        # without router is allowed"},{"line_number":172,"context_line":"        gp.return_value.get_port.return_value \u003d {"},{"line_number":173,"context_line":"            \u0027device_owner\u0027: \u0027network:router_interface\u0027,"},{"line_number":174,"context_line":"            \u0027device_id\u0027: \u0027some_router\u0027, \u0027id\u0027: \u0027f\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a5de9d1_a1e6ba41","line":171,"updated":"2016-02-01 15:11:24.000000000","message":"nit: with router not allowed","commit_id":"80015a072ccb32f7b4e5efd72fbe249de69882fd"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"4a81a0fc67fcfe14c573d77faeb106ce9269e982","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    @mock.patch.object(manager.NeutronManager, \u0027get_plugin\u0027)"},{"line_number":170,"context_line":"    def test_prevent_l3_port_existing_router(self, gp):"},{"line_number":171,"context_line":"        # without router is allowed"},{"line_number":172,"context_line":"        gp.return_value.get_port.return_value \u003d {"},{"line_number":173,"context_line":"            \u0027device_owner\u0027: \u0027network:router_interface\u0027,"},{"line_number":174,"context_line":"            \u0027device_id\u0027: \u0027some_router\u0027, \u0027id\u0027: \u0027f\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a5de9d1_13110f04","line":171,"in_reply_to":"7a5de9d1_a1e6ba41","updated":"2016-02-01 23:07:33.000000000","message":"Done","commit_id":"80015a072ccb32f7b4e5efd72fbe249de69882fd"}]}
