)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"eaa524d4d12650a4cf00ec6c0e0a066edb8494f3","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Location add catch bad Uri"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If a location is added with the the Uri \u0027file://\u0027 or something similar"},{"line_number":10,"context_line":"it would cause the sever to raise a internal error. This now catches"},{"line_number":11,"context_line":"that exception, so the server can raise a 400 error."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7a2fa921_d6830bcb","line":9,"updated":"2015-10-07 09:10:03.000000000","message":"s/the the/the","commit_id":"ca35057d10ab799c9756a3290557bfdc85a381ee"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"0d6fe7621a365cf1b8cac36f52f53a614e6b78a6","unresolved":false,"context_lines":[{"line_number":9,"context_line":"If a location is added with the Uri \u0027file://\u0027 or something similar"},{"line_number":10,"context_line":"it would cause the sever to raise a internal error. This now catches"},{"line_number":11,"context_line":"that exception, so the server can raise a 400 error."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-Bug: 1502850"},{"line_number":14,"context_line":"Change-Id: I10e4a65dea4a951e00c8ed92d0c3cdd74a786ace"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7a2fa921_f576cf04","line":12,"updated":"2015-10-09 08:25:48.000000000","message":"Should this have APIImpact?\n\nIt\u0027s not really changing the API but fixing it. however, a different response code will be returned now.","commit_id":"e2306dc395c68b0f5e47c50050fb1e5943516df6"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"dee79a19620ee0caa8c1fbbdd9bd5b0d9a9d6d0a","unresolved":false,"context_lines":[{"line_number":9,"context_line":"If a location is added with the Uri \u0027file://\u0027 or something similar"},{"line_number":10,"context_line":"it would cause the sever to raise a internal error. This now catches"},{"line_number":11,"context_line":"that exception, so the server can raise a 400 error."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-Bug: 1502850"},{"line_number":14,"context_line":"Change-Id: I10e4a65dea4a951e00c8ed92d0c3cdd74a786ace"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7a2fa921_06a09b8f","line":12,"updated":"2015-10-13 00:13:36.000000000","message":"Wait, wasn\u0027t it? :P","commit_id":"e2306dc395c68b0f5e47c50050fb1e5943516df6"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"e0e9f48b3ff9d5e7e6c949d47d18752abe54e073","unresolved":false,"context_lines":[{"line_number":9,"context_line":"If a location is added with the Uri \u0027file://\u0027 or something similar"},{"line_number":10,"context_line":"it would cause the sever to raise a internal error. This now catches"},{"line_number":11,"context_line":"that exception, so the server can raise a 400 error."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-Bug: 1502850"},{"line_number":14,"context_line":"Change-Id: I10e4a65dea4a951e00c8ed92d0c3cdd74a786ace"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7a2fa921_e5de12dc","line":12,"in_reply_to":"7a2fa921_f576cf04","updated":"2015-10-09 12:44:54.000000000","message":"ApiImpact\u0027s required only if 500 error was a part of our API :) I believe it was not.","commit_id":"e2306dc395c68b0f5e47c50050fb1e5943516df6"},{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"d999a88702f85a9e83c9093af2c415fe2114a03c","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Location add catch bad Uri"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If a location is added with the Uri \u0027file://\u0027 or something similar"},{"line_number":10,"context_line":"it would cause the sever to raise a internal error. This now catches"},{"line_number":11,"context_line":"that exception, so the server can raise a 400 error."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-Bug: 1502850"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1a26ad4f_96744f68","line":10,"updated":"2015-11-03 07:32:06.000000000","message":"server","commit_id":"eec7c104711d52eb816eb358252875dba5fa39b1"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"3b09c5ddc7d512b9af429bc02c89b4f1e79b4017","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     NiallBunting \u003cniall.bunting@hp.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-11-05 11:43:34 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Location add catch bad Uri"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If a location is added with the Uri \u0027file://\u0027 or something similar it"},{"line_number":10,"context_line":"would cause the sever to raise a internal error. This now catches that"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"fa80f949_1e6ab9ee","line":7,"updated":"2015-11-06 15:00:39.000000000","message":"Mind to change this \"bad Uri\" to BadStoreUri as well","commit_id":"485c8fd92bf8a8c3c39e6bb4f81ef749f284302b"}],"glance/api/v2/images.py":[{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"22f0c21d19b353b7a76b7b5dc6299c35009ad48e","unresolved":false,"context_lines":[{"line_number":283,"context_line":"                if image.status \u003d\u003d \u0027queued\u0027:"},{"line_number":284,"context_line":"                    image.status \u003d \u0027active\u0027"},{"line_number":285,"context_line":"            except (exception.BadStoreUri, exception.DuplicateLocation,"},{"line_number":286,"context_line":"                    store_exception.BadStoreUri) as bse:"},{"line_number":287,"context_line":"                raise webob.exc.HTTPBadRequest(explanation\u003dbse.msg)"},{"line_number":288,"context_line":"            except ValueError as ve:    # update image status failed."},{"line_number":289,"context_line":"                raise webob.exc.HTTPBadRequest("}],"source_content_type":"text/x-python","patch_set":2,"id":"7a2fa921_d741f73a","line":286,"updated":"2015-10-06 11:06:00.000000000","message":"I\u0027m not sure of the history here, but it feels funny that we have two versions of BadStoreUri. Would it make sense to standardize on the glance_store one and just use that? ie change anything that raises \u0027exception.BadStoreUri\u0027 to raise the glance_store version.","commit_id":"ca35057d10ab799c9756a3290557bfdc85a381ee"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"eaa524d4d12650a4cf00ec6c0e0a066edb8494f3","unresolved":false,"context_lines":[{"line_number":283,"context_line":"                if image.status \u003d\u003d \u0027queued\u0027:"},{"line_number":284,"context_line":"                    image.status \u003d \u0027active\u0027"},{"line_number":285,"context_line":"            except (exception.BadStoreUri, exception.DuplicateLocation,"},{"line_number":286,"context_line":"                    store_exception.BadStoreUri) as bse:"},{"line_number":287,"context_line":"                raise webob.exc.HTTPBadRequest(explanation\u003dbse.msg)"},{"line_number":288,"context_line":"            except ValueError as ve:    # update image status failed."},{"line_number":289,"context_line":"                raise webob.exc.HTTPBadRequest("}],"source_content_type":"text/x-python","patch_set":2,"id":"7a2fa921_56e61bb5","line":286,"in_reply_to":"7a2fa921_d741f73a","updated":"2015-10-07 09:10:03.000000000","message":"++","commit_id":"ca35057d10ab799c9756a3290557bfdc85a381ee"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"fa8349da0e0b56275eddfb14642e4a4d8ce2ff4d","unresolved":false,"context_lines":[{"line_number":35,"context_line":"from glance import i18n"},{"line_number":36,"context_line":"import glance.notifier"},{"line_number":37,"context_line":"import glance.schema"},{"line_number":38,"context_line":"from glance_store import exceptions as store_exception"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":41,"context_line":"_ \u003d i18n._"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_bdda3177","line":38,"updated":"2015-10-13 15:58:46.000000000","message":"You don\u0027t need to import this.","commit_id":"b8beb80107668a4c87ad244210bd2ecf04d9e2e3"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"fa8349da0e0b56275eddfb14642e4a4d8ce2ff4d","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        try:"},{"line_number":236,"context_line":"            image \u003d image_repo.get(image_id)"},{"line_number":237,"context_line":"            image.delete()"},{"line_number":238,"context_line":"            image_repo.remove(image)"},{"line_number":239,"context_line":"        except (glance_store.Forbidden, exception.Forbidden) as e:"},{"line_number":240,"context_line":"            LOG.debug(\"User not permitted to delete image \u0027%s\u0027\", image_id)"},{"line_number":241,"context_line":"            raise webob.exc.HTTPForbidden(explanation\u003de.msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_7dbb390f","line":238,"updated":"2015-10-13 15:58:46.000000000","message":"You can import exceptions just from glance_store, like here.","commit_id":"b8beb80107668a4c87ad244210bd2ecf04d9e2e3"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"fa8349da0e0b56275eddfb14642e4a4d8ce2ff4d","unresolved":false,"context_lines":[{"line_number":283,"context_line":"                if image.status \u003d\u003d \u0027queued\u0027:"},{"line_number":284,"context_line":"                    image.status \u003d \u0027active\u0027"},{"line_number":285,"context_line":"            except (exception.BadStoreUri, exception.DuplicateLocation,"},{"line_number":286,"context_line":"                    store_exception.BadStoreUri) as bse:"},{"line_number":287,"context_line":"                raise webob.exc.HTTPBadRequest(explanation\u003dbse.msg)"},{"line_number":288,"context_line":"            except ValueError as ve:    # update image status failed."},{"line_number":289,"context_line":"                raise webob.exc.HTTPBadRequest("}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_bd48f12e","line":286,"updated":"2015-10-13 15:58:46.000000000","message":"glance_store.BadStoreUri","commit_id":"b8beb80107668a4c87ad244210bd2ecf04d9e2e3"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"fa8349da0e0b56275eddfb14642e4a4d8ce2ff4d","unresolved":false,"context_lines":[{"line_number":300,"context_line":"            if image.status \u003d\u003d \u0027queued\u0027:"},{"line_number":301,"context_line":"                image.status \u003d \u0027active\u0027"},{"line_number":302,"context_line":"        except (exception.BadStoreUri, exception.DuplicateLocation,"},{"line_number":303,"context_line":"                store_exception.BadStoreUri) as bse:"},{"line_number":304,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dbse.msg)"},{"line_number":305,"context_line":"        except ValueError as ve:    # update image status failed."},{"line_number":306,"context_line":"            raise webob.exc.HTTPBadRequest("}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_dd57edc8","line":303,"updated":"2015-10-13 15:58:46.000000000","message":"glance_store.BadStoreUri","commit_id":"b8beb80107668a4c87ad244210bd2ecf04d9e2e3"},{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"0b2ee230758734fd08a016ebf1cc17b610fb80a4","unresolved":false,"context_lines":[{"line_number":282,"context_line":"                if image.status \u003d\u003d \u0027queued\u0027:"},{"line_number":283,"context_line":"                    image.status \u003d \u0027active\u0027"},{"line_number":284,"context_line":"            except (exception.BadStoreUri, exception.DuplicateLocation,"},{"line_number":285,"context_line":"                    glance_store.BadStoreUri) as bse:"},{"line_number":286,"context_line":"                raise webob.exc.HTTPBadRequest(explanation\u003dbse.msg)"},{"line_number":287,"context_line":"            except ValueError as ve:    # update image status failed."},{"line_number":288,"context_line":"                raise webob.exc.HTTPBadRequest("}],"source_content_type":"text/x-python","patch_set":5,"id":"5a2ca52d_d5db1d1a","line":285,"updated":"2015-10-14 12:08:33.000000000","message":"I think you need to find a reason why it was not catched here:\nhttps://github.com/openstack/glance/blob/master/glance/location.py#L73\nAFAIK glance_store.BadStoreUri should be transformed and raised as exception.BadStoreUri. Otherwise we need to see why it was not happened.","commit_id":"9815ebb0b01d50672367682988af75cfe3089789"},{"author":{"_account_id":17116,"name":"Niall Bunting","email":"niall.bunting@hpe.com","username":"NiallBunting"},"change_message_id":"975997d72369bd2346ccfab050bc9b7dd19be426","unresolved":false,"context_lines":[{"line_number":282,"context_line":"                if image.status \u003d\u003d \u0027queued\u0027:"},{"line_number":283,"context_line":"                    image.status \u003d \u0027active\u0027"},{"line_number":284,"context_line":"            except (exception.BadStoreUri, exception.DuplicateLocation,"},{"line_number":285,"context_line":"                    glance_store.BadStoreUri) as bse:"},{"line_number":286,"context_line":"                raise webob.exc.HTTPBadRequest(explanation\u003dbse.msg)"},{"line_number":287,"context_line":"            except ValueError as ve:    # update image status failed."},{"line_number":288,"context_line":"                raise webob.exc.HTTPBadRequest("}],"source_content_type":"text/x-python","patch_set":5,"id":"3a29b11f_824182ab","line":285,"in_reply_to":"5a2ca52d_d5db1d1a","updated":"2015-10-21 14:47:42.000000000","message":"Its already caught there, the reason I caught it up here was because I thought this would mean that any errors that get missed down there will get caught here. Essentially hardening glance.","commit_id":"9815ebb0b01d50672367682988af75cfe3089789"},{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"d999a88702f85a9e83c9093af2c415fe2114a03c","unresolved":false,"context_lines":[{"line_number":277,"context_line":"                if image.status \u003d\u003d \u0027queued\u0027:"},{"line_number":278,"context_line":"                    image.status \u003d \u0027active\u0027"},{"line_number":279,"context_line":"            except (exception.BadStoreUri, exception.DuplicateLocation,"},{"line_number":280,"context_line":"                    glance_store.BadStoreUri) as e:"},{"line_number":281,"context_line":"                raise webob.exc.HTTPBadRequest(explanation\u003de.msg)"},{"line_number":282,"context_line":"            except ValueError as e:    # update image status failed."},{"line_number":283,"context_line":"                raise webob.exc.HTTPBadRequest("}],"source_content_type":"text/x-python","patch_set":8,"id":"1a26ad4f_f66fc3f9","line":280,"updated":"2015-11-03 07:32:06.000000000","message":"Let me re-phrase my previous comments.\nI think that we need to catch these exceptions here:\nhttps://github.com/openstack/glance/blob/master/glance/quota/__init__.py#L53. When we got glance_store exception we should generate glance BadStoreUri and catch it in controller. I also think that the code where we catches 2 identical exception signalizes that something went wrong with architecture.","commit_id":"eec7c104711d52eb816eb358252875dba5fa39b1"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"075e7a3b6c623caa4b45b4e2a3c46973a5d53830","unresolved":false,"context_lines":[{"line_number":278,"context_line":"                    image.status \u003d \u0027active\u0027"},{"line_number":279,"context_line":"            except (exception.BadStoreUri, exception.DuplicateLocation) as e:"},{"line_number":280,"context_line":"                raise webob.exc.HTTPBadRequest(explanation\u003de.msg)"},{"line_number":281,"context_line":"            except ValueError as ve:    # update image status failed."},{"line_number":282,"context_line":"                raise webob.exc.HTTPBadRequest("},{"line_number":283,"context_line":"                    explanation\u003dencodeutils.exception_to_unicode(ve))"},{"line_number":284,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"da85f559_fb3c4894","side":"PARENT","line":281,"updated":"2015-11-12 18:18:29.000000000","message":"this change seems unrelated, please revert it.","commit_id":"32404fad45a1988af5d70b0dbd47f56c9eca189f"}],"glance/quota/__init__.py":[{"author":{"_account_id":16658,"name":"Darja Shakhray","email":"damalyavkina@gmail.com","username":"dshakhray"},"change_message_id":"c34f31c22fe0f65c6560dbd376f69eb2eb216b99","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            required_size \u003d image.size * len(locations)"},{"line_number":58,"context_line":"        else:"},{"line_number":59,"context_line":"            for location in locations:"},{"line_number":60,"context_line":"                size_from_backend \u003d None"},{"line_number":61,"context_line":"                size_from_backend \u003d store.get_size_from_backend("},{"line_number":62,"context_line":"                    location[\u0027url\u0027], context\u003dcontext)"},{"line_number":63,"context_line":"                if size_from_backend:"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa80f949_49ba0c0c","line":60,"range":{"start_line":60,"start_character":16,"end_line":60,"end_character":34},"updated":"2015-11-05 09:23:34.000000000","message":"I think this line is not needes, becouse \"size_from_backend\" changes in next line","commit_id":"2aaee16682b80f674915bbcf41f848737cf02210"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"3ac4213bff74ab9b90fcf0609dada4b65b94e880","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                size_from_backend \u003d None"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"                try:"},{"line_number":63,"context_line":"                    size_from_backend \u003d store.get_size_from_backend("},{"line_number":64,"context_line":"                        location[\u0027url\u0027], context\u003dcontext)"},{"line_number":65,"context_line":"                except (store.UnknownScheme, store.NotFound):"},{"line_number":66,"context_line":"                    pass"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa80f949_feefb584","line":63,"updated":"2015-11-06 14:59:41.000000000","message":"I would expect the BadStoreUri coming from the get_size_from_backend, which makes the outer try redundant and we can just expect it at this level.","commit_id":"485c8fd92bf8a8c3c39e6bb4f81ef749f284302b"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"2693960892f4acd27a2df8fe9b1ec11f130c523f","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    else:"},{"line_number":58,"context_line":"        for location in locations:"},{"line_number":59,"context_line":"            size_from_backend \u003d None"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"            try:"},{"line_number":62,"context_line":"                size_from_backend \u003d store.get_size_from_backend("},{"line_number":63,"context_line":"                    location[\u0027url\u0027], context\u003dcontext)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a740942_555f4272","line":60,"updated":"2015-12-04 01:46:35.000000000","message":"unnecessary addition","commit_id":"ad8af56036c7a253813585003b3ff9ea3745fc4d"}],"glance/tests/functional/v2/test_images.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"eaa524d4d12650a4cf00ec6c0e0a066edb8494f3","unresolved":false,"context_lines":[{"line_number":343,"context_line":"        headers \u003d self._headers({\u0027content-type\u0027: media_type})"},{"line_number":344,"context_line":"        changes \u003d []"},{"line_number":345,"context_line":"        url \u003d (\u0027file://\u0027)"},{"line_number":346,"context_line":"        changes.append({\u0027op\u0027: \u0027add\u0027, \u0027path\u0027: \u0027/locations/-\u0027,"},{"line_number":347,"context_line":"                        \u0027value\u0027: {\u0027url\u0027: url, \u0027metadata\u0027: {}},"},{"line_number":348,"context_line":"                        })"},{"line_number":349,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a2fa921_767d57b0","line":346,"updated":"2015-10-07 09:10:03.000000000","message":"instead defining changes \u003d [] and appending to it later directly use as \n\nchanges \u003d [{\n    \u0027op\u0027: \u0027add\u0027,\n    \u0027path\u0027: \u0027/locations/-\u0027,\n    \u0027value\u0027: {\n        \u0027url\u0027: url,\n        \u0027metadata\u0027: {}\n    }\n}]","commit_id":"ca35057d10ab799c9756a3290557bfdc85a381ee"}]}
