)]}'
{"neutron/agent/linux/bridge_lib.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"4ea797c37b0f09faae39965ab057337f6edca161","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from neutron.agent.linux import utils"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class BridgeDevice(ip_lib.IPDevice):"},{"line_number":24,"context_line":"    def _brctl(self, cmd, log_fail_as_error\u003dTrue):"},{"line_number":25,"context_line":"        cmd \u003d [\u0027brctl\u0027] + cmd"},{"line_number":26,"context_line":"        if self.namespace:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a80dd14_db860e13","line":23,"updated":"2015-03-05 12:44:18.000000000","message":"is there any plan to use this for more than tests?","commit_id":"5eea448779ac2217d900be12d72b776b7a81bc54"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"c1b54af0f0aa8d2f0e25d21cc623c72bb0d0c993","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from neutron.agent.linux import utils"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class BridgeDevice(ip_lib.IPDevice):"},{"line_number":24,"context_line":"    def _brctl(self, cmd, log_fail_as_error\u003dTrue):"},{"line_number":25,"context_line":"        cmd \u003d [\u0027brctl\u0027] + cmd"},{"line_number":26,"context_line":"        if self.namespace:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a80dd14_cfd8f681","line":23,"in_reply_to":"9a80dd14_db860e13","updated":"2015-03-05 18:35:38.000000000","message":"No. But this can be utilized by plugins/linuxbridge/agent/linuxbridge_neutron_agent.py","commit_id":"5eea448779ac2217d900be12d72b776b7a81bc54"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"87f210d72ac89624ea7f26b1153c5548ab47aacf","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from neutron.agent.linux import utils"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class BridgeDevice(ip_lib.IPDevice):"},{"line_number":24,"context_line":"    def _brctl(self, cmd, log_fail_as_error\u003dTrue):"},{"line_number":25,"context_line":"        cmd \u003d [\u0027brctl\u0027] + cmd"},{"line_number":26,"context_line":"        if self.namespace:"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_bcab551d","line":23,"updated":"2015-03-10 16:08:11.000000000","message":"can we please add tests for each of the methods below?","commit_id":"c8f481d2e2361a035e0c35aa185bd0ef7d77b6ee"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"a19d37308d06a1408456b3877da15765e9606751","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from neutron.agent.linux import utils"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class BridgeDevice(ip_lib.IPDevice):"},{"line_number":24,"context_line":"    def _brctl(self, cmd, log_fail_as_error\u003dTrue):"},{"line_number":25,"context_line":"        cmd \u003d [\u0027brctl\u0027] + cmd"},{"line_number":26,"context_line":"        if self.namespace:"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_384bb05a","line":23,"in_reply_to":"9a80dd14_bcab551d","updated":"2015-03-11 18:38:44.000000000","message":"Done","commit_id":"c8f481d2e2361a035e0c35aa185bd0ef7d77b6ee"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"8e492c9d113cce7d0195d32f2b758bd2dcd82794","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from neutron.agent.linux import utils"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class BridgeDevice(ip_lib.IPDevice):"},{"line_number":24,"context_line":"    def _brctl(self, cmd, log_fail_as_error\u003dTrue):"},{"line_number":25,"context_line":"        cmd \u003d [\u0027brctl\u0027] + cmd"},{"line_number":26,"context_line":"        if self.namespace:"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a80dd14_e55a7129","line":23,"updated":"2015-03-17 12:42:02.000000000","message":"Consider depending on https://review.openstack.org/160290 or https://review.openstack.org/159852 and define a BridgeFixture[1] for kernel bridges.\n\n[1] https://review.openstack.org/#/c/159852/16/neutron/tests/common/net_helpers.py","commit_id":"5daf88fdb34877c8c3b6ce0925f5a40d045acc7c"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"11033f22d63b82159c4d64eb374b476e5adf3123","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from neutron.agent.linux import utils"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class BridgeDevice(ip_lib.IPDevice):"},{"line_number":24,"context_line":"    def _brctl(self, cmd, log_fail_as_error\u003dTrue):"},{"line_number":25,"context_line":"        cmd \u003d [\u0027brctl\u0027] + cmd"},{"line_number":26,"context_line":"        if self.namespace:"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a80dd14_c44d4ac7","line":23,"in_reply_to":"9a80dd14_e55a7129","updated":"2015-03-18 02:08:53.000000000","message":"This bridge_lib module is not test code so I don\u0027t think it is appropriate to use fixtures here. It may be possible to refactor the tests to use fixtures, but I think that can be done in a follow-up.","commit_id":"5daf88fdb34877c8c3b6ce0925f5a40d045acc7c"}],"neutron/tests/functional/agent/linux/test_iptables_firewall.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"4ea797c37b0f09faae39965ab057337f6edca161","unresolved":false,"context_lines":[{"line_number":23,"context_line":"class IptablesFirewallTestCase(base.BaseBridgeTestCase):"},{"line_number":24,"context_line":"    def setUp(self):"},{"line_number":25,"context_line":"        super(IptablesFirewallTestCase, self).setUp()"},{"line_number":26,"context_line":"        self.bridge, self.br_ns \u003d self.create_bridge()"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"        self.src_veth, self.src_br_veth \u003d self.create_veth_pairs("},{"line_number":29,"context_line":"            self.br_ns.namespace)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a80dd14_bbcb1aa4","line":26,"updated":"2015-03-05 12:44:18.000000000","message":"are self.br_ns.namespace and self.bridge.namespace always same?\nif so, why to return both?","commit_id":"5eea448779ac2217d900be12d72b776b7a81bc54"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"c1b54af0f0aa8d2f0e25d21cc623c72bb0d0c993","unresolved":false,"context_lines":[{"line_number":23,"context_line":"class IptablesFirewallTestCase(base.BaseBridgeTestCase):"},{"line_number":24,"context_line":"    def setUp(self):"},{"line_number":25,"context_line":"        super(IptablesFirewallTestCase, self).setUp()"},{"line_number":26,"context_line":"        self.bridge, self.br_ns \u003d self.create_bridge()"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"        self.src_veth, self.src_br_veth \u003d self.create_veth_pairs("},{"line_number":29,"context_line":"            self.br_ns.namespace)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a80dd14_34bd6769","line":26,"in_reply_to":"9a80dd14_bbcb1aa4","updated":"2015-03-05 18:35:38.000000000","message":"Done","commit_id":"5eea448779ac2217d900be12d72b776b7a81bc54"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"0eff949d1f3881e26eb1b951ced72484799bc46a","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    # TODO(yamahata): add tests..."},{"line_number":46,"context_line":"    # setup firewall on bridge and send packet from src_veth and observe"},{"line_number":47,"context_line":"    # if sent packeton can be observed on dst_veth"},{"line_number":48,"context_line":"    def test_firewall(self):"},{"line_number":49,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a80dd14_ac9c99c1","line":47,"range":{"start_line":47,"start_character":14,"end_line":47,"end_character":22},"updated":"2015-03-06 03:30:58.000000000","message":"packeton?","commit_id":"bd625b2b5442bf0e79c32f43101eaf33eaf51b8f"},{"author":{"_account_id":333,"name":"Isaku Yamahata","email":"isaku.yamahata@gmail.com","username":"yamahata"},"change_message_id":"a658fe519558770e6df284ed5a6cbb1ce610c04d","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    # TODO(yamahata): add tests..."},{"line_number":46,"context_line":"    # setup firewall on bridge and send packet from src_veth and observe"},{"line_number":47,"context_line":"    # if sent packeton can be observed on dst_veth"},{"line_number":48,"context_line":"    def test_firewall(self):"},{"line_number":49,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a80dd14_784d2872","line":47,"in_reply_to":"9a80dd14_ac9c99c1","updated":"2015-03-11 18:38:23.000000000","message":"Done","commit_id":"bd625b2b5442bf0e79c32f43101eaf33eaf51b8f"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"8e492c9d113cce7d0195d32f2b758bd2dcd82794","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 Intel Corporation."},{"line_number":2,"context_line":"# Copyright 2015 Isaku Yamahata \u003cisaku.yamahata at intel com\u003e"},{"line_number":3,"context_line":"#                               \u003cisaku.yamahata at gmail com\u003e"},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a80dd14_82160b57","line":2,"updated":"2015-03-17 12:42:02.000000000","message":"Not sure you should add author copyrights","commit_id":"5daf88fdb34877c8c3b6ce0925f5a40d045acc7c"}]}
