)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"9077142bc8377619da54d90ab786f5c47c1938ab","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Added more options while uploading volume as image"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added support for is_public, protected and store"},{"line_number":10,"context_line":"while uploading volume as image to image service"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Renewing patch https://review.openstack.org/#/c/89769"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"fa80f949_40e9c119","line":10,"updated":"2015-11-03 19:11:54.000000000","message":"Can you provide an example of the meaning of each of these options.  store isn\u0027t explained in the bug, nor in the comments in the code for the patch.","commit_id":"ae55cc1c8b03e836601cdd315c2123cb3a5a3eed"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"b5c810590e90a197df99c900565e28dbbade3948","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Added more options while uploading volume as image"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added support for is_public, protected and store"},{"line_number":10,"context_line":"while uploading volume as image to image service"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Renewing patch https://review.openstack.org/#/c/89769"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"fa80f949_9bbb9e0e","line":10,"in_reply_to":"fa80f949_40e9c119","updated":"2015-11-03 19:43:12.000000000","message":"Does the new patch provide enough explanation, or would you like comments in the code providing examples? The uses of each flag are also documented in the python-cinderclient patch as help options in the shell.","commit_id":"ae55cc1c8b03e836601cdd315c2123cb3a5a3eed"}],"cinder/api/contrib/volume_actions.py":[{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"d9c1393c9d0fe5c54308ec106e201be2efd375fd","unresolved":false,"context_lines":[{"line_number":291,"context_line":"        if params.get(\u0027store\u0027) is not None:"},{"line_number":292,"context_line":"            image_metadata[\u0027store\u0027] \u003d params.get(\u0027store\u0027)"},{"line_number":293,"context_line":"        try:"},{"line_number":294,"context_line":"            image_metadata[\u0027protected\u0027] \u003d \\"},{"line_number":295,"context_line":"                strutils.bool_from_string(image_metadata[\u0027protected\u0027],"},{"line_number":296,"context_line":"                                          strict\u003dTrue)"},{"line_number":297,"context_line":"        except ValueError as error:"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a26ad4f_1c014b6a","line":294,"updated":"2015-11-02 22:24:47.000000000","message":"We should avoid using \u0027\\\u0027 for line continuation if possible. Instead use \u0027()\u0027 for line continuation.","commit_id":"21a418b545be6d93667d78f255480af168e4368a"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"50f787ac11ee38cfd733fcb5fc05436d631116f9","unresolved":false,"context_lines":[{"line_number":291,"context_line":"        if params.get(\u0027store\u0027) is not None:"},{"line_number":292,"context_line":"            image_metadata[\u0027store\u0027] \u003d params.get(\u0027store\u0027)"},{"line_number":293,"context_line":"        try:"},{"line_number":294,"context_line":"            image_metadata[\u0027protected\u0027] \u003d \\"},{"line_number":295,"context_line":"                strutils.bool_from_string(image_metadata[\u0027protected\u0027],"},{"line_number":296,"context_line":"                                          strict\u003dTrue)"},{"line_number":297,"context_line":"        except ValueError as error:"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a26ad4f_5fe495df","line":294,"in_reply_to":"1a26ad4f_1c014b6a","updated":"2015-11-02 22:48:31.000000000","message":"Done","commit_id":"21a418b545be6d93667d78f255480af168e4368a"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"38ee3d072825190baed0ecf7f3dad96336abcd95","unresolved":false,"context_lines":[{"line_number":288,"context_line":"                          \"name\": params[\"image_name\"],"},{"line_number":289,"context_line":"                          \"is_public\": params.get(\"is_public\", \"False\"),"},{"line_number":290,"context_line":"                          \"protected\": params.get(\"protected\", \"False\")}"},{"line_number":291,"context_line":"        if params.get(\u0027store\u0027) is not None:"},{"line_number":292,"context_line":"            image_metadata[\u0027store\u0027] \u003d params.get(\u0027store\u0027)"},{"line_number":293,"context_line":"        try:"},{"line_number":294,"context_line":"            image_metadata[\u0027protected\u0027] \u003d ("}],"source_content_type":"text/x-python","patch_set":8,"id":"fa80f949_35940436","line":291,"updated":"2015-11-03 17:48:46.000000000","message":"\"is not None\" is probably the appropriate choice in this case.  You could also do \"if params.get(\u0027store\u0027, False):\" which would make it very clear and safe.  This change will introduce some inconsistencies in how we check other members in this file but that\u0027s probably ok.","commit_id":"ae55cc1c8b03e836601cdd315c2123cb3a5a3eed"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"6d01f92ec1ccab57ece0ace9e6e1a59ab793c5c5","unresolved":false,"context_lines":[{"line_number":288,"context_line":"                          \"name\": params[\"image_name\"],"},{"line_number":289,"context_line":"                          \"is_public\": params.get(\"is_public\", \"False\"),"},{"line_number":290,"context_line":"                          \"protected\": params.get(\"protected\", \"False\")}"},{"line_number":291,"context_line":"        if params.get(\u0027store\u0027) is not None:"},{"line_number":292,"context_line":"            image_metadata[\u0027store\u0027] \u003d params.get(\u0027store\u0027)"},{"line_number":293,"context_line":"        try:"},{"line_number":294,"context_line":"            image_metadata[\u0027protected\u0027] \u003d ("}],"source_content_type":"text/x-python","patch_set":8,"id":"fa80f949_dd659ee1","line":291,"in_reply_to":"fa80f949_35940436","updated":"2015-11-03 18:41:48.000000000","message":"Thanks for the info, it wouldn\u0027t be any trouble to upload a new patch fixing this, would you prefer I do?","commit_id":"ae55cc1c8b03e836601cdd315c2123cb3a5a3eed"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"45542bbbf2bd2b69c59e62abdf536e81731c7ab0","unresolved":false,"context_lines":[{"line_number":288,"context_line":"                          \"name\": params[\"image_name\"],"},{"line_number":289,"context_line":"                          \"is_public\": params.get(\"is_public\", \"False\"),"},{"line_number":290,"context_line":"                          \"protected\": params.get(\"protected\", \"False\")}"},{"line_number":291,"context_line":"        if params.get(\u0027store\u0027, False):"},{"line_number":292,"context_line":"            image_metadata[\u0027store\u0027] \u003d params.get(\u0027store\u0027)"},{"line_number":293,"context_line":"        try:"},{"line_number":294,"context_line":"            image_metadata[\u0027protected\u0027] \u003d ("}],"source_content_type":"text/x-python","patch_set":12,"id":"7a740942_1de843b2","line":291,"updated":"2015-12-14 14:50:41.000000000","message":"nit: No need to pass False, defaults to None","commit_id":"9bfe66eb17b09f6e9cfcdb2cc179db92e50388be"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"d60ad57611d01e2922ee2d168bb566158deba419","unresolved":false,"context_lines":[{"line_number":288,"context_line":"                          \"name\": params[\"image_name\"],"},{"line_number":289,"context_line":"                          \"is_public\": params.get(\"is_public\", \"False\"),"},{"line_number":290,"context_line":"                          \"protected\": params.get(\"protected\", \"False\")}"},{"line_number":291,"context_line":"        if params.get(\u0027store\u0027, False):"},{"line_number":292,"context_line":"            image_metadata[\u0027store\u0027] \u003d params.get(\u0027store\u0027)"},{"line_number":293,"context_line":"        try:"},{"line_number":294,"context_line":"            image_metadata[\u0027protected\u0027] \u003d ("}],"source_content_type":"text/x-python","patch_set":12,"id":"5a710552_b087b6d6","line":291,"in_reply_to":"7a740942_1de843b2","updated":"2015-12-14 17:48:36.000000000","message":"Done","commit_id":"9bfe66eb17b09f6e9cfcdb2cc179db92e50388be"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"45542bbbf2bd2b69c59e62abdf536e81731c7ab0","unresolved":false,"context_lines":[{"line_number":289,"context_line":"                          \"is_public\": params.get(\"is_public\", \"False\"),"},{"line_number":290,"context_line":"                          \"protected\": params.get(\"protected\", \"False\")}"},{"line_number":291,"context_line":"        if params.get(\u0027store\u0027, False):"},{"line_number":292,"context_line":"            image_metadata[\u0027store\u0027] \u003d params.get(\u0027store\u0027)"},{"line_number":293,"context_line":"        try:"},{"line_number":294,"context_line":"            image_metadata[\u0027protected\u0027] \u003d ("},{"line_number":295,"context_line":"                strutils.bool_from_string(image_metadata[\u0027protected\u0027],"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a740942_7df06791","line":292,"updated":"2015-12-14 14:50:41.000000000","message":"nit: Don\u0027t use get when you already know key it\u0027s there\n\n params[\u0027store\u0027]","commit_id":"9bfe66eb17b09f6e9cfcdb2cc179db92e50388be"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"d60ad57611d01e2922ee2d168bb566158deba419","unresolved":false,"context_lines":[{"line_number":289,"context_line":"                          \"is_public\": params.get(\"is_public\", \"False\"),"},{"line_number":290,"context_line":"                          \"protected\": params.get(\"protected\", \"False\")}"},{"line_number":291,"context_line":"        if params.get(\u0027store\u0027, False):"},{"line_number":292,"context_line":"            image_metadata[\u0027store\u0027] \u003d params.get(\u0027store\u0027)"},{"line_number":293,"context_line":"        try:"},{"line_number":294,"context_line":"            image_metadata[\u0027protected\u0027] \u003d ("},{"line_number":295,"context_line":"                strutils.bool_from_string(image_metadata[\u0027protected\u0027],"}],"source_content_type":"text/x-python","patch_set":12,"id":"5a710552_506d3231","line":292,"in_reply_to":"7a740942_7df06791","updated":"2015-12-14 17:48:36.000000000","message":"Done","commit_id":"9bfe66eb17b09f6e9cfcdb2cc179db92e50388be"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"45542bbbf2bd2b69c59e62abdf536e81731c7ab0","unresolved":false,"context_lines":[{"line_number":292,"context_line":"            image_metadata[\u0027store\u0027] \u003d params.get(\u0027store\u0027)"},{"line_number":293,"context_line":"        try:"},{"line_number":294,"context_line":"            image_metadata[\u0027protected\u0027] \u003d ("},{"line_number":295,"context_line":"                strutils.bool_from_string(image_metadata[\u0027protected\u0027],"},{"line_number":296,"context_line":"                                          strict\u003dTrue))"},{"line_number":297,"context_line":"        except ValueError as error:"},{"line_number":298,"context_line":"            msg \u003d _(\"Invalid value for \u0027protected\u0027: \u0027%s\u0027\") % error.message"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a740942_5d9a4b15","line":295,"updated":"2015-12-14 14:50:41.000000000","message":"-1: Use cinder.utils.get_bool_param","commit_id":"9bfe66eb17b09f6e9cfcdb2cc179db92e50388be"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"d60ad57611d01e2922ee2d168bb566158deba419","unresolved":false,"context_lines":[{"line_number":292,"context_line":"            image_metadata[\u0027store\u0027] \u003d params.get(\u0027store\u0027)"},{"line_number":293,"context_line":"        try:"},{"line_number":294,"context_line":"            image_metadata[\u0027protected\u0027] \u003d ("},{"line_number":295,"context_line":"                strutils.bool_from_string(image_metadata[\u0027protected\u0027],"},{"line_number":296,"context_line":"                                          strict\u003dTrue))"},{"line_number":297,"context_line":"        except ValueError as error:"},{"line_number":298,"context_line":"            msg \u003d _(\"Invalid value for \u0027protected\u0027: \u0027%s\u0027\") % error.message"}],"source_content_type":"text/x-python","patch_set":12,"id":"5a710552_1077aa03","line":295,"in_reply_to":"7a740942_5d9a4b15","updated":"2015-12-14 17:48:36.000000000","message":"Done","commit_id":"9bfe66eb17b09f6e9cfcdb2cc179db92e50388be"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"45542bbbf2bd2b69c59e62abdf536e81731c7ab0","unresolved":false,"context_lines":[{"line_number":297,"context_line":"        except ValueError as error:"},{"line_number":298,"context_line":"            msg \u003d _(\"Invalid value for \u0027protected\u0027: \u0027%s\u0027\") % error.message"},{"line_number":299,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        try:"},{"line_number":302,"context_line":"            response \u003d self.volume_api.copy_volume_to_image(context,"},{"line_number":303,"context_line":"                                                            volume,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a740942_9d4753a2","line":300,"updated":"2015-12-14 14:50:41.000000000","message":"-1: Missing conversion/check for is_public","commit_id":"9bfe66eb17b09f6e9cfcdb2cc179db92e50388be"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"d60ad57611d01e2922ee2d168bb566158deba419","unresolved":false,"context_lines":[{"line_number":297,"context_line":"        except ValueError as error:"},{"line_number":298,"context_line":"            msg \u003d _(\"Invalid value for \u0027protected\u0027: \u0027%s\u0027\") % error.message"},{"line_number":299,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        try:"},{"line_number":302,"context_line":"            response \u003d self.volume_api.copy_volume_to_image(context,"},{"line_number":303,"context_line":"                                                            volume,"}],"source_content_type":"text/x-python","patch_set":12,"id":"5a710552_f099be20","line":300,"in_reply_to":"7a740942_9d4753a2","updated":"2015-12-14 17:48:36.000000000","message":"For some reason having the conversion threw errors before, I asked about it on IRC a while ago but it wasn\u0027t working - I think switching over to get_bool_param actually fixed that.","commit_id":"9bfe66eb17b09f6e9cfcdb2cc179db92e50388be"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"79b293599696371be1a983c40a4e110059ee79e3","unresolved":false,"context_lines":[{"line_number":288,"context_line":"                          \"name\": params[\"image_name\"],"},{"line_number":289,"context_line":"                          \"is_public\": params.get(\"is_public\", \"False\"),"},{"line_number":290,"context_line":"                          \"protected\": params.get(\"protected\", \"False\")}"},{"line_number":291,"context_line":"        if params.get(\u0027store\u0027):"},{"line_number":292,"context_line":"            image_metadata[\u0027store\u0027] \u003d params[\u0027store\u0027]"},{"line_number":293,"context_line":"        try:"},{"line_number":294,"context_line":"            image_metadata[\u0027protected\u0027] \u003d ("}],"source_content_type":"text/x-python","patch_set":13,"id":"5a710552_9c6df1ce","line":291,"updated":"2015-12-14 18:50:47.000000000","message":"In cinder/volume/api.py L#1222 you default to \"None\" for \u0027store\u0027.\nWhy don\u0027t you default to \"None\" here? Then put into the dict above and then skip L#291-2 ?","commit_id":"8f61829f720b21f2647a8f86fb5917ed7e343239"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"e385c73b9c683ec9f766f3b63e7eb33006f6a86a","unresolved":false,"context_lines":[{"line_number":288,"context_line":"                          \"name\": params[\"image_name\"],"},{"line_number":289,"context_line":"                          \"is_public\": params.get(\"is_public\", \"False\"),"},{"line_number":290,"context_line":"                          \"protected\": params.get(\"protected\", \"False\")}"},{"line_number":291,"context_line":"        if params.get(\u0027store\u0027):"},{"line_number":292,"context_line":"            image_metadata[\u0027store\u0027] \u003d params[\u0027store\u0027]"},{"line_number":293,"context_line":"        try:"},{"line_number":294,"context_line":"            image_metadata[\u0027protected\u0027] \u003d ("}],"source_content_type":"text/x-python","patch_set":13,"id":"5a710552_7c48452e","line":291,"in_reply_to":"5a710552_9c6df1ce","updated":"2015-12-14 20:59:22.000000000","message":"Okay, that makes sense.","commit_id":"8f61829f720b21f2647a8f86fb5917ed7e343239"},{"author":{"_account_id":10485,"name":"Ankit Agrawal","email":"ankitagrawal8188@gmail.com","username":"ankitagrawal"},"change_message_id":"2963903ded29d08f3df1e47eb7b65fcfd8295913","unresolved":false,"context_lines":[{"line_number":292,"context_line":"            image_metadata[\u0027store\u0027] \u003d params[\u0027store\u0027]"},{"line_number":293,"context_line":"        try:"},{"line_number":294,"context_line":"            image_metadata[\u0027protected\u0027] \u003d ("},{"line_number":295,"context_line":"                utils.get_bool_param(\u0027protected\u0027, image_metadata))"},{"line_number":296,"context_line":"        except ValueError as error:"},{"line_number":297,"context_line":"            msg \u003d _(\"Invalid value for \u0027protected\u0027: \u0027%s\u0027\") % error.message"},{"line_number":298,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":15,"id":"3a7e1126_fa212b4e","line":295,"range":{"start_line":295,"start_character":64,"end_line":295,"end_character":66},"updated":"2015-12-18 07:04:21.000000000","message":"There is no need of try catch block as wsgi will convert exception raised from get_bool_param method to HTTPBadRequest. Currently these exception blocks are never executed even with invalid values of \u0027protected\u0027 or \u0027is_public\u0027.","commit_id":"e843b84ef9f56a4d8187f2a20e6c4e7a5bce5e3c"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"5e0a3afcee3935df21ce64826811cbf5d45561a5","unresolved":false,"context_lines":[{"line_number":292,"context_line":"            image_metadata[\u0027store\u0027] \u003d params[\u0027store\u0027]"},{"line_number":293,"context_line":"        try:"},{"line_number":294,"context_line":"            image_metadata[\u0027protected\u0027] \u003d ("},{"line_number":295,"context_line":"                utils.get_bool_param(\u0027protected\u0027, image_metadata))"},{"line_number":296,"context_line":"        except ValueError as error:"},{"line_number":297,"context_line":"            msg \u003d _(\"Invalid value for \u0027protected\u0027: \u0027%s\u0027\") % error.message"},{"line_number":298,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":15,"id":"3a7e1126_433ab6cd","line":295,"range":{"start_line":295,"start_character":64,"end_line":295,"end_character":66},"in_reply_to":"3a7e1126_fa212b4e","updated":"2015-12-18 19:22:46.000000000","message":"Done","commit_id":"e843b84ef9f56a4d8187f2a20e6c4e7a5bce5e3c"},{"author":{"_account_id":10485,"name":"Ankit Agrawal","email":"ankitagrawal8188@gmail.com","username":"ankitagrawal"},"change_message_id":"2963903ded29d08f3df1e47eb7b65fcfd8295913","unresolved":false,"context_lines":[{"line_number":298,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":299,"context_line":"        try:"},{"line_number":300,"context_line":"            image_metadata[\u0027is_public\u0027] \u003d ("},{"line_number":301,"context_line":"                utils.get_bool_param(\u0027is_public\u0027, image_metadata))"},{"line_number":302,"context_line":"        except ValueError as error:"},{"line_number":303,"context_line":"            msg \u003d _(\"Invalid value for \u0027is_public\u0027: \u0027%s\u0027\") % error.message"},{"line_number":304,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":15,"id":"3a7e1126_3aded33f","line":301,"range":{"start_line":301,"start_character":64,"end_line":301,"end_character":66},"updated":"2015-12-18 07:04:21.000000000","message":"Same as above.","commit_id":"e843b84ef9f56a4d8187f2a20e6c4e7a5bce5e3c"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"5e0a3afcee3935df21ce64826811cbf5d45561a5","unresolved":false,"context_lines":[{"line_number":298,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":299,"context_line":"        try:"},{"line_number":300,"context_line":"            image_metadata[\u0027is_public\u0027] \u003d ("},{"line_number":301,"context_line":"                utils.get_bool_param(\u0027is_public\u0027, image_metadata))"},{"line_number":302,"context_line":"        except ValueError as error:"},{"line_number":303,"context_line":"            msg \u003d _(\"Invalid value for \u0027is_public\u0027: \u0027%s\u0027\") % error.message"},{"line_number":304,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":15,"id":"3a7e1126_e332c2f1","line":301,"range":{"start_line":301,"start_character":64,"end_line":301,"end_character":66},"in_reply_to":"3a7e1126_3aded33f","updated":"2015-12-18 19:22:46.000000000","message":"Done","commit_id":"e843b84ef9f56a4d8187f2a20e6c4e7a5bce5e3c"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"088dfdf6cce0dd5a03450191aaeb4c9185fc06a4","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        action_data \u003d {}"},{"line_number":67,"context_line":"        attributes \u003d [\"force\", \"image_name\", \"container_format\", \"disk_format\","},{"line_number":68,"context_line":"                      \"store\", \"is_public\", \"protected\"]"},{"line_number":69,"context_line":"        for attr in attributes:"},{"line_number":70,"context_line":"            if action_node.hasAttribute(attr):"},{"line_number":71,"context_line":"                action_data[attr] \u003d action_node.getAttribute(attr)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7af24918_e2f14597","line":68,"updated":"2016-03-05 15:49:46.000000000","message":"Since Glance thought it would be cool to change their attributes in V2 I\u0027m not sure how we reconcile this","commit_id":"91f6f2156b9bcc83f0797b6a5aa9cd05c78ac691"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"52349155951a1cfb277dd38cf0b2c2b8b9a3597e","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        root.set(\u0027container_format\u0027)"},{"line_number":53,"context_line":"        root.set(\u0027disk_format\u0027)"},{"line_number":54,"context_line":"        root.set(\u0027image_name\u0027)"},{"line_number":55,"context_line":"        root.set(\u0027store\u0027)"},{"line_number":56,"context_line":"        root.set(\u0027protected\u0027)"},{"line_number":57,"context_line":"        if CONF.glance_api_version \u003d\u003d 2:"},{"line_number":58,"context_line":"            root.set(\u0027visibility\u0027)"}],"source_content_type":"text/x-python","patch_set":26,"id":"5aef4532_b0fa8673","line":55,"range":{"start_line":55,"start_character":18,"end_line":55,"end_character":23},"updated":"2016-03-09 09:51:29.000000000","message":"I\u0027m not sure if it\u0027s a good idea to add \u0027store\u0027 support, because:\n\n1. Glance is trying to move from v1 to v2 API and (I believe) v2 doesn\u0027t support store\n2. In the v1 API case selecting the store explicitly may not always be available, it may be restricted by policy.","commit_id":"3b45ff7a28bca5773b3b5317fcd41b20decbbadb"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"d1951d15f17df38fb664262f817007e29172a2e7","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        root.set(\u0027container_format\u0027)"},{"line_number":53,"context_line":"        root.set(\u0027disk_format\u0027)"},{"line_number":54,"context_line":"        root.set(\u0027image_name\u0027)"},{"line_number":55,"context_line":"        root.set(\u0027store\u0027)"},{"line_number":56,"context_line":"        root.set(\u0027protected\u0027)"},{"line_number":57,"context_line":"        if CONF.glance_api_version \u003d\u003d 2:"},{"line_number":58,"context_line":"            root.set(\u0027visibility\u0027)"}],"source_content_type":"text/x-python","patch_set":26,"id":"5aef4532_73c61f69","line":55,"range":{"start_line":55,"start_character":18,"end_line":55,"end_character":23},"in_reply_to":"5aef4532_b0fa8673","updated":"2016-03-09 19:00:20.000000000","message":"Done","commit_id":"3b45ff7a28bca5773b3b5317fcd41b20decbbadb"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"52349155951a1cfb277dd38cf0b2c2b8b9a3597e","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        if CONF.glance_api_version \u003d\u003d 2:"},{"line_number":58,"context_line":"            root.set(\u0027visibility\u0027)"},{"line_number":59,"context_line":"        else:"},{"line_number":60,"context_line":"            root.set(\u0027is_public\u0027)"},{"line_number":61,"context_line":"        return xmlutil.MasterTemplate(root, 1)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"5aef4532_b06f262a","line":60,"range":{"start_line":60,"start_character":12,"end_line":60,"end_character":16},"updated":"2016-03-09 09:51:29.000000000","message":"Note that by the default Glance policy only an admin user can mark an image as \u0027public\u0027. A typical user will see a 403 from Glance if they attempt to mark an image as public. It may be good to have a test that verifies Cinder handles getting a 403 from Glance.","commit_id":"3b45ff7a28bca5773b3b5317fcd41b20decbbadb"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"d1951d15f17df38fb664262f817007e29172a2e7","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        if CONF.glance_api_version \u003d\u003d 2:"},{"line_number":58,"context_line":"            root.set(\u0027visibility\u0027)"},{"line_number":59,"context_line":"        else:"},{"line_number":60,"context_line":"            root.set(\u0027is_public\u0027)"},{"line_number":61,"context_line":"        return xmlutil.MasterTemplate(root, 1)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"5aef4532_1394fb40","line":60,"range":{"start_line":60,"start_character":12,"end_line":60,"end_character":16},"in_reply_to":"5aef4532_b06f262a","updated":"2016-03-09 19:00:20.000000000","message":"See my comment on the main page","commit_id":"3b45ff7a28bca5773b3b5317fcd41b20decbbadb"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"22582bb084d9329b850b3ecc11d5486832630aac","unresolved":false,"context_lines":[{"line_number":288,"context_line":"                                                         \"bare\"),"},{"line_number":289,"context_line":"                          \"disk_format\": params.get(\"disk_format\", \"raw\"),"},{"line_number":290,"context_line":"                          \"name\": params[\"image_name\"],"},{"line_number":291,"context_line":"                          \"protected\": params.get(\"protected\", \"False\"),"},{"line_number":292,"context_line":"                          \"visibility\": params.get(\"visibility\", \"private\")}"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        if image_metadata[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027:"},{"line_number":295,"context_line":"            authorize(context, \u0027upload_public\u0027)"}],"source_content_type":"text/x-python","patch_set":29,"id":"5aef4532_bcc31437","line":292,"range":{"start_line":291,"start_character":39,"end_line":292,"end_character":75},"updated":"2016-03-10 19:24:49.000000000","message":"If I\u0027m not mistaken this adds a new meaningful elements of call body - doesn\u0027t this require a new API microversion [1]?\n\n[1] http://docs.openstack.org/developer/cinder/devref/api_microversion_dev.html#when-do-i-need-a-new-microversion","commit_id":"607fdf602fa718dd2a7a7d77db5605ca09376393"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"bd4ade817d9bb6302c709678a4645ac7cd082f15","unresolved":false,"context_lines":[{"line_number":288,"context_line":"                                                         \"bare\"),"},{"line_number":289,"context_line":"                          \"disk_format\": params.get(\"disk_format\", \"raw\"),"},{"line_number":290,"context_line":"                          \"name\": params[\"image_name\"],"},{"line_number":291,"context_line":"                          \"protected\": params.get(\"protected\", \"False\"),"},{"line_number":292,"context_line":"                          \"visibility\": params.get(\"visibility\", \"private\")}"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        if image_metadata[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027:"},{"line_number":295,"context_line":"            authorize(context, \u0027upload_public\u0027)"}],"source_content_type":"text/x-python","patch_set":29,"id":"5aef4532_77d526e3","line":292,"range":{"start_line":291,"start_character":39,"end_line":292,"end_character":75},"in_reply_to":"5aef4532_bcc31437","updated":"2016-03-10 20:09:11.000000000","message":"Looks like it probably does, as it changes the list of query parameters that are valid on urls. I hadn\u0027t seen that doc, I\u0027ll look into creating a new microversion now.","commit_id":"607fdf602fa718dd2a7a7d77db5605ca09376393"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"d825175e7e96b714bcdb1acbd426eec5fdcfa5b5","unresolved":false,"context_lines":[{"line_number":300,"context_line":"                authorize(context, \u0027upload_public\u0027)"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"            if CONF.glance_api_version !\u003d 2:"},{"line_number":303,"context_line":"                # Replace visibility with is_public for Glance V1"},{"line_number":304,"context_line":"                if image_metadata[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027:"},{"line_number":305,"context_line":"                    image_metadata[\u0027is_public\u0027] \u003d True"},{"line_number":306,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":36,"id":"3afc51ec_34f2ef6f","line":303,"updated":"2016-03-14 23:46:01.000000000","message":"Optionally could do image_metadata[\u0027is_public\u0027] \u003d image_metadata[\u0027visiblity\u0027] \u003d\u003d \u0027public\u0027","commit_id":"c7c96c2dbc86e47cfa82121f9b0992c06b410670"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"1c815c24ab1e68e5ac8c3570057f4c8f51731157","unresolved":false,"context_lines":[{"line_number":300,"context_line":"                authorize(context, \u0027upload_public\u0027)"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"            if CONF.glance_api_version !\u003d 2:"},{"line_number":303,"context_line":"                # Replace visibility with is_public for Glance V1"},{"line_number":304,"context_line":"                if image_metadata[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027:"},{"line_number":305,"context_line":"                    image_metadata[\u0027is_public\u0027] \u003d True"},{"line_number":306,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":36,"id":"fa0719c6_bbb72c85","line":303,"in_reply_to":"3afc51ec_34f2ef6f","updated":"2016-03-22 17:36:00.000000000","message":"Done","commit_id":"c7c96c2dbc86e47cfa82121f9b0992c06b410670"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"a26e6452f5665ba21cc69a0bca19ccb2dc7e9f8d","unresolved":false,"context_lines":[{"line_number":291,"context_line":"                          \"disk_format\": params.get(\"disk_format\", \"raw\"),"},{"line_number":292,"context_line":"                          \"name\": params[\"image_name\"]}"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        if req_version \u003e\u003d api_version_request.APIVersionRequest(\u00273.1\u0027):"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"            image_metadata[\u0027visibility\u0027] \u003d params.get(\u0027visibility\u0027, \u0027private\u0027)"},{"line_number":297,"context_line":"            image_metadata[\u0027protected\u0027] \u003d params.get(\u0027protected\u0027, \u0027False\u0027)"}],"source_content_type":"text/x-python","patch_set":38,"id":"fa0719c6_d3a58e47","line":294,"range":{"start_line":294,"start_character":8,"end_line":294,"end_character":71},"updated":"2016-03-23 07:38:34.000000000","message":"(nit)I prefer this:\nreq_version.matches(\u00273.1\u0027,None)","commit_id":"48de06006fe4a947a5b8d5aec7b29726ced2b22d"}],"cinder/image/glance.py":[{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"088dfdf6cce0dd5a03450191aaeb4c9185fc06a4","unresolved":false,"context_lines":[{"line_number":498,"context_line":"                        \u0027container_format\u0027, \u0027status\u0027, \u0027id\u0027,"},{"line_number":499,"context_line":"                        \u0027name\u0027, \u0027created_at\u0027, \u0027updated_at\u0027,"},{"line_number":500,"context_line":"                        \u0027deleted\u0027, \u0027deleted_at\u0027, \u0027checksum\u0027,"},{"line_number":501,"context_line":"                        \u0027min_disk\u0027, \u0027min_ram\u0027, \u0027is_public\u0027,"},{"line_number":502,"context_line":"                        \u0027protected\u0027, \u0027store\u0027]"},{"line_number":503,"context_line":"    output \u003d {}"},{"line_number":504,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"7af24918_82f4c187","line":501,"updated":"2016-03-05 15:49:46.000000000","message":"Trick here is that as of Glance V2 things liike is_public are now \"visibility\".  Shouldn\u0027t we make this V2 compat as well?","commit_id":"91f6f2156b9bcc83f0797b6a5aa9cd05c78ac691"}],"cinder/tests/unit/api/contrib/test_volume_actions.py":[{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"79b293599696371be1a983c40a4e110059ee79e3","unresolved":false,"context_lines":[{"line_number":807,"context_line":"                                \u0027display_description\u0027: \u0027displaydesc\u0027,"},{"line_number":808,"context_line":"                                \u0027size\u0027: 1,"},{"line_number":809,"context_line":"                                \u0027is_public\u0027: False,"},{"line_number":810,"context_line":"                                \u0027protected\u0027: False,"},{"line_number":811,"context_line":"                                \u0027store\u0027: \u0027store_name\u0027,"},{"line_number":812,"context_line":"                                \u0027volume_type\u0027: {\u0027name\u0027: \u0027vol_type_name\u0027},"},{"line_number":813,"context_line":"                                \u0027image_id\u0027: 1,"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a710552_01175aa4","line":810,"updated":"2015-12-14 18:50:47.000000000","message":"Why is protected \u0027False\u0027 if the test is test_copy_volume_to_image_with_protected_prop?\nShouldn\u0027t we set the protected property and expect it to be True for this test?","commit_id":"8f61829f720b21f2647a8f86fb5917ed7e343239"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"e385c73b9c683ec9f766f3b63e7eb33006f6a86a","unresolved":false,"context_lines":[{"line_number":807,"context_line":"                                \u0027display_description\u0027: \u0027displaydesc\u0027,"},{"line_number":808,"context_line":"                                \u0027size\u0027: 1,"},{"line_number":809,"context_line":"                                \u0027is_public\u0027: False,"},{"line_number":810,"context_line":"                                \u0027protected\u0027: False,"},{"line_number":811,"context_line":"                                \u0027store\u0027: \u0027store_name\u0027,"},{"line_number":812,"context_line":"                                \u0027volume_type\u0027: {\u0027name\u0027: \u0027vol_type_name\u0027},"},{"line_number":813,"context_line":"                                \u0027image_id\u0027: 1,"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a710552_2f06f820","line":810,"in_reply_to":"5a710552_01175aa4","updated":"2015-12-14 20:59:22.000000000","message":"Done","commit_id":"8f61829f720b21f2647a8f86fb5917ed7e343239"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"7cfa8e195c2a6504e6e7305c6e451802c2d74c26","unresolved":false,"context_lines":[{"line_number":881,"context_line":"                        self.override_config(\u0027glance_api_version\u0027, 2)"},{"line_number":882,"context_line":""},{"line_number":883,"context_line":"                        req \u003d fakes.HTTPRequest.blank("},{"line_number":884,"context_line":"                            \u0027/v2/tenant1/volumes/%s/action\u0027 % id)"},{"line_number":885,"context_line":"                        req.environ[\u0027cinder.context\u0027].is_admin \u003d True"},{"line_number":886,"context_line":"                        req.headers \u003d {\u0027OpenStack-API-Version\u0027: \u0027volume 3.1\u0027}"},{"line_number":887,"context_line":"                        req.api_version_request \u003d ("}],"source_content_type":"text/x-python","patch_set":34,"id":"3afc51ec_d98ed426","line":884,"updated":"2016-03-11 18:16:48.000000000","message":"new /v3 endpoint should be used.","commit_id":"70f0b8eb07a0ac6eb2bbe7654f955a5a1114e8e3"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"ad5464aacb9fa218f4df7dcf0fe8b5f5bd0c2cf6","unresolved":false,"context_lines":[{"line_number":881,"context_line":"                        self.override_config(\u0027glance_api_version\u0027, 2)"},{"line_number":882,"context_line":""},{"line_number":883,"context_line":"                        req \u003d fakes.HTTPRequest.blank("},{"line_number":884,"context_line":"                            \u0027/v2/tenant1/volumes/%s/action\u0027 % id)"},{"line_number":885,"context_line":"                        req.environ[\u0027cinder.context\u0027].is_admin \u003d True"},{"line_number":886,"context_line":"                        req.headers \u003d {\u0027OpenStack-API-Version\u0027: \u0027volume 3.1\u0027}"},{"line_number":887,"context_line":"                        req.api_version_request \u003d ("}],"source_content_type":"text/x-python","patch_set":34,"id":"3afc51ec_893eacb6","line":884,"in_reply_to":"3afc51ec_d98ed426","updated":"2016-03-11 19:36:14.000000000","message":"Done","commit_id":"70f0b8eb07a0ac6eb2bbe7654f955a5a1114e8e3"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"d825175e7e96b714bcdb1acbd426eec5fdcfa5b5","unresolved":false,"context_lines":[{"line_number":582,"context_line":"        vol \u003d {"},{"line_number":583,"context_line":"            \"container_format\": \u0027bare\u0027,"},{"line_number":584,"context_line":"            \"disk_format\": \u0027raw\u0027,"},{"line_number":585,"context_line":"            \"updated_at\": datetime.datetime(1, 1, 1, 1, 1, 1),"},{"line_number":586,"context_line":"            \"image_name\": \u0027image_name\u0027,"},{"line_number":587,"context_line":"            \"visibility\": \u0027private\u0027,"},{"line_number":588,"context_line":"            \"protected\": False,"}],"source_content_type":"text/x-python","patch_set":36,"id":"3afc51ec_94e823b6","line":585,"updated":"2016-03-14 23:46:01.000000000","message":"Optionally could just call _get_os_volume_upload_image() and add \"visibility\" and \"protected\" to dict","commit_id":"c7c96c2dbc86e47cfa82121f9b0992c06b410670"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"1c815c24ab1e68e5ac8c3570057f4c8f51731157","unresolved":false,"context_lines":[{"line_number":582,"context_line":"        vol \u003d {"},{"line_number":583,"context_line":"            \"container_format\": \u0027bare\u0027,"},{"line_number":584,"context_line":"            \"disk_format\": \u0027raw\u0027,"},{"line_number":585,"context_line":"            \"updated_at\": datetime.datetime(1, 1, 1, 1, 1, 1),"},{"line_number":586,"context_line":"            \"image_name\": \u0027image_name\u0027,"},{"line_number":587,"context_line":"            \"visibility\": \u0027private\u0027,"},{"line_number":588,"context_line":"            \"protected\": False,"}],"source_content_type":"text/x-python","patch_set":36,"id":"fa0719c6_5b8c1035","line":585,"in_reply_to":"3afc51ec_94e823b6","updated":"2016-03-22 17:36:00.000000000","message":"Done","commit_id":"c7c96c2dbc86e47cfa82121f9b0992c06b410670"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"d825175e7e96b714bcdb1acbd426eec5fdcfa5b5","unresolved":false,"context_lines":[{"line_number":621,"context_line":"            \u0027id\u0027: 1,"},{"line_number":622,"context_line":"            \u0027min_ram\u0027: 0,"},{"line_number":623,"context_line":"            \u0027checksum\u0027: None,"},{"line_number":624,"context_line":"            \u0027min_disk\u0027: 0,"},{"line_number":625,"context_line":"            \u0027visibility\u0027: \u0027public\u0027,"},{"line_number":626,"context_line":"            \u0027protected\u0027: True,"},{"line_number":627,"context_line":"            \u0027deleted_at\u0027: None,"}],"source_content_type":"text/x-python","patch_set":36,"id":"3afc51ec_d4d2abff","line":624,"updated":"2016-03-14 23:46:01.000000000","message":"Same as above","commit_id":"c7c96c2dbc86e47cfa82121f9b0992c06b410670"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"1c815c24ab1e68e5ac8c3570057f4c8f51731157","unresolved":false,"context_lines":[{"line_number":621,"context_line":"            \u0027id\u0027: 1,"},{"line_number":622,"context_line":"            \u0027min_ram\u0027: 0,"},{"line_number":623,"context_line":"            \u0027checksum\u0027: None,"},{"line_number":624,"context_line":"            \u0027min_disk\u0027: 0,"},{"line_number":625,"context_line":"            \u0027visibility\u0027: \u0027public\u0027,"},{"line_number":626,"context_line":"            \u0027protected\u0027: True,"},{"line_number":627,"context_line":"            \u0027deleted_at\u0027: None,"}],"source_content_type":"text/x-python","patch_set":36,"id":"fa0719c6_7bb754d8","line":624,"in_reply_to":"3afc51ec_d4d2abff","updated":"2016-03-22 17:36:00.000000000","message":"This one I wasn\u0027t sure exactly how to do, because the mock side_effect is expecting a function, and it isn\u0027t a dictionary that can be added to afterwards. Do you know how that\u0027s done in Mock?","commit_id":"c7c96c2dbc86e47cfa82121f9b0992c06b410670"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"1a64e84555c97e437249dcf340838e1b6858e147","unresolved":false,"context_lines":[{"line_number":621,"context_line":"            \u0027id\u0027: 1,"},{"line_number":622,"context_line":"            \u0027min_ram\u0027: 0,"},{"line_number":623,"context_line":"            \u0027checksum\u0027: None,"},{"line_number":624,"context_line":"            \u0027min_disk\u0027: 0,"},{"line_number":625,"context_line":"            \u0027visibility\u0027: \u0027public\u0027,"},{"line_number":626,"context_line":"            \u0027protected\u0027: True,"},{"line_number":627,"context_line":"            \u0027deleted_at\u0027: None,"}],"source_content_type":"text/x-python","patch_set":36,"id":"fa0719c6_0648705a","line":624,"in_reply_to":"fa0719c6_5b96c5f0","updated":"2016-03-22 21:45:34.000000000","message":"Yeah that\u0027s what I thought to do, but after making that change it failed the test and the new args weren\u0027t present. I had self.fake_image_service_create().update({\u0027visibility\u0027: ...}) though, so maybe not including *args made the difference.","commit_id":"c7c96c2dbc86e47cfa82121f9b0992c06b410670"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"4274da0c1b715c3dd3c801e5374fb2c72a6d3092","unresolved":false,"context_lines":[{"line_number":621,"context_line":"            \u0027id\u0027: 1,"},{"line_number":622,"context_line":"            \u0027min_ram\u0027: 0,"},{"line_number":623,"context_line":"            \u0027checksum\u0027: None,"},{"line_number":624,"context_line":"            \u0027min_disk\u0027: 0,"},{"line_number":625,"context_line":"            \u0027visibility\u0027: \u0027public\u0027,"},{"line_number":626,"context_line":"            \u0027protected\u0027: True,"},{"line_number":627,"context_line":"            \u0027deleted_at\u0027: None,"}],"source_content_type":"text/x-python","patch_set":36,"id":"fa0719c6_5b96c5f0","line":624,"in_reply_to":"fa0719c6_7bb754d8","updated":"2016-03-22 21:40:19.000000000","message":"I\u0027m probably missing something, but what I was thinking was just along the lines of changing this method to use do:\n   self.fake_image_service_create(*args).update({\u0027visibility\u0027: ...})\n\nRegardless it\u0027s not a big deal.","commit_id":"c7c96c2dbc86e47cfa82121f9b0992c06b410670"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"d825175e7e96b714bcdb1acbd426eec5fdcfa5b5","unresolved":false,"context_lines":[{"line_number":850,"context_line":"    def test_copy_volume_to_image_version_3_1(self):"},{"line_number":851,"context_line":"        \"\"\"Test create image from volume with protected properties.\"\"\""},{"line_number":852,"context_line":"        id \u003d \u0027aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\u0027"},{"line_number":853,"context_line":""},{"line_number":854,"context_line":"        def fake_get_volume_image_metadata(*args):"},{"line_number":855,"context_line":"            meta_dict \u003d {"},{"line_number":856,"context_line":"                \"volume_id\": id,"}],"source_content_type":"text/x-python","patch_set":36,"id":"3afc51ec_342f8ff7","line":853,"updated":"2016-03-14 23:46:01.000000000","message":"Not a functional change but could this use mock_get_volume_image_metadata.return_value \u003d {\u0027volume_id\u0027:....} instead of defining function for it?","commit_id":"c7c96c2dbc86e47cfa82121f9b0992c06b410670"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"1c815c24ab1e68e5ac8c3570057f4c8f51731157","unresolved":false,"context_lines":[{"line_number":850,"context_line":"    def test_copy_volume_to_image_version_3_1(self):"},{"line_number":851,"context_line":"        \"\"\"Test create image from volume with protected properties.\"\"\""},{"line_number":852,"context_line":"        id \u003d \u0027aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\u0027"},{"line_number":853,"context_line":""},{"line_number":854,"context_line":"        def fake_get_volume_image_metadata(*args):"},{"line_number":855,"context_line":"            meta_dict \u003d {"},{"line_number":856,"context_line":"                \"volume_id\": id,"}],"source_content_type":"text/x-python","patch_set":36,"id":"fa0719c6_7b9634f1","line":853,"in_reply_to":"3afc51ec_342f8ff7","updated":"2016-03-22 17:36:00.000000000","message":"Done","commit_id":"c7c96c2dbc86e47cfa82121f9b0992c06b410670"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"d825175e7e96b714bcdb1acbd426eec5fdcfa5b5","unresolved":false,"context_lines":[{"line_number":859,"context_line":"            return meta_dict"},{"line_number":860,"context_line":""},{"line_number":861,"context_line":"        # Need to mock get_volume_image_metadata, create,"},{"line_number":862,"context_line":"        # update and copy_volume_to_image"},{"line_number":863,"context_line":"        with mock.patch.object(volume_api.API, \"get_volume_image_metadata\") \\"},{"line_number":864,"context_line":"                as mock_get_volume_image_metadata:"},{"line_number":865,"context_line":"            mock_get_volume_image_metadata.side_effect \u003d \\"}],"source_content_type":"text/x-python","patch_set":36,"id":"3afc51ec_94ff8366","line":862,"updated":"2016-03-14 23:46:01.000000000","message":"Could these be changed to use method decorators so we don\u0027t have so much indenting? Could be prettier","commit_id":"c7c96c2dbc86e47cfa82121f9b0992c06b410670"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"1c815c24ab1e68e5ac8c3570057f4c8f51731157","unresolved":false,"context_lines":[{"line_number":859,"context_line":"            return meta_dict"},{"line_number":860,"context_line":""},{"line_number":861,"context_line":"        # Need to mock get_volume_image_metadata, create,"},{"line_number":862,"context_line":"        # update and copy_volume_to_image"},{"line_number":863,"context_line":"        with mock.patch.object(volume_api.API, \"get_volume_image_metadata\") \\"},{"line_number":864,"context_line":"                as mock_get_volume_image_metadata:"},{"line_number":865,"context_line":"            mock_get_volume_image_metadata.side_effect \u003d \\"}],"source_content_type":"text/x-python","patch_set":36,"id":"fa0719c6_5b99b01e","line":862,"in_reply_to":"3afc51ec_94ff8366","updated":"2016-03-22 17:36:00.000000000","message":"Done","commit_id":"c7c96c2dbc86e47cfa82121f9b0992c06b410670"},{"author":{"_account_id":8912,"name":"Ryan McNair","email":"rdmcnair@us.ibm.com","username":"rdmcnair"},"change_message_id":"d825175e7e96b714bcdb1acbd426eec5fdcfa5b5","unresolved":false,"context_lines":[{"line_number":917,"context_line":"                        self.assertDictMatch(expected_res, res_dict)"},{"line_number":918,"context_line":""},{"line_number":919,"context_line":"    def test_copy_volume_to_image_public_not_authorized(self):"},{"line_number":920,"context_line":"        \"\"\"Test unauthorized create public image from volume.\"\"\""},{"line_number":921,"context_line":"        id \u003d \u0027aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\u0027"},{"line_number":922,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v3/tenant1/volumes/%s/action\u0027 % id)"},{"line_number":923,"context_line":"        req.environ[\u0027cinder.context\u0027].is_admin \u003d False"}],"source_content_type":"text/x-python","patch_set":36,"id":"3afc51ec_347dcfe7","line":920,"updated":"2016-03-14 23:46:01.000000000","message":"Not related to this change so definitely feel free to ignore, but may be nice to define this \"id\" in the setup so we don\u0027t need to redefine in these two test cases and can use it going forward (since we seem to use it in every test case)","commit_id":"c7c96c2dbc86e47cfa82121f9b0992c06b410670"}],"cinder/tests/unit/api/test_versions.py":[{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"7cfa8e195c2a6504e6e7305c6e451802c2d74c26","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        ids \u003d [v[\u0027id\u0027] for v in version_list]"},{"line_number":146,"context_line":"        self.assertEqual({\u0027v3.0\u0027}, set(ids))"},{"line_number":147,"context_line":"        if version \u003d\u003d \u0027latest\u0027:"},{"line_number":148,"context_line":"            numeric_version \u003d version_list[0][\u0027version\u0027]"},{"line_number":149,"context_line":"        else:"},{"line_number":150,"context_line":"            numeric_version \u003d \u00273.0\u0027"}],"source_content_type":"text/x-python","patch_set":34,"id":"3afc51ec_5588b9e7","line":147,"updated":"2016-03-11 18:16:48.000000000","message":"This is OK, but I\u0027d really like to combine the 3 tests above and use ddt, then remove the test for latest since it is tested below.\nYou could do that if you\u0027d like, else I\u0027ll do it in a separate patch.","commit_id":"70f0b8eb07a0ac6eb2bbe7654f955a5a1114e8e3"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"ad5464aacb9fa218f4df7dcf0fe8b5f5bd0c2cf6","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        ids \u003d [v[\u0027id\u0027] for v in version_list]"},{"line_number":146,"context_line":"        self.assertEqual({\u0027v3.0\u0027}, set(ids))"},{"line_number":147,"context_line":"        if version \u003d\u003d \u0027latest\u0027:"},{"line_number":148,"context_line":"            numeric_version \u003d version_list[0][\u0027version\u0027]"},{"line_number":149,"context_line":"        else:"},{"line_number":150,"context_line":"            numeric_version \u003d \u00273.0\u0027"}],"source_content_type":"text/x-python","patch_set":34,"id":"3afc51ec_89650ce3","line":147,"in_reply_to":"3afc51ec_5588b9e7","updated":"2016-03-11 19:36:14.000000000","message":"I took a stab at it in patchset 35, let me know if that\u0027s what you had in mind.","commit_id":"70f0b8eb07a0ac6eb2bbe7654f955a5a1114e8e3"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"4e9009897e6671326090500c9178bf8d0be9718f","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        response \u003d req.get_response(router.APIRouter())"},{"line_number":96,"context_line":"        self.assertEqual(200, response.status_int)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    @ddt.data(\u00271.0\u0027, \u00272.0\u0027, \u00273.0\u0027)"},{"line_number":99,"context_line":"    def test_versions(self, version):"},{"line_number":100,"context_line":"        req \u003d self.build_request("},{"line_number":101,"context_line":"            base_url\u003d\u0027http://localhost/v{}\u0027.format(version[0]),"}],"source_content_type":"text/x-python","patch_set":36,"id":"3afc51ec_ff7d5ee8","line":98,"updated":"2016-03-11 20:39:56.000000000","message":"Yeah, this looks good. Thanks for the refactor.","commit_id":"c7c96c2dbc86e47cfa82121f9b0992c06b410670"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"70b4cc2428270518dba8d29f22484849cb9517bc","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        response \u003d req.get_response(router.APIRouter())"},{"line_number":96,"context_line":"        self.assertEqual(200, response.status_int)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    @ddt.data(\u00271.0\u0027, \u00272.0\u0027, \u00273.0\u0027)"},{"line_number":99,"context_line":"    def test_versions(self, version):"},{"line_number":100,"context_line":"        req \u003d self.build_request("},{"line_number":101,"context_line":"            base_url\u003d\u0027http://localhost/v{}\u0027.format(version[0]),"}],"source_content_type":"text/x-python","patch_set":40,"id":"ba0121b8_6faef92e","line":98,"range":{"start_line":98,"start_character":1,"end_line":98,"end_character":34},"updated":"2016-04-01 08:34:00.000000000","message":"Are we not testing \u00273.1\u0027 version?","commit_id":"f8ce884002817bb76c68616314dc2dc5cedb61d6"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"dcc2bdc88a9ae9496c1c033a562efae5dddf0aeb","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        response \u003d req.get_response(router.APIRouter())"},{"line_number":96,"context_line":"        self.assertEqual(200, response.status_int)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    @ddt.data(\u00271.0\u0027, \u00272.0\u0027, \u00273.0\u0027)"},{"line_number":99,"context_line":"    def test_versions(self, version):"},{"line_number":100,"context_line":"        req \u003d self.build_request("},{"line_number":101,"context_line":"            base_url\u003d\u0027http://localhost/v{}\u0027.format(version[0]),"}],"source_content_type":"text/x-python","patch_set":40,"id":"ba0121b8_28cce287","line":98,"range":{"start_line":98,"start_character":1,"end_line":98,"end_character":34},"in_reply_to":"ba0121b8_6faef92e","updated":"2016-04-01 16:11:29.000000000","message":"That\u0027s done in the next test, check_versions_latest I believe. It checks that the max api version is returned, which is 3.1.","commit_id":"f8ce884002817bb76c68616314dc2dc5cedb61d6"}],"cinder/volume/api.py":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"9077142bc8377619da54d90ab786f5c47c1938ab","unresolved":false,"context_lines":[{"line_number":1214,"context_line":"                    \"disk_format\": recv_metadata[\u0027disk_format\u0027],"},{"line_number":1215,"context_line":"                    \"image_name\": recv_metadata.get(\u0027name\u0027, None),"},{"line_number":1216,"context_line":"                    \"is_public\": recv_metadata.get(\u0027is_public\u0027, None),"},{"line_number":1217,"context_line":"                    \"protected\": recv_metadata.get(\u0027protected\u0027, None)}"},{"line_number":1218,"context_line":"        LOG.info(_LI(\"Copy image to volume completed successfully.\"),"},{"line_number":1219,"context_line":"                 resource\u003dvolume)"},{"line_number":1220,"context_line":"        return response"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa80f949_e0da3578","line":1217,"updated":"2015-11-03 19:11:54.000000000","message":"why not store ?","commit_id":"ae55cc1c8b03e836601cdd315c2123cb3a5a3eed"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"b5c810590e90a197df99c900565e28dbbade3948","unresolved":false,"context_lines":[{"line_number":1214,"context_line":"                    \"disk_format\": recv_metadata[\u0027disk_format\u0027],"},{"line_number":1215,"context_line":"                    \"image_name\": recv_metadata.get(\u0027name\u0027, None),"},{"line_number":1216,"context_line":"                    \"is_public\": recv_metadata.get(\u0027is_public\u0027, None),"},{"line_number":1217,"context_line":"                    \"protected\": recv_metadata.get(\u0027protected\u0027, None)}"},{"line_number":1218,"context_line":"        LOG.info(_LI(\"Copy image to volume completed successfully.\"),"},{"line_number":1219,"context_line":"                 resource\u003dvolume)"},{"line_number":1220,"context_line":"        return response"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa80f949_fb574ac8","line":1217,"in_reply_to":"fa80f949_e0da3578","updated":"2015-11-03 19:43:12.000000000","message":"Done","commit_id":"ae55cc1c8b03e836601cdd315c2123cb3a5a3eed"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"cb108e3be4bd48fca8baf278586062777bca4664","unresolved":false,"context_lines":[{"line_number":1218,"context_line":"                    \"disk_format\": recv_metadata[\u0027disk_format\u0027],"},{"line_number":1219,"context_line":"                    \"image_name\": recv_metadata.get(\u0027name\u0027, None),"},{"line_number":1220,"context_line":"                    \"is_public\": recv_metadata.get(\u0027is_public\u0027, None),"},{"line_number":1221,"context_line":"                    \"protected\": recv_metadata.get(\u0027protected\u0027, None),"},{"line_number":1222,"context_line":"                    \"store\": recv_metadata.get(\u0027store\u0027, None)}"},{"line_number":1223,"context_line":"        LOG.info(_LI(\"Copy volume to image completed successfully.\"),"},{"line_number":1224,"context_line":"                 resource\u003dvolume)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a740942_3f8a0c65","line":1221,"updated":"2015-12-12 01:14:26.000000000","message":"Seems is_public and protected are boolean in glance. Is it OK for returning None as a default value?\n\nI saw value of is_public was shown as \u0027None\u0027 in the result of \u0027cinder upload-to-image \u003cID\u003e \u003cNAME\u003e\u0027 command. Value of \u0027protected\u0027 was \u0027False\u0027 even if this returns None, this is OK.","commit_id":"9bfe66eb17b09f6e9cfcdb2cc179db92e50388be"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"e50097c2f2dd8cd4a8d3e99cae61a406b60adbf4","unresolved":false,"context_lines":[{"line_number":1218,"context_line":"                    \"disk_format\": recv_metadata[\u0027disk_format\u0027],"},{"line_number":1219,"context_line":"                    \"image_name\": recv_metadata.get(\u0027name\u0027, None),"},{"line_number":1220,"context_line":"                    \"is_public\": recv_metadata.get(\u0027is_public\u0027, None),"},{"line_number":1221,"context_line":"                    \"protected\": recv_metadata.get(\u0027protected\u0027, None),"},{"line_number":1222,"context_line":"                    \"store\": recv_metadata.get(\u0027store\u0027, None)}"},{"line_number":1223,"context_line":"        LOG.info(_LI(\"Copy volume to image completed successfully.\"),"},{"line_number":1224,"context_line":"                 resource\u003dvolume)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a740942_b33dd38f","line":1221,"in_reply_to":"7a740942_181886d2","updated":"2015-12-12 06:41:35.000000000","message":"I suppose retuning False as a default is correct behavior, but please check it.","commit_id":"9bfe66eb17b09f6e9cfcdb2cc179db92e50388be"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"d60ad57611d01e2922ee2d168bb566158deba419","unresolved":false,"context_lines":[{"line_number":1218,"context_line":"                    \"disk_format\": recv_metadata[\u0027disk_format\u0027],"},{"line_number":1219,"context_line":"                    \"image_name\": recv_metadata.get(\u0027name\u0027, None),"},{"line_number":1220,"context_line":"                    \"is_public\": recv_metadata.get(\u0027is_public\u0027, None),"},{"line_number":1221,"context_line":"                    \"protected\": recv_metadata.get(\u0027protected\u0027, None),"},{"line_number":1222,"context_line":"                    \"store\": recv_metadata.get(\u0027store\u0027, None)}"},{"line_number":1223,"context_line":"        LOG.info(_LI(\"Copy volume to image completed successfully.\"),"},{"line_number":1224,"context_line":"                 resource\u003dvolume)"}],"source_content_type":"text/x-python","patch_set":12,"id":"5a710552_3090a6ec","line":1221,"in_reply_to":"7a740942_1d136366","updated":"2015-12-14 17:48:36.000000000","message":"Done","commit_id":"9bfe66eb17b09f6e9cfcdb2cc179db92e50388be"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"92988eebd29521729d9580f7f0b31dfc4a2c42f8","unresolved":false,"context_lines":[{"line_number":1218,"context_line":"                    \"disk_format\": recv_metadata[\u0027disk_format\u0027],"},{"line_number":1219,"context_line":"                    \"image_name\": recv_metadata.get(\u0027name\u0027, None),"},{"line_number":1220,"context_line":"                    \"is_public\": recv_metadata.get(\u0027is_public\u0027, None),"},{"line_number":1221,"context_line":"                    \"protected\": recv_metadata.get(\u0027protected\u0027, None),"},{"line_number":1222,"context_line":"                    \"store\": recv_metadata.get(\u0027store\u0027, None)}"},{"line_number":1223,"context_line":"        LOG.info(_LI(\"Copy volume to image completed successfully.\"),"},{"line_number":1224,"context_line":"                 resource\u003dvolume)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a740942_181886d2","line":1221,"in_reply_to":"7a740942_3f8a0c65","updated":"2015-12-12 05:53:44.000000000","message":"So would you say that these values should default to False rather than none here?","commit_id":"9bfe66eb17b09f6e9cfcdb2cc179db92e50388be"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"45542bbbf2bd2b69c59e62abdf536e81731c7ab0","unresolved":false,"context_lines":[{"line_number":1218,"context_line":"                    \"disk_format\": recv_metadata[\u0027disk_format\u0027],"},{"line_number":1219,"context_line":"                    \"image_name\": recv_metadata.get(\u0027name\u0027, None),"},{"line_number":1220,"context_line":"                    \"is_public\": recv_metadata.get(\u0027is_public\u0027, None),"},{"line_number":1221,"context_line":"                    \"protected\": recv_metadata.get(\u0027protected\u0027, None),"},{"line_number":1222,"context_line":"                    \"store\": recv_metadata.get(\u0027store\u0027, None)}"},{"line_number":1223,"context_line":"        LOG.info(_LI(\"Copy volume to image completed successfully.\"),"},{"line_number":1224,"context_line":"                 resource\u003dvolume)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a740942_1d136366","line":1221,"in_reply_to":"7a740942_b33dd38f","updated":"2015-12-14 14:50:41.000000000","message":"False seems more reasonable as a default.","commit_id":"9bfe66eb17b09f6e9cfcdb2cc179db92e50388be"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"40bdcf86e388e60c91994e63f66977e2ed3a34b2","unresolved":false,"context_lines":[{"line_number":1188,"context_line":"                    \"disk_format\": recv_metadata[\u0027disk_format\u0027],"},{"line_number":1189,"context_line":"                    \"image_name\": recv_metadata.get(\u0027name\u0027, None)}"},{"line_number":1190,"context_line":"        if \u0027protected\u0027 in recv_metadata:"},{"line_number":1191,"context_line":"            response[\u0027protected\u0027] \u003d recv_metadata.get(\u0027protected\u0027, False)"},{"line_number":1192,"context_line":"        if \u0027is_public\u0027 in recv_metadata:"},{"line_number":1193,"context_line":"            response[\u0027is_public\u0027] \u003d recv_metadata.get(\u0027is_public\u0027, False)"},{"line_number":1194,"context_line":"        elif \u0027visibility\u0027 in recv_metadata:"}],"source_content_type":"text/x-python","patch_set":36,"id":"fa0719c6_b3ec8c2a","line":1191,"range":{"start_line":1191,"start_character":67,"end_line":1191,"end_character":72},"updated":"2016-03-22 11:23:34.000000000","message":"No need to specify that, as you\u0027ve checked the existence of the key in line 1190. It doesn\u0027t hurt of course. :)","commit_id":"c7c96c2dbc86e47cfa82121f9b0992c06b410670"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"1c815c24ab1e68e5ac8c3570057f4c8f51731157","unresolved":false,"context_lines":[{"line_number":1188,"context_line":"                    \"disk_format\": recv_metadata[\u0027disk_format\u0027],"},{"line_number":1189,"context_line":"                    \"image_name\": recv_metadata.get(\u0027name\u0027, None)}"},{"line_number":1190,"context_line":"        if \u0027protected\u0027 in recv_metadata:"},{"line_number":1191,"context_line":"            response[\u0027protected\u0027] \u003d recv_metadata.get(\u0027protected\u0027, False)"},{"line_number":1192,"context_line":"        if \u0027is_public\u0027 in recv_metadata:"},{"line_number":1193,"context_line":"            response[\u0027is_public\u0027] \u003d recv_metadata.get(\u0027is_public\u0027, False)"},{"line_number":1194,"context_line":"        elif \u0027visibility\u0027 in recv_metadata:"}],"source_content_type":"text/x-python","patch_set":36,"id":"fa0719c6_dbaca037","line":1191,"range":{"start_line":1191,"start_character":67,"end_line":1191,"end_character":72},"in_reply_to":"fa0719c6_b3ec8c2a","updated":"2016-03-22 17:36:00.000000000","message":"Done","commit_id":"c7c96c2dbc86e47cfa82121f9b0992c06b410670"}],"releasenotes/notes/add-volume-upload-image-options-3a61a31c544fa034.yaml":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"e44c5170d11d46fe840974a39f787d6264051224","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Enabled the user to use the ``visibility`` and ``protected``"},{"line_number":4,"context_line":"    arguments with the upload-to-image command."}],"source_content_type":"text/x-yaml","patch_set":39,"id":"fa0719c6_17da27e8","line":4,"range":{"start_line":3,"start_character":0,"end_line":4,"end_character":47},"updated":"2016-03-23 18:23:14.000000000","message":"Actually at this level it\u0027s a REST call, not a command.","commit_id":"17b83219f1dedeaf15c34945031b11eee92f3550"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"5b521264c66da785d6fb54507a702d4a1c05c259","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Enabled the user to use the ``visibility`` and ``protected``"},{"line_number":4,"context_line":"    arguments with the upload-to-image command."}],"source_content_type":"text/x-yaml","patch_set":39,"id":"fa0719c6_94d3d203","line":4,"range":{"start_line":3,"start_character":0,"end_line":4,"end_character":47},"in_reply_to":"fa0719c6_17da27e8","updated":"2016-03-23 18:55:13.000000000","message":"doh, of course. I\u0027ll edit that.","commit_id":"17b83219f1dedeaf15c34945031b11eee92f3550"}]}
