)]}'
{"doc/source/api_microversion_dev.rst":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"5f6a51a3c63f96955cf2918c99a41bf79bde534e","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":".. [#f1] When fixing 500 errors that previously caused stack traces, try"},{"line_number":139,"context_line":"  to map the new error into the existing set of errors that API call"},{"line_number":140,"context_line":"  could previously return (400 if nothing else is appropriate). Changing"},{"line_number":141,"context_line":"  the set of allowed status codes from a request is changing the"},{"line_number":142,"context_line":"  contract, and should be part of a microversion."},{"line_number":143,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa1b9901_32c9c859","line":140,"updated":"2015-08-20 15:49:05.000000000","message":"I think we need to be explicit\n\n(400 if nothing else is appropriate) don\u0027t need a microversion bump. \n\nbecause below we tell user it need a microversion, so if we don\u0027t say it clear above may mis-lead reader","commit_id":"6a9453d173f6d67b246f37ed89b7cab89d11ba83"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"462f51a3f94d8423196dba20a098b9f67269889f","unresolved":false,"context_lines":[{"line_number":63,"context_line":"  - the list of status codes allowed for a particular request"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    Example: an API previously could return 200, 400, 403, 404 and the"},{"line_number":66,"context_line":"    change would make the API now also be allowed to return 409."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"  - changing a status code on a particular response"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa1b9901_c79e7362","line":66,"updated":"2015-08-21 02:03:53.000000000","message":"I think this should be more specific case, if we add new status code because fix 500, then we needn\u0027t new microversions.\n\nFor example, we should return 403 for overquota, but because coding mistake, we return 500. But the 403 in the beginning should be part of api contract. 403 isn\u0027t an new status code we added.\n\nDoes this make thing more reasonable?","commit_id":"ec17b727e9a7658fa375975d6932d8539a158a8a"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"3b5372e4b854207432922c8c3fd54a65187eea33","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"  - changing a status code on a particular response"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    Example: changing the return code of an API from 501 to 400."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    .. note:: Fixing a bug so that a 400+ code is returned rather than a 500"},{"line_number":73,"context_line":"      does not require a microversion change. It\u0027s assumed that clients are not"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa1b9901_f5eb3ada","line":70,"updated":"2015-08-20 16:00:52.000000000","message":"This and below should be changed to \"from 501 to anything else\", as discussed on IRC. 500s are always bugs, and should never be expected by any client.","commit_id":"ec17b727e9a7658fa375975d6932d8539a158a8a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5120284dab6a7b6f71982fbc28965595ba59cccb","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"  - changing a status code on a particular response"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    Example: changing the return code of an API from 501 to 400."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    .. note:: Fixing a bug so that a 400+ code is returned rather than a 500"},{"line_number":73,"context_line":"      does not require a microversion change. It\u0027s assumed that clients are not"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa1b9901_bb3293a5","line":70,"in_reply_to":"fa1b9901_1824e55b","updated":"2015-08-20 16:33:48.000000000","message":"I think I\u0027d agree with 500 to anything else, like 200, because say the virt driver doesn\u0027t implement some virt driver API foo() in liberty and if you try to use the nova-api that hits that virt driver API, you get a 501 back.  Then say in mitaka the virt driver implements foo() so now the API would return a 200 or a 202.  We wouldn\u0027t return a 400 because \u0027the driver accepted your request and things are ok, but you know, fail just because\u0027 - we\u0027d still need the microversion though.","commit_id":"ec17b727e9a7658fa375975d6932d8539a158a8a"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"070a91691650c3d1d6b113f87d5d3722b944e712","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"  - changing a status code on a particular response"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    Example: changing the return code of an API from 501 to 400."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    .. note:: Fixing a bug so that a 400+ code is returned rather than a 500"},{"line_number":73,"context_line":"      does not require a microversion change. It\u0027s assumed that clients are not"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa1b9901_263e66c1","line":70,"in_reply_to":"fa1b9901_bb3293a5","updated":"2015-08-20 16:41:03.000000000","message":"ok, agree that this should be a separate change.","commit_id":"ec17b727e9a7658fa375975d6932d8539a158a8a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"229b93baf6ed3f6d0f91ff18b436c7fb22af31bb","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"  - changing a status code on a particular response"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    Example: changing the return code of an API from 501 to 400."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    .. note:: Fixing a bug so that a 400+ code is returned rather than a 500"},{"line_number":73,"context_line":"      does not require a microversion change. It\u0027s assumed that clients are not"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa1b9901_1824e55b","line":70,"in_reply_to":"fa1b9901_f5eb3ada","updated":"2015-08-20 16:17:40.000000000","message":"That is a difficult point(501 to 400) at this time.\n\nOn api-wg, we discussed http501 should be changed to 40X. but we cannot make a consensus on https://review.openstack.org/#/c/181283 . Everyone has different opinions about it, and I feel it is difficult to say all 50X should be bugs now.\n\nbut a certain 500 should be a bug in many cases because most route problems are lacks of error handling on REST API layer. So I agree with current doc.","commit_id":"ec17b727e9a7658fa375975d6932d8539a158a8a"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"5085efa8c84e7f6b0ae1438787d8c2b89bf1b392","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    Example: changing the return code of an API from 501 to 400."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    .. note:: Fixing a bug so that a 400+ code is returned rather than a 500"},{"line_number":73,"context_line":"      does not require a microversion change. It\u0027s assumed that clients are not"},{"line_number":74,"context_line":"      expected to handle a 500 response and therefore should not need to opt-in"},{"line_number":75,"context_line":"      to microversion changes that fixes a 500 response from happening."},{"line_number":76,"context_line":"      According to the OpenStack API Working Group, a"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa1b9901_118582cd","line":73,"updated":"2015-08-21 06:42:12.000000000","message":"may be it will better if we add about new error code (if it is new error code introduced then it need version bump if 4xx is from existing one then does not require) clearly to avoid further confusion.","commit_id":"ec17b727e9a7658fa375975d6932d8539a158a8a"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"51157fa7fa01828443f6fe2fc11c6f6eb5113572","unresolved":false,"context_lines":[{"line_number":136,"context_line":"**Footnotes**"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":".. [#f1] When fixing 500 errors that previously caused stack traces, try"},{"line_number":139,"context_line":"  to map the new error into the existing set of errors that API call"},{"line_number":140,"context_line":"  could previously return (400 if nothing else is appropriate). Changing"},{"line_number":141,"context_line":"  the set of allowed status codes from a request is changing the"},{"line_number":142,"context_line":"  contract, and should be part of a microversion."}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa1b9901_f2f6f05b","line":139,"updated":"2015-08-20 15:54:10.000000000","message":"Are this and the next statements still actual? The first one leads to use triks (lets return 400 on OverQuota instead of 403). The second one conflicts with the note above imho.","commit_id":"ec17b727e9a7658fa375975d6932d8539a158a8a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d97c4210ba1114ac011d1d366d3fd154df658138","unresolved":false,"context_lines":[{"line_number":136,"context_line":"**Footnotes**"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":".. [#f1] When fixing 500 errors that previously caused stack traces, try"},{"line_number":139,"context_line":"  to map the new error into the existing set of errors that API call"},{"line_number":140,"context_line":"  could previously return (400 if nothing else is appropriate). Changing"},{"line_number":141,"context_line":"  the set of allowed status codes from a request is changing the"},{"line_number":142,"context_line":"  contract, and should be part of a microversion."}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa1b9901_7bb87b75","line":139,"in_reply_to":"fa1b9901_1bd5bfe6","updated":"2015-08-20 16:38:00.000000000","message":"FWIW I\u0027d prefer to handle any updates about 501 -\u003e anything else in a separate change since this change is specifically for 500, and 501 is a different case.","commit_id":"ec17b727e9a7658fa375975d6932d8539a158a8a"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"975d67c22b91fc92de3a05ab4937c7b978b4477a","unresolved":false,"context_lines":[{"line_number":136,"context_line":"**Footnotes**"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":".. [#f1] When fixing 500 errors that previously caused stack traces, try"},{"line_number":139,"context_line":"  to map the new error into the existing set of errors that API call"},{"line_number":140,"context_line":"  could previously return (400 if nothing else is appropriate). Changing"},{"line_number":141,"context_line":"  the set of allowed status codes from a request is changing the"},{"line_number":142,"context_line":"  contract, and should be part of a microversion."}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa1b9901_ec804f8d","line":139,"in_reply_to":"fa1b9901_7bb87b75","updated":"2015-08-20 17:34:35.000000000","message":"Got it now. My problem was that i understood \u0027500 errors\u0027 as \u0027various errors with exactly 500 code occures by several reasons\u0027. Because before i read your new block with \u0027400+ code\u0027. So i assumed that 400+ means 4xx, but 500 means 500 exactly. Probably that\u0027s a bit inconsistency in the doc.","commit_id":"ec17b727e9a7658fa375975d6932d8539a158a8a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5120284dab6a7b6f71982fbc28965595ba59cccb","unresolved":false,"context_lines":[{"line_number":136,"context_line":"**Footnotes**"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":".. [#f1] When fixing 500 errors that previously caused stack traces, try"},{"line_number":139,"context_line":"  to map the new error into the existing set of errors that API call"},{"line_number":140,"context_line":"  could previously return (400 if nothing else is appropriate). Changing"},{"line_number":141,"context_line":"  the set of allowed status codes from a request is changing the"},{"line_number":142,"context_line":"  contract, and should be part of a microversion."}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa1b9901_1bd5bfe6","line":139,"in_reply_to":"fa1b9901_f2f6f05b","updated":"2015-08-20 16:33:48.000000000","message":"Yeah, so this falls under the \"the list of status codes allowed for a particular request\" item on L63 above, not the 500 L68 case I\u0027m trying to deal with here.  That\u0027s why I didn\u0027t do anything with that one in this change - that\u0027s still a yet undecided thing that we didn\u0027t reach consensus on in the nova meeting.  So I plan on addressing this footnote per that specific case in a separate change if we feel it should be amended, which some of us do, i.e. I think it\u0027s OK to add a 403 to the list of expected errors to fix a bug from a 500 and do that without a microversion, and I think alaski agrees, but we need buy-in from others.  I don\u0027t necessarily think that just because we *can* do microversions for every little change means we *should* do that, especially when I think clients should be handling errors in a more generic way rather than one-to-one with the errors per API.","commit_id":"ec17b727e9a7658fa375975d6932d8539a158a8a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"462f51a3f94d8423196dba20a098b9f67269889f","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":".. [#f1] When fixing 500 errors that previously caused stack traces, try"},{"line_number":139,"context_line":"  to map the new error into the existing set of errors that API call"},{"line_number":140,"context_line":"  could previously return (400 if nothing else is appropriate). Changing"},{"line_number":141,"context_line":"  the set of allowed status codes from a request is changing the"},{"line_number":142,"context_line":"  contract, and should be part of a microversion."},{"line_number":143,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa1b9901_2725ef07","line":140,"updated":"2015-08-21 02:03:53.000000000","message":"I prefer removing this. We return 400 for overquota by fixing 500, then in the future may someone propose bump microversions for 400-\u003e403 based on new api-wg guideline. \n\nWe didn\u0027t simple the fix for 500, we just separate the fix into two steps.","commit_id":"ec17b727e9a7658fa375975d6932d8539a158a8a"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"5085efa8c84e7f6b0ae1438787d8c2b89bf1b392","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":".. [#f1] When fixing 500 errors that previously caused stack traces, try"},{"line_number":139,"context_line":"  to map the new error into the existing set of errors that API call"},{"line_number":140,"context_line":"  could previously return (400 if nothing else is appropriate). Changing"},{"line_number":141,"context_line":"  the set of allowed status codes from a request is changing the"},{"line_number":142,"context_line":"  contract, and should be part of a microversion."},{"line_number":143,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa1b9901_f1800ef9","line":140,"in_reply_to":"fa1b9901_2725ef07","updated":"2015-08-21 06:42:12.000000000","message":"+1. fixing 500 should be just in 1 step.","commit_id":"ec17b727e9a7658fa375975d6932d8539a158a8a"}]}
