)]}'
{"glance/api/v1/images.py":[{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"8539f85f338956fa616f46da38b76fbd16a045f2","unresolved":false,"context_lines":[{"line_number":972,"context_line":"        reactivating \u003d orig_status !\u003d \u0027queued\u0027 and location"},{"line_number":973,"context_line":"        activating \u003d orig_status \u003d\u003d \u0027queued\u0027 and (location or image_data)"},{"line_number":974,"context_line":""},{"line_number":975,"context_line":"        # Image id should not be modified after creation"},{"line_number":976,"context_line":"        if \u0027id\u0027 in image_meta:"},{"line_number":977,"context_line":"            raise HTTPForbidden(_(\"The image id is read-only\"))"},{"line_number":978,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a29b11f_7851c4d7","line":975,"updated":"2015-10-20 08:48:49.000000000","message":"I am wondering if this should be raised in ImageDeserializer because it does not require any image data. But I am also tend to agree with Erno that raising an exception for the same id can break some our customers if they generated a request with the same id. Could you please add \"and image_meta[\"id\"] !\u003d \u003cid of the image\u003e\" here? IMO it is quite safe.","commit_id":"19a65e1e3fb81e1318a02d79a744b7cc7f1c99d9"},{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"33cbb417a036c841142ad26598a812ee8396ae90","unresolved":false,"context_lines":[{"line_number":972,"context_line":"        reactivating \u003d orig_status !\u003d \u0027queued\u0027 and location"},{"line_number":973,"context_line":"        activating \u003d orig_status \u003d\u003d \u0027queued\u0027 and (location or image_data)"},{"line_number":974,"context_line":""},{"line_number":975,"context_line":"        # Image id should not be modified after creation"},{"line_number":976,"context_line":"        if \u0027id\u0027 in image_meta:"},{"line_number":977,"context_line":"            raise HTTPForbidden(_(\"The image id is read-only\"))"},{"line_number":978,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a29b11f_fad38436","line":975,"in_reply_to":"3a29b11f_3f824e95","updated":"2015-10-20 10:57:35.000000000","message":"1) I tend to agree that this place is Ok if you are going to follow my second recommendation about if condition because it requires a comparison between image in DB and id passed.\n2) Regarding my first statement, it doesn\u0027t matter what is the method IMO. I would love to have all request format validations in one place one day (namely request deserializer) because it helps to understand the program easily. You will also know where you can find such errors if it would be in one place. But you can ignore this because of 1).","commit_id":"19a65e1e3fb81e1318a02d79a744b7cc7f1c99d9"},{"author":{"_account_id":17116,"name":"Niall Bunting","email":"niall.bunting@hpe.com","username":"NiallBunting"},"change_message_id":"4011663a7ad9e64aedb28a0d485b1a1428022412","unresolved":false,"context_lines":[{"line_number":972,"context_line":"        reactivating \u003d orig_status !\u003d \u0027queued\u0027 and location"},{"line_number":973,"context_line":"        activating \u003d orig_status \u003d\u003d \u0027queued\u0027 and (location or image_data)"},{"line_number":974,"context_line":""},{"line_number":975,"context_line":"        # Image id should not be modified after creation"},{"line_number":976,"context_line":"        if \u0027id\u0027 in image_meta:"},{"line_number":977,"context_line":"            raise HTTPForbidden(_(\"The image id is read-only\"))"},{"line_number":978,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a29b11f_3f824e95","line":975,"in_reply_to":"3a29b11f_7851c4d7","updated":"2015-10-20 10:43:19.000000000","message":"I think this place is perfectly reasonable, as its in the update method, which makes sense.\nChanging the id to the same image Id makes sense.","commit_id":"19a65e1e3fb81e1318a02d79a744b7cc7f1c99d9"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"2fc26e651df21201d26d5048ea8e81c21589458c","unresolved":false,"context_lines":[{"line_number":972,"context_line":"        reactivating \u003d orig_status !\u003d \u0027queued\u0027 and location"},{"line_number":973,"context_line":"        activating \u003d orig_status \u003d\u003d \u0027queued\u0027 and (location or image_data)"},{"line_number":974,"context_line":""},{"line_number":975,"context_line":"        # Image id should not be modified after creation"},{"line_number":976,"context_line":"        if \u0027id\u0027 in image_meta and image_meta[\"id\"] !\u003d id:"},{"line_number":977,"context_line":"            raise HTTPForbidden(_(\"The image id is read-only\"))"},{"line_number":978,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba8a016a_c8cccc63","line":975,"updated":"2015-11-23 11:12:23.000000000","message":"Can \u0027id\u0027 just be added to the IMMUTABLE list?","commit_id":"a2e364426143369e9f0f1aeab27aa286bea7a93c"}],"glance/registry/client/v1/api.py":[{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"6d222ac3000355a9b4c74f8a4a49b6a974c7baaa","unresolved":false,"context_lines":[{"line_number":171,"context_line":"    LOG.debug(\"Updating image metadata for image %s...\", image_id)"},{"line_number":172,"context_line":"    c \u003d get_registry_client(context)"},{"line_number":173,"context_line":"    if \u0027id\u0027 in image_meta:"},{"line_number":174,"context_line":"        raise exception.Forbidden(\"The image id is read-only\")"},{"line_number":175,"context_line":"    return c.update_image(image_id, image_meta, purge_props\u003dpurge_props,"},{"line_number":176,"context_line":"                          from_state\u003dfrom_state)"},{"line_number":177,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_2a797a82","line":174,"updated":"2015-08-11 15:44:43.000000000","message":"How about not wasting the resources and doing this before we create the registry client?","commit_id":"29639c02b900043b4c6ff72e720b9612c54041dd"}]}
