)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":22257,"name":"Manish","email":"deolalkar.manish@hpe.com","username":"manishd"},"change_message_id":"b4e0e0541f274e749efbeb4d64848cbfd8db761c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Kevin Zhao \u003ckevin.zhao@linaro.org\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-08-19 07:51:32 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"libvirt: fix nova can\u0027t delete instance with nvram"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently libvirt need a special flags when delete the VM with"},{"line_number":10,"context_line":"nvram file, which will induce that nova can\u0027t delete the instance"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3ac371cc_fd738713","line":7,"range":{"start_line":7,"start_character":31,"end_line":7,"end_character":39},"updated":"2016-08-19 09:15:13.000000000","message":"an instance","commit_id":"684e253f0443fe47d9e069ec8608547260705f2b"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"995b1896063c69fea1a6c1b904bc79602a564a55","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Kevin Zhao \u003ckevin.zhao@linaro.org\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-08-19 07:51:32 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"libvirt: fix nova can\u0027t delete instance with nvram"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently libvirt need a special flags when delete the VM with"},{"line_number":10,"context_line":"nvram file, which will induce that nova can\u0027t delete the instance"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1ac06dbe_fba3aa4d","line":7,"range":{"start_line":7,"start_character":31,"end_line":7,"end_character":39},"in_reply_to":"3ac371cc_fd738713","updated":"2016-08-19 13:30:50.000000000","message":"Done\n\nThanks~","commit_id":"684e253f0443fe47d9e069ec8608547260705f2b"},{"author":{"_account_id":22257,"name":"Manish","email":"deolalkar.manish@hpe.com","username":"manishd"},"change_message_id":"b4e0e0541f274e749efbeb4d64848cbfd8db761c","unresolved":false,"context_lines":[{"line_number":7,"context_line":"libvirt: fix nova can\u0027t delete instance with nvram"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently libvirt need a special flags when delete the VM with"},{"line_number":10,"context_line":"nvram file, which will induce that nova can\u0027t delete the instance"},{"line_number":11,"context_line":"booted with UEFI. So add a deletion flags for NVRAM."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I46baa952b6c3a1a4c5cf2660931f317cafb5757d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3ac371cc_9d8253c7","line":10,"range":{"start_line":10,"start_character":53,"end_line":10,"end_character":56},"updated":"2016-08-19 09:15:13.000000000","message":"the\u003dan","commit_id":"684e253f0443fe47d9e069ec8608547260705f2b"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"995b1896063c69fea1a6c1b904bc79602a564a55","unresolved":false,"context_lines":[{"line_number":7,"context_line":"libvirt: fix nova can\u0027t delete instance with nvram"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently libvirt need a special flags when delete the VM with"},{"line_number":10,"context_line":"nvram file, which will induce that nova can\u0027t delete the instance"},{"line_number":11,"context_line":"booted with UEFI. So add a deletion flags for NVRAM."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I46baa952b6c3a1a4c5cf2660931f317cafb5757d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1ac06dbe_db94eee9","line":10,"range":{"start_line":10,"start_character":53,"end_line":10,"end_character":56},"in_reply_to":"3ac371cc_9d8253c7","updated":"2016-08-19 13:30:50.000000000","message":"Done","commit_id":"684e253f0443fe47d9e069ec8608547260705f2b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a0333bf78126eb0653205e7b64cc8c2d32c43a6c","unresolved":false,"context_lines":[{"line_number":11,"context_line":"booted with UEFI. So add the deletion flags for NVRAM. Also tweak"},{"line_number":12,"context_line":"the test case."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Closes-Bug: #1567807"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I46baa952b6c3a1a4c5cf2660931f317cafb5757d"},{"line_number":17,"context_line":"Signed-off-by: Kevin Zhao \u003ckevin.zhao@linaro.org\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"1a95cdbc_7f24fe0b","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":20},"updated":"2016-10-10 14:47:18.000000000","message":"nit: Could you pop this below the Change-Id line?","commit_id":"6091d2577c7d33a9a00f8bc9d7ae4649f088fffd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a0333bf78126eb0653205e7b64cc8c2d32c43a6c","unresolved":false,"context_lines":[{"line_number":14,"context_line":"Closes-Bug: #1567807"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I46baa952b6c3a1a4c5cf2660931f317cafb5757d"},{"line_number":17,"context_line":"Signed-off-by: Kevin Zhao \u003ckevin.zhao@linaro.org\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"1a95cdbc_1f0bfa7d","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":49},"updated":"2016-10-10 14:47:18.000000000","message":"You can drop this - you\u0027ve already signed the CCLA","commit_id":"6091d2577c7d33a9a00f8bc9d7ae4649f088fffd"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a0333bf78126eb0653205e7b64cc8c2d32c43a6c","unresolved":false,"context_lines":[{"line_number":11815,"context_line":""},{"line_number":11816,"context_line":"    @mock.patch.object(objects.Instance, \u0027save\u0027)"},{"line_number":11817,"context_line":"    def test_destroy_undefines_no_undefine_flags(self, mock_save):"},{"line_number":11818,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":11819,"context_line":"        mock \u003d self.mox.CreateMock(fakelibvirt.virDomain)"},{"line_number":11820,"context_line":"        mock.ID()"},{"line_number":11821,"context_line":"        mock.destroy()"},{"line_number":11822,"context_line":"        if drvr._has_uefi_support():"},{"line_number":11823,"context_line":"            mock.undefineFlags(5).AndRaise(fakelibvirt.libvirtError(\u0027Err\u0027))"},{"line_number":11824,"context_line":"            mock.ID().AndReturn(123)"},{"line_number":11825,"context_line":""},{"line_number":11826,"context_line":"        mock.undefineFlags(1).AndRaise(fakelibvirt.libvirtError(\u0027Err\u0027))"},{"line_number":11827,"context_line":"        mock.ID().AndReturn(123)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a95cdbc_3fe996b7","line":11824,"range":{"start_line":11818,"start_character":0,"end_line":11824,"end_character":36},"updated":"2016-10-10 14:47:18.000000000","message":"Don\u0027t think we can use Mox in any form now. This will need to be done with \u0027mock\u0027, either partially or via full conversion of the test case first.","commit_id":"6091d2577c7d33a9a00f8bc9d7ae4649f088fffd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e50d96e41dc4f1875bf8dd91517c12f3f62b31ad","unresolved":false,"context_lines":[{"line_number":11889,"context_line":""},{"line_number":11890,"context_line":"    @mock.patch.object(objects.Instance, \u0027save\u0027)"},{"line_number":11891,"context_line":"    def test_destroy_undefines_no_undefine_flags(self, mock_save):"},{"line_number":11892,"context_line":"        mock_domain \u003d mock.Mock(fakelibvirt.virDomain)"},{"line_number":11893,"context_line":"        mock_domain.ID.return_value \u003d 123"},{"line_number":11894,"context_line":"        mock_domain.undefineFlags.side_effect \u003d fakelibvirt.libvirtError(\u0027Err\u0027)"},{"line_number":11895,"context_line":""},{"line_number":11896,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":11897,"context_line":"        drvr._host.get_domain \u003d mock.Mock(return_value \u003d mock_domain)"},{"line_number":11898,"context_line":"        drvr._has_uefi_support \u003d mock.Mock(return_value \u003d True)"},{"line_number":11899,"context_line":"        drvr.delete_instance_files \u003d mock.Mock(return_value \u003d None)"},{"line_number":11900,"context_line":"        drvr.get_info \u003d mock.Mock(return_value \u003d"},{"line_number":11901,"context_line":"            hardware.InstanceInfo(state\u003dpower_state.SHUTDOWN, id\u003d-1)"},{"line_number":11902,"context_line":"        )"},{"line_number":11903,"context_line":""},{"line_number":11904,"context_line":"        instance \u003d objects.Instance(self.context, **self.test_instance)"},{"line_number":11905,"context_line":"        drvr.destroy(self.context, instance, [])"}],"source_content_type":"text/x-python","patch_set":10,"id":"da4df55a_c1a5e004","line":11902,"range":{"start_line":11892,"start_character":0,"end_line":11902,"end_character":9},"updated":"2016-12-22 17:46:56.000000000","message":"this kind of manual definition doesn\u0027t seem necessary - it should be possible to use decorators/context managers to do this a little cleaner. Perhaps look at how mock is used elsewhere in this (large) file for examples?","commit_id":"ac41933c932354717bc563095cda4b9f5ee3b293"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a861234dd21ace2d8ef4081b85de4c0552e6c1b6","unresolved":false,"context_lines":[{"line_number":11889,"context_line":""},{"line_number":11890,"context_line":"    @mock.patch.object(objects.Instance, \u0027save\u0027)"},{"line_number":11891,"context_line":"    def test_destroy_undefines_no_undefine_flags(self, mock_save):"},{"line_number":11892,"context_line":"        mock_domain \u003d mock.Mock(fakelibvirt.virDomain)"},{"line_number":11893,"context_line":"        mock_domain.ID.return_value \u003d 123"},{"line_number":11894,"context_line":"        mock_domain.undefineFlags.side_effect \u003d fakelibvirt.libvirtError(\u0027Err\u0027)"},{"line_number":11895,"context_line":""},{"line_number":11896,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":11897,"context_line":"        drvr._host.get_domain \u003d mock.Mock(return_value \u003d mock_domain)"},{"line_number":11898,"context_line":"        drvr._has_uefi_support \u003d mock.Mock(return_value \u003d True)"},{"line_number":11899,"context_line":"        drvr.delete_instance_files \u003d mock.Mock(return_value \u003d None)"},{"line_number":11900,"context_line":"        drvr.get_info \u003d mock.Mock(return_value \u003d"},{"line_number":11901,"context_line":"            hardware.InstanceInfo(state\u003dpower_state.SHUTDOWN, id\u003d-1)"},{"line_number":11902,"context_line":"        )"},{"line_number":11903,"context_line":""},{"line_number":11904,"context_line":"        instance \u003d objects.Instance(self.context, **self.test_instance)"},{"line_number":11905,"context_line":"        drvr.destroy(self.context, instance, [])"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5201f7_c68e5f2d","line":11902,"range":{"start_line":11892,"start_character":0,"end_line":11902,"end_character":9},"in_reply_to":"ba5201f7_f1f4fe5b","updated":"2017-01-05 16:08:04.000000000","message":"You would only it would be done via a context manager. tbh, I just wasn\u0027t use to seeing things done this way.\n\nLooking at it with fresh eyes I can\u0027t see any significant way to improve it so ignore this comment :)","commit_id":"ac41933c932354717bc563095cda4b9f5ee3b293"},{"author":{"_account_id":1926,"name":"Derek Higgins","email":"derekh@redhat.com","username":"derekh"},"change_message_id":"da756073f32a8618819521b7332cdf882d390ce8","unresolved":false,"context_lines":[{"line_number":11889,"context_line":""},{"line_number":11890,"context_line":"    @mock.patch.object(objects.Instance, \u0027save\u0027)"},{"line_number":11891,"context_line":"    def test_destroy_undefines_no_undefine_flags(self, mock_save):"},{"line_number":11892,"context_line":"        mock_domain \u003d mock.Mock(fakelibvirt.virDomain)"},{"line_number":11893,"context_line":"        mock_domain.ID.return_value \u003d 123"},{"line_number":11894,"context_line":"        mock_domain.undefineFlags.side_effect \u003d fakelibvirt.libvirtError(\u0027Err\u0027)"},{"line_number":11895,"context_line":""},{"line_number":11896,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":11897,"context_line":"        drvr._host.get_domain \u003d mock.Mock(return_value \u003d mock_domain)"},{"line_number":11898,"context_line":"        drvr._has_uefi_support \u003d mock.Mock(return_value \u003d True)"},{"line_number":11899,"context_line":"        drvr.delete_instance_files \u003d mock.Mock(return_value \u003d None)"},{"line_number":11900,"context_line":"        drvr.get_info \u003d mock.Mock(return_value \u003d"},{"line_number":11901,"context_line":"            hardware.InstanceInfo(state\u003dpower_state.SHUTDOWN, id\u003d-1)"},{"line_number":11902,"context_line":"        )"},{"line_number":11903,"context_line":""},{"line_number":11904,"context_line":"        instance \u003d objects.Instance(self.context, **self.test_instance)"},{"line_number":11905,"context_line":"        drvr.destroy(self.context, instance, [])"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5201f7_f1f4fe5b","line":11902,"range":{"start_line":11892,"start_character":0,"end_line":11902,"end_character":9},"in_reply_to":"da4df55a_c1a5e004","updated":"2017-01-05 15:37:47.000000000","message":"Wouldn\u0027t I still have to manually setup the side effects and return values inside the method? I can\u0027t see a way to avoid it but I havn\u0027t used mock much, am I missing something?","commit_id":"ac41933c932354717bc563095cda4b9f5ee3b293"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f64ec8f8ebb1146bae1927d4488edcf8e51f34f0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"ba5201f7_f2095985","updated":"2017-01-05 17:31:05.000000000","message":"Converting Mox-mock is a good idea, but it would be easier to review were it done separately","commit_id":"fd8433ea790659da8b03a9764bcfc6230ca9d495"},{"author":{"_account_id":1926,"name":"Derek Higgins","email":"derekh@redhat.com","username":"derekh"},"change_message_id":"36417df76039a9ba96fdc5323dd60af29aa7407a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"ba5201f7_1df50956","in_reply_to":"ba5201f7_f2095985","updated":"2017-01-05 21:25:33.000000000","message":"Will do it separably next.","commit_id":"fd8433ea790659da8b03a9764bcfc6230ca9d495"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f64ec8f8ebb1146bae1927d4488edcf8e51f34f0","unresolved":false,"context_lines":[{"line_number":11907,"context_line":"        self.assertEqual(2, mock_domain.ID.call_count)"},{"line_number":11908,"context_line":"        mock_domain.destroy.assert_called_once()"},{"line_number":11909,"context_line":"        mock_domain.undefineFlags.assert_has_calls([mock.call(1)])"},{"line_number":11910,"context_line":"        mock_domain.undefine.assert_called_once()"},{"line_number":11911,"context_line":"        mock_save.assert_called_once_with()"},{"line_number":11912,"context_line":""},{"line_number":11913,"context_line":"    @mock.patch.object(objects.Instance, \u0027save\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5201f7_b296f1ed","line":11910,"range":{"start_line":11910,"start_character":29,"end_line":11910,"end_character":47},"updated":"2017-01-05 17:31:05.000000000","message":"I don\u0027t think this is a valid mock function. This should probably read like so:\n\n    self.assertTrue(mock_domain.undefine.called)\n\nor figure out what parameters are expected from assert_called_once_with","commit_id":"fd8433ea790659da8b03a9764bcfc6230ca9d495"},{"author":{"_account_id":1926,"name":"Derek Higgins","email":"derekh@redhat.com","username":"derekh"},"change_message_id":"36417df76039a9ba96fdc5323dd60af29aa7407a","unresolved":false,"context_lines":[{"line_number":11907,"context_line":"        self.assertEqual(2, mock_domain.ID.call_count)"},{"line_number":11908,"context_line":"        mock_domain.destroy.assert_called_once()"},{"line_number":11909,"context_line":"        mock_domain.undefineFlags.assert_has_calls([mock.call(1)])"},{"line_number":11910,"context_line":"        mock_domain.undefine.assert_called_once()"},{"line_number":11911,"context_line":"        mock_save.assert_called_once_with()"},{"line_number":11912,"context_line":""},{"line_number":11913,"context_line":"    @mock.patch.object(objects.Instance, \u0027save\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5201f7_fd7a05f0","line":11910,"range":{"start_line":11910,"start_character":29,"end_line":11910,"end_character":47},"in_reply_to":"ba5201f7_b296f1ed","updated":"2017-01-05 21:25:33.000000000","message":"Its working for me like this, I\u0027ve tested it with a function that wasn\u0027t called once and it raises the exception as expected.","commit_id":"fd8433ea790659da8b03a9764bcfc6230ca9d495"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c09eb7fccbfafbb922179e6458f9fcc514dbd110","unresolved":false,"context_lines":[{"line_number":11907,"context_line":"        self.assertEqual(2, mock_domain.ID.call_count)"},{"line_number":11908,"context_line":"        mock_domain.destroy.assert_called_once()"},{"line_number":11909,"context_line":"        mock_domain.undefineFlags.assert_has_calls([mock.call(1)])"},{"line_number":11910,"context_line":"        mock_domain.undefine.assert_called_once()"},{"line_number":11911,"context_line":"        mock_save.assert_called_once_with()"},{"line_number":11912,"context_line":""},{"line_number":11913,"context_line":"    @mock.patch.object(objects.Instance, \u0027save\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5201f7_32f108ce","line":11910,"range":{"start_line":11910,"start_character":29,"end_line":11910,"end_character":47},"in_reply_to":"ba5201f7_fd7a05f0","updated":"2017-01-06 09:49:24.000000000","message":"Yup, I couldn\u0027t find an example in the code base when I quickly grepped for it, but it\u0027s in the docs [1] so we\u0027re good.\n\n[1] https://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.assert_called_once","commit_id":"fd8433ea790659da8b03a9764bcfc6230ca9d495"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c8dcaeebc275f663ce67d1df226e6c0bbd700ab2","unresolved":false,"context_lines":[{"line_number":11966,"context_line":"        mock_domain.ID.return_value \u003d 123"},{"line_number":11967,"context_line":""},{"line_number":11968,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":11969,"context_line":"        drvr._host.get_domain \u003d mock.Mock(return_value \u003d mock_domain)"},{"line_number":11970,"context_line":"        drvr._has_uefi_support \u003d mock.Mock(return_value \u003d True)"},{"line_number":11971,"context_line":"        drvr.delete_instance_files \u003d mock.Mock(return_value \u003d None)"},{"line_number":11972,"context_line":"        drvr.get_info \u003d mock.Mock(return_value \u003d"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba5201f7_92a714bc","line":11969,"range":{"start_line":11969,"start_character":54,"end_line":11969,"end_character":57},"updated":"2017-01-06 09:52:40.000000000","message":"No spaces?","commit_id":"fc3ca7792e715936da8dcd5690186c9d6ba362c3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c8dcaeebc275f663ce67d1df226e6c0bbd700ab2","unresolved":false,"context_lines":[{"line_number":11979,"context_line":"        self.assertEqual(1, mock_domain.ID.call_count)"},{"line_number":11980,"context_line":"        mock_domain.destroy.assert_called_once()"},{"line_number":11981,"context_line":"        # undefineFlags should now be called with 5 as uefi us supported"},{"line_number":11982,"context_line":"        mock_domain.undefineFlags.assert_has_calls([mock.call(5)])"},{"line_number":11983,"context_line":"        mock_domain.undefine.assert_not_called()"},{"line_number":11984,"context_line":"        mock_save.assert_called_once_with()"},{"line_number":11985,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba5201f7_728b901f","line":11982,"range":{"start_line":11982,"start_character":62,"end_line":11982,"end_character":63},"updated":"2017-01-06 09:52:40.000000000","message":"This is\n\n  fakelibvirt.VIR_DOMAIN_UNDEFINE_MANAGED_SAVE |\n    fakelibvirt.VIR_DOMAIN_UNDEFINE_NVRAM\n\nRight? Maybe use that instead?","commit_id":"fc3ca7792e715936da8dcd5690186c9d6ba362c3"}],"nova/virt/libvirt/guest.py":[{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"1432141565953ceff975dce0ca9d88d0e264bd5c","unresolved":false,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def delete_configuration(self):"},{"line_number":260,"context_line":"        \"\"\"Undefines a domain from hypervisor.\"\"\""},{"line_number":261,"context_line":"        if libvirt.VIR_DOMAIN_UNDEFINE_NVRAM:"},{"line_number":262,"context_line":"            try:"},{"line_number":263,"context_line":"                self._domain.undefineFlags("},{"line_number":264,"context_line":"                    libvirt.VIR_DOMAIN_UNDEFINE_NVRAM |"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_fcea36ab","line":261,"range":{"start_line":261,"start_character":8,"end_line":261,"end_character":45},"updated":"2016-08-22 08:49:11.000000000","message":"I\u0027d prefer to use libvirt version constant instead.","commit_id":"ce8ddd593f95706bd4e03a7488bea5b379f08f59"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"48f7a6a5cb7002b7c3b2cf55a6ea5c09b96ec495","unresolved":false,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def delete_configuration(self):"},{"line_number":260,"context_line":"        \"\"\"Undefines a domain from hypervisor.\"\"\""},{"line_number":261,"context_line":"        if libvirt.VIR_DOMAIN_UNDEFINE_NVRAM:"},{"line_number":262,"context_line":"            try:"},{"line_number":263,"context_line":"                self._domain.undefineFlags("},{"line_number":264,"context_line":"                    libvirt.VIR_DOMAIN_UNDEFINE_NVRAM |"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_2f748dfb","line":261,"range":{"start_line":261,"start_character":8,"end_line":261,"end_character":45},"in_reply_to":"1ac06dbe_fcea36ab","updated":"2016-08-22 10:18:28.000000000","message":"Thanks~\nBut use libvirt version checking may involve more parameters to the function delete_configuration. Currently I don\u0027t have a good method to check the version according to the libvirt...","commit_id":"ce8ddd593f95706bd4e03a7488bea5b379f08f59"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"1432141565953ceff975dce0ca9d88d0e264bd5c","unresolved":false,"context_lines":[{"line_number":264,"context_line":"                    libvirt.VIR_DOMAIN_UNDEFINE_NVRAM |"},{"line_number":265,"context_line":"                    libvirt.VIR_DOMAIN_UNDEFINE_MANAGED_SAVE)"},{"line_number":266,"context_line":"            except:"},{"line_number":267,"context_line":"                # Older versions of libvirt don\u0027t support undefine flags,"},{"line_number":268,"context_line":"                # trying to remove managed image"},{"line_number":269,"context_line":"                try:"},{"line_number":270,"context_line":"                    self._domain.undefineFlags("},{"line_number":271,"context_line":"                        libvirt.VIR_DOMAIN_UNDEFINE_MANAGED_SAVE)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_1c363252","line":268,"range":{"start_line":267,"start_character":16,"end_line":268,"end_character":48},"updated":"2016-08-22 08:49:11.000000000","message":"is it just a copy paste? which versions are mentioned here?","commit_id":"ce8ddd593f95706bd4e03a7488bea5b379f08f59"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"48f7a6a5cb7002b7c3b2cf55a6ea5c09b96ec495","unresolved":false,"context_lines":[{"line_number":264,"context_line":"                    libvirt.VIR_DOMAIN_UNDEFINE_NVRAM |"},{"line_number":265,"context_line":"                    libvirt.VIR_DOMAIN_UNDEFINE_MANAGED_SAVE)"},{"line_number":266,"context_line":"            except:"},{"line_number":267,"context_line":"                # Older versions of libvirt don\u0027t support undefine flags,"},{"line_number":268,"context_line":"                # trying to remove managed image"},{"line_number":269,"context_line":"                try:"},{"line_number":270,"context_line":"                    self._domain.undefineFlags("},{"line_number":271,"context_line":"                        libvirt.VIR_DOMAIN_UNDEFINE_MANAGED_SAVE)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_d5d3cd36","line":268,"range":{"start_line":267,"start_character":16,"end_line":268,"end_character":48},"in_reply_to":"1ac06dbe_1c363252","updated":"2016-08-22 10:18:28.000000000","message":"Yeah Sorry just copy paste from below","commit_id":"ce8ddd593f95706bd4e03a7488bea5b379f08f59"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"6847b5d1177b73c11577b3f35759e210d9579d06","unresolved":false,"context_lines":[{"line_number":259,"context_line":"    def delete_configuration(self):"},{"line_number":260,"context_line":"        \"\"\"Undefines a domain from hypervisor.\"\"\""},{"line_number":261,"context_line":"        try:"},{"line_number":262,"context_line":"            if libvirt.VIR_DOMAIN_UNDEFINE_NVRAM:"},{"line_number":263,"context_line":"                try:"},{"line_number":264,"context_line":"                    self._domain.undefineFlags("},{"line_number":265,"context_line":"                        libvirt.VIR_DOMAIN_UNDEFINE_NVRAM |"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ac06dbe_a7606ba6","line":262,"range":{"start_line":262,"start_character":15,"end_line":262,"end_character":49},"updated":"2016-08-23 05:38:34.000000000","message":"Make mistake here. Since the if libvirt don\u0027t has the VIR_DOMAIN_UNDEFINE_NVRAM, will induce error of no module has attribute of ...\nI will turn to use another judgement to realize this.","commit_id":"856117ae6268baeda11b932dd4decbd03cab8a38"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"b584309dd144495f6687b6745bdb8e734b46ba0f","unresolved":false,"context_lines":[{"line_number":265,"context_line":"                        libvirt.VIR_DOMAIN_UNDEFINE_NVRAM |"},{"line_number":266,"context_line":"                        libvirt.VIR_DOMAIN_UNDEFINE_MANAGED_SAVE)"},{"line_number":267,"context_line":"                except libvirt.libvirtError:"},{"line_number":268,"context_line":"                    LOG.debug(\"Error from libvirt during undefineFlags. %d\""},{"line_number":269,"context_line":"                              \"Retrying undefine without nvram\", self.id)"},{"line_number":270,"context_line":"                    self._domain.undefineFlags("},{"line_number":271,"context_line":"                        libvirt.VIR_DOMAIN_UNDEFINE_MANAGED_SAVE)"},{"line_number":272,"context_line":"                except AttributeError:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ac06dbe_5e225501","line":269,"range":{"start_line":268,"start_character":20,"end_line":269,"end_character":73},"updated":"2016-08-22 11:38:34.000000000","message":"could you explain conditions, that causes that code path?","commit_id":"856117ae6268baeda11b932dd4decbd03cab8a38"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"ca4d72f14e2692034bc4268138d033a3799853ae","unresolved":false,"context_lines":[{"line_number":265,"context_line":"                        libvirt.VIR_DOMAIN_UNDEFINE_NVRAM |"},{"line_number":266,"context_line":"                        libvirt.VIR_DOMAIN_UNDEFINE_MANAGED_SAVE)"},{"line_number":267,"context_line":"                except libvirt.libvirtError:"},{"line_number":268,"context_line":"                    LOG.debug(\"Error from libvirt during undefineFlags. %d\""},{"line_number":269,"context_line":"                              \"Retrying undefine without nvram\", self.id)"},{"line_number":270,"context_line":"                    self._domain.undefineFlags("},{"line_number":271,"context_line":"                        libvirt.VIR_DOMAIN_UNDEFINE_MANAGED_SAVE)"},{"line_number":272,"context_line":"                except AttributeError:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ac06dbe_71d13f57","line":269,"range":{"start_line":268,"start_character":20,"end_line":269,"end_character":73},"in_reply_to":"1ac06dbe_5e225501","updated":"2016-08-22 13:01:24.000000000","message":"When libvirt has supported the NVRAM but the virtualization driver such as Qemu and Xen don\u0027t support the nvram, this code will be called.","commit_id":"856117ae6268baeda11b932dd4decbd03cab8a38"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e50d96e41dc4f1875bf8dd91517c12f3f62b31ad","unresolved":false,"context_lines":[{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def delete_configuration(self, support_uefi\u003dFalse):"},{"line_number":266,"context_line":"        \"\"\"Undefines a domain from hypervisor.\"\"\""},{"line_number":267,"context_line":"        try:"},{"line_number":268,"context_line":"            if support_uefi:"},{"line_number":269,"context_line":"                try:"},{"line_number":270,"context_line":"                    self._domain.undefineFlags("},{"line_number":271,"context_line":"                        libvirt.VIR_DOMAIN_UNDEFINE_NVRAM |"},{"line_number":272,"context_line":"                        libvirt.VIR_DOMAIN_UNDEFINE_MANAGED_SAVE)"},{"line_number":273,"context_line":"                except libvirt.libvirtError:"},{"line_number":274,"context_line":"                    LOG.debug(\"Error from libvirt during undefineFlags. %d\""},{"line_number":275,"context_line":"                              \"Retrying undefine without nvram\", self.id)"},{"line_number":276,"context_line":"                    self._domain.undefineFlags("},{"line_number":277,"context_line":"                        libvirt.VIR_DOMAIN_UNDEFINE_MANAGED_SAVE)"},{"line_number":278,"context_line":"                except AttributeError:"},{"line_number":279,"context_line":"                    # Older versions of libvirt don\u0027t support undefine flags,"},{"line_number":280,"context_line":"                    # trying to remove managed image"},{"line_number":281,"context_line":"                    try:"},{"line_number":282,"context_line":"                        if self._domain.hasManagedSaveImage(0):"},{"line_number":283,"context_line":"                            self._domain.managedSaveRemove(0)"},{"line_number":284,"context_line":"                    except AttributeError:"},{"line_number":285,"context_line":"                        pass"},{"line_number":286,"context_line":"                    self._domain.undefine()"},{"line_number":287,"context_line":"            else:"},{"line_number":288,"context_line":"                self._domain.undefineFlags("},{"line_number":289,"context_line":"                    libvirt.VIR_DOMAIN_UNDEFINE_MANAGED_SAVE)"},{"line_number":290,"context_line":"        except libvirt.libvirtError:"},{"line_number":291,"context_line":"            LOG.debug(\"Error from libvirt during undefineFlags. %d\""},{"line_number":292,"context_line":"                      \"Retrying with undefine\", self.id)"},{"line_number":293,"context_line":"            self._domain.undefine()"},{"line_number":294,"context_line":"        except AttributeError:"},{"line_number":295,"context_line":"            # Older versions of libvirt don\u0027t support undefine flags,"},{"line_number":296,"context_line":"            # trying to remove managed image"},{"line_number":297,"context_line":"            try:"},{"line_number":298,"context_line":"                if self._domain.hasManagedSaveImage(0):"},{"line_number":299,"context_line":"                    self._domain.managedSaveRemove(0)"},{"line_number":300,"context_line":"            except AttributeError:"},{"line_number":301,"context_line":"                pass"},{"line_number":302,"context_line":"            self._domain.undefine()"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"    def has_persistent_configuration(self):"},{"line_number":305,"context_line":"        \"\"\"Whether domain config is persistently stored on the host.\"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"da4df55a_21114c53","line":302,"range":{"start_line":267,"start_character":0,"end_line":302,"end_character":35},"updated":"2016-12-22 17:46:56.000000000","message":"This is way off - you\u0027ve got duplicated code, handlers for the same exception that do separate things, etc. You need to rework this","commit_id":"ac41933c932354717bc563095cda4b9f5ee3b293"},{"author":{"_account_id":1926,"name":"Derek Higgins","email":"derekh@redhat.com","username":"derekh"},"change_message_id":"da756073f32a8618819521b7332cdf882d390ce8","unresolved":false,"context_lines":[{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def delete_configuration(self, support_uefi\u003dFalse):"},{"line_number":266,"context_line":"        \"\"\"Undefines a domain from hypervisor.\"\"\""},{"line_number":267,"context_line":"        try:"},{"line_number":268,"context_line":"            if support_uefi:"},{"line_number":269,"context_line":"                try:"},{"line_number":270,"context_line":"                    self._domain.undefineFlags("},{"line_number":271,"context_line":"                        libvirt.VIR_DOMAIN_UNDEFINE_NVRAM |"},{"line_number":272,"context_line":"                        libvirt.VIR_DOMAIN_UNDEFINE_MANAGED_SAVE)"},{"line_number":273,"context_line":"                except libvirt.libvirtError:"},{"line_number":274,"context_line":"                    LOG.debug(\"Error from libvirt during undefineFlags. %d\""},{"line_number":275,"context_line":"                              \"Retrying undefine without nvram\", self.id)"},{"line_number":276,"context_line":"                    self._domain.undefineFlags("},{"line_number":277,"context_line":"                        libvirt.VIR_DOMAIN_UNDEFINE_MANAGED_SAVE)"},{"line_number":278,"context_line":"                except AttributeError:"},{"line_number":279,"context_line":"                    # Older versions of libvirt don\u0027t support undefine flags,"},{"line_number":280,"context_line":"                    # trying to remove managed image"},{"line_number":281,"context_line":"                    try:"},{"line_number":282,"context_line":"                        if self._domain.hasManagedSaveImage(0):"},{"line_number":283,"context_line":"                            self._domain.managedSaveRemove(0)"},{"line_number":284,"context_line":"                    except AttributeError:"},{"line_number":285,"context_line":"                        pass"},{"line_number":286,"context_line":"                    self._domain.undefine()"},{"line_number":287,"context_line":"            else:"},{"line_number":288,"context_line":"                self._domain.undefineFlags("},{"line_number":289,"context_line":"                    libvirt.VIR_DOMAIN_UNDEFINE_MANAGED_SAVE)"},{"line_number":290,"context_line":"        except libvirt.libvirtError:"},{"line_number":291,"context_line":"            LOG.debug(\"Error from libvirt during undefineFlags. %d\""},{"line_number":292,"context_line":"                      \"Retrying with undefine\", self.id)"},{"line_number":293,"context_line":"            self._domain.undefine()"},{"line_number":294,"context_line":"        except AttributeError:"},{"line_number":295,"context_line":"            # Older versions of libvirt don\u0027t support undefine flags,"},{"line_number":296,"context_line":"            # trying to remove managed image"},{"line_number":297,"context_line":"            try:"},{"line_number":298,"context_line":"                if self._domain.hasManagedSaveImage(0):"},{"line_number":299,"context_line":"                    self._domain.managedSaveRemove(0)"},{"line_number":300,"context_line":"            except AttributeError:"},{"line_number":301,"context_line":"                pass"},{"line_number":302,"context_line":"            self._domain.undefine()"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"    def has_persistent_configuration(self):"},{"line_number":305,"context_line":"        \"\"\"Whether domain config is persistently stored on the host.\"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5201f7_71880ec6","line":302,"range":{"start_line":267,"start_character":0,"end_line":302,"end_character":35},"in_reply_to":"da4df55a_21114c53","updated":"2017-01-05 15:37:47.000000000","message":"I\u0027ve a simpler version ready, just wanna settle on how to do the unit tests first.","commit_id":"ac41933c932354717bc563095cda4b9f5ee3b293"}]}
