)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8531,"name":"Yu Zhang","email":"zhangyu11@huawei.com","username":"zhyu"},"change_message_id":"26dc53acf99197e6f15773df51abd0c82ba69091","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     julykobe \u003cmyzswen@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-09-17 19:15:55 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"revert task_state when live_migration failed"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: If7b614c643b172a6b05a30075769b851343984d4"},{"line_number":10,"context_line":"Closes-Bug: #1249992"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da9df570_1ca0c68f","line":7,"updated":"2014-09-22 12:03:27.000000000","message":"More description here helps.","commit_id":"f5336175211b3010545244bb05787f9ddfd2bf3a"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"3ab19d452bc018697d21fbc1d7ac92b8f9fd40fa","unresolved":false,"context_lines":[{"line_number":5172,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":5173,"context_line":"                ret \u003d unicode(e)"},{"line_number":5174,"context_line":"                LOG.error(m, {\u0027ret\u0027: ret, \u0027u\u0027: u})"},{"line_number":5175,"context_line":"\t\traise exception.MigrationPreCheckError(reason\u003dm % {\u0027ret\u0027: ret, \u0027u\u0027: u})"},{"line_number":5176,"context_line":""},{"line_number":5177,"context_line":"        if ret \u003c\u003d 0:"},{"line_number":5178,"context_line":"            LOG.error(m, {\u0027ret\u0027: ret, \u0027u\u0027: u})"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa201ad_74ca041c","line":5175,"updated":"2014-10-08 11:38:34.000000000","message":"Please remove redundant tabs.","commit_id":"ddc15262836dd2d30ad1a0710ad97b133fa24b63"},{"author":{"_account_id":7746,"name":"Dan Genin","email":"daniel.genin@jhuapl.edu","username":"DiG"},"change_message_id":"3c8254ac765926cd0d9f8439625d188ef5fa30dd","unresolved":false,"context_lines":[{"line_number":5174,"context_line":"        try:"},{"line_number":5175,"context_line":"            ret \u003d self._conn.compareCPU(cpu.to_xml(), 0)"},{"line_number":5176,"context_line":"        except libvirt.libvirtError as e:"},{"line_number":5177,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":5178,"context_line":"                LOG.error(m, {\u0027ret\u0027: e, \u0027u\u0027: u})"},{"line_number":5179,"context_line":"                raise exception.MigrationPreCheckError(reason\u003dm %"},{"line_number":5180,"context_line":"                                                       {\u0027ret\u0027: e, \u0027u\u0027: u})"}],"source_content_type":"text/x-python","patch_set":7,"id":"9aa7fdbe_f46004a7","line":5177,"updated":"2014-10-23 17:42:02.000000000","message":"It\u0027s not clear to me that you need to execute with save_and_reraise_exception(), since you are raising a new exception.","commit_id":"b90ac008789540b8815b3623d80f6b1791b8fb80"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"82bc4cc734cb80c65f6507e026f6bcf47e1eb5a0","unresolved":false,"context_lines":[{"line_number":5174,"context_line":"        try:"},{"line_number":5175,"context_line":"            ret \u003d self._conn.compareCPU(cpu.to_xml(), 0)"},{"line_number":5176,"context_line":"        except libvirt.libvirtError as e:"},{"line_number":5177,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":5178,"context_line":"                LOG.error(m, {\u0027ret\u0027: e, \u0027u\u0027: u})"},{"line_number":5179,"context_line":"                raise exception.MigrationPreCheckError(reason\u003dm %"},{"line_number":5180,"context_line":"                                                       {\u0027ret\u0027: e, \u0027u\u0027: u})"}],"source_content_type":"text/x-python","patch_set":7,"id":"9aa7fdbe_1a2e8f92","line":5177,"in_reply_to":"9aa7fdbe_f46004a7","updated":"2014-10-23 19:04:39.000000000","message":"Agreed, I don\u0027t think this makes sense at all.","commit_id":"b90ac008789540b8815b3623d80f6b1791b8fb80"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"7e8eedf875e6052fa2b7729cc2a6b2e2907d4c32","unresolved":false,"context_lines":[{"line_number":5158,"context_line":"            ret \u003d self._conn.compareCPU(cpu.to_xml(), 0)"},{"line_number":5159,"context_line":"        except libvirt.libvirtError as e:"},{"line_number":5160,"context_line":"            LOG.error(m, {\u0027ret\u0027: e, \u0027u\u0027: u})"},{"line_number":5161,"context_line":"            raise exception.MigrationPreCheckError("},{"line_number":5162,"context_line":"                reason\u003dm % {\u0027ret\u0027: e, \u0027u\u0027: u})"},{"line_number":5163,"context_line":""},{"line_number":5164,"context_line":"        if ret \u003c\u003d 0:"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_46000e66","line":5161,"updated":"2015-03-03 22:15:56.000000000","message":"It seems a bit odd to raise a MigrationPreCheckError from a generically named method like _compare_cpu.  But it does appear that this is only called in the case of a migration.","commit_id":"5a7ab212b53c68f22c3491b4b87ce95724418a6f"}]}
