)]}'
{"neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py":[{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"d9c77987734b91acaa4b5dcc90f4fc062b1a005d","unresolved":false,"context_lines":[{"line_number":435,"context_line":"            self.ensure_tap_mtu(tap_device_name, phy_dev_name)"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"        # Check if device needs to be added to bridge"},{"line_number":438,"context_line":"        tap_device_in_bridge \u003d bridge_lib.BridgeDevice.get_interface_bridge("},{"line_number":439,"context_line":"            tap_device_name)"},{"line_number":440,"context_line":"        if not tap_device_in_bridge:"},{"line_number":441,"context_line":"            data \u003d {\u0027tap_device_name\u0027: tap_device_name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa80f949_0ca628ae","line":438,"updated":"2015-11-06 05:24:32.000000000","message":"The old logic seems to check if the tap device is in a managed bridge. Your logic here seems only check if the tap device is in any bridge. I think code can be improved here.\n\nAlso, I see duplicated code in line 441~442 and  448~449. Maybe you can eliminate them.","commit_id":"52ce9e15ed9a6581a2c18029a379a12fe00f800b"}],"neutron/tests/unit/plugins/ml2/drivers/linuxbridge/agent/test_linuxbridge_neutron_agent.py":[{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"81559e60419f8e7870a7c3b507aafa79a204415f","unresolved":false,"context_lines":[{"line_number":653,"context_line":"            bridge_device.owns_interface.assert_called_with(\"eth0\")"},{"line_number":654,"context_line":""},{"line_number":655,"context_line":"            self.lbm.ensure_bridge(\"br0\", \"eth0\", \"ips\", \"gateway\")"},{"line_number":656,"context_line":"            upd_fn.assert_called_with(\"br0\", \"eth0\", \"ips\", \"gateway\")"},{"line_number":657,"context_line":"            bridge_device.owns_interface.assert_called_with(\"eth0\")"},{"line_number":658,"context_line":""},{"line_number":659,"context_line":"            de_fn.return_value \u003d True"}],"source_content_type":"text/x-python","patch_set":3,"id":"da85f559_63c86675","line":656,"updated":"2015-11-14 07:30:49.000000000","message":"A question: what\u0027s the difference between L651-653 and L655-657, I don\u0027t find the point need to assert twice here.","commit_id":"d3da15d62d4270dfb5a20e8d4051c7e17c8c2c9b"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"f1c20c29a2115e42b334c701f55976b80ae46b90","unresolved":false,"context_lines":[{"line_number":653,"context_line":"            bridge_device.owns_interface.assert_called_with(\"eth0\")"},{"line_number":654,"context_line":""},{"line_number":655,"context_line":"            self.lbm.ensure_bridge(\"br0\", \"eth0\", \"ips\", \"gateway\")"},{"line_number":656,"context_line":"            upd_fn.assert_called_with(\"br0\", \"eth0\", \"ips\", \"gateway\")"},{"line_number":657,"context_line":"            bridge_device.owns_interface.assert_called_with(\"eth0\")"},{"line_number":658,"context_line":""},{"line_number":659,"context_line":"            de_fn.return_value \u003d True"}],"source_content_type":"text/x-python","patch_set":3,"id":"da85f559_9267d5b6","line":656,"in_reply_to":"da85f559_63c86675","updated":"2015-11-14 10:22:12.000000000","message":"That\u0027s out of change scope","commit_id":"d3da15d62d4270dfb5a20e8d4051c7e17c8c2c9b"},{"author":{"_account_id":13667,"name":"ZongKai LI","email":"onionpiece@163.com","username":"lzklibj"},"change_message_id":"81559e60419f8e7870a7c3b507aafa79a204415f","unresolved":false,"context_lines":[{"line_number":661,"context_line":"            self.lbm.ensure_bridge(\"br0\", \"eth0\")"},{"line_number":662,"context_line":"            bridge_device.owns_interface.assert_called_with(\"eth0\")"},{"line_number":663,"context_line":""},{"line_number":664,"context_line":"            de_fn.return_value \u003d True"},{"line_number":665,"context_line":"            bridge_device.owns_interface.return_value \u003d False"},{"line_number":666,"context_line":"            get_if_br_fn.return_value \u003d bridge_device_old"},{"line_number":667,"context_line":"            bridge_device.addif.reset_mock()"}],"source_content_type":"text/x-python","patch_set":3,"id":"da85f559_63f2a69c","line":664,"updated":"2015-11-14 07:30:49.000000000","message":"de_fn and bridge_device.owns_interface.return_value have been mocked in L659 and L650, wouldn\u0027t they keep the same behavior after they are mocked?","commit_id":"d3da15d62d4270dfb5a20e8d4051c7e17c8c2c9b"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"f1c20c29a2115e42b334c701f55976b80ae46b90","unresolved":false,"context_lines":[{"line_number":661,"context_line":"            self.lbm.ensure_bridge(\"br0\", \"eth0\")"},{"line_number":662,"context_line":"            bridge_device.owns_interface.assert_called_with(\"eth0\")"},{"line_number":663,"context_line":""},{"line_number":664,"context_line":"            de_fn.return_value \u003d True"},{"line_number":665,"context_line":"            bridge_device.owns_interface.return_value \u003d False"},{"line_number":666,"context_line":"            get_if_br_fn.return_value \u003d bridge_device_old"},{"line_number":667,"context_line":"            bridge_device.addif.reset_mock()"}],"source_content_type":"text/x-python","patch_set":3,"id":"da85f559_d26d5d9a","line":664,"in_reply_to":"da85f559_63f2a69c","updated":"2015-11-14 10:22:12.000000000","message":"That\u0027s out of change scope","commit_id":"d3da15d62d4270dfb5a20e8d4051c7e17c8c2c9b"}]}
