)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"7ef5cfdb1e6a79f12b6ffbb1fa336417db952ebf","unresolved":false,"context_lines":[{"line_number":13,"context_line":"name is not present."},{"line_number":14,"context_line":"3. Use is_valid_body method for checking request body element name"},{"line_number":15,"context_line":"wherever appropriate."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-bug: #1461402"},{"line_number":18,"context_line":"Change-Id: I81764cd8517484fbee4beae2b30668c8b180d677"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3afb71cf_a3f71458","line":16,"updated":"2015-06-09 09:36:25.000000000","message":"APIImpact, please. Related examples\n\n    https://review.openstack.org/#/c/186669/\n    https://review.openstack.org/#/c/188480/\n    https://review.openstack.org/#/c/180267/\n\nAnd \n\n    https://wiki.openstack.org/wiki/GitCommitMessages","commit_id":"4348134858fdcef816932486c110db71dacb36f5"},{"author":{"_account_id":8300,"name":"Abhijeet Malawade","email":"abhijeet.malawade@gmail.com","username":"abhijeet"},"change_message_id":"05547f9acac6ead796a2edfc41b9dac634a3757d","unresolved":false,"context_lines":[{"line_number":13,"context_line":"name is not present."},{"line_number":14,"context_line":"3. Use is_valid_body method for checking request body element name"},{"line_number":15,"context_line":"wherever appropriate."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-bug: #1461402"},{"line_number":18,"context_line":"Change-Id: I81764cd8517484fbee4beae2b30668c8b180d677"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1af86dd1_4168c7f5","line":16,"in_reply_to":"1af86dd1_3e7e06e5","updated":"2015-06-12 12:54:46.000000000","message":"Done","commit_id":"4348134858fdcef816932486c110db71dacb36f5"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"6c344b192fa200075316fd537967be44b1322762","unresolved":false,"context_lines":[{"line_number":13,"context_line":"name is not present."},{"line_number":14,"context_line":"3. Use is_valid_body method for checking request body element name"},{"line_number":15,"context_line":"wherever appropriate."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-bug: #1461402"},{"line_number":18,"context_line":"Change-Id: I81764cd8517484fbee4beae2b30668c8b180d677"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1af86dd1_3e7e06e5","line":16,"in_reply_to":"3afb71cf_6cc75d64","updated":"2015-06-12 12:25:06.000000000","message":"I think it is needed. Take this patch as an example\n\n    https://review.openstack.org/#/c/143656/","commit_id":"4348134858fdcef816932486c110db71dacb36f5"},{"author":{"_account_id":8300,"name":"Abhijeet Malawade","email":"abhijeet.malawade@gmail.com","username":"abhijeet"},"change_message_id":"6813d812f88e01f197411304dcdeb91c963d0fd4","unresolved":false,"context_lines":[{"line_number":13,"context_line":"name is not present."},{"line_number":14,"context_line":"3. Use is_valid_body method for checking request body element name"},{"line_number":15,"context_line":"wherever appropriate."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-bug: #1461402"},{"line_number":18,"context_line":"Change-Id: I81764cd8517484fbee4beae2b30668c8b180d677"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3afb71cf_6cc75d64","line":16,"in_reply_to":"3afb71cf_a3f71458","updated":"2015-06-11 09:49:57.000000000","message":"Hi Accela,\n\nDo I need to add \u0027APIImpact\u0027 here?\nIn this patch I am only changing error message, I am not changing return code.","commit_id":"4348134858fdcef816932486c110db71dacb36f5"}],"cinder/api/contrib/backups.py":[{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"fda0671e17eac77fe5ffe031b031fcb6c07497a5","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        try:"},{"line_number":251,"context_line":"            volume_id \u003d backup[\u0027volume_id\u0027]"},{"line_number":252,"context_line":"        except KeyError:"},{"line_number":253,"context_line":"            msg \u003d _(\"Incorrect request body format\")"},{"line_number":254,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":255,"context_line":"        container \u003d backup.get(\u0027container\u0027, None)"},{"line_number":256,"context_line":"        name \u003d backup.get(\u0027name\u0027, None)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_d0b69b3c","line":253,"updated":"2015-06-06 22:03:05.000000000","message":"\"Missing required element \u0027volume_id\u0027 in request body.\"","commit_id":"c925c50528bc4204e64956403b361fc7446200b6"},{"author":{"_account_id":10795,"name":"Rajesh Tailor","email":"tailor.rajesh88@gmail.com","username":"rajeshtailor"},"change_message_id":"f04efb89a7cd825fa11169fd24f4f31e7ab4793b","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        try:"},{"line_number":251,"context_line":"            volume_id \u003d backup[\u0027volume_id\u0027]"},{"line_number":252,"context_line":"        except KeyError:"},{"line_number":253,"context_line":"            msg \u003d _(\"Incorrect request body format\")"},{"line_number":254,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":255,"context_line":"        container \u003d backup.get(\u0027container\u0027, None)"},{"line_number":256,"context_line":"        name \u003d backup.get(\u0027name\u0027, None)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_24e1209b","line":253,"in_reply_to":"3afb71cf_d0b69b3c","updated":"2015-06-08 10:31:22.000000000","message":"Hi Apoorva,\n\nValidation is done only on outer most elements of request body.","commit_id":"c925c50528bc4204e64956403b361fc7446200b6"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"fda0671e17eac77fe5ffe031b031fcb6c07497a5","unresolved":false,"context_lines":[{"line_number":356,"context_line":"            backup_service \u003d import_data[\u0027backup_service\u0027]"},{"line_number":357,"context_line":"            backup_url \u003d import_data[\u0027backup_url\u0027]"},{"line_number":358,"context_line":"        except KeyError:"},{"line_number":359,"context_line":"            msg \u003d _(\"Incorrect request body format.\")"},{"line_number":360,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":361,"context_line":"        LOG.debug(\u0027Importing backup using %(service)s and url %(url)s.\u0027,"},{"line_number":362,"context_line":"                  {\u0027service\u0027: backup_service, \u0027url\u0027: backup_url})"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_90870361","line":359,"updated":"2015-06-06 22:03:05.000000000","message":"\"Missing required element \u0027backup_service/backup_url\u0027 in request body.\"","commit_id":"c925c50528bc4204e64956403b361fc7446200b6"},{"author":{"_account_id":10795,"name":"Rajesh Tailor","email":"tailor.rajesh88@gmail.com","username":"rajeshtailor"},"change_message_id":"f04efb89a7cd825fa11169fd24f4f31e7ab4793b","unresolved":false,"context_lines":[{"line_number":356,"context_line":"            backup_service \u003d import_data[\u0027backup_service\u0027]"},{"line_number":357,"context_line":"            backup_url \u003d import_data[\u0027backup_url\u0027]"},{"line_number":358,"context_line":"        except KeyError:"},{"line_number":359,"context_line":"            msg \u003d _(\"Incorrect request body format.\")"},{"line_number":360,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":361,"context_line":"        LOG.debug(\u0027Importing backup using %(service)s and url %(url)s.\u0027,"},{"line_number":362,"context_line":"                  {\u0027service\u0027: backup_service, \u0027url\u0027: backup_url})"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_84033442","line":359,"in_reply_to":"3afb71cf_90870361","updated":"2015-06-08 10:31:22.000000000","message":"same as above.","commit_id":"c925c50528bc4204e64956403b361fc7446200b6"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"7ef5cfdb1e6a79f12b6ffbb1fa336417db952ebf","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        try:"},{"line_number":251,"context_line":"            volume_id \u003d backup[\u0027volume_id\u0027]"},{"line_number":252,"context_line":"        except KeyError:"},{"line_number":253,"context_line":"            msg \u003d _(\"Incorrect request body format\")"},{"line_number":254,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":255,"context_line":"        container \u003d backup.get(\u0027container\u0027, None)"},{"line_number":256,"context_line":"        name \u003d backup.get(\u0027name\u0027, None)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3afb71cf_037a68bd","line":253,"updated":"2015-06-09 09:36:25.000000000","message":"Change the error handling for \u0027volume_id\u0027 here together?","commit_id":"4348134858fdcef816932486c110db71dacb36f5"},{"author":{"_account_id":8300,"name":"Abhijeet Malawade","email":"abhijeet.malawade@gmail.com","username":"abhijeet"},"change_message_id":"5e25ae12b3a72ce158a9a8d91e62d92a7b73f37e","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        try:"},{"line_number":251,"context_line":"            volume_id \u003d backup[\u0027volume_id\u0027]"},{"line_number":252,"context_line":"        except KeyError:"},{"line_number":253,"context_line":"            msg \u003d _(\"Incorrect request body format\")"},{"line_number":254,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":255,"context_line":"        container \u003d backup.get(\u0027container\u0027, None)"},{"line_number":256,"context_line":"        name \u003d backup.get(\u0027name\u0027, None)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3afb71cf_1ed4fae9","line":253,"in_reply_to":"3afb71cf_037a68bd","updated":"2015-06-09 10:50:06.000000000","message":"Hi Accela,\n\nValidation is done only on outer most elements of request body as mentioned in the commit message.\n\nHere \u0027volume_id\u0027 is inner element of request body.","commit_id":"4348134858fdcef816932486c110db71dacb36f5"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"ddb9497167d20dbc28e6a8b20f9944b7b195efbc","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        try:"},{"line_number":251,"context_line":"            volume_id \u003d backup[\u0027volume_id\u0027]"},{"line_number":252,"context_line":"        except KeyError:"},{"line_number":253,"context_line":"            msg \u003d _(\"Incorrect request body format\")"},{"line_number":254,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":255,"context_line":"        container \u003d backup.get(\u0027container\u0027, None)"},{"line_number":256,"context_line":"        name \u003d backup.get(\u0027name\u0027, None)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3afb71cf_e2d5cae4","line":253,"in_reply_to":"3afb71cf_1ed4fae9","updated":"2015-06-10 10:17:32.000000000","message":"Got your point. My bad.","commit_id":"4348134858fdcef816932486c110db71dacb36f5"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"6ee68927dc5c20a91b0f6c8ae516486a9e3a6316","unresolved":false,"context_lines":[{"line_number":284,"context_line":"        LOG.debug(\u0027Restoring backup %(backup_id)s (%(body)s)\u0027,"},{"line_number":285,"context_line":"                  {\u0027backup_id\u0027: id, \u0027body\u0027: body})"},{"line_number":286,"context_line":"        if not self.is_valid_body(body, \u0027restore\u0027):"},{"line_number":287,"context_line":"            msg \u003d _(\"Missing required element \u0027restore\u0027 in request body.\")"},{"line_number":288,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_b34a3d82","line":287,"updated":"2015-06-15 15:35:39.000000000","message":"Instead of specifying this text everywhere, would it be better to just change is_valid_body in cinder/api/openstack/wsgi.py to \u0027assert_valid_body\u0027 that raises the BadRequest with the correct error message? Or maybe write a new method that uses is_valid_body? Otherwise the messages will just become inconsistent again over time.","commit_id":"b7fc8774d8c1a9afd9fd1e2b1e6b5b70caef93f9"}],"cinder/api/contrib/volume_transfer.py":[{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"fda0671e17eac77fe5ffe031b031fcb6c07497a5","unresolved":false,"context_lines":[{"line_number":159,"context_line":"            transfer \u003d body[\u0027transfer\u0027]"},{"line_number":160,"context_line":"            volume_id \u003d transfer[\u0027volume_id\u0027]"},{"line_number":161,"context_line":"        except KeyError:"},{"line_number":162,"context_line":"            msg \u003d _(\"Incorrect request body format\")"},{"line_number":163,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        name \u003d transfer.get(\u0027name\u0027, None)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_7057e702","line":162,"updated":"2015-06-06 22:03:05.000000000","message":"\"Missing required element \u0027volume_id\u0027 in request body.\"","commit_id":"c925c50528bc4204e64956403b361fc7446200b6"},{"author":{"_account_id":10795,"name":"Rajesh Tailor","email":"tailor.rajesh88@gmail.com","username":"rajeshtailor"},"change_message_id":"f04efb89a7cd825fa11169fd24f4f31e7ab4793b","unresolved":false,"context_lines":[{"line_number":159,"context_line":"            transfer \u003d body[\u0027transfer\u0027]"},{"line_number":160,"context_line":"            volume_id \u003d transfer[\u0027volume_id\u0027]"},{"line_number":161,"context_line":"        except KeyError:"},{"line_number":162,"context_line":"            msg \u003d _(\"Incorrect request body format\")"},{"line_number":163,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        name \u003d transfer.get(\u0027name\u0027, None)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_c49fec01","line":162,"in_reply_to":"3afb71cf_7057e702","updated":"2015-06-08 10:31:22.000000000","message":"same as before","commit_id":"c925c50528bc4204e64956403b361fc7446200b6"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"fda0671e17eac77fe5ffe031b031fcb6c07497a5","unresolved":false,"context_lines":[{"line_number":196,"context_line":"            accept \u003d body[\u0027accept\u0027]"},{"line_number":197,"context_line":"            auth_key \u003d accept[\u0027auth_key\u0027]"},{"line_number":198,"context_line":"        except KeyError:"},{"line_number":199,"context_line":"            msg \u003d _(\"Incorrect request body format\")"},{"line_number":200,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"        LOG.info(_LI(\"Accepting transfer %s\"), transfer_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_90526312","line":199,"updated":"2015-06-06 22:03:05.000000000","message":"\"Missing required element \u0027auth_key\u0027 in request body.\"","commit_id":"c925c50528bc4204e64956403b361fc7446200b6"},{"author":{"_account_id":10795,"name":"Rajesh Tailor","email":"tailor.rajesh88@gmail.com","username":"rajeshtailor"},"change_message_id":"f04efb89a7cd825fa11169fd24f4f31e7ab4793b","unresolved":false,"context_lines":[{"line_number":196,"context_line":"            accept \u003d body[\u0027accept\u0027]"},{"line_number":197,"context_line":"            auth_key \u003d accept[\u0027auth_key\u0027]"},{"line_number":198,"context_line":"        except KeyError:"},{"line_number":199,"context_line":"            msg \u003d _(\"Incorrect request body format\")"},{"line_number":200,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"        LOG.info(_LI(\"Accepting transfer %s\"), transfer_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_e498a81d","line":199,"in_reply_to":"3afb71cf_90526312","updated":"2015-06-08 10:31:22.000000000","message":"same as before.","commit_id":"c925c50528bc4204e64956403b361fc7446200b6"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"7ef5cfdb1e6a79f12b6ffbb1fa336417db952ebf","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        transfer \u003d body[\u0027transfer\u0027]"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        try:"},{"line_number":160,"context_line":"            volume_id \u003d transfer[\u0027volume_id\u0027]"},{"line_number":161,"context_line":"        except KeyError:"},{"line_number":162,"context_line":"            msg \u003d _(\"Incorrect request body format\")"},{"line_number":163,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3afb71cf_6338fcef","line":160,"updated":"2015-06-09 09:36:25.000000000","message":"Change the error handling for \u0027volume_id\u0027 here too?","commit_id":"4348134858fdcef816932486c110db71dacb36f5"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"ddb9497167d20dbc28e6a8b20f9944b7b195efbc","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        transfer \u003d body[\u0027transfer\u0027]"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        try:"},{"line_number":160,"context_line":"            volume_id \u003d transfer[\u0027volume_id\u0027]"},{"line_number":161,"context_line":"        except KeyError:"},{"line_number":162,"context_line":"            msg \u003d _(\"Incorrect request body format\")"},{"line_number":163,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3afb71cf_c2152e9c","line":160,"in_reply_to":"3afb71cf_6338fcef","updated":"2015-06-10 10:17:32.000000000","message":"No need to change, since only out most elements are validated, as mentioned in commit message.","commit_id":"4348134858fdcef816932486c110db71dacb36f5"}],"cinder/api/openstack/wsgi.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"3a16690ae7f915fe6fbd7e0e3e5052bf89529ec3","unresolved":false,"context_lines":[{"line_number":1206,"context_line":""},{"line_number":1207,"context_line":"    @staticmethod"},{"line_number":1208,"context_line":"    def assert_valid_body(body, entity_name):"},{"line_number":1209,"context_line":"        # NOTE: After v1 api is deprecated need to merge \u0027is_valid_body\u0027 and"},{"line_number":1210,"context_line":"        #       \u0027assert_valid_body\u0027 in to one method. Right now it is not"},{"line_number":1211,"context_line":"        #       possible to modify \u0027is_valid_body\u0027 to raise exception because"},{"line_number":1212,"context_line":"        #       in case of V1 api when \u0027is_valid_body\u0027 return False,"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa32b979_af37d3fd","line":1209,"updated":"2015-06-23 19:21:06.000000000","message":"Should be:\n# TODO (name): After API v1 is removed....","commit_id":"7d203027c7e32283d6d7bf1ca38d10184f4a391f"}],"cinder/api/v2/volume_metadata.py":[{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"fda0671e17eac77fe5ffe031b031fcb6c07497a5","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        try:"},{"line_number":135,"context_line":"            return {\u0027meta\u0027: {id: data[id]}}"},{"line_number":136,"context_line":"        except KeyError:"},{"line_number":137,"context_line":"            msg \u003d _(\"Metadata item was not found\")"},{"line_number":138,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":139,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_b0d0bf54","line":136,"updated":"2015-06-06 22:03:05.000000000","message":"Metadata item %s was not found, id","commit_id":"c925c50528bc4204e64956403b361fc7446200b6"}]}
