)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"OVSInterfaceDriver plug() creates a veth pair and add it to an OVS"},{"line_number":12,"context_line":"bridge when ovs_use_veth\u003dTrue. It is useful that OVS cleanup utility"},{"line_number":13,"context_line":"removes such veth paris in addition to removing OVS ports."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Veth pairs to be removed are veth devices corresponding to ports"},{"line_number":16,"context_line":"removed when all_ovs_port\u003d\u003dFalse. Veth pairs created to connect"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAAM3%2F%2FUhI%3D","line":13,"updated":"2013-01-29 02:44:05.000000000","message":"nit: pairs","commit_id":"1b5730b42c6306e26ec5e803f3e349b203756ba8"}],"quantum/agent/ovs_cleanup_util.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e923004ef4c34feba2e4af0c88f93ee39d118728","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    # Collect existing ports created by Quantum on configuration bridges."},{"line_number":95,"context_line":"    # After deleting ports from OVS bridges, we cannot determine which"},{"line_number":96,"context_line":"    # ports were created by Quantum, so port informatin is collected now."},{"line_number":97,"context_line":"    ports \u003d collect_quantum_ports(available_configuration_bridges,"},{"line_number":98,"context_line":"                                  conf.root_helper)"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F3KY%3D","line":96,"updated":"2012-12-30 14:36:33.000000000","message":"informatin \u003d\u003e information","commit_id":"2084f298764277a8108e324e478477cff0d522e0"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    # Collect existing ports created by Quantum on configuration bridges."},{"line_number":95,"context_line":"    # After deleting ports from OVS bridges, we cannot determine which"},{"line_number":96,"context_line":"    # ports were created by Quantum, so port informatin is collected now."},{"line_number":97,"context_line":"    ports \u003d collect_quantum_ports(available_configuration_bridges,"},{"line_number":98,"context_line":"                                  conf.root_helper)"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F3JA%3D","line":96,"in_reply_to":"AAAAM3%2F%2F3KY%3D","updated":"2012-12-30 14:48:02.000000000","message":"Done","commit_id":"2084f298764277a8108e324e478477cff0d522e0"}],"quantum/tests/unit/test_agent_ovs_cleanup.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"22cb451e47fd77fcd89474f3a34dca6bb0ef84d4","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            mock.patch.object(ip_lib, \u0027IPDevice\u0027)"},{"line_number":85,"context_line":"        ) as (device_exists, ip_dev):"},{"line_number":86,"context_line":"            util.delete_quantum_ports(ports, \u0027root_helper\u0027)"},{"line_number":87,"context_line":"            print device_exists.call_count"},{"line_number":88,"context_line":"            print device_exists.call_args_list"},{"line_number":89,"context_line":"            self.assertEqual(device_exists.call_args_list,"},{"line_number":90,"context_line":"                             [mock.call(p) for p in ports])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F3I0%3D","line":87,"updated":"2012-12-30 15:25:05.000000000","message":"This should be delete","commit_id":"550c30cdf41c26d3eac7d83a35f635411bbc697a"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":84,"context_line":"            mock.patch.object(ip_lib, \u0027IPDevice\u0027)"},{"line_number":85,"context_line":"        ) as (device_exists, ip_dev):"},{"line_number":86,"context_line":"            util.delete_quantum_ports(ports, \u0027root_helper\u0027)"},{"line_number":87,"context_line":"            print device_exists.call_count"},{"line_number":88,"context_line":"            print device_exists.call_args_list"},{"line_number":89,"context_line":"            self.assertEqual(device_exists.call_args_list,"},{"line_number":90,"context_line":"                             [mock.call(p) for p in ports])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F3GI%3D","line":87,"in_reply_to":"AAAAM3%2F%2F3I0%3D","updated":"2012-12-30 16:08:26.000000000","message":"Done. Thanks for finding it!","commit_id":"550c30cdf41c26d3eac7d83a35f635411bbc697a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"22cb451e47fd77fcd89474f3a34dca6bb0ef84d4","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        ) as (device_exists, ip_dev):"},{"line_number":86,"context_line":"            util.delete_quantum_ports(ports, \u0027root_helper\u0027)"},{"line_number":87,"context_line":"            print device_exists.call_count"},{"line_number":88,"context_line":"            print device_exists.call_args_list"},{"line_number":89,"context_line":"            self.assertEqual(device_exists.call_args_list,"},{"line_number":90,"context_line":"                             [mock.call(p) for p in ports])"},{"line_number":91,"context_line":"            ip_dev.assert_has_calls("}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F3Iw%3D","line":88,"updated":"2012-12-30 15:25:05.000000000","message":"same as above","commit_id":"550c30cdf41c26d3eac7d83a35f635411bbc697a"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":85,"context_line":"        ) as (device_exists, ip_dev):"},{"line_number":86,"context_line":"            util.delete_quantum_ports(ports, \u0027root_helper\u0027)"},{"line_number":87,"context_line":"            print device_exists.call_count"},{"line_number":88,"context_line":"            print device_exists.call_args_list"},{"line_number":89,"context_line":"            self.assertEqual(device_exists.call_args_list,"},{"line_number":90,"context_line":"                             [mock.call(p) for p in ports])"},{"line_number":91,"context_line":"            ip_dev.assert_has_calls("}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F3GE%3D","line":88,"in_reply_to":"AAAAM3%2F%2F3Iw%3D","updated":"2012-12-30 16:08:26.000000000","message":"Done","commit_id":"550c30cdf41c26d3eac7d83a35f635411bbc697a"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":67,"context_line":"        port3 \u003d ovs_lib.VifPort(\u0027tap90ab\u0027, 3, uuidutils.generate_uuid(),"},{"line_number":68,"context_line":"                                \u002799:00:aa:bb:cc:dd\u0027, \u0027br\u0027)"},{"line_number":69,"context_line":"        ports \u003d [[port1, port2], [port3]]"},{"line_number":70,"context_line":"        portnames \u003d [p.port_name for p in reduce(lambda a, b: a + b, ports)]"},{"line_number":71,"context_line":"        with mock.patch(\u0027quantum.agent.linux.ovs_lib.OVSBridge\u0027) as ovs:"},{"line_number":72,"context_line":"            ovs.return_value.get_vif_ports.side_effect \u003d ports"},{"line_number":73,"context_line":"            bridges \u003d [\u0027br-int\u0027, \u0027br-ex\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FkGs%3D","line":70,"updated":"2013-01-15 21:04:57.000000000","message":"portnames \u003d [p.port_name for p in itertools.chain(*ports)]","commit_id":"12ba1ff2025f75c45e149d63913cae08515ee6fb"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":77,"context_line":"    def test_delete_quantum_ports(self):"},{"line_number":78,"context_line":"        ports \u003d [\u0027tap1234\u0027, \u0027tap5678\u0027, \u0027tap09ab\u0027]"},{"line_number":79,"context_line":"        port_found \u003d [True, False, True]"},{"line_number":80,"context_line":"        delete_ports \u003d [x[0] for x in zip(ports, port_found) if x[1]]"},{"line_number":81,"context_line":"        with contextlib.nested("},{"line_number":82,"context_line":"            mock.patch.object(ip_lib, \u0027device_exists\u0027,"},{"line_number":83,"context_line":"                              side_effect\u003dport_found),"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FkHI%3D","line":80,"updated":"2013-01-15 21:04:57.000000000","message":"Consider using itertools.compress() from the stdlib:\n\ndelete_ports \u003d [p for p in itertools.compress(ports, port_found)]","commit_id":"12ba1ff2025f75c45e149d63913cae08515ee6fb"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":84,"context_line":"            mock.patch.object(ip_lib, \u0027IPDevice\u0027)"},{"line_number":85,"context_line":"        ) as (device_exists, ip_dev):"},{"line_number":86,"context_line":"            util.delete_quantum_ports(ports, \u0027root_helper\u0027)"},{"line_number":87,"context_line":"            self.assertEqual(device_exists.call_args_list,"},{"line_number":88,"context_line":"                             [mock.call(p) for p in ports])"},{"line_number":89,"context_line":"            ip_dev.assert_has_calls("},{"line_number":90,"context_line":"                [mock.call(\u0027tap1234\u0027, \u0027root_helper\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FkG0%3D","line":87,"updated":"2013-01-15 21:04:57.000000000","message":"Why not:\n\ndevice_exists.assert_has_calls(\n    [mock.call(p) for p in ports]\n)","commit_id":"12ba1ff2025f75c45e149d63913cae08515ee6fb"}]}
