)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add tests for LinuxBridge and OVS agents"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Fixes bug 988067"},{"line_number":10,"context_line":"Fixes bug 1173463"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Patch introduces some more unit tests for LinuxBridge"},{"line_number":13,"context_line":"and OVS agents. It also refactors some existing tests"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAAOn%2F%2FsRc%3D","line":10,"updated":"2013-04-28 04:55:44.000000000","message":"please remove this bug desc - it was treated in https://review.openstack.org/#/c/27642/","commit_id":"c2ac51681a2186c1922f785e9e3edb96cae70111"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"9313c129976a535a08a518c62aa480244a771e05","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add tests for LinuxBridge and OVS agents"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Fixes bug 988067"},{"line_number":10,"context_line":"Fixes bug 1173463"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Patch introduces some more unit tests for LinuxBridge"},{"line_number":13,"context_line":"and OVS agents. It also refactors some existing tests"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAAOn%2F%2FsRQ%3D","line":10,"in_reply_to":"AAAAOn%2F%2FsRc%3D","updated":"2013-04-28 05:00:00.000000000","message":"sure. I plan to reupload the patch and will change commit message once 27642 get merged","commit_id":"c2ac51681a2186c1922f785e9e3edb96cae70111"}],"quantum/plugins/openvswitch/agent/ovs_quantum_agent.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":473,"context_line":"            return"},{"line_number":474,"context_line":"        lvm \u003d self.local_vlan_map[net_uuid]"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"        if vif_id in lvm.vif_ports:"},{"line_number":477,"context_line":"            if lvm.network_type \u003d\u003d \u0027gre\u0027 and self.enable_tunneling:"},{"line_number":478,"context_line":"                # remove inbound unicast flow"},{"line_number":479,"context_line":"                self.tun_br.delete_flows(tun_id\u003dlvm.segmentation_id,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2FsdI%3D","line":476,"updated":"2013-04-27 17:38:11.000000000","message":"i would prefer that this is in a separate task so that we can back port.","commit_id":"c2ac51681a2186c1922f785e9e3edb96cae70111"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":473,"context_line":"            return"},{"line_number":474,"context_line":"        lvm \u003d self.local_vlan_map[net_uuid]"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"        if vif_id in lvm.vif_ports:"},{"line_number":477,"context_line":"            if lvm.network_type \u003d\u003d \u0027gre\u0027 and self.enable_tunneling:"},{"line_number":478,"context_line":"                # remove inbound unicast flow"},{"line_number":479,"context_line":"                self.tun_br.delete_flows(tun_id\u003dlvm.segmentation_id,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2FsRY%3D","line":476,"in_reply_to":"AAAAOn%2F%2FsZ0%3D","updated":"2013-04-28 04:55:44.000000000","message":"thanks!","commit_id":"c2ac51681a2186c1922f785e9e3edb96cae70111"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"9313c129976a535a08a518c62aa480244a771e05","unresolved":false,"context_lines":[{"line_number":473,"context_line":"            return"},{"line_number":474,"context_line":"        lvm \u003d self.local_vlan_map[net_uuid]"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"        if vif_id in lvm.vif_ports:"},{"line_number":477,"context_line":"            if lvm.network_type \u003d\u003d \u0027gre\u0027 and self.enable_tunneling:"},{"line_number":478,"context_line":"                # remove inbound unicast flow"},{"line_number":479,"context_line":"                self.tun_br.delete_flows(tun_id\u003dlvm.segmentation_id,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2FsZ0%3D","line":476,"in_reply_to":"AAAAOn%2F%2FsdI%3D","updated":"2013-04-27 22:04:13.000000000","message":"Ok, I have put separate patch on review (without corresponding tests, though)\nOnce it\u0027s merged I\u0027ll update this patch.","commit_id":"c2ac51681a2186c1922f785e9e3edb96cae70111"}],"quantum/tests/unit/linuxbridge/test_lb_quantum_agent.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"ea80299e62dcd1a7da5591bf7a70ab7a50649158","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from quantum.agent.linux import ip_lib"},{"line_number":25,"context_line":"from quantum.agent.linux import utils"},{"line_number":26,"context_line":"from quantum.plugins.linuxbridge.agent import linuxbridge_quantum_agent"},{"line_number":27,"context_line":"from quantum.plugins.linuxbridge.agent.linuxbridge_quantum_agent import ("},{"line_number":28,"context_line":"    LinuxBridgeRpcCallbacks, LinuxBridgeManager"},{"line_number":29,"context_line":")"},{"line_number":30,"context_line":"from quantum.plugins.linuxbridge.common import constants as lconst"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2Fv%2F8%3D","line":27,"updated":"2013-03-29 08:30:05.000000000","message":"linuxbridge_quantum_agent module is already imported, do you really need additional object level import here? If so than you can us it on #130 :)","commit_id":"ffbb1f0a4935a85fa33398c6109ef55df30c7d9b"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"9313c129976a535a08a518c62aa480244a771e05","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from quantum.agent.linux import ip_lib"},{"line_number":25,"context_line":"from quantum.agent.linux import utils"},{"line_number":26,"context_line":"from quantum.plugins.linuxbridge.agent import linuxbridge_quantum_agent"},{"line_number":27,"context_line":"from quantum.plugins.linuxbridge.agent.linuxbridge_quantum_agent import ("},{"line_number":28,"context_line":"    LinuxBridgeRpcCallbacks, LinuxBridgeManager"},{"line_number":29,"context_line":")"},{"line_number":30,"context_line":"from quantum.plugins.linuxbridge.common import constants as lconst"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2Fv4E%3D","line":27,"in_reply_to":"AAAAOH%2F%2Fv%2F8%3D","updated":"2013-03-29 15:55:26.000000000","message":"Done","commit_id":"ffbb1f0a4935a85fa33398c6109ef55df30c7d9b"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"ea80299e62dcd1a7da5591bf7a70ab7a50649158","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        with mock.patch.object(utils, \u0027execute\u0027) as execute_fn:"},{"line_number":135,"context_line":"            self.assertTrue(self.lbm.device_exists(\"eth0\"))"},{"line_number":136,"context_line":"            execute_fn.side_effect \u003d RuntimeError()"},{"line_number":137,"context_line":"            self.assertTrue(not self.lbm.device_exists(\"eth0\"))"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def test_interface_exists_on_bridge(self):"},{"line_number":140,"context_line":"        with mock.patch.object(os, \u0027listdir\u0027) as listdir_fn:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2Fv%2F0%3D","line":137,"updated":"2013-03-29 08:30:05.000000000","message":"assertFalse?","commit_id":"ffbb1f0a4935a85fa33398c6109ef55df30c7d9b"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"9313c129976a535a08a518c62aa480244a771e05","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        with mock.patch.object(utils, \u0027execute\u0027) as execute_fn:"},{"line_number":135,"context_line":"            self.assertTrue(self.lbm.device_exists(\"eth0\"))"},{"line_number":136,"context_line":"            execute_fn.side_effect \u003d RuntimeError()"},{"line_number":137,"context_line":"            self.assertTrue(not self.lbm.device_exists(\"eth0\"))"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def test_interface_exists_on_bridge(self):"},{"line_number":140,"context_line":"        with mock.patch.object(os, \u0027listdir\u0027) as listdir_fn:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2Fv38%3D","line":137,"in_reply_to":"AAAAOH%2F%2Fv%2F0%3D","updated":"2013-03-29 15:55:26.000000000","message":"Done","commit_id":"ffbb1f0a4935a85fa33398c6109ef55df30c7d9b"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"ea80299e62dcd1a7da5591bf7a70ab7a50649158","unresolved":false,"context_lines":[{"line_number":142,"context_line":"            self.assertTrue("},{"line_number":143,"context_line":"                self.lbm.interface_exists_on_bridge(\"br-int\", \"abc\")"},{"line_number":144,"context_line":"            )"},{"line_number":145,"context_line":"            self.assertTrue("},{"line_number":146,"context_line":"                not self.lbm.interface_exists_on_bridge(\"br-int\", \"abd\")"},{"line_number":147,"context_line":"            )"},{"line_number":148,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2Fv%2Fs%3D","line":145,"updated":"2013-03-29 08:30:05.000000000","message":"ditto","commit_id":"ffbb1f0a4935a85fa33398c6109ef55df30c7d9b"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"9313c129976a535a08a518c62aa480244a771e05","unresolved":false,"context_lines":[{"line_number":142,"context_line":"            self.assertTrue("},{"line_number":143,"context_line":"                self.lbm.interface_exists_on_bridge(\"br-int\", \"abc\")"},{"line_number":144,"context_line":"            )"},{"line_number":145,"context_line":"            self.assertTrue("},{"line_number":146,"context_line":"                not self.lbm.interface_exists_on_bridge(\"br-int\", \"abd\")"},{"line_number":147,"context_line":"            )"},{"line_number":148,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2Fv34%3D","line":145,"in_reply_to":"AAAAOH%2F%2Fv%2Fs%3D","updated":"2013-03-29 15:55:26.000000000","message":"Done","commit_id":"ffbb1f0a4935a85fa33398c6109ef55df30c7d9b"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"ea80299e62dcd1a7da5591bf7a70ab7a50649158","unresolved":false,"context_lines":[{"line_number":303,"context_line":"            self.assertTrue(delgw_fn.was_called)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    def test_ensure_bridge(self):"},{"line_number":306,"context_line":"        with mock.patch.object(self.lbm, \u0027device_exists\u0027) as de_fn:"},{"line_number":307,"context_line":"            de_fn.return_value \u003d False"},{"line_number":308,"context_line":"            with mock.patch.object(utils, \u0027execute\u0027) as exec_fn:"},{"line_number":309,"context_line":"                exec_fn.return_value \u003d False"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2Fv%2Fg%3D","line":306,"updated":"2013-03-29 08:30:05.000000000","message":"with contextlib.nested(...)?","commit_id":"ffbb1f0a4935a85fa33398c6109ef55df30c7d9b"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"9313c129976a535a08a518c62aa480244a771e05","unresolved":false,"context_lines":[{"line_number":303,"context_line":"            self.assertTrue(delgw_fn.was_called)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    def test_ensure_bridge(self):"},{"line_number":306,"context_line":"        with mock.patch.object(self.lbm, \u0027device_exists\u0027) as de_fn:"},{"line_number":307,"context_line":"            de_fn.return_value \u003d False"},{"line_number":308,"context_line":"            with mock.patch.object(utils, \u0027execute\u0027) as exec_fn:"},{"line_number":309,"context_line":"                exec_fn.return_value \u003d False"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2Fv30%3D","line":306,"in_reply_to":"AAAAOH%2F%2Fv%2Fg%3D","updated":"2013-03-29 15:55:26.000000000","message":"Done","commit_id":"ffbb1f0a4935a85fa33398c6109ef55df30c7d9b"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"ea80299e62dcd1a7da5591bf7a70ab7a50649158","unresolved":false,"context_lines":[{"line_number":449,"context_line":"    def setUp(self):"},{"line_number":450,"context_line":"        super(TestLinuxBridgeRpcCallbacks, self).setUp()"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"        class FakeLBAgent(object):"},{"line_number":453,"context_line":"            def __init__(self):"},{"line_number":454,"context_line":"                self.agent_id \u003d 1"},{"line_number":455,"context_line":"                self.br_mgr \u003d LinuxBridgeManager({\u0027physnet1\u0027: \u0027eth1\u0027},"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2Fv%2FU%3D","line":452,"updated":"2013-03-29 08:30:05.000000000","message":"I would suggest to move class definition out of the test case setUp","commit_id":"ffbb1f0a4935a85fa33398c6109ef55df30c7d9b"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"9313c129976a535a08a518c62aa480244a771e05","unresolved":false,"context_lines":[{"line_number":449,"context_line":"    def setUp(self):"},{"line_number":450,"context_line":"        super(TestLinuxBridgeRpcCallbacks, self).setUp()"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"        class FakeLBAgent(object):"},{"line_number":453,"context_line":"            def __init__(self):"},{"line_number":454,"context_line":"                self.agent_id \u003d 1"},{"line_number":455,"context_line":"                self.br_mgr \u003d LinuxBridgeManager({\u0027physnet1\u0027: \u0027eth1\u0027},"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2Fv3o%3D","line":452,"in_reply_to":"AAAAOH%2F%2Fv%2FU%3D","updated":"2013-03-29 15:55:26.000000000","message":"disagree, it\u0027s utility class which doesn\u0027t make much sense out of test scope.","commit_id":"ffbb1f0a4935a85fa33398c6109ef55df30c7d9b"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"ea80299e62dcd1a7da5591bf7a70ab7a50649158","unresolved":false,"context_lines":[{"line_number":454,"context_line":"                self.agent_id \u003d 1"},{"line_number":455,"context_line":"                self.br_mgr \u003d LinuxBridgeManager({\u0027physnet1\u0027: \u0027eth1\u0027},"},{"line_number":456,"context_line":"                                                 cfg.CONF.AGENT.root_helper)"},{"line_number":457,"context_line":"                #self.plugin_rpc \u003d object()"},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"        self.lb_rpc \u003d LinuxBridgeRpcCallbacks("},{"line_number":460,"context_line":"            object(),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2Fv%2Fc%3D","line":457,"updated":"2013-03-29 08:30:05.000000000","message":"please remove if unused","commit_id":"ffbb1f0a4935a85fa33398c6109ef55df30c7d9b"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"9313c129976a535a08a518c62aa480244a771e05","unresolved":false,"context_lines":[{"line_number":454,"context_line":"                self.agent_id \u003d 1"},{"line_number":455,"context_line":"                self.br_mgr \u003d LinuxBridgeManager({\u0027physnet1\u0027: \u0027eth1\u0027},"},{"line_number":456,"context_line":"                                                 cfg.CONF.AGENT.root_helper)"},{"line_number":457,"context_line":"                #self.plugin_rpc \u003d object()"},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"        self.lb_rpc \u003d LinuxBridgeRpcCallbacks("},{"line_number":460,"context_line":"            object(),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2Fv%2B8%3D","line":457,"in_reply_to":"AAAAOH%2F%2Fv%2Fc%3D","updated":"2013-03-29 15:55:26.000000000","message":"Done","commit_id":"ffbb1f0a4935a85fa33398c6109ef55df30c7d9b"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"ea80299e62dcd1a7da5591bf7a70ab7a50649158","unresolved":false,"context_lines":[{"line_number":489,"context_line":"        ) as (get_tap_fn, udev_fn, getbr_fn, remif_fn,"},{"line_number":490,"context_line":"              addif_fn, rpc_obj, reffw_fn):"},{"line_number":491,"context_line":"            rpc_obj.update_device_up \u003d mock.MagicMock()"},{"line_number":492,"context_line":"            rpc_obj.update_device_down \u003d mock.MagicMock()"},{"line_number":493,"context_line":""},{"line_number":494,"context_line":"            get_tap_fn.return_value \u003d \"tap123\""},{"line_number":495,"context_line":"            udev_fn.return_value \u003d [\"tap123\", \"tap124\"]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2Fv%2FI%3D","line":492,"updated":"2013-03-29 08:30:05.000000000","message":"Won\u0027t it be a magic mock by default?","commit_id":"ffbb1f0a4935a85fa33398c6109ef55df30c7d9b"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"9313c129976a535a08a518c62aa480244a771e05","unresolved":false,"context_lines":[{"line_number":489,"context_line":"        ) as (get_tap_fn, udev_fn, getbr_fn, remif_fn,"},{"line_number":490,"context_line":"              addif_fn, rpc_obj, reffw_fn):"},{"line_number":491,"context_line":"            rpc_obj.update_device_up \u003d mock.MagicMock()"},{"line_number":492,"context_line":"            rpc_obj.update_device_down \u003d mock.MagicMock()"},{"line_number":493,"context_line":""},{"line_number":494,"context_line":"            get_tap_fn.return_value \u003d \"tap123\""},{"line_number":495,"context_line":"            udev_fn.return_value \u003d [\"tap123\", \"tap124\"]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2Fv3c%3D","line":492,"in_reply_to":"AAAAOH%2F%2Fv%2FI%3D","updated":"2013-03-29 15:55:26.000000000","message":"Done","commit_id":"ffbb1f0a4935a85fa33398c6109ef55df30c7d9b"}],"quantum/tests/unit/openvswitch/test_ovs_quantum_agent.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":21,"context_line":"from oslo.config import cfg"},{"line_number":22,"context_line":"import testtools"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from quantum.agent.linux import ip_lib, ovs_lib"},{"line_number":25,"context_line":"from quantum.plugins.openvswitch.agent import ovs_quantum_agent"},{"line_number":26,"context_line":"from quantum.tests import base"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2Ftjs%3D","line":24,"updated":"2013-04-26 16:49:07.000000000","message":"Could you use \"one import per line\" style? Almost all modules in quantum follow this style.","commit_id":"4f0a68309a39f3b1caeb6f38d439d6f214c2d358"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"9313c129976a535a08a518c62aa480244a771e05","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from oslo.config import cfg"},{"line_number":22,"context_line":"import testtools"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from quantum.agent.linux import ip_lib, ovs_lib"},{"line_number":25,"context_line":"from quantum.plugins.openvswitch.agent import ovs_quantum_agent"},{"line_number":26,"context_line":"from quantum.tests import base"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2FtQQ%3D","line":24,"in_reply_to":"AAAAOn%2F%2Ftjs%3D","updated":"2013-04-27 04:15:13.000000000","message":"Done","commit_id":"4f0a68309a39f3b1caeb6f38d439d6f214c2d358"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":124,"context_line":"            mock.patch.object(self.agent.int_br, \u0027get_vif_port_by_id\u0027,"},{"line_number":125,"context_line":"                              return_value\u003dport)"},{"line_number":126,"context_line":"        ) as (get_dev_fn, get_vif_func):"},{"line_number":127,"context_line":"            with mock.patch.object(self.agent, func_name) as func:"},{"line_number":128,"context_line":"                self.assertFalse(self.agent.treat_devices_added([{}]))"},{"line_number":129,"context_line":"        return func.called"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2Fthk%3D","line":127,"updated":"2013-04-26 16:49:07.000000000","message":"Can\u0027t we merge this mock.patch into nested?\n\nget_dev_fn, get_vif_func, func seem not to be used.","commit_id":"4f0a68309a39f3b1caeb6f38d439d6f214c2d358"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"9313c129976a535a08a518c62aa480244a771e05","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            mock.patch.object(self.agent.int_br, \u0027get_vif_port_by_id\u0027,"},{"line_number":125,"context_line":"                              return_value\u003dport)"},{"line_number":126,"context_line":"        ) as (get_dev_fn, get_vif_func):"},{"line_number":127,"context_line":"            with mock.patch.object(self.agent, func_name) as func:"},{"line_number":128,"context_line":"                self.assertFalse(self.agent.treat_devices_added([{}]))"},{"line_number":129,"context_line":"        return func.called"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2FtQM%3D","line":127,"in_reply_to":"AAAAOn%2F%2Fthk%3D","updated":"2013-04-27 04:15:13.000000000","message":"Done","commit_id":"4f0a68309a39f3b1caeb6f38d439d6f214c2d358"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":278,"context_line":""},{"line_number":279,"context_line":"            lvm.vif_ports \u003d {}"},{"line_number":280,"context_line":"            self.agent.port_unbound(\"vif1\", \"netuid12345\")"},{"line_number":281,"context_line":"            self.assertTrue(reclvl_fn.called)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"            self.agent.port_unbound(\"vif3\", \"netuid12345\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2Ftfo%3D","line":281,"updated":"2013-04-26 16:49:07.000000000","message":"I think reclvl_fn.called is already True at L.277. Don\u0027t we need to check call_count here?","commit_id":"4f0a68309a39f3b1caeb6f38d439d6f214c2d358"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"9313c129976a535a08a518c62aa480244a771e05","unresolved":false,"context_lines":[{"line_number":278,"context_line":""},{"line_number":279,"context_line":"            lvm.vif_ports \u003d {}"},{"line_number":280,"context_line":"            self.agent.port_unbound(\"vif1\", \"netuid12345\")"},{"line_number":281,"context_line":"            self.assertTrue(reclvl_fn.called)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"            self.agent.port_unbound(\"vif3\", \"netuid12345\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2Fsx8%3D","line":281,"in_reply_to":"AAAAOn%2F%2Ftfo%3D","updated":"2013-04-27 04:15:13.000000000","message":"Done","commit_id":"4f0a68309a39f3b1caeb6f38d439d6f214c2d358"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":280,"context_line":"            self.agent.port_unbound(\"vif1\", \"netuid12345\")"},{"line_number":281,"context_line":"            self.assertTrue(reclvl_fn.called)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"            self.agent.port_unbound(\"vif3\", \"netuid12345\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2Ftfg%3D","line":283,"updated":"2013-04-26 16:49:07.000000000","message":"Don\u0027t we need any check after this port_unbound?","commit_id":"4f0a68309a39f3b1caeb6f38d439d6f214c2d358"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"9313c129976a535a08a518c62aa480244a771e05","unresolved":false,"context_lines":[{"line_number":280,"context_line":"            self.agent.port_unbound(\"vif1\", \"netuid12345\")"},{"line_number":281,"context_line":"            self.assertTrue(reclvl_fn.called)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"            self.agent.port_unbound(\"vif3\", \"netuid12345\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOn%2F%2Fsx4%3D","line":283,"in_reply_to":"AAAAOn%2F%2Ftfg%3D","updated":"2013-04-27 04:15:13.000000000","message":"Done","commit_id":"4f0a68309a39f3b1caeb6f38d439d6f214c2d358"}]}
