)]}'
{"nova/api/openstack/compute/plugins/v3/volumes.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b067b272efaf7200420e5d298162575ed1d9ce89","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        limited_list \u003d common.limited(volumes, req)"},{"line_number":131,"context_line":"        res \u003d [entity_maker(context, vol) for vol in limited_list]"},{"line_number":132,"context_line":"        return {\u0027volumes\u0027: res}"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    @extensions.expected_errors(400)"},{"line_number":135,"context_line":"    @validation.schema(volumes_schema.create)"},{"line_number":136,"context_line":"    def create(self, req, body):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aaa499b_89f0baff","line":133,"updated":"2015-04-15 16:44:29.000000000","message":"we should add 403 at here","commit_id":"b22eb411755f2f2de6dbcf04283c537a2ddf0fc2"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d6c8802311172e3bac0545d971c81a098e8b7ba2","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        res \u003d [entity_maker(context, vol) for vol in limited_list]"},{"line_number":132,"context_line":"        return {\u0027volumes\u0027: res}"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    @extensions.expected_errors((400, 403))"},{"line_number":135,"context_line":"    @validation.schema(volumes_schema.create)"},{"line_number":136,"context_line":"    def create(self, req, body):"},{"line_number":137,"context_line":"        \"\"\"Creates a new volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3acd31a7_c2379a4b","line":134,"updated":"2015-05-05 19:47:02.000000000","message":"You are not returning a 403 anywhere therefore the above should not change.","commit_id":"67c5f8372f4f85c9ccb1abc940b7b7ecf50ab841"}],"nova/api/openstack/compute/volumes.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"0d95d8dbd25ed94e63238714f4ed6b4eb499d4eb","unresolved":false,"context_lines":[{"line_number":169,"context_line":"                metadata\u003dmetadata,"},{"line_number":170,"context_line":"                availability_zone\u003davailability_zone"},{"line_number":171,"context_line":"                )"},{"line_number":172,"context_line":"        except (exception.OverQuota, exception.InvalidInput) as err:"},{"line_number":173,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derr.format_message())"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        # TODO(vish): Instance should be None at db layer instead of"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa1b9901_d1aa5f70","line":172,"updated":"2015-08-18 05:39:56.000000000","message":"should not overquota raise HTTPForbidden  as per https://github.com/openstack/api-wg/blob/master/guidelines/http.rst\n\nWith that, as this will be new error code then we need version bump for that.\n\nAfter looking at this patch and https://review.openstack.org/#/c/198753/,  I am thinking that we will endup bumping version for each such cases which is really small one IMO. May be we should do in one shot.","commit_id":"473ee551de2cb4583bafa5ca3c3e76d7514abe33"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"f3649c27becf1bac6cccc0a0d4990c6ff112d88a","unresolved":false,"context_lines":[{"line_number":169,"context_line":"                metadata\u003dmetadata,"},{"line_number":170,"context_line":"                availability_zone\u003davailability_zone"},{"line_number":171,"context_line":"                )"},{"line_number":172,"context_line":"        except (exception.OverQuota, exception.InvalidInput) as err:"},{"line_number":173,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derr.format_message())"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        # TODO(vish): Instance should be None at db layer instead of"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa1b9901_96b5a432","line":172,"in_reply_to":"fa1b9901_d1aa5f70","updated":"2015-08-18 14:24:40.000000000","message":"Thanks, I should update it , I missed that, thanks\n\nit used to raise 500 and now it\u0027s 403 , so \nhttps://github.com/openstack/nova/blob/master/doc/source/api_microversion_dev.rst\n[1]When fixing 500 errors that previously caused stack traces, try to map the new error into the existing set of errors that API call could previously return (400 if nothing else is appropriate). \n\napplies, we don\u0027t need a microversion, right?","commit_id":"473ee551de2cb4583bafa5ca3c3e76d7514abe33"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"64149cddcfe2c77ab616442f7e685021e00316e4","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        except exception.InvalidInput as err:"},{"line_number":173,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derr.format_message())"},{"line_number":174,"context_line":"        except exception.OverQuota as err:"},{"line_number":175,"context_line":"            raise exc.HTTPForbidden(explanation\u003derr.format_message())"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        # TODO(vish): Instance should be None at db layer instead of"},{"line_number":178,"context_line":"        #             trying to lazy load, but for now we turn it into"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_3cf340a0","line":175,"updated":"2015-08-19 01:38:01.000000000","message":"Yea but it introduced new error code 403 which need version bump. either we need to map this to existing one (400 or 404) to avoid version bump and fixing 500.\n\nBut not sure those are appropriate code here .","commit_id":"47a00872a97580ab52d77d2e4d0272ad0d8fdd51"},{"author":{"_account_id":642,"name":"Matt Dietz","email":"matthew.dietz@gmail.com","username":"cerberus"},"change_message_id":"982346089abf4c2c1e04e150aafa493070024ce3","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        except exception.InvalidInput as err:"},{"line_number":173,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derr.format_message())"},{"line_number":174,"context_line":"        except exception.OverQuota as err:"},{"line_number":175,"context_line":"            raise exc.HTTPForbidden(explanation\u003derr.format_message())"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        # TODO(vish): Instance should be None at db layer instead of"},{"line_number":178,"context_line":"        #             trying to lazy load, but for now we turn it into"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_fd5a864f","line":175,"in_reply_to":"fa1b9901_3cf340a0","updated":"2015-08-19 14:43:21.000000000","message":"Yeah, neither 400 or 404 are good replacements for 403, in my opinion.","commit_id":"47a00872a97580ab52d77d2e4d0272ad0d8fdd51"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e4b3b2b78f5f15f8b5d981216e651fa7c4710088","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        except exception.InvalidInput as err:"},{"line_number":173,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derr.format_message())"},{"line_number":174,"context_line":"        except exception.OverQuota as err:"},{"line_number":175,"context_line":"            raise exc.HTTPForbidden(explanation\u003derr.format_message())"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        # TODO(vish): Instance should be None at db layer instead of"},{"line_number":178,"context_line":"        #             trying to lazy load, but for now we turn it into"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_dbed3cb8","line":175,"in_reply_to":"fa1b9901_d079a4c9","updated":"2015-08-19 19:15:40.000000000","message":"I don\u0027t see why a version bump is necessary, anything is better than a 500 IMO.\n\nI\u0027d make this a 400 - taking a look at how OverQuota is handled in other parts of the compute API, there are several cases where it\u0027s translated to a 400 and several where it\u0027s a 403, so I think either is fine.  If people are hung up on adding 403 to the expected exceptions list, then make it a 400.  That\u0027s better than a 500.","commit_id":"47a00872a97580ab52d77d2e4d0272ad0d8fdd51"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"26e1453c1544b2c0c8eec948273186546c157ea4","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        except exception.InvalidInput as err:"},{"line_number":173,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derr.format_message())"},{"line_number":174,"context_line":"        except exception.OverQuota as err:"},{"line_number":175,"context_line":"            raise exc.HTTPForbidden(explanation\u003derr.format_message())"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        # TODO(vish): Instance should be None at db layer instead of"},{"line_number":178,"context_line":"        #             trying to lazy load, but for now we turn it into"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_f66ff528","line":175,"in_reply_to":"fa1b9901_d6c3d155","updated":"2015-08-19 19:42:32.000000000","message":"But you\u0027re using 403 because that\u0027s what the API working group guidelines say:\n\nhttp://git.openstack.org/cgit/openstack/api-wg/tree/guidelines/http.rst#n136\n\nMan, this is all terrible.  So now you need a spec to fix the bug in the v2.1 API - but what do we do in the v2 API?  And I guess we can\u0027t ever backport this fix to kilo since the version bump wouldn\u0027t match the microversion history in Kilo.","commit_id":"47a00872a97580ab52d77d2e4d0272ad0d8fdd51"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"304cceb9efca840d29037be8ae20dc2bfc032a68","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        except exception.InvalidInput as err:"},{"line_number":173,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derr.format_message())"},{"line_number":174,"context_line":"        except exception.OverQuota as err:"},{"line_number":175,"context_line":"            raise exc.HTTPForbidden(explanation\u003derr.format_message())"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        # TODO(vish): Instance should be None at db layer instead of"},{"line_number":178,"context_line":"        #             trying to lazy load, but for now we turn it into"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_d6c3d155","line":175,"in_reply_to":"fa1b9901_dbed3cb8","updated":"2015-08-19 19:34:33.000000000","message":"I guess the version bump argument is because the doc says this:\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/doc/source/api_microversion_dev.rst#n63\n\nIf you just return 400 then it seems to be OK given what\u0027s in the doc.","commit_id":"47a00872a97580ab52d77d2e4d0272ad0d8fdd51"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"fcda2519b0923bd7722b59a0b237047722b3acf6","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        except exception.InvalidInput as err:"},{"line_number":173,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derr.format_message())"},{"line_number":174,"context_line":"        except exception.OverQuota as err:"},{"line_number":175,"context_line":"            raise exc.HTTPForbidden(explanation\u003derr.format_message())"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        # TODO(vish): Instance should be None at db layer instead of"},{"line_number":178,"context_line":"        #             trying to lazy load, but for now we turn it into"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa1b9901_d079a4c9","line":175,"in_reply_to":"fa1b9901_fd5a864f","updated":"2015-08-19 15:44:40.000000000","message":"um... as discussed before, doing this kind of change bump a version is not that worthy... I will think about it and submit a ML and ask for opinion..","commit_id":"47a00872a97580ab52d77d2e4d0272ad0d8fdd51"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b0b7d1e1880fb8f0b4ec5f1249ad7c30db001a4d","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        res \u003d [entity_maker(context, vol) for vol in limited_list]"},{"line_number":132,"context_line":"        return {\u0027volumes\u0027: res}"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    @extensions.expected_errors((400, 403, 404))"},{"line_number":135,"context_line":"    @validation.schema(volumes_schema.create)"},{"line_number":136,"context_line":"    def create(self, req, body):"},{"line_number":137,"context_line":"        \"\"\"Creates a new volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa1b9901_7b5c2d7d","line":134,"updated":"2015-08-25 18:54:23.000000000","message":"So we still have to sort this out.  The footnote was talking about it\u0027s OK to change from a 500 to a predefined list of error codes that are already expected.  But here you\u0027re adding 403 and the footnote says that\u0027s a microversion change:\n\n\"When fixing 500 errors that previously caused stack traces, try to map the new error into the existing set of errors that API call could previously return (400 if nothing else is appropriate). Changing the set of allowed status codes from a request is changing the contract, and should be part of a microversion.\"\n\nThere was also this example:\n\nthe list of status codes allowed for a particular request\n\nExample: an API previously could return 200, 400, 403, 404 and the change would make the API now also be allowed to return 409.","commit_id":"08611e2f7f825eaef06d0c7730f9ec3f611491fe"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"373ee68c6f99f4020ef0c5bf3390de7d5e260054","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        res \u003d [entity_maker(context, vol) for vol in limited_list]"},{"line_number":132,"context_line":"        return {\u0027volumes\u0027: res}"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    @extensions.expected_errors((400, 403, 404))"},{"line_number":135,"context_line":"    @validation.schema(volumes_schema.create)"},{"line_number":136,"context_line":"    def create(self, req, body):"},{"line_number":137,"context_line":"        \"\"\"Creates a new volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa1b9901_7ba18d45","line":134,"in_reply_to":"fa1b9901_7b5c2d7d","updated":"2015-08-25 18:55:55.000000000","message":"Keep in mind what Feodor pointed out in https://review.openstack.org/#/c/215195/ wrt 403 being implied when you\u0027re using keystone since that can reject the auth request.","commit_id":"08611e2f7f825eaef06d0c7730f9ec3f611491fe"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"23fbc3852b057856049aa49d34ed1e6a8d21f906","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        res \u003d [entity_maker(context, vol) for vol in limited_list]"},{"line_number":132,"context_line":"        return {\u0027volumes\u0027: res}"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    @extensions.expected_errors((400, 403, 404))"},{"line_number":135,"context_line":"    @validation.schema(volumes_schema.create)"},{"line_number":136,"context_line":"    def create(self, req, body):"},{"line_number":137,"context_line":"        \"\"\"Creates a new volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"fa1b9901_be2cf399","line":134,"in_reply_to":"fa1b9901_7ba18d45","updated":"2015-08-25 19:00:58.000000000","message":"I will accept the 403 is implied argument","commit_id":"08611e2f7f825eaef06d0c7730f9ec3f611491fe"}]}
