)]}'
{"nova/network/linux_net.py":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"d74dac56bf17067e86c1dce50bef2eba93d0fc01","unresolved":false,"context_lines":[{"line_number":1421,"context_line":"        utils.execute(\u0027fp-vdev\u0027, \u0027add\u0027, dev, \u0027--sockpath\u0027, sockpath,"},{"line_number":1422,"context_line":"                      \u0027--sockmode\u0027, sockmode, run_as_root\u003dTrue)"},{"line_number":1423,"context_line":"    _set_device_mtu(dev)"},{"line_number":1424,"context_line":"    utils.execute(\u0027ip\u0027, \u0027link\u0027, \u0027set\u0027, dev, \u0027up\u0027, run_as_root\u003dTrue,"},{"line_number":1425,"context_line":"                  check_exit_code\u003d[0, 2, 254])"},{"line_number":1426,"context_line":""},{"line_number":1427,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba8a016a_1c38dd9f","line":1424,"updated":"2015-11-17 11:12:14.000000000","message":"shouldn\u0027t these above 2 lines be indented in?","commit_id":"5e32fc1cef1bce71b6e18d747421e4cf420183fe"},{"author":{"_account_id":13869,"name":"Maxime Leroy","email":"maxime.leroy@6wind.com","username":"mleroy"},"change_message_id":"c040e4e2473a27ff5f944b66e539ddb5f191e031","unresolved":false,"context_lines":[{"line_number":1421,"context_line":"        utils.execute(\u0027fp-vdev\u0027, \u0027add\u0027, dev, \u0027--sockpath\u0027, sockpath,"},{"line_number":1422,"context_line":"                      \u0027--sockmode\u0027, sockmode, run_as_root\u003dTrue)"},{"line_number":1423,"context_line":"    _set_device_mtu(dev)"},{"line_number":1424,"context_line":"    utils.execute(\u0027ip\u0027, \u0027link\u0027, \u0027set\u0027, dev, \u0027up\u0027, run_as_root\u003dTrue,"},{"line_number":1425,"context_line":"                  check_exit_code\u003d[0, 2, 254])"},{"line_number":1426,"context_line":""},{"line_number":1427,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba8a016a_45868566","line":1424,"in_reply_to":"ba8a016a_1c38dd9f","updated":"2015-11-17 12:55:22.000000000","message":"Yes. Thanks","commit_id":"5e32fc1cef1bce71b6e18d747421e4cf420183fe"},{"author":{"_account_id":16321,"name":"Samuel Gauthier","email":"samuel.gauthier@6wind.com","username":"samuel.gauthier"},"change_message_id":"fc79917a396a9b3e0b026bbba4e5ce9e8c9d75b9","unresolved":false,"context_lines":[{"line_number":1416,"context_line":"                      check_exit_code\u003d[0, 2, 254])"},{"line_number":1417,"context_line":""},{"line_number":1418,"context_line":""},{"line_number":1419,"context_line":"def create_fp_vif_port(dev, sockpath, sockmode):"},{"line_number":1420,"context_line":"    if not device_exists(dev):"},{"line_number":1421,"context_line":"        utils.execute(\u0027fp-vdev\u0027, \u0027add\u0027, dev, \u0027--sockpath\u0027, sockpath,"},{"line_number":1422,"context_line":"                      \u0027--sockmode\u0027, sockmode, run_as_root\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a8ffd7b_b795b033","line":1419,"updated":"2015-11-27 13:38:14.000000000","message":"How about adding an equivalent for port deletion here, like delete_fp_vif_port?","commit_id":"15c3d0fd012120d85bdcd71e78bc870882cd78bf"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"12fdbf2b18251b4403785797640318277fc90458","unresolved":false,"context_lines":[{"line_number":1422,"context_line":"                      \u0027--sockmode\u0027, sockmode, run_as_root\u003dTrue)"},{"line_number":1423,"context_line":"        _set_device_mtu(dev)"},{"line_number":1424,"context_line":"        utils.execute(\u0027ip\u0027, \u0027link\u0027, \u0027set\u0027, dev, \u0027up\u0027, run_as_root\u003dTrue,"},{"line_number":1425,"context_line":"                    check_exit_code\u003d[0, 2, 254])"},{"line_number":1426,"context_line":""},{"line_number":1427,"context_line":""},{"line_number":1428,"context_line":"def delete_fp_dev(dev):"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba63e191_c1c4d393","line":1425,"updated":"2016-01-19 02:27:02.000000000","message":"nit: alignment","commit_id":"1bf6a8760f0ef226dba927b62d4354e248b984de"}],"nova/tests/unit/virt/libvirt/test_vif.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"757e4b9c42757099508a2ab7ab6854c0569453d9","unresolved":false,"context_lines":[{"line_number":1303,"context_line":"            create_fp_vif_port):"},{"line_number":1304,"context_line":"            d \u003d vif.LibvirtGenericVIFDriver()"},{"line_number":1305,"context_line":"            d.plug_vhostuser(self.instance, self.vif_vhostuser_fp)"},{"line_number":1306,"context_line":"            create_fp_vif_port.assert_has_calls(calls[\u0027create_fp_vif_port\u0027])"},{"line_number":1307,"context_line":""},{"line_number":1308,"context_line":"    def test_vhostuser_fp_unplug(self):"},{"line_number":1309,"context_line":"        d \u003d vif.LibvirtGenericVIFDriver()"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_0f3d5adc","line":1306,"updated":"2015-11-20 00:01:17.000000000","message":"Why not just do:\n\n create_fp_vif_port.assert_has_calls([mock.call(\u0027tap-xxx-yyy-zzz\u0027,\n                                          \u0027/tmp/usv-xxx-yyy-zzz\u0027, \u0027client\u0027)])\n\nAnd then you don\u0027t need lines 1297-1300 at all.","commit_id":"a3bbfa173543f1e768be3a31a72039cbf376d831"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"757e4b9c42757099508a2ab7ab6854c0569453d9","unresolved":false,"context_lines":[{"line_number":1307,"context_line":""},{"line_number":1308,"context_line":"    def test_vhostuser_fp_unplug(self):"},{"line_number":1309,"context_line":"        d \u003d vif.LibvirtGenericVIFDriver()"},{"line_number":1310,"context_line":"        d.unplug_vhostuser(None, self.vif_vhostuser_fp)"},{"line_number":1311,"context_line":""},{"line_number":1312,"context_line":"    def test_vhostuser_ovs_plug(self):"},{"line_number":1313,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_2f1b7e82","line":1310,"updated":"2015-11-20 00:01:17.000000000","message":"Erm, I don\u0027t think this is testing anything :) Can you please assert that at least the linux_net.delete_net_dev() function is called?","commit_id":"a3bbfa173543f1e768be3a31a72039cbf376d831"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"12fdbf2b18251b4403785797640318277fc90458","unresolved":false,"context_lines":[{"line_number":1231,"context_line":"        d \u003d vif.LibvirtGenericVIFDriver()"},{"line_number":1232,"context_line":"        d.plug_vhostuser(self.instance, self.vif_vhostuser_fp)"},{"line_number":1233,"context_line":"        mock_create_fp_dev.assert_has_calls("},{"line_number":1234,"context_line":"            [mock.call(\u0027tap-xxx-yyy-zzz\u0027, \u0027/tmp/usv-xxx-yyy-zzz\u0027, \u0027client\u0027)])"},{"line_number":1235,"context_line":""},{"line_number":1236,"context_line":"    @mock.patch.object(linux_net, \u0027delete_fp_dev\u0027)"},{"line_number":1237,"context_line":"    def test_vhostuser_fp_unplug(self, mock_delete_fp_dev):"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba63e191_81bedbfd","line":1234,"updated":"2016-01-19 02:27:02.000000000","message":"nit: would be better to just do:\n\n mock_create_fp_dev.assert_called_once_with(\u0027tap-xxx-yyy-zzz\u0027,\n                                            \u0027/tmp/usv-xxx-yyy-zzz\u0027,\n                                            \u0027client\u0027)","commit_id":"1bf6a8760f0ef226dba927b62d4354e248b984de"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"12fdbf2b18251b4403785797640318277fc90458","unresolved":false,"context_lines":[{"line_number":1237,"context_line":"    def test_vhostuser_fp_unplug(self, mock_delete_fp_dev):"},{"line_number":1238,"context_line":"        d \u003d vif.LibvirtGenericVIFDriver()"},{"line_number":1239,"context_line":"        d.unplug_vhostuser(None, self.vif_vhostuser_fp)"},{"line_number":1240,"context_line":"        mock_delete_fp_dev.assert_has_calls([mock.call(\u0027tap-xxx-yyy-zzz\u0027)])"},{"line_number":1241,"context_line":""},{"line_number":1242,"context_line":"    def test_vhostuser_ovs_plug(self):"},{"line_number":1243,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba63e191_a1bbdf0d","line":1240,"updated":"2016-01-19 02:27:02.000000000","message":"mock_delete_fp_dev.assert_called_once_with(\u0027tap-xxx-yyy-zzz\u0027)","commit_id":"1bf6a8760f0ef226dba927b62d4354e248b984de"}],"nova/virt/libvirt/vif.py":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"d74dac56bf17067e86c1dce50bef2eba93d0fc01","unresolved":false,"context_lines":[{"line_number":690,"context_line":"        ovs_plug \u003d vif[\u0027details\u0027].get("},{"line_number":691,"context_line":"                                network_model.VIF_DETAILS_VHOSTUSER_OVS_PLUG,"},{"line_number":692,"context_line":"                                False)"},{"line_number":693,"context_line":"        if fp_plug:"},{"line_number":694,"context_line":"            self.plug_vhostuser_fp(instance, vif)"},{"line_number":695,"context_line":"        elif ovs_plug:"},{"line_number":696,"context_line":"            self.plug_vhostuser_ovs(instance, vif)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba8a016a_bc1c3114","line":693,"updated":"2015-11-17 11:12:14.000000000","message":"What if for some strange reason both values will be True?","commit_id":"5e32fc1cef1bce71b6e18d747421e4cf420183fe"},{"author":{"_account_id":13869,"name":"Maxime Leroy","email":"maxime.leroy@6wind.com","username":"mleroy"},"change_message_id":"c040e4e2473a27ff5f944b66e539ddb5f191e031","unresolved":false,"context_lines":[{"line_number":690,"context_line":"        ovs_plug \u003d vif[\u0027details\u0027].get("},{"line_number":691,"context_line":"                                network_model.VIF_DETAILS_VHOSTUSER_OVS_PLUG,"},{"line_number":692,"context_line":"                                False)"},{"line_number":693,"context_line":"        if fp_plug:"},{"line_number":694,"context_line":"            self.plug_vhostuser_fp(instance, vif)"},{"line_number":695,"context_line":"        elif ovs_plug:"},{"line_number":696,"context_line":"            self.plug_vhostuser_ovs(instance, vif)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba8a016a_fd2393a5","line":693,"in_reply_to":"ba8a016a_bc1c3114","updated":"2015-11-17 12:55:22.000000000","message":"This case is managed in the next commit: https://review.openstack.org/#/c/237680/","commit_id":"5e32fc1cef1bce71b6e18d747421e4cf420183fe"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"12fdbf2b18251b4403785797640318277fc90458","unresolved":false,"context_lines":[{"line_number":397,"context_line":"        return mode, sock_path"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"    def get_config_vhostuser(self, instance, vif, image_meta,"},{"line_number":400,"context_line":"                            inst_type, virt_type, host):"},{"line_number":401,"context_line":"        conf \u003d self.get_base_config(instance, vif, image_meta,"},{"line_number":402,"context_line":"                                    inst_type, virt_type)"},{"line_number":403,"context_line":"        mode, sock_path \u003d self._get_vhostuser_settings(vif)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba63e191_e1c1d781","line":400,"updated":"2016-01-19 02:27:02.000000000","message":"nit: alignment","commit_id":"1bf6a8760f0ef226dba927b62d4354e248b984de"}]}
