)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b3358bcabe8b55528d7a4d575534b1ced5589736","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Michael Still \u003cmikal@stillhq.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-04-03 21:51:56 +1000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Move create_tap_dev to the new utility method."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Move another generally useful utility method out of nova-net to"},{"line_number":10,"context_line":"somewhere more generic."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"bf659307_729d5c08","line":7,"range":{"start_line":7,"start_character":39,"end_line":7,"end_character":45},"updated":"2018-04-03 15:17:44.000000000","message":"module","commit_id":"4e92820517b4469fcc5acc7e0de505cf88aac4c8"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d3aa8421484864dd483ea5827f4151910fd0f0de","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Michael Still \u003cmikal@stillhq.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-04-16 14:34:16 +1000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Move create_tap_dev to the new utility method."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Move another generally useful utility method out of nova-net to"},{"line_number":10,"context_line":"somewhere more generic."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9f6a8fd7_58984769","line":7,"range":{"start_line":7,"start_character":39,"end_line":7,"end_character":45},"updated":"2018-04-16 14:46:39.000000000","message":"module","commit_id":"2d041c5b8a93981fe048f9a35afca444b739c502"}],"nova/network/utils.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1842e8a1e35989dc1b89436e6859501897039a45","unresolved":false,"context_lines":[{"line_number":15,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"\"\"\"Utility methods for linux networking.\"\"\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import os"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_1242e0ab","line":18,"range":{"start_line":18,"start_character":23,"end_line":18,"end_character":28},"updated":"2018-04-03 15:15:37.000000000","message":"This","commit_id":"4e92820517b4469fcc5acc7e0de505cf88aac4c8"}],"nova/tests/unit/network/test_linux_net.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"f1705322916640566a505d25c33d461eab5dba84","unresolved":false,"context_lines":[{"line_number":1337,"context_line":"                          linux_net.LinuxBridgeInterfaceDriver.remove_bridge,"},{"line_number":1338,"context_line":"                          \u0027fake-bridge\u0027)"},{"line_number":1339,"context_line":""},{"line_number":1340,"context_line":"    @mock.patch(\u0027nova.utils.execute\u0027)"},{"line_number":1341,"context_line":"    def test_create_tap_dev(self, mock_execute):"},{"line_number":1342,"context_line":"        linux_net.create_tap_dev(\u0027tap42\u0027)"},{"line_number":1343,"context_line":""},{"line_number":1344,"context_line":"        mock_execute.assert_has_calls(["},{"line_number":1345,"context_line":"            mock.call(\u0027ip\u0027, \u0027tuntap\u0027, \u0027add\u0027, \u0027tap42\u0027, \u0027mode\u0027, \u0027tap\u0027,"},{"line_number":1346,"context_line":"                      run_as_root\u003dTrue, check_exit_code\u003d[0, 2, 254]),"},{"line_number":1347,"context_line":"            mock.call(\u0027ip\u0027, \u0027link\u0027, \u0027set\u0027, \u0027tap42\u0027, \u0027up\u0027,"},{"line_number":1348,"context_line":"                      run_as_root\u003dTrue, check_exit_code\u003d[0, 2, 254])"},{"line_number":1349,"context_line":"        ])"},{"line_number":1350,"context_line":""},{"line_number":1351,"context_line":"    @mock.patch(\u0027os.path.exists\u0027, return_value\u003dTrue)"},{"line_number":1352,"context_line":"    @mock.patch(\u0027nova.utils.execute\u0027)"},{"line_number":1353,"context_line":"    def test_create_tap_skipped_when_exists(self, mock_execute, mock_exists):"},{"line_number":1354,"context_line":"        linux_net.create_tap_dev(\u0027tap42\u0027)"},{"line_number":1355,"context_line":""},{"line_number":1356,"context_line":"        mock_exists.assert_called_once_with(\u0027/sys/class/net/tap42\u0027)"},{"line_number":1357,"context_line":"        mock_execute.assert_not_called()"},{"line_number":1358,"context_line":""},{"line_number":1359,"context_line":"    @mock.patch(\u0027nova.utils.execute\u0027)"},{"line_number":1360,"context_line":"    def test_create_tap_dev_mac(self, mock_execute):"},{"line_number":1361,"context_line":"        linux_net.create_tap_dev(\u0027tap42\u0027, \u002700:11:22:33:44:55\u0027)"},{"line_number":1362,"context_line":""},{"line_number":1363,"context_line":"        mock_execute.assert_has_calls(["},{"line_number":1364,"context_line":"            mock.call(\u0027ip\u0027, \u0027tuntap\u0027, \u0027add\u0027, \u0027tap42\u0027, \u0027mode\u0027, \u0027tap\u0027,"},{"line_number":1365,"context_line":"                      run_as_root\u003dTrue, check_exit_code\u003d[0, 2, 254]),"},{"line_number":1366,"context_line":"            mock.call(\u0027ip\u0027, \u0027link\u0027, \u0027set\u0027, \u0027tap42\u0027,"},{"line_number":1367,"context_line":"                      \u0027address\u0027, \u002700:11:22:33:44:55\u0027,"},{"line_number":1368,"context_line":"                      run_as_root\u003dTrue, check_exit_code\u003d[0, 2, 254]),"},{"line_number":1369,"context_line":"            mock.call(\u0027ip\u0027, \u0027link\u0027, \u0027set\u0027, \u0027tap42\u0027, \u0027up\u0027,"},{"line_number":1370,"context_line":"                      run_as_root\u003dTrue, check_exit_code\u003d[0, 2, 254])"},{"line_number":1371,"context_line":"        ])"},{"line_number":1372,"context_line":""},{"line_number":1373,"context_line":"    @mock.patch(\u0027nova.utils.execute\u0027)"},{"line_number":1374,"context_line":"    def test_create_tap_dev_fallback_to_tunctl(self, mock_execute):"},{"line_number":1375,"context_line":"        # ip failed, fall back to tunctl"},{"line_number":1376,"context_line":"        mock_execute.side_effect \u003d [processutils.ProcessExecutionError, 0, 0]"},{"line_number":1377,"context_line":""},{"line_number":1378,"context_line":"        linux_net.create_tap_dev(\u0027tap42\u0027)"},{"line_number":1379,"context_line":""},{"line_number":1380,"context_line":"        mock_execute.assert_has_calls(["},{"line_number":1381,"context_line":"            mock.call(\u0027ip\u0027, \u0027tuntap\u0027, \u0027add\u0027, \u0027tap42\u0027, \u0027mode\u0027, \u0027tap\u0027,"},{"line_number":1382,"context_line":"                      run_as_root\u003dTrue, check_exit_code\u003d[0, 2, 254]),"},{"line_number":1383,"context_line":"            mock.call(\u0027tunctl\u0027, \u0027-b\u0027, \u0027-t\u0027, \u0027tap42\u0027,"},{"line_number":1384,"context_line":"                      run_as_root\u003dTrue),"},{"line_number":1385,"context_line":"            mock.call(\u0027ip\u0027, \u0027link\u0027, \u0027set\u0027, \u0027tap42\u0027, \u0027up\u0027,"},{"line_number":1386,"context_line":"                      run_as_root\u003dTrue, check_exit_code\u003d[0, 2, 254])"},{"line_number":1387,"context_line":"        ])"},{"line_number":1388,"context_line":""},{"line_number":1389,"context_line":"    @mock.patch(\u0027nova.utils.execute\u0027)"},{"line_number":1390,"context_line":"    def test_create_tap_dev_multiqueue(self, mock_execute):"},{"line_number":1391,"context_line":"        linux_net.create_tap_dev(\u0027tap42\u0027, multiqueue\u003dTrue)"},{"line_number":1392,"context_line":""},{"line_number":1393,"context_line":"        mock_execute.assert_has_calls(["},{"line_number":1394,"context_line":"            mock.call(\u0027ip\u0027, \u0027tuntap\u0027, \u0027add\u0027, \u0027tap42\u0027, \u0027mode\u0027, \u0027tap\u0027,"},{"line_number":1395,"context_line":"                      \u0027multi_queue\u0027,"},{"line_number":1396,"context_line":"                      run_as_root\u003dTrue, check_exit_code\u003d[0, 2, 254]),"},{"line_number":1397,"context_line":"            mock.call(\u0027ip\u0027, \u0027link\u0027, \u0027set\u0027, \u0027tap42\u0027, \u0027up\u0027,"},{"line_number":1398,"context_line":"                      run_as_root\u003dTrue, check_exit_code\u003d[0, 2, 254])"},{"line_number":1399,"context_line":"        ])"},{"line_number":1400,"context_line":""},{"line_number":1401,"context_line":"    @mock.patch(\u0027nova.utils.execute\u0027)"},{"line_number":1402,"context_line":"    def test_create_tap_dev_multiqueue_tunctl_raises(self, mock_execute):"},{"line_number":1403,"context_line":"        # if creation of a tap by the means of ip command fails,"},{"line_number":1404,"context_line":"        # create_tap_dev() will try to do that by the means of tunctl"},{"line_number":1405,"context_line":"        mock_execute.side_effect \u003d processutils.ProcessExecutionError"},{"line_number":1406,"context_line":"        # but tunctl can\u0027t create multiqueue taps, so the failure is expected"},{"line_number":1407,"context_line":"        self.assertRaises(processutils.ProcessExecutionError,"},{"line_number":1408,"context_line":"                          linux_net.create_tap_dev,"},{"line_number":1409,"context_line":"                          \u0027tap42\u0027, multiqueue\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_0eaf587d","side":"PARENT","line":1409,"range":{"start_line":1340,"start_character":0,"end_line":1409,"end_character":51},"updated":"2018-03-30 06:58:17.000000000","message":"These unit tests should be moved to somewhere instead of removed.\nnova/tests/unit/network/test_utils.py?\nBut it is missing...","commit_id":"fa6ce441c71d43352a96ebf4feb1aada309e8638"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d3aa8421484864dd483ea5827f4151910fd0f0de","unresolved":false,"context_lines":[{"line_number":1411,"context_line":"                          linux_net.create_tap_dev,"},{"line_number":1412,"context_line":"                          \u0027tap42\u0027, multiqueue\u003dTrue)"},{"line_number":1413,"context_line":""},{"line_number":1414,"context_line":"    @mock.patch(\u0027nova.pci.utils.get_vf_num_by_pci_address\u0027)"},{"line_number":1415,"context_line":"    @mock.patch(\u0027nova.pci.utils.get_ifname_by_pci_address\u0027)"},{"line_number":1416,"context_line":"    @mock.patch(\u0027nova.utils.execute\u0027)"},{"line_number":1417,"context_line":"    def test_set_vf_trusted_on(self, mexecute, mget_ifname, mget_vfnum):"},{"line_number":1418,"context_line":"        mget_ifname.return_value \u003d \u0027eth0\u0027"},{"line_number":1419,"context_line":"        mget_vfnum.return_value \u003d 2"},{"line_number":1420,"context_line":"        linux_net.set_vf_trusted(\u0027PCI_ADDR\u0027, True)"},{"line_number":1421,"context_line":"        mexecute.assert_called_once_with("},{"line_number":1422,"context_line":"            \u0027ip\u0027, \u0027link\u0027, \u0027set\u0027, \u0027eth0\u0027, \u0027vf\u0027, 2, \u0027trust\u0027, \u0027on\u0027,"},{"line_number":1423,"context_line":"            check_exit_code\u003d[0, 2, 254], run_as_root\u003dTrue)"},{"line_number":1424,"context_line":""},{"line_number":1425,"context_line":"    @mock.patch(\u0027nova.pci.utils.get_vf_num_by_pci_address\u0027)"},{"line_number":1426,"context_line":"    @mock.patch(\u0027nova.pci.utils.get_ifname_by_pci_address\u0027)"},{"line_number":1427,"context_line":"    @mock.patch(\u0027nova.utils.execute\u0027)"},{"line_number":1428,"context_line":"    def test_set_vf_trusted_off(self, mexecute, mget_ifname, mget_vfnum):"},{"line_number":1429,"context_line":"        mget_ifname.return_value \u003d \u0027eth0\u0027"},{"line_number":1430,"context_line":"        mget_vfnum.return_value \u003d 2"},{"line_number":1431,"context_line":"        linux_net.set_vf_trusted(\u0027PCI_ADDR\u0027, False)"},{"line_number":1432,"context_line":"        mexecute.assert_called_once_with("},{"line_number":1433,"context_line":"            \u0027ip\u0027, \u0027link\u0027, \u0027set\u0027, \u0027eth0\u0027, \u0027vf\u0027, 2, \u0027trust\u0027, \u0027off\u0027,"},{"line_number":1434,"context_line":"            check_exit_code\u003d[0, 2, 254], run_as_root\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f6a8fd7_18272f15","side":"PARENT","line":1434,"range":{"start_line":1414,"start_character":0,"end_line":1434,"end_character":58},"updated":"2018-04-16 14:46:39.000000000","message":"Did we lose these?","commit_id":"4f749ef66d5df5896662552b45b1a914d2300f31"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"551154ba3e8ff08b68806cbf5351ebe314352105","unresolved":false,"context_lines":[{"line_number":1411,"context_line":"                          linux_net.create_tap_dev,"},{"line_number":1412,"context_line":"                          \u0027tap42\u0027, multiqueue\u003dTrue)"},{"line_number":1413,"context_line":""},{"line_number":1414,"context_line":"    @mock.patch(\u0027nova.pci.utils.get_vf_num_by_pci_address\u0027)"},{"line_number":1415,"context_line":"    @mock.patch(\u0027nova.pci.utils.get_ifname_by_pci_address\u0027)"},{"line_number":1416,"context_line":"    @mock.patch(\u0027nova.utils.execute\u0027)"},{"line_number":1417,"context_line":"    def test_set_vf_trusted_on(self, mexecute, mget_ifname, mget_vfnum):"},{"line_number":1418,"context_line":"        mget_ifname.return_value \u003d \u0027eth0\u0027"},{"line_number":1419,"context_line":"        mget_vfnum.return_value \u003d 2"},{"line_number":1420,"context_line":"        linux_net.set_vf_trusted(\u0027PCI_ADDR\u0027, True)"},{"line_number":1421,"context_line":"        mexecute.assert_called_once_with("},{"line_number":1422,"context_line":"            \u0027ip\u0027, \u0027link\u0027, \u0027set\u0027, \u0027eth0\u0027, \u0027vf\u0027, 2, \u0027trust\u0027, \u0027on\u0027,"},{"line_number":1423,"context_line":"            check_exit_code\u003d[0, 2, 254], run_as_root\u003dTrue)"},{"line_number":1424,"context_line":""},{"line_number":1425,"context_line":"    @mock.patch(\u0027nova.pci.utils.get_vf_num_by_pci_address\u0027)"},{"line_number":1426,"context_line":"    @mock.patch(\u0027nova.pci.utils.get_ifname_by_pci_address\u0027)"},{"line_number":1427,"context_line":"    @mock.patch(\u0027nova.utils.execute\u0027)"},{"line_number":1428,"context_line":"    def test_set_vf_trusted_off(self, mexecute, mget_ifname, mget_vfnum):"},{"line_number":1429,"context_line":"        mget_ifname.return_value \u003d \u0027eth0\u0027"},{"line_number":1430,"context_line":"        mget_vfnum.return_value \u003d 2"},{"line_number":1431,"context_line":"        linux_net.set_vf_trusted(\u0027PCI_ADDR\u0027, False)"},{"line_number":1432,"context_line":"        mexecute.assert_called_once_with("},{"line_number":1433,"context_line":"            \u0027ip\u0027, \u0027link\u0027, \u0027set\u0027, \u0027eth0\u0027, \u0027vf\u0027, 2, \u0027trust\u0027, \u0027off\u0027,"},{"line_number":1434,"context_line":"            check_exit_code\u003d[0, 2, 254], run_as_root\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f6a8fd7_2488841d","side":"PARENT","line":1434,"range":{"start_line":1414,"start_character":0,"end_line":1434,"end_character":58},"in_reply_to":"9f6a8fd7_18272f15","updated":"2018-04-19 04:52:36.000000000","message":"Done","commit_id":"4f749ef66d5df5896662552b45b1a914d2300f31"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e72ed1462a1dd3d4af51c9d70cd276ddd84ecdeb","unresolved":false,"context_lines":[{"line_number":1411,"context_line":"                          linux_net.create_tap_dev,"},{"line_number":1412,"context_line":"                          \u0027tap42\u0027, multiqueue\u003dTrue)"},{"line_number":1413,"context_line":""},{"line_number":1414,"context_line":"    @mock.patch(\u0027nova.pci.utils.get_vf_num_by_pci_address\u0027)"},{"line_number":1415,"context_line":"    @mock.patch(\u0027nova.pci.utils.get_ifname_by_pci_address\u0027)"},{"line_number":1416,"context_line":"    @mock.patch(\u0027nova.utils.execute\u0027)"},{"line_number":1417,"context_line":"    def test_set_vf_trusted_on(self, mexecute, mget_ifname, mget_vfnum):"},{"line_number":1418,"context_line":"        mget_ifname.return_value \u003d \u0027eth0\u0027"},{"line_number":1419,"context_line":"        mget_vfnum.return_value \u003d 2"},{"line_number":1420,"context_line":"        linux_net.set_vf_trusted(\u0027PCI_ADDR\u0027, True)"},{"line_number":1421,"context_line":"        mexecute.assert_called_once_with("},{"line_number":1422,"context_line":"            \u0027ip\u0027, \u0027link\u0027, \u0027set\u0027, \u0027eth0\u0027, \u0027vf\u0027, 2, \u0027trust\u0027, \u0027on\u0027,"},{"line_number":1423,"context_line":"            check_exit_code\u003d[0, 2, 254], run_as_root\u003dTrue)"},{"line_number":1424,"context_line":""},{"line_number":1425,"context_line":"    @mock.patch(\u0027nova.pci.utils.get_vf_num_by_pci_address\u0027)"},{"line_number":1426,"context_line":"    @mock.patch(\u0027nova.pci.utils.get_ifname_by_pci_address\u0027)"},{"line_number":1427,"context_line":"    @mock.patch(\u0027nova.utils.execute\u0027)"},{"line_number":1428,"context_line":"    def test_set_vf_trusted_off(self, mexecute, mget_ifname, mget_vfnum):"},{"line_number":1429,"context_line":"        mget_ifname.return_value \u003d \u0027eth0\u0027"},{"line_number":1430,"context_line":"        mget_vfnum.return_value \u003d 2"},{"line_number":1431,"context_line":"        linux_net.set_vf_trusted(\u0027PCI_ADDR\u0027, False)"},{"line_number":1432,"context_line":"        mexecute.assert_called_once_with("},{"line_number":1433,"context_line":"            \u0027ip\u0027, \u0027link\u0027, \u0027set\u0027, \u0027eth0\u0027, \u0027vf\u0027, 2, \u0027trust\u0027, \u0027off\u0027,"},{"line_number":1434,"context_line":"            check_exit_code\u003d[0, 2, 254], run_as_root\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_180d7ca0","side":"PARENT","line":1434,"range":{"start_line":1414,"start_character":4,"end_line":1434,"end_character":58},"updated":"2018-05-10 16:48:43.000000000","message":"Looks like this got caught up and shouldn\u0027t have.","commit_id":"25fa2470e220a83ce632fed70ad41e55aabda0da"}],"nova/tests/unit/network/test_utils.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"533f611ba25aae9dff706c68e8839db2920aa896","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2011 NTT"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_812a127c","line":1,"range":{"start_line":1,"start_character":9,"end_line":1,"end_character":20},"updated":"2018-04-04 02:57:16.000000000","message":"not sure this need add 2018 though it copied from original file","commit_id":"4e92820517b4469fcc5acc7e0de505cf88aac4c8"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"533f611ba25aae9dff706c68e8839db2920aa896","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        self.assertRaises(processutils.ProcessExecutionError,"},{"line_number":100,"context_line":"                          net_utils.create_tap_dev,"},{"line_number":101,"context_line":"                          \u0027tap42\u0027, multiqueue\u003dTrue)"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_a12dd695","line":102,"updated":"2018-04-04 02:57:16.000000000","message":"this blank line caused pep8..","commit_id":"4e92820517b4469fcc5acc7e0de505cf88aac4c8"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e7a763ea8816134968dec0a374e2a97e0d92f593","unresolved":false,"context_lines":[{"line_number":106,"context_line":"    def test_set_vf_trusted_on(self, mexecute, mget_ifname, mget_vfnum):"},{"line_number":107,"context_line":"        mget_ifname.return_value \u003d \u0027eth0\u0027"},{"line_number":108,"context_line":"        mget_vfnum.return_value \u003d 2"},{"line_number":109,"context_line":"        linux_net.set_vf_trusted(\u0027PCI_ADDR\u0027, True)"},{"line_number":110,"context_line":"        mexecute.assert_called_once_with("},{"line_number":111,"context_line":"            \u0027ip\u0027, \u0027link\u0027, \u0027set\u0027, \u0027eth0\u0027, \u0027vf\u0027, 2, \u0027trust\u0027, \u0027on\u0027,"},{"line_number":112,"context_line":"            check_exit_code\u003d[0, 2, 254], run_as_root\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_eecc9ebd","line":109,"range":{"start_line":109,"start_character":8,"end_line":109,"end_character":17},"updated":"2018-04-19 13:07:57.000000000","message":"net_utils","commit_id":"d499d27ebc6a533824b980b28c691810286e67f9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e7a763ea8816134968dec0a374e2a97e0d92f593","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    def test_set_vf_trusted_off(self, mexecute, mget_ifname, mget_vfnum):"},{"line_number":118,"context_line":"        mget_ifname.return_value \u003d \u0027eth0\u0027"},{"line_number":119,"context_line":"        mget_vfnum.return_value \u003d 2"},{"line_number":120,"context_line":"        linux_net.set_vf_trusted(\u0027PCI_ADDR\u0027, False)"},{"line_number":121,"context_line":"        mexecute.assert_called_once_with("},{"line_number":122,"context_line":"            \u0027ip\u0027, \u0027link\u0027, \u0027set\u0027, \u0027eth0\u0027, \u0027vf\u0027, 2, \u0027trust\u0027, \u0027off\u0027,"},{"line_number":123,"context_line":"            check_exit_code\u003d[0, 2, 254], run_as_root\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_aec6a699","line":120,"range":{"start_line":120,"start_character":8,"end_line":120,"end_character":17},"updated":"2018-04-19 13:07:57.000000000","message":"ditto","commit_id":"d499d27ebc6a533824b980b28c691810286e67f9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"cfbf5b13f7394590d0bbbfa07cc843eb1bb8ffef","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class NetUtilsTestCase(test.NoDBTestCase):"},{"line_number":26,"context_line":"    def test_set_device_mtu_default(self):"},{"line_number":27,"context_line":"        calls \u003d []"},{"line_number":28,"context_line":"        with mock.patch(\u0027nova.utils.execute\u0027, return_value\u003d(\u0027\u0027, \u0027\u0027)) as ex:"},{"line_number":29,"context_line":"            net_utils.set_device_mtu(\u0027fake-dev\u0027)"},{"line_number":30,"context_line":"            ex.assert_has_calls(calls)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @mock.patch(\u0027nova.utils.execute\u0027)"},{"line_number":33,"context_line":"    def test_create_tap_dev(self, mock_execute):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_93a16f97","line":30,"range":{"start_line":26,"start_character":0,"end_line":30,"end_character":38},"updated":"2018-05-10 17:20:58.000000000","message":"This is new?","commit_id":"a5dd9ebeda590f25469d8e682a9ff951aad0c2a6"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"4d060138007317fa2e39002269ba556635eaf697","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class NetUtilsTestCase(test.NoDBTestCase):"},{"line_number":26,"context_line":"    def test_set_device_mtu_default(self):"},{"line_number":27,"context_line":"        calls \u003d []"},{"line_number":28,"context_line":"        with mock.patch(\u0027nova.utils.execute\u0027, return_value\u003d(\u0027\u0027, \u0027\u0027)) as ex:"},{"line_number":29,"context_line":"            net_utils.set_device_mtu(\u0027fake-dev\u0027)"},{"line_number":30,"context_line":"            ex.assert_has_calls(calls)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @mock.patch(\u0027nova.utils.execute\u0027)"},{"line_number":33,"context_line":"    def test_create_tap_dev(self, mock_execute):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_7345b242","line":30,"range":{"start_line":26,"start_character":0,"end_line":30,"end_character":38},"in_reply_to":"5f7c97a3_7317f246","updated":"2018-05-10 17:53:35.000000000","message":"Nah, the test looks right, it just looks randomly injected here.","commit_id":"a5dd9ebeda590f25469d8e682a9ff951aad0c2a6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a25c96e27ed53c43bc10b4ea2941513176dee156","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class NetUtilsTestCase(test.NoDBTestCase):"},{"line_number":26,"context_line":"    def test_set_device_mtu_default(self):"},{"line_number":27,"context_line":"        calls \u003d []"},{"line_number":28,"context_line":"        with mock.patch(\u0027nova.utils.execute\u0027, return_value\u003d(\u0027\u0027, \u0027\u0027)) as ex:"},{"line_number":29,"context_line":"            net_utils.set_device_mtu(\u0027fake-dev\u0027)"},{"line_number":30,"context_line":"            ex.assert_has_calls(calls)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @mock.patch(\u0027nova.utils.execute\u0027)"},{"line_number":33,"context_line":"    def test_create_tap_dev(self, mock_execute):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_f359c234","line":30,"range":{"start_line":26,"start_character":0,"end_line":30,"end_character":38},"in_reply_to":"5f7c97a3_7317f246","updated":"2018-05-10 17:54:51.000000000","message":"Oh nevermind this is calling set_device_mtu, not create_tap_dev - yeah I don\u0027t know why this is here.\n\nLooks like it was accidentally dropped from I9872056c440a706b89dd51d3b9f2418951723efa and it\u0027s getting added back here. I\u0027ll put this separately on top.","commit_id":"a5dd9ebeda590f25469d8e682a9ff951aad0c2a6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d09d4f5da6ff4208eda3907327bd18806b455f81","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class NetUtilsTestCase(test.NoDBTestCase):"},{"line_number":26,"context_line":"    def test_set_device_mtu_default(self):"},{"line_number":27,"context_line":"        calls \u003d []"},{"line_number":28,"context_line":"        with mock.patch(\u0027nova.utils.execute\u0027, return_value\u003d(\u0027\u0027, \u0027\u0027)) as ex:"},{"line_number":29,"context_line":"            net_utils.set_device_mtu(\u0027fake-dev\u0027)"},{"line_number":30,"context_line":"            ex.assert_has_calls(calls)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @mock.patch(\u0027nova.utils.execute\u0027)"},{"line_number":33,"context_line":"    def test_create_tap_dev(self, mock_execute):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_7317f246","line":30,"range":{"start_line":26,"start_character":0,"end_line":30,"end_character":38},"in_reply_to":"5f7c97a3_93a16f97","updated":"2018-05-10 17:50:55.000000000","message":"Yeah, and looks wrong too because execute should be called twice in the default case. This should have probably been ex.return_value.assert_has_calls().","commit_id":"a5dd9ebeda590f25469d8e682a9ff951aad0c2a6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"abf80c2f6d36c6b86c495add6a253775a9619afa","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class NetUtilsTestCase(test.NoDBTestCase):"},{"line_number":26,"context_line":"    def test_set_device_mtu_default(self):"},{"line_number":27,"context_line":"        calls \u003d []"},{"line_number":28,"context_line":"        with mock.patch(\u0027nova.utils.execute\u0027, return_value\u003d(\u0027\u0027, \u0027\u0027)) as ex:"},{"line_number":29,"context_line":"            net_utils.set_device_mtu(\u0027fake-dev\u0027)"},{"line_number":30,"context_line":"            ex.assert_has_calls(calls)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @mock.patch(\u0027nova.utils.execute\u0027)"},{"line_number":33,"context_line":"    def test_create_tap_dev(self, mock_execute):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_13eb1e13","line":30,"range":{"start_line":26,"start_character":0,"end_line":30,"end_character":38},"in_reply_to":"5f7c97a3_f359c234","updated":"2018-05-10 17:58:43.000000000","message":"Split this out into it\u0027s own change:\n\nhttps://review.openstack.org/#/c/567659/","commit_id":"a5dd9ebeda590f25469d8e682a9ff951aad0c2a6"}]}
