)]}'
{"nova/tests/test_image_utils.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"a4f5a4f79a1cf109b792ae7b76e046db30312231","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from nova import test"},{"line_number":20,"context_line":"from nova import utils"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from nova.virt import images"},{"line_number":23,"context_line":"from nova.virt.libvirt import utils as libvirt_utils"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FzDc%3D","line":21,"updated":"2013-01-04 19:22:36.000000000","message":"If you have to resubmit this patch, would you mind removing this blank line while you\u0027re at it?  That would clean up a minor style issue that\u0027s crept into the code base…","commit_id":"1b7cea76abde83e9f937e33b56d54fa885f2a0b9"}],"nova/virt/images.py":[{"author":{"_account_id":1528,"name":"Stanislaw Pitucha","email":"viraptor@gmail.com","username":"stanislaw-pitucha"},"change_message_id":"f9a4260ae15138205b51e133eb144a360d7f125b","unresolved":false,"context_lines":[{"line_number":177,"context_line":"def qemu_img_info(path):"},{"line_number":178,"context_line":"    \"\"\"Return a object containing the parsed output from qemu-img info.\"\"\""},{"line_number":179,"context_line":"    if not os.path.exists(path):"},{"line_number":180,"context_line":"        return {}"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    out, err \u003d utils.execute(\u0027env\u0027, \u0027LC_ALL\u003dC\u0027, \u0027LANG\u003dC\u0027,"},{"line_number":183,"context_line":"                             \u0027qemu-img\u0027, \u0027info\u0027, path)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F5L8%3D","line":180,"updated":"2012-12-24 10:32:31.000000000","message":"Should this really return an empty hash instead of an empty QemuImgInfo object? The actual usage of the result is \"data.attribute\", not data[attribute], so returning {} is likely to cause attribute exceptions later in the code. A negative test using fetch_to_raw could verify it a bit more.","commit_id":"fa71824e95471e134544e6838c7f41e75ffe8307"},{"author":{"_account_id":1528,"name":"Stanislaw Pitucha","email":"viraptor@gmail.com","username":"stanislaw-pitucha"},"change_message_id":"f9a4260ae15138205b51e133eb144a360d7f125b","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    with utils.remove_path_on_error(path_tmp):"},{"line_number":210,"context_line":"        data \u003d qemu_img_info(path_tmp)"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        fmt \u003d data.file_format"},{"line_number":213,"context_line":"        if fmt is None:"},{"line_number":214,"context_line":"            raise exception.ImageUnacceptable("}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F5L4%3D","line":211,"updated":"2012-12-24 10:32:31.000000000","message":"mentioned usage example","commit_id":"fa71824e95471e134544e6838c7f41e75ffe8307"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c0f4d3aa9e99232d9817372238278dbf0861a853","unresolved":false,"context_lines":[{"line_number":177,"context_line":"def qemu_img_info(path):"},{"line_number":178,"context_line":"    \"\"\"Return a object containing the parsed output from qemu-img info.\"\"\""},{"line_number":179,"context_line":"    if not os.path.exists(path):"},{"line_number":180,"context_line":"        return QemuImgInfo()"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    out, err \u003d utils.execute(\u0027env\u0027, \u0027LC_ALL\u003dC\u0027, \u0027LANG\u003dC\u0027,"},{"line_number":183,"context_line":"                             \u0027qemu-img\u0027, \u0027info\u0027, path)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FywI%3D","line":180,"updated":"2013-01-04 21:16:22.000000000","message":"I\u0027m too lazy to chase down the caller, but it seems weird to paper over a file not existing when you\u0027re asking for details on it... Why not catch the failure in the caller?","commit_id":"1b7cea76abde83e9f937e33b56d54fa885f2a0b9"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"330c4130f6c10831e6c60823fe4033511b9aecbc","unresolved":false,"context_lines":[{"line_number":177,"context_line":"def qemu_img_info(path):"},{"line_number":178,"context_line":"    \"\"\"Return a object containing the parsed output from qemu-img info.\"\"\""},{"line_number":179,"context_line":"    if not os.path.exists(path):"},{"line_number":180,"context_line":"        return QemuImgInfo()"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    out, err \u003d utils.execute(\u0027env\u0027, \u0027LC_ALL\u003dC\u0027, \u0027LANG\u003dC\u0027,"},{"line_number":183,"context_line":"                             \u0027qemu-img\u0027, \u0027info\u0027, path)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2Fw6Y%3D","line":180,"in_reply_to":"AAAAM3%2F%2FywI%3D","updated":"2013-01-07 05:37:37.000000000","message":"I personally think its a bit ugly that the caller needs to know to catch ProcessExecutionError. Isn\u0027t it a better interface for the caller to just be told \"we don\u0027t know anything about this image\"?","commit_id":"1b7cea76abde83e9f937e33b56d54fa885f2a0b9"}]}
