)]}'
{"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":7764,"name":"Peter Hamilton","email":"peter.hamilton@jhuapl.edu","username":"Peter"},"change_message_id":"09672566e35ebb691d473928845d50286641d4f8","unresolved":false,"context_lines":[{"line_number":8277,"context_line":"        self.assertFalse(drvr._image_api.get.called)"},{"line_number":8278,"context_line":"        mock_ensure_tree.assert_called_once_with(\u0027/foo\u0027)"},{"line_number":8279,"context_line":""},{"line_number":8280,"context_line":"    def test_suspend(self):"},{"line_number":8281,"context_line":"        guest \u003d libvirt_guest.Guest(FakeVirtDomain(id\u003d1))"},{"line_number":8282,"context_line":"        dom \u003d guest._domain"},{"line_number":8283,"context_line":"        mock_managedSave \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_f7e0a8fc","line":8280,"updated":"2015-07-13 12:15:37.000000000","message":"Please add a docstring for this test case.","commit_id":"71333d3a62babed44501fd2eb4678a80d0a7d3fb"},{"author":{"_account_id":7764,"name":"Peter Hamilton","email":"peter.hamilton@jhuapl.edu","username":"Peter"},"change_message_id":"d75a848510463a0732da6152ae5ea94bf8818295","unresolved":false,"context_lines":[{"line_number":8277,"context_line":"        self.assertFalse(drvr._image_api.get.called)"},{"line_number":8278,"context_line":"        mock_ensure_tree.assert_called_once_with(\u0027/foo\u0027)"},{"line_number":8279,"context_line":""},{"line_number":8280,"context_line":"    def test_suspend(self):"},{"line_number":8281,"context_line":"        guest \u003d libvirt_guest.Guest(FakeVirtDomain(id\u003d1))"},{"line_number":8282,"context_line":"        dom \u003d guest._domain"},{"line_number":8283,"context_line":"        mock_managedSave \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_8ce34b33","line":8280,"in_reply_to":"9a41bdd9_bafe8536","updated":"2015-07-13 14:55:13.000000000","message":"Ah, well, consistency! :P","commit_id":"71333d3a62babed44501fd2eb4678a80d0a7d3fb"},{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"3e4e7b0d9c92f7724b52d08dc98af68710e169a1","unresolved":false,"context_lines":[{"line_number":8277,"context_line":"        self.assertFalse(drvr._image_api.get.called)"},{"line_number":8278,"context_line":"        mock_ensure_tree.assert_called_once_with(\u0027/foo\u0027)"},{"line_number":8279,"context_line":""},{"line_number":8280,"context_line":"    def test_suspend(self):"},{"line_number":8281,"context_line":"        guest \u003d libvirt_guest.Guest(FakeVirtDomain(id\u003d1))"},{"line_number":8282,"context_line":"        dom \u003d guest._domain"},{"line_number":8283,"context_line":"        mock_managedSave \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_bafe8536","line":8280,"in_reply_to":"9a41bdd9_f7e0a8fc","updated":"2015-07-13 12:34:38.000000000","message":"Lots of methods lack docstrings, but I\u0027ve added one. :-)","commit_id":"71333d3a62babed44501fd2eb4678a80d0a7d3fb"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"546f50e8aa6af35f98dd3f2c812a6a6e28a5794d","unresolved":false,"context_lines":[{"line_number":2714,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":2715,"context_line":"        mock_get_domain \u003d mock.Mock(return_value\u003ddom)"},{"line_number":2716,"context_line":"        mock_delete_volume \u003d mock.Mock()"},{"line_number":2717,"context_line":"        with contextlib.nested("},{"line_number":2718,"context_line":"                mock.patch.object(conn._host, \u0027get_domain\u0027,"},{"line_number":2719,"context_line":"                                  mock_get_domain),"},{"line_number":2720,"context_line":"                mock.patch.object(dmcrypt, \u0027delete_volume\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba15a1d1_a7469fbd","line":2717,"updated":"2015-09-14 10:48:55.000000000","message":"Nit: I prefer @mock.patch method.","commit_id":"03823aa48f070876dd104bcc83384d0f824bcebd"},{"author":{"_account_id":7764,"name":"Peter Hamilton","email":"peter.hamilton@jhuapl.edu","username":"Peter"},"change_message_id":"6c6b9568c27f205b2dc69fec3f4973b92e59dc22","unresolved":false,"context_lines":[{"line_number":8330,"context_line":"        self.assertFalse(drvr._image_api.get.called)"},{"line_number":8331,"context_line":"        mock_ensure_tree.assert_called_once_with(\u0027/foo\u0027)"},{"line_number":8332,"context_line":""},{"line_number":8333,"context_line":"    def test_suspend(self):"},{"line_number":8334,"context_line":"        guest \u003d libvirt_guest.Guest(FakeVirtDomain(id\u003d1))"},{"line_number":8335,"context_line":"        dom \u003d guest._domain"},{"line_number":8336,"context_line":"        mock_managedSave \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_c21b641b","line":8333,"updated":"2015-08-10 14:29:26.000000000","message":"Maybe add a docstring here describing the intent of the test?","commit_id":"03823aa48f070876dd104bcc83384d0f824bcebd"},{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"4ce4c27885ed629dee38e03f9c6f9853970c68ab","unresolved":false,"context_lines":[{"line_number":8330,"context_line":"        self.assertFalse(drvr._image_api.get.called)"},{"line_number":8331,"context_line":"        mock_ensure_tree.assert_called_once_with(\u0027/foo\u0027)"},{"line_number":8332,"context_line":""},{"line_number":8333,"context_line":"    def test_suspend(self):"},{"line_number":8334,"context_line":"        guest \u003d libvirt_guest.Guest(FakeVirtDomain(id\u003d1))"},{"line_number":8335,"context_line":"        dom \u003d guest._domain"},{"line_number":8336,"context_line":"        mock_managedSave \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa1b9901_1db385ea","line":8333,"in_reply_to":"1a4dcd0f_c21b641b","updated":"2015-08-20 12:17:22.000000000","message":"Docstrings are generally not included for the test cases in this module.","commit_id":"03823aa48f070876dd104bcc83384d0f824bcebd"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"546f50e8aa6af35f98dd3f2c812a6a6e28a5794d","unresolved":false,"context_lines":[{"line_number":8346,"context_line":"        mock_get_instance_disk_info.return_value \u003d []"},{"line_number":8347,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":8348,"context_line":"        with contextlib.nested("},{"line_number":8349,"context_line":"                mock.patch.object(conn._host, \u0027get_guest\u0027, mock_get_guest),"},{"line_number":8350,"context_line":"                mock.patch.object(pci_manager, \u0027get_instance_pci_devs\u0027,"},{"line_number":8351,"context_line":"                                  mock_get_instance_pci_devs),"},{"line_number":8352,"context_line":"                mock.patch.object(conn, \u0027_detach_pci_devices\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba15a1d1_87491bd3","line":8349,"updated":"2015-09-14 10:48:55.000000000","message":"Nit: I prefer using the @patch decorator, but I guess this works.","commit_id":"03823aa48f070876dd104bcc83384d0f824bcebd"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"3a7aae03aded7b5cffb4cc8af814592480202a8f","unresolved":false,"context_lines":[{"line_number":8346,"context_line":"        mock_get_instance_disk_info.return_value \u003d []"},{"line_number":8347,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":8348,"context_line":"        with contextlib.nested("},{"line_number":8349,"context_line":"                mock.patch.object(conn._host, \u0027get_guest\u0027, mock_get_guest),"},{"line_number":8350,"context_line":"                mock.patch.object(pci_manager, \u0027get_instance_pci_devs\u0027,"},{"line_number":8351,"context_line":"                                  mock_get_instance_pci_devs),"},{"line_number":8352,"context_line":"                mock.patch.object(conn, \u0027_detach_pci_devices\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba15a1d1_f1e166d1","line":8349,"in_reply_to":"ba15a1d1_87491bd3","updated":"2015-09-15 19:15:04.000000000","message":"Right.  Typically what is done is to create an inner method here and decorate it with @mock.patch.object() to avoid the usage of contextlib.nested.  This can be cleaned up later.","commit_id":"03823aa48f070876dd104bcc83384d0f824bcebd"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"04fa0ec9ad792e4c7e6d182fda8f7d338df7a7fd","unresolved":false,"context_lines":[{"line_number":9061,"context_line":"        @mock.patch.object(conn, \u0027_detach_pci_devices\u0027)"},{"line_number":9062,"context_line":"        @mock.patch.object(pci_manager, \u0027get_instance_pci_devs\u0027,"},{"line_number":9063,"context_line":"                           return_value\u003d\u0027pci devs\u0027)"},{"line_number":9064,"context_line":"        @mock.patch.object(conn._host, \u0027get_guest\u0027, return_value\u003dguest)"},{"line_number":9065,"context_line":"        def suspend(mock_get_guest, mock_get_instance_pci_devs,"},{"line_number":9066,"context_line":"                    mock_detach_pci_devices, mock_detach_sriov_ports,"},{"line_number":9067,"context_line":"                    mock_get_instance_disk_info, mock_delete_volume):"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba15a1d1_48b3364d","line":9064,"updated":"2015-09-18 16:50:20.000000000","message":"Much nicer.","commit_id":"f47960c69da1e66e5c8667a5d81ed8201070560c"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"a2d0534d405a0a199444ac543aabe0c11fe2f4a6","unresolved":false,"context_lines":[{"line_number":895,"context_line":"    def _detach_encrypted_volumes(self, instance, block_device_info\u003dNone):"},{"line_number":896,"context_line":"        \"\"\"Detaches encrypted volumes attached to instance.\"\"\""},{"line_number":897,"context_line":"        disks \u003d jsonutils.loads("},{"line_number":898,"context_line":"                self.get_instance_disk_info(instance, block_device_info))"},{"line_number":899,"context_line":"        encrypted_volumes \u003d filter(dmcrypt.is_encrypted,"},{"line_number":900,"context_line":"                                   [disk[\u0027path\u0027] for disk in disks])"},{"line_number":901,"context_line":"        for path in encrypted_volumes:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_8fd47720","line":898,"updated":"2015-08-05 09:30:37.000000000","message":"I\u0027m not really seeing why this change is required. You claim it is done so that you can exercise certain code paths in the test, but the real code which calls this method will not pass this new parameter. So you are attempting to test a code path which is not actually used when this method is invoked, which is pointless. So either you can do the necessary testing without this parameter, or whatever calls this method needs fixing to pass a non-None value for this parameter.","commit_id":"1096dca5a763ffb441423213739dac1912ee988c"},{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"b65e99eb88cbb12ee81b67028ddc12eccec66187","unresolved":false,"context_lines":[{"line_number":895,"context_line":"    def _detach_encrypted_volumes(self, instance, block_device_info\u003dNone):"},{"line_number":896,"context_line":"        \"\"\"Detaches encrypted volumes attached to instance.\"\"\""},{"line_number":897,"context_line":"        disks \u003d jsonutils.loads("},{"line_number":898,"context_line":"                self.get_instance_disk_info(instance, block_device_info))"},{"line_number":899,"context_line":"        encrypted_volumes \u003d filter(dmcrypt.is_encrypted,"},{"line_number":900,"context_line":"                                   [disk[\u0027path\u0027] for disk in disks])"},{"line_number":901,"context_line":"        for path in encrypted_volumes:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_6208cb28","line":898,"in_reply_to":"1a4dcd0f_8fd47720","updated":"2015-08-06 17:56:46.000000000","message":"You\u0027re correct. This parameter is used in a dependent patch but not here.\n\nI\u0027ll remove the parameter from this patch and update the test cases accordingly. It will be added to the dependent patch instead.","commit_id":"1096dca5a763ffb441423213739dac1912ee988c"}]}
