)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12807,"name":"Steve Lewis (stevelle)","email":"stevelle@gmail.com","username":"stevelle"},"change_message_id":"cb1148f7f99fbd81a980e81c003d670b4e1603e2","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Images on \"External sources\" have checksum \u003d \"None\" in the glance db."},{"line_number":10,"context_line":"These images could be uploaded for example with:"},{"line_number":11,"context_line":"glance image-create --name test-image --location\u003dhttp://some.location.com/image.raw ..."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Trying to start an instance with \"boot from image (creates volume)\""},{"line_number":14,"context_line":"fails with \"Checksum was xxxxxx expected None\""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"baa041b7_d2ac97ef","line":11,"updated":"2015-04-02 02:57:41.000000000","message":"This line is too long. Please wrap at 72 characters.","commit_id":"be916006409a74e601bd0180868cfe2ffbc8343d"}],"glanceclient/common/utils.py":[{"author":{"_account_id":13161,"name":"Kamil Rykowski","email":"kamil.rykowski@gmail.com","username":"krykowski"},"change_message_id":"1e61e79d3000c3eef396117ce5a7f22ea3c58f38","unresolved":false,"context_lines":[{"line_number":395,"context_line":"            chunk \u003d six.b(chunk)"},{"line_number":396,"context_line":"        md5sum.update(chunk)"},{"line_number":397,"context_line":"    md5sum \u003d md5sum.hexdigest()"},{"line_number":398,"context_line":"    if md5sum !\u003d checksum and checksum !\u003d \"None\":"},{"line_number":399,"context_line":"        raise IOError(errno.EPIPE,"},{"line_number":400,"context_line":"                      \u0027Corrupt image download. Checksum was %s expected %s\u0027 %"},{"line_number":401,"context_line":"                      (md5sum, checksum))"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_0b756697","line":398,"updated":"2015-03-19 11:15:46.000000000","message":"nit: it could be replaced with:\n\nif checksum not in (md5sum, \u0027None\u0027)","commit_id":"47071284f7af695c56ccbcf3fcd75f8b97956954"},{"author":{"_account_id":6908,"name":"Simon Leinen","email":"simon.leinen@gmail.com","username":"simon-leinen"},"change_message_id":"b6e26ca40478057b02e8f0427b2a08697ea498ce","unresolved":false,"context_lines":[{"line_number":388,"context_line":""},{"line_number":389,"context_line":"    :raises: IOError"},{"line_number":390,"context_line":"    \"\"\""},{"line_number":391,"context_line":"    md5sum \u003d hashlib.md5()"},{"line_number":392,"context_line":"    for chunk in iter:"},{"line_number":393,"context_line":"        yield chunk"},{"line_number":394,"context_line":"        if isinstance(chunk, six.string_types):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_0161c738","line":391,"updated":"2015-03-19 12:17:53.000000000","message":"Wouldn\u0027t it be equivalent, but more efficient, to start this procedure with\n\n    if checksum is None:\n        return\n?","commit_id":"be916006409a74e601bd0180868cfe2ffbc8343d"},{"author":{"_account_id":9657,"name":"Ruediger Rissmann","email":"ruediger@rissmann.ch","username":"ruediger.rissmann"},"change_message_id":"2678901f4ed1ed55835db47c2c95a5021e5a7a85","unresolved":false,"context_lines":[{"line_number":388,"context_line":""},{"line_number":389,"context_line":"    :raises: IOError"},{"line_number":390,"context_line":"    \"\"\""},{"line_number":391,"context_line":"    md5sum \u003d hashlib.md5()"},{"line_number":392,"context_line":"    for chunk in iter:"},{"line_number":393,"context_line":"        yield chunk"},{"line_number":394,"context_line":"        if isinstance(chunk, six.string_types):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_d9acff37","line":391,"in_reply_to":"9a80dd14_0161c738","updated":"2015-03-19 15:42:23.000000000","message":"That is a python generator and a simple return will not work.\nWee need to \"return\" all the chunks via the yield.","commit_id":"be916006409a74e601bd0180868cfe2ffbc8343d"},{"author":{"_account_id":6908,"name":"Simon Leinen","email":"simon.leinen@gmail.com","username":"simon-leinen"},"change_message_id":"b6e26ca40478057b02e8f0427b2a08697ea498ce","unresolved":false,"context_lines":[{"line_number":395,"context_line":"            chunk \u003d six.b(chunk)"},{"line_number":396,"context_line":"        md5sum.update(chunk)"},{"line_number":397,"context_line":"    md5sum \u003d md5sum.hexdigest()"},{"line_number":398,"context_line":"    if md5sum !\u003d checksum and checksum !\u003d \"None\":"},{"line_number":399,"context_line":"        raise IOError(errno.EPIPE,"},{"line_number":400,"context_line":"                      \u0027Corrupt image download. Checksum was %s expected %s\u0027 %"},{"line_number":401,"context_line":"                      (md5sum, checksum))"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_21cdeb31","line":398,"updated":"2015-03-19 12:17:53.000000000","message":"See above - it seems wasteful to compute the md5sum at all if there is nothing to compare it to.","commit_id":"be916006409a74e601bd0180868cfe2ffbc8343d"}]}
