)]}'
{"neutron/db/l3_db.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"8d3227c5bc02c953e5f3775f54c55c7e3a516355","unresolved":false,"context_lines":[{"line_number":802,"context_line":"            port, subnets, new_port \u003d self._add_interface_by_subnet("},{"line_number":803,"context_line":"                    context, router, interface_info[\u0027subnet_id\u0027], device_owner)"},{"line_number":804,"context_line":"            cleanup_port \u003d new_port  # only cleanup port we created"},{"line_number":805,"context_line":"            revert_value \u003d {\u0027device_id\u0027: \u0027\u0027,"},{"line_number":806,"context_line":"                            \u0027device_owner\u0027: port[\u0027device_owner\u0027]}"},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"        if cleanup_port:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_2b085728","line":805,"range":{"start_line":805,"start_character":12,"end_line":805,"end_character":24},"updated":"2016-09-09 07:31:04.000000000","message":"wondering if this should go before \u0027port\u0027 is reassigned (before #802)","commit_id":"11f053a87b20993261ed315795f7945b2ff365c0"},{"author":{"_account_id":19935,"name":"Anh Tran","email":"anhtt@vn.fujitsu.com","username":"trananhkma"},"change_message_id":"6d05195a0e48c8bcb1870b819f68df120ecc233b","unresolved":false,"context_lines":[{"line_number":802,"context_line":"            port, subnets, new_port \u003d self._add_interface_by_subnet("},{"line_number":803,"context_line":"                    context, router, interface_info[\u0027subnet_id\u0027], device_owner)"},{"line_number":804,"context_line":"            cleanup_port \u003d new_port  # only cleanup port we created"},{"line_number":805,"context_line":"            revert_value \u003d {\u0027device_id\u0027: \u0027\u0027,"},{"line_number":806,"context_line":"                            \u0027device_owner\u0027: port[\u0027device_owner\u0027]}"},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"        if cleanup_port:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_ab570725","line":805,"range":{"start_line":805,"start_character":12,"end_line":805,"end_character":24},"in_reply_to":"9a89bdaa_2b085728","updated":"2016-09-09 10:36:25.000000000","message":"Sorry if I did not understand your meaning yet.\nL802 is the first time that port is assigned. We cannot move \u0027revert_value\u0027 to L802. How can it work?","commit_id":"11f053a87b20993261ed315795f7945b2ff365c0"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"b3c2cfdf571abd3e92cc867de425383ba7cd1da2","unresolved":false,"context_lines":[{"line_number":802,"context_line":"            port, subnets, new_port \u003d self._add_interface_by_subnet("},{"line_number":803,"context_line":"                    context, router, interface_info[\u0027subnet_id\u0027], device_owner)"},{"line_number":804,"context_line":"            cleanup_port \u003d new_port  # only cleanup port we created"},{"line_number":805,"context_line":"            revert_value \u003d {\u0027device_id\u0027: \u0027\u0027,"},{"line_number":806,"context_line":"                            \u0027device_owner\u0027: port[\u0027device_owner\u0027]}"},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"        if cleanup_port:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_fe48e1ce","line":805,"range":{"start_line":805,"start_character":12,"end_line":805,"end_character":24},"in_reply_to":"9a89bdaa_ab570725","updated":"2016-09-09 10:58:24.000000000","message":"ah, indeed","commit_id":"11f053a87b20993261ed315795f7945b2ff365c0"}],"neutron/db/l3_dvr_db.py":[{"author":{"_account_id":19554,"name":"Nam","email":"namnh68@fsoft.com.vn","username":"namnh"},"change_message_id":"0555e5de0afcb9adfac496461f37a70ec89e6e49","unresolved":false,"context_lines":[{"line_number":334,"context_line":"            mgr \u003d p_utils.delete_port_on_error("},{"line_number":335,"context_line":"                self._core_plugin, context, port[\u0027id\u0027])"},{"line_number":336,"context_line":"        else:"},{"line_number":337,"context_line":"            revert_value \u003d {\u0027device_id\u0027: \u0027\u0027,"},{"line_number":338,"context_line":"                            \u0027device_owner\u0027: port[\u0027device_owner\u0027]}"},{"line_number":339,"context_line":"            mgr \u003d p_utils.update_port_on_error("},{"line_number":340,"context_line":"                self._core_plugin, context, port[\u0027id\u0027], revert_value)"},{"line_number":341,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_9147da1c","side":"PARENT","line":338,"range":{"start_line":337,"start_character":12,"end_line":338,"end_character":65},"updated":"2016-09-09 04:51:36.000000000","message":"If you call the revert_value variable here. The \"port\" object will be changed by line 324. Therefore the port[\u0027device_owner\u0027] will have new value.","commit_id":"dc6e83771c8103774e899d4ce8f4a61b6d4e05da"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"8d3227c5bc02c953e5f3775f54c55c7e3a516355","unresolved":false,"context_lines":[{"line_number":327,"context_line":"            port, subnets, new_port \u003d self._add_interface_by_subnet("},{"line_number":328,"context_line":"                    context, router, interface_info[\u0027subnet_id\u0027], device_owner)"},{"line_number":329,"context_line":"            cleanup_port \u003d new_port"},{"line_number":330,"context_line":"            revert_value \u003d {\u0027device_id\u0027: \u0027\u0027,"},{"line_number":331,"context_line":"                            \u0027device_owner\u0027: port[\u0027device_owner\u0027]}"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        subnet \u003d subnets[0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_eb72efaf","line":330,"updated":"2016-09-09 07:31:04.000000000","message":"ditto","commit_id":"11f053a87b20993261ed315795f7945b2ff365c0"}],"neutron/tests/unit/db/test_l3_dvr_db.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"591e42a11e977e5133d17deb1fe4c96879ee5871","unresolved":false,"context_lines":[{"line_number":749,"context_line":"            self.assertIn(\u0027port\u0027, port, message\u003d\u0027Create port failed.\u0027)"},{"line_number":750,"context_line":""},{"line_number":751,"context_line":"            orig_update_port \u003d self.mixin._core_plugin.update_port"},{"line_number":752,"context_line":"            call_info \u003d {\u0027count\u0027: 0}"},{"line_number":753,"context_line":""},{"line_number":754,"context_line":"            def _fake_update_port(*args, **kwargs):"},{"line_number":755,"context_line":"                call_info[\u0027count\u0027] +\u003d 1"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_952268b8","line":752,"updated":"2016-09-14 02:53:35.000000000","message":"could just be self.fake_called \u003d False\n\nthen below would just check and set to True on first call\n\nJust seems overkill to create a dict for this.","commit_id":"5f9d8887076edaf3eef132e914766ba5e7136468"},{"author":{"_account_id":19935,"name":"Anh Tran","email":"anhtt@vn.fujitsu.com","username":"trananhkma"},"change_message_id":"7241aac9fa2460d5c9d537bb2f7d17b95ce27246","unresolved":false,"context_lines":[{"line_number":749,"context_line":"            self.assertIn(\u0027port\u0027, port, message\u003d\u0027Create port failed.\u0027)"},{"line_number":750,"context_line":""},{"line_number":751,"context_line":"            orig_update_port \u003d self.mixin._core_plugin.update_port"},{"line_number":752,"context_line":"            call_info \u003d {\u0027count\u0027: 0}"},{"line_number":753,"context_line":""},{"line_number":754,"context_line":"            def _fake_update_port(*args, **kwargs):"},{"line_number":755,"context_line":"                call_info[\u0027count\u0027] +\u003d 1"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_5bc49191","line":752,"in_reply_to":"7a8ec9b2_952268b8","updated":"2016-09-14 03:30:43.000000000","message":"I don\u0027t think use \u0027self\u0027 here is better.\nIt can be use in other test cases. I wish it just be private variable.","commit_id":"5f9d8887076edaf3eef132e914766ba5e7136468"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"591e42a11e977e5133d17deb1fe4c96879ee5871","unresolved":false,"context_lines":[{"line_number":762,"context_line":"            # at the 2nd function call (Update owner after actual process"},{"line_number":763,"context_line":"            # again in order)."},{"line_number":764,"context_line":"            with mock.patch.object(self.mixin._core_plugin, \u0027update_port\u0027,"},{"line_number":765,"context_line":"                                   side_effect\u003d_fake_update_port):"},{"line_number":766,"context_line":"                self.assertRaises("},{"line_number":767,"context_line":"                    RuntimeError,"},{"line_number":768,"context_line":"                    self.mixin.add_router_interface,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_e081284f","line":765,"updated":"2016-09-14 02:53:35.000000000","message":"So this couldn\u0027t just be:\n\nside_effect\u003d[(orig_update_port, RuntimeError())]\n\nOr something like that","commit_id":"5f9d8887076edaf3eef132e914766ba5e7136468"},{"author":{"_account_id":19935,"name":"Anh Tran","email":"anhtt@vn.fujitsu.com","username":"trananhkma"},"change_message_id":"7241aac9fa2460d5c9d537bb2f7d17b95ce27246","unresolved":false,"context_lines":[{"line_number":762,"context_line":"            # at the 2nd function call (Update owner after actual process"},{"line_number":763,"context_line":"            # again in order)."},{"line_number":764,"context_line":"            with mock.patch.object(self.mixin._core_plugin, \u0027update_port\u0027,"},{"line_number":765,"context_line":"                                   side_effect\u003d_fake_update_port):"},{"line_number":766,"context_line":"                self.assertRaises("},{"line_number":767,"context_line":"                    RuntimeError,"},{"line_number":768,"context_line":"                    self.mixin.add_router_interface,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_bbb6753b","line":765,"in_reply_to":"7a8ec9b2_e081284f","updated":"2016-09-14 03:30:43.000000000","message":"I already tried this before: http://codepad.org/Z2w0gs8G  but the test does not work.\n\nIt raise message: \u0027neutron_lib.exceptions.PortInUse: Unable to complete operation on port ... for network ... Port already has an attached device.\u0027\n\nHow do you think?","commit_id":"5f9d8887076edaf3eef132e914766ba5e7136468"}]}
