)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12813,"name":"Rong Han","email":"han.rong3@zte.com.cn","username":"hanrong-zte"},"change_message_id":"31888d6587ca9a2db238c35a50203b89e65209fd","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jinquan Ni \u003cni.jinquan@zte.com.cn\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-06-08 08:02:09 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Code flow problem in wait_for_job"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There are some code flow problems in wait_for_job that defined"},{"line_number":10,"context_line":"in /virt/libvirt/guest.py. It will raise AttributeError when"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5a9d85d2_2e278365","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":4},"updated":"2016-06-21 03:31:44.000000000","message":"Add libvirt flag at the beginning of this sentence.","commit_id":"1b186d96478af5717c879f8b2ca9aa96de502621"},{"author":{"_account_id":17898,"name":"Jinquan Ni","email":"ni.jinquan@zte.com.cn","username":"jinquanni"},"change_message_id":"8728d64f3eb6d7f7575fb078d15d333bf0d59f87","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jinquan Ni \u003cni.jinquan@zte.com.cn\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-06-08 08:02:09 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Code flow problem in wait_for_job"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There are some code flow problems in wait_for_job that defined"},{"line_number":10,"context_line":"in /virt/libvirt/guest.py. It will raise AttributeError when"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5a9d85d2_2e366352","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":4},"in_reply_to":"5a9d85d2_2e278365","updated":"2016-06-21 03:43:23.000000000","message":"Done","commit_id":"1b186d96478af5717c879f8b2ca9aa96de502621"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"fe6f9bf477c8426143bc0ee8372c404d53363cc7","unresolved":false,"context_lines":[{"line_number":11,"context_line":"get_job_info return None and abort_on_error equal False(default"},{"line_number":12,"context_line":"value)."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This patch set will modify the default value of abort_on_error"},{"line_number":15,"context_line":"to True. Corresponding unittest will modify also."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I6a9f1d170c0ab022121e688d3f14cd2afa94aef7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"3aaa91ec_628717b7","line":15,"range":{"start_line":14,"start_character":0,"end_line":15,"end_character":49},"updated":"2016-07-01 17:22:00.000000000","message":"This commit message is for PS1 and gets old now.\nI was confused to see this message by checking the code, this thing will happen in the future when checking the code history.\n\nWe need to update this.","commit_id":"6ed92141806bc4d9c1e7fac390876cbf727751cd"}],"nova/tests/unit/virt/libvirt/test_guest.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"38bf63df4de7d68827ec9b8bca93edff467f6bd5","unresolved":false,"context_lines":[{"line_number":642,"context_line":"            self.gblock.wait_for_job, abort_on_error\u003dTrue)"},{"line_number":643,"context_line":""},{"line_number":644,"context_line":"    def test_wait_for_job_ignore_on_error(self):"},{"line_number":645,"context_line":"        self.domain.blockJobInfo.return_value \u003d -1"},{"line_number":646,"context_line":"        in_progress \u003d self.gblock.wait_for_job()"},{"line_number":647,"context_line":"        self.assertFalse(in_progress)"},{"line_number":648,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_51e8c010","line":645,"updated":"2016-06-22 11:46:24.000000000","message":"Oops, should return None to correctly test the code path.","commit_id":"27905d0c06bb00e01712cdcc458de802ce6b3340"},{"author":{"_account_id":17898,"name":"Jinquan Ni","email":"ni.jinquan@zte.com.cn","username":"jinquanni"},"change_message_id":"c179291ecd89e61c9d8b8a7d50c3a2c952d2642e","unresolved":false,"context_lines":[{"line_number":642,"context_line":"            self.gblock.wait_for_job, abort_on_error\u003dTrue)"},{"line_number":643,"context_line":""},{"line_number":644,"context_line":"    def test_wait_for_job_ignore_on_error(self):"},{"line_number":645,"context_line":"        self.domain.blockJobInfo.return_value \u003d -1"},{"line_number":646,"context_line":"        in_progress \u003d self.gblock.wait_for_job()"},{"line_number":647,"context_line":"        self.assertFalse(in_progress)"},{"line_number":648,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_77316ca2","line":645,"in_reply_to":"3aaa91ec_51e8c010","updated":"2016-06-22 12:38:20.000000000","message":"Umm, here should return -1 , the get_job_info will return None when blockJobInfo return -1. you can see guest.py(line 606)","commit_id":"27905d0c06bb00e01712cdcc458de802ce6b3340"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"abf2f7f855e248baef5876b9b2568dc22905a22a","unresolved":false,"context_lines":[{"line_number":642,"context_line":"            self.gblock.wait_for_job, abort_on_error\u003dTrue)"},{"line_number":643,"context_line":""},{"line_number":644,"context_line":"    def test_wait_for_job_ignore_on_error(self):"},{"line_number":645,"context_line":"        self.domain.blockJobInfo.return_value \u003d -1"},{"line_number":646,"context_line":"        in_progress \u003d self.gblock.wait_for_job()"},{"line_number":647,"context_line":"        self.assertFalse(in_progress)"},{"line_number":648,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_78e9581a","line":645,"in_reply_to":"3aaa91ec_77316ca2","updated":"2016-06-22 13:48:21.000000000","message":"Absolutely, my mistake.","commit_id":"27905d0c06bb00e01712cdcc458de802ce6b3340"}],"nova/virt/libvirt/guest.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"2cff017fed6efc007a024eb1fb33983862864fe1","unresolved":false,"context_lines":[{"line_number":642,"context_line":"        \"\"\"Resizes block device to Kib size.\"\"\""},{"line_number":643,"context_line":"        self._guest._domain.blockResize(self._disk, size_kb)"},{"line_number":644,"context_line":""},{"line_number":645,"context_line":"    def wait_for_job(self, abort_on_error\u003dTrue, wait_for_job_clean\u003dFalse):"},{"line_number":646,"context_line":"        \"\"\"Wait for libvirt block job to complete."},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"        Libvirt may return either cur\u003d\u003dend or an empty dict when"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a9d85d2_8f0655cc","line":645,"updated":"2016-06-21 14:28:32.000000000","message":"Your are not fixing the bug...","commit_id":"57419d34d7132161fd35343c4f520dd4b831aec5"},{"author":{"_account_id":17898,"name":"Jinquan Ni","email":"ni.jinquan@zte.com.cn","username":"jinquanni"},"change_message_id":"dddad7eadc44290556e90986b10cdb63c0b74743","unresolved":false,"context_lines":[{"line_number":642,"context_line":"        \"\"\"Resizes block device to Kib size.\"\"\""},{"line_number":643,"context_line":"        self._guest._domain.blockResize(self._disk, size_kb)"},{"line_number":644,"context_line":""},{"line_number":645,"context_line":"    def wait_for_job(self, abort_on_error\u003dTrue, wait_for_job_clean\u003dFalse):"},{"line_number":646,"context_line":"        \"\"\"Wait for libvirt block job to complete."},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"        Libvirt may return either cur\u003d\u003dend or an empty dict when"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_f9628eac","line":645,"in_reply_to":"5a9d85d2_8f0655cc","updated":"2016-06-22 02:06:04.000000000","message":"Done","commit_id":"57419d34d7132161fd35343c4f520dd4b831aec5"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"2cff017fed6efc007a024eb1fb33983862864fe1","unresolved":false,"context_lines":[{"line_number":662,"context_line":"            msg \u003d _(\u0027libvirt error while requesting blockjob info.\u0027)"},{"line_number":663,"context_line":"            raise exception.NovaException(msg)"},{"line_number":664,"context_line":""},{"line_number":665,"context_line":"        if wait_for_job_clean:"},{"line_number":666,"context_line":"            job_ended \u003d status.job \u003d\u003d 0"},{"line_number":667,"context_line":"        else:"},{"line_number":668,"context_line":"            job_ended \u003d status.cur \u003d\u003d status.end"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a9d85d2_cfde9d3e","line":665,"updated":"2016-06-21 14:28:32.000000000","message":"We have to handle case where abort_on_error is False and status is None\n\n  if not status:\n    return False","commit_id":"57419d34d7132161fd35343c4f520dd4b831aec5"},{"author":{"_account_id":17898,"name":"Jinquan Ni","email":"ni.jinquan@zte.com.cn","username":"jinquanni"},"change_message_id":"dddad7eadc44290556e90986b10cdb63c0b74743","unresolved":false,"context_lines":[{"line_number":662,"context_line":"            msg \u003d _(\u0027libvirt error while requesting blockjob info.\u0027)"},{"line_number":663,"context_line":"            raise exception.NovaException(msg)"},{"line_number":664,"context_line":""},{"line_number":665,"context_line":"        if wait_for_job_clean:"},{"line_number":666,"context_line":"            job_ended \u003d status.job \u003d\u003d 0"},{"line_number":667,"context_line":"        else:"},{"line_number":668,"context_line":"            job_ended \u003d status.cur \u003d\u003d status.end"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_595802fb","line":665,"in_reply_to":"5a9d85d2_cfde9d3e","updated":"2016-06-22 02:06:04.000000000","message":"Done","commit_id":"57419d34d7132161fd35343c4f520dd4b831aec5"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"db85cc13bf560114dab5e17d8e847ad74ad9bb2b","unresolved":false,"context_lines":[{"line_number":662,"context_line":"            if abort_on_error:"},{"line_number":663,"context_line":"                msg \u003d _(\u0027libvirt error while requesting blockjob info.\u0027)"},{"line_number":664,"context_line":"                raise exception.NovaException(msg)"},{"line_number":665,"context_line":"            else:"},{"line_number":666,"context_line":"                return False"},{"line_number":667,"context_line":""},{"line_number":668,"context_line":"        if wait_for_job_clean:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_b15c8426","line":665,"updated":"2016-06-22 11:44:20.000000000","message":"We can probably remove the \u0027else\u0027 here.","commit_id":"27905d0c06bb00e01712cdcc458de802ce6b3340"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"abf2f7f855e248baef5876b9b2568dc22905a22a","unresolved":false,"context_lines":[{"line_number":662,"context_line":"            if abort_on_error:"},{"line_number":663,"context_line":"                msg \u003d _(\u0027libvirt error while requesting blockjob info.\u0027)"},{"line_number":664,"context_line":"                raise exception.NovaException(msg)"},{"line_number":665,"context_line":"            else:"},{"line_number":666,"context_line":"                return False"},{"line_number":667,"context_line":""},{"line_number":668,"context_line":"        if wait_for_job_clean:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_58ee1c23","line":665,"in_reply_to":"3aaa91ec_172628ce","updated":"2016-06-22 13:48:21.000000000","message":"Thanks for this.","commit_id":"27905d0c06bb00e01712cdcc458de802ce6b3340"},{"author":{"_account_id":17898,"name":"Jinquan Ni","email":"ni.jinquan@zte.com.cn","username":"jinquanni"},"change_message_id":"c179291ecd89e61c9d8b8a7d50c3a2c952d2642e","unresolved":false,"context_lines":[{"line_number":662,"context_line":"            if abort_on_error:"},{"line_number":663,"context_line":"                msg \u003d _(\u0027libvirt error while requesting blockjob info.\u0027)"},{"line_number":664,"context_line":"                raise exception.NovaException(msg)"},{"line_number":665,"context_line":"            else:"},{"line_number":666,"context_line":"                return False"},{"line_number":667,"context_line":""},{"line_number":668,"context_line":"        if wait_for_job_clean:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_172628ce","line":665,"in_reply_to":"3aaa91ec_b15c8426","updated":"2016-06-22 12:38:20.000000000","message":"Ok, i will remove it","commit_id":"27905d0c06bb00e01712cdcc458de802ce6b3340"}]}
