)]}'
{"specs/liberty/approved/api-relax-validation.rst":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"69cebcdca75a222b23f2f41ae814e22e27834fd1","unresolved":false,"context_lines":[{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"We need to accelerate the adoption of v2.1 so we can remove the v2.0 code from"},{"line_number":21,"context_line":"the Nova tree."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"While all clients making valid requests to the v2.0 API will get the same"},{"line_number":24,"context_line":"results talking to the v2.1 API, there are issues."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7aaa499b_42676725","line":21,"updated":"2015-04-14 10:34:58.000000000","message":"++\n\nI also much want to remove v2.0 code.","commit_id":"cf259b708dd397fc46b28eaac2edcf9f8ab4bb4d"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"69cebcdca75a222b23f2f41ae814e22e27834fd1","unresolved":false,"context_lines":[{"line_number":26,"context_line":"Use Cases"},{"line_number":27,"context_line":"----------"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Many API users have been sending additional properties to the v2.0 API."},{"line_number":30,"context_line":"When a you deploy v2.1, the users should be unaffected."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"But should clients be updated to include the version header, we want those"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7aaa499b_8469fcc0","line":29,"updated":"2015-04-14 10:34:58.000000000","message":"That is interesting, is it real thing?\nDid you try v2.1 on some envs?\n\nanyway it is better to use \"unexpected\" or something instead of \"additional\". and better to explain that like\n\n On v2.0 API environments, many API users have been\n sending unexpected properties which Nova just ignores.\n However these properties will be denied on v2.1 API due\n to strong validation. So v2.1 API will break many users.","commit_id":"cf259b708dd397fc46b28eaac2edcf9f8ab4bb4d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"de240c0526781ca1fb3272894a93992f0ace0afb","unresolved":false,"context_lines":[{"line_number":26,"context_line":"Use Cases"},{"line_number":27,"context_line":"----------"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Many API users have been sending additional properties to the v2.0 API."},{"line_number":30,"context_line":"When a you deploy v2.1, the users should be unaffected."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"But should clients be updated to include the version header, we want those"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7aaa499b_04de0c11","line":29,"in_reply_to":"7aaa499b_8469fcc0","updated":"2015-04-14 10:41:58.000000000","message":"I am mostly talking about our test suits, and the fact we have many API requesting not using SDKs, let me reword that.","commit_id":"cf259b708dd397fc46b28eaac2edcf9f8ab4bb4d"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"2d98baa95734d0cdb88c7963a046f7fd35712adc","unresolved":false,"context_lines":[{"line_number":27,"context_line":"----------"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Many API users have been sending additional properties to the v2.0 API."},{"line_number":30,"context_line":"When a you deploy v2.1, the users should be unaffected."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"But should clients be updated to include the version header, we want those"},{"line_number":33,"context_line":"clients to have the benefit of the new strong validation."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7aaa499b_e296734b","line":30,"updated":"2015-04-14 10:19:13.000000000","message":"typo: extra \u0027a\u0027","commit_id":"cf259b708dd397fc46b28eaac2edcf9f8ab4bb4d"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"2d98baa95734d0cdb88c7963a046f7fd35712adc","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* requests without a version that fail validation are processed to remove any"},{"line_number":48,"context_line":"  validation errors relating to additional properties validation."},{"line_number":49,"context_line":"  This ensures that non of the invalid properties reach the API code."},{"line_number":50,"context_line":"  Should there be any other validation errors, the request still returns"},{"line_number":51,"context_line":"  BadRequest."},{"line_number":52,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7aaa499b_22ac5b9f","line":49,"updated":"2015-04-14 10:19:13.000000000","message":"typo: non -\u003e none","commit_id":"cf259b708dd397fc46b28eaac2edcf9f8ab4bb4d"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"69cebcdca75a222b23f2f41ae814e22e27834fd1","unresolved":false,"context_lines":[{"line_number":48,"context_line":"  validation errors relating to additional properties validation."},{"line_number":49,"context_line":"  This ensures that non of the invalid properties reach the API code."},{"line_number":50,"context_line":"  Should there be any other validation errors, the request still returns"},{"line_number":51,"context_line":"  BadRequest."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"It is possible that there are still requests that would have been accepted by"},{"line_number":54,"context_line":"v2.0 but are rejected by v2.1, but this should greatly reduce the number of"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7aaa499b_a444f81a","line":51,"updated":"2015-04-14 10:34:58.000000000","message":"I think a new config option in nova.conf for switching the above behavior.\n\nStrong validation is exactly right, and the validation should work on many environments and that should be the default setting value.","commit_id":"cf259b708dd397fc46b28eaac2edcf9f8ab4bb4d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"de240c0526781ca1fb3272894a93992f0ace0afb","unresolved":false,"context_lines":[{"line_number":48,"context_line":"  validation errors relating to additional properties validation."},{"line_number":49,"context_line":"  This ensures that non of the invalid properties reach the API code."},{"line_number":50,"context_line":"  Should there be any other validation errors, the request still returns"},{"line_number":51,"context_line":"  BadRequest."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"It is possible that there are still requests that would have been accepted by"},{"line_number":54,"context_line":"v2.0 but are rejected by v2.1, but this should greatly reduce the number of"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7aaa499b_24a9087c","line":51,"in_reply_to":"7aaa499b_a444f81a","updated":"2015-04-14 10:41:58.000000000","message":"I will put that in the alternatives.","commit_id":"cf259b708dd397fc46b28eaac2edcf9f8ab4bb4d"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"2d98baa95734d0cdb88c7963a046f7fd35712adc","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"It is possible that there are still requests that would have been accepted by"},{"line_number":54,"context_line":"v2.0 but are rejected by v2.1, but this should greatly reduce the number of"},{"line_number":55,"context_line":"such requests."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Alternatives"},{"line_number":58,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7aaa499b_82456fb4","line":55,"updated":"2015-04-14 10:19:13.000000000","message":"Can you give an example? I\u0027m failing to imagine what kind of thing this might be.","commit_id":"cf259b708dd397fc46b28eaac2edcf9f8ab4bb4d"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"2d98baa95734d0cdb88c7963a046f7fd35712adc","unresolved":false,"context_lines":[{"line_number":114,"context_line":"Work Items"},{"line_number":115,"context_line":"----------"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"* relax validation for requests without a version send to v2.1 API"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Dependencies"},{"line_number":120,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7aaa499b_42a527b3","line":117,"updated":"2015-04-14 10:19:13.000000000","message":"typo: s/send/sent","commit_id":"cf259b708dd397fc46b28eaac2edcf9f8ab4bb4d"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"2d98baa95734d0cdb88c7963a046f7fd35712adc","unresolved":false,"context_lines":[{"line_number":124,"context_line":"Testing"},{"line_number":125,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Unit tests should be enough."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Documentation Impact"},{"line_number":130,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7aaa499b_c29ff74e","line":127,"updated":"2015-04-14 10:19:13.000000000","message":"I think there should be a few functional tests for this new functionality. Not exhaustively many, but a few examples that prove the functionality a bit.  E.G. a request that is rejected as invalid for \"2.1\" being accepted without the header.","commit_id":"cf259b708dd397fc46b28eaac2edcf9f8ab4bb4d"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"1ea6c2ac8614dfb71b33494d4d617cb5ab01a608","unresolved":false,"context_lines":[{"line_number":23,"context_line":"While all clients making valid requests to the v2.0 API will get the same"},{"line_number":24,"context_line":"results talking to the v2.1 API, there are issues."},{"line_number":25,"context_line":"Various types of \"invalid\" requests are currently accepted by v2.0, but would"},{"line_number":26,"context_line":"by rejected by v2.1."},{"line_number":27,"context_line":"Even tempest was found to be making invalid requests:"},{"line_number":28,"context_line":"https://review.openstack.org/#/c/138245"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"7aaa499b_877d7e1e","line":26,"updated":"2015-04-14 12:33:53.000000000","message":"s/by/be/ on the first \"by\".","commit_id":"6924f469c3e9ead33ac4ab8006b67e6d8ae2d6e9"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"bdda75fa8a7cea846494a6687031df6d6ec3e3fb","unresolved":false,"context_lines":[{"line_number":40,"context_line":"were being made to the v2.0 API, it must be assumed that users who have"},{"line_number":41,"context_line":"written their own code to access our API will have made similar mistakes."},{"line_number":42,"context_line":"Where possible, we want these users to be unaffected by the change from"},{"line_number":43,"context_line":"v2.0 to v2.1."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Once a user updates their API client to start sending the version headers,"},{"line_number":46,"context_line":"we want those users to get the full benefits of strong API validation."}],"source_content_type":"text/x-rst","patch_set":5,"id":"7aaa499b_edb9c3cc","line":43,"updated":"2015-04-14 12:14:19.000000000","message":"+1 nice.","commit_id":"6924f469c3e9ead33ac4ab8006b67e6d8ae2d6e9"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"9c7cfe656e65cc28375b06f49b17be4dbd770029","unresolved":false,"context_lines":[{"line_number":58,"context_line":"* requests with a version are validated as normal"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"* requests without a version that fail validation are processed to remove any"},{"line_number":61,"context_line":"  validation errors relating to additional properties validation."},{"line_number":62,"context_line":"  This ensures that none of the invalid properties reach the API code."},{"line_number":63,"context_line":"  Should there be any other validation errors, the request still returns"},{"line_number":64,"context_line":"  BadRequest."}],"source_content_type":"text/x-rst","patch_set":5,"id":"7aaa499b_68e90580","line":61,"updated":"2015-04-15 01:23:52.000000000","message":"After min microversion raises to \"2.10\" or something, do we still need this relaxing validation?\n\nI guess it is good to relax the validation only if min microversion is \"2.1\" and no microversion in a request.","commit_id":"6924f469c3e9ead33ac4ab8006b67e6d8ae2d6e9"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"96e0078a5ea64066dcae2eaef85dd9fe2a663aea","unresolved":false,"context_lines":[{"line_number":58,"context_line":"* requests with a version are validated as normal"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"* requests without a version that fail validation are processed to remove any"},{"line_number":61,"context_line":"  validation errors relating to additional properties validation."},{"line_number":62,"context_line":"  This ensures that none of the invalid properties reach the API code."},{"line_number":63,"context_line":"  Should there be any other validation errors, the request still returns"},{"line_number":64,"context_line":"  BadRequest."}],"source_content_type":"text/x-rst","patch_set":5,"id":"bab921fb_67738ae8","line":61,"in_reply_to":"5aa745d1_15943f35","updated":"2015-04-24 08:40:38.000000000","message":"So I don\u0027t see us every being able to do that, but if we did, yes we would drop that.\n\nTo be clear, v2.1 requests and higher will get full strong validation.","commit_id":"6924f469c3e9ead33ac4ab8006b67e6d8ae2d6e9"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"7066be443534415ca72643e0a305601065f13fff","unresolved":false,"context_lines":[{"line_number":58,"context_line":"* requests with a version are validated as normal"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"* requests without a version that fail validation are processed to remove any"},{"line_number":61,"context_line":"  validation errors relating to additional properties validation."},{"line_number":62,"context_line":"  This ensures that none of the invalid properties reach the API code."},{"line_number":63,"context_line":"  Should there be any other validation errors, the request still returns"},{"line_number":64,"context_line":"  BadRequest."}],"source_content_type":"text/x-rst","patch_set":5,"id":"5aa745d1_15943f35","line":61,"in_reply_to":"7aaa499b_68e90580","updated":"2015-04-16 11:31:09.000000000","message":"Agree with Ken\u0027ichi. The microversion support remove the old version.","commit_id":"6924f469c3e9ead33ac4ab8006b67e6d8ae2d6e9"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"bdda75fa8a7cea846494a6687031df6d6ec3e3fb","unresolved":false,"context_lines":[{"line_number":68,"context_line":"such requests."},{"line_number":69,"context_line":"For example, where v2.0 is missing validation and we silently change"},{"line_number":70,"context_line":"\"foo\" to the boolean False, the request might work for v2.0, but still fail"},{"line_number":71,"context_line":"with v2.1 even after these suggested changes. That seems acceptable."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Alternatives"},{"line_number":74,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7aaa499b_cdfe076b","line":71,"updated":"2015-04-14 12:14:19.000000000","message":"I\u0027m still not sure I understand this example. This spec suggests that if a client sends non-schema properties in an un-versioned request, those properties will be stripped, then schema validation will proceed as normal, as I understand it.\n\nI don\u0027t see anything in that description about silently changing strings to booleans, only removing properties.","commit_id":"6924f469c3e9ead33ac4ab8006b67e6d8ae2d6e9"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"96e0078a5ea64066dcae2eaef85dd9fe2a663aea","unresolved":false,"context_lines":[{"line_number":68,"context_line":"such requests."},{"line_number":69,"context_line":"For example, where v2.0 is missing validation and we silently change"},{"line_number":70,"context_line":"\"foo\" to the boolean False, the request might work for v2.0, but still fail"},{"line_number":71,"context_line":"with v2.1 even after these suggested changes. That seems acceptable."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Alternatives"},{"line_number":74,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bab921fb_875fbe40","line":71,"in_reply_to":"7aaa499b_cdfe076b","updated":"2015-04-24 08:40:38.000000000","message":"OK, I should reword that.\n\nThis is meant to be where this idea doesn\u0027t quite work.","commit_id":"6924f469c3e9ead33ac4ab8006b67e6d8ae2d6e9"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"bdda75fa8a7cea846494a6687031df6d6ec3e3fb","unresolved":false,"context_lines":[{"line_number":84,"context_line":"It has been suggested that we have a configuration value to enable this"},{"line_number":85,"context_line":"validation change for requests without a version. However, this would mean"},{"line_number":86,"context_line":"different deployments of v2.1 would behave in very different ways, which"},{"line_number":87,"context_line":"would defeat some of the major design goals of v2.1."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"It is expected that clients will request the highest micro version they"},{"line_number":90,"context_line":"understand to all requests they make to the v2.1 API. If the server does"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7aaa499b_cdd167cf","line":87,"updated":"2015-04-14 12:14:19.000000000","message":"+1, this would be unacceptable.","commit_id":"6924f469c3e9ead33ac4ab8006b67e6d8ae2d6e9"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"96e0078a5ea64066dcae2eaef85dd9fe2a663aea","unresolved":false,"context_lines":[{"line_number":84,"context_line":"It has been suggested that we have a configuration value to enable this"},{"line_number":85,"context_line":"validation change for requests without a version. However, this would mean"},{"line_number":86,"context_line":"different deployments of v2.1 would behave in very different ways, which"},{"line_number":87,"context_line":"would defeat some of the major design goals of v2.1."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"It is expected that clients will request the highest micro version they"},{"line_number":90,"context_line":"understand to all requests they make to the v2.1 API. If the server does"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bab921fb_272b5296","line":87,"in_reply_to":"5aa745d1_f543136b","updated":"2015-04-24 08:40:38.000000000","message":"I need to reword this clearly.\n\nI don\u0027t want to turn off validation here.","commit_id":"6924f469c3e9ead33ac4ab8006b67e6d8ae2d6e9"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"7066be443534415ca72643e0a305601065f13fff","unresolved":false,"context_lines":[{"line_number":84,"context_line":"It has been suggested that we have a configuration value to enable this"},{"line_number":85,"context_line":"validation change for requests without a version. However, this would mean"},{"line_number":86,"context_line":"different deployments of v2.1 would behave in very different ways, which"},{"line_number":87,"context_line":"would defeat some of the major design goals of v2.1."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"It is expected that clients will request the highest micro version they"},{"line_number":90,"context_line":"understand to all requests they make to the v2.1 API. If the server does"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5aa745d1_f543136b","line":87,"in_reply_to":"7aaa499b_18454fb2","updated":"2015-04-16 11:31:09.000000000","message":"Yea, I remember we have agreement on have option enable to skip the strong validation and just log the informal request before. But I thought one case which we need be careful. After we change the v2.1 with strong validation, the API python code is also changed. The code will assume the request body\u0027s format is correct. For example, most of the code will access  a property by \u0027body[\"some_property\"]\u0027, it won\u0027t use it \u0027body.get(\u0027\u0027some_property)\u0027 to avoid some invalid request. I\u0027m afraid if we just disable json-schema validation, there are some code will failed","commit_id":"6924f469c3e9ead33ac4ab8006b67e6d8ae2d6e9"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"1ea6c2ac8614dfb71b33494d4d617cb5ab01a608","unresolved":false,"context_lines":[{"line_number":84,"context_line":"It has been suggested that we have a configuration value to enable this"},{"line_number":85,"context_line":"validation change for requests without a version. However, this would mean"},{"line_number":86,"context_line":"different deployments of v2.1 would behave in very different ways, which"},{"line_number":87,"context_line":"would defeat some of the major design goals of v2.1."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"It is expected that clients will request the highest micro version they"},{"line_number":90,"context_line":"understand to all requests they make to the v2.1 API. If the server does"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7aaa499b_18454fb2","line":87,"in_reply_to":"7aaa499b_cdd167cf","updated":"2015-04-14 12:33:53.000000000","message":"During long time discussion in several summits, we have gotten a consensus that strong validation should be exactly right and major cloud operators accepted it.\n\nIf we don\u0027t have a configuration option for switching it, this spec is against that and makes it difficult to find clients bugs in long term.\nI am imaging if the default config value is enabling additionalProperties checks and v2.1 is used on many clouds(including private clouds), we can get chances to detect problems.\n\nI think this spec is a workaround for fitting to the existing cloud envs\u0027 situation, and I don\u0027t think ideal situation.\nso it is not so bad to have a config option for this.","commit_id":"6924f469c3e9ead33ac4ab8006b67e6d8ae2d6e9"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"bdda75fa8a7cea846494a6687031df6d6ec3e3fb","unresolved":false,"context_lines":[{"line_number":92,"context_line":"and request a lower version, possibly falling back to v2.0 support."},{"line_number":93,"context_line":"Given this, it is likely that all clients will be requesting the latest"},{"line_number":94,"context_line":"version of all API calls in the near future, so it should be less of an"},{"line_number":95,"context_line":"issue that we don\u0027t validated requests without a version."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Data model impact"},{"line_number":98,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7aaa499b_adebbb77","line":95,"updated":"2015-04-14 12:14:19.000000000","message":"micro-nit: validated -\u003e validate","commit_id":"6924f469c3e9ead33ac4ab8006b67e6d8ae2d6e9"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"7066be443534415ca72643e0a305601065f13fff","unresolved":false,"context_lines":[{"line_number":158,"context_line":"Testing"},{"line_number":159,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Unit tests and integration tests should be enough to cover this change."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Documentation Impact"},{"line_number":164,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5aa745d1_b7810592","line":161,"updated":"2015-04-16 11:31:09.000000000","message":"I guess there may have some unittests for invalid request. We should think about how to skip them.","commit_id":"6924f469c3e9ead33ac4ab8006b67e6d8ae2d6e9"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"96e0078a5ea64066dcae2eaef85dd9fe2a663aea","unresolved":false,"context_lines":[{"line_number":158,"context_line":"Testing"},{"line_number":159,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Unit tests and integration tests should be enough to cover this change."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Documentation Impact"},{"line_number":164,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bab921fb_a715224a","line":161,"in_reply_to":"5aa745d1_b7810592","updated":"2015-04-24 08:40:38.000000000","message":"-1\n\nWe need those unit tests, they just add a request version in there.","commit_id":"6924f469c3e9ead33ac4ab8006b67e6d8ae2d6e9"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"d9564cdbb50525431cd3878c0cabdd4e6a3261e8","unresolved":false,"context_lines":[{"line_number":102,"context_line":"Instead of expecting all new clients to add version headers, we could restrict"},{"line_number":103,"context_line":"the API validation just to request being routed via /v2.0/ and so we only"},{"line_number":104,"context_line":"default to the minimum version for those making requests to /v2.1/"},{"line_number":105,"context_line":"However, it seems simpler to remove the feature where are implicit about users"},{"line_number":106,"context_line":"requesting the min_version. If that feature is required, we can add"},{"line_number":107,"context_line":"an explicit header for clients to request the min_version."},{"line_number":108,"context_line":"Note, this only really impact what happens should we decide the min_version"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7ad32947_757489fc","line":105,"updated":"2015-04-28 07:53:27.000000000","message":"Nit: Maybe I need more coffee but this sentence is confusing me.","commit_id":"a2e2193aba14bacef6593811ca38d6d2f0fe5c01"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"19e0ef0cbc92c7f483fa28a61e7006b2475ffd26","unresolved":false,"context_lines":[{"line_number":102,"context_line":"Instead of expecting all new clients to add version headers, we could restrict"},{"line_number":103,"context_line":"the API validation just to request being routed via /v2.0/ and so we only"},{"line_number":104,"context_line":"default to the minimum version for those making requests to /v2.1/"},{"line_number":105,"context_line":"However, it seems simpler to remove the feature where are implicit about users"},{"line_number":106,"context_line":"requesting the min_version. If that feature is required, we can add"},{"line_number":107,"context_line":"an explicit header for clients to request the min_version."},{"line_number":108,"context_line":"Note, this only really impact what happens should we decide the min_version"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7ad32947_4b3f9bb4","line":105,"in_reply_to":"7ad32947_757489fc","updated":"2015-04-28 14:53:10.000000000","message":"hmm, thats a bit scrambled...","commit_id":"a2e2193aba14bacef6593811ca38d6d2f0fe5c01"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d9e2b2b6e0ea044949f5e08d7a1c0238bb86e954","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"For this to work, we need to redefine what it means to make an API request"},{"line_number":20,"context_line":"with no version headers. It doesn\u0027t mean give me the min_version, it means"},{"line_number":21,"context_line":"you are making a v2.0 API request."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Problem description"},{"line_number":24,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5ad0253b_58653843","line":21,"updated":"2015-04-29 13:47:35.000000000","message":"Emm...I\u0027m not sure about this. I guess this is another thing worth discuss at summit.\n\nAt lease in foreseeable future, we won\u0027t raise the min_version.\nBut we lose the chance we reduce burden in the future.\n\nI also have another think, if we think the min_version is v2.1 and it provide strict validation. Can we raise the min_version to v2.2 in future (after several releases)? Then we can enforce all the client upgrade to fix all invalid request.\n\nSo in my initial think, relax validation just for transition. And relax validation is not forever, just want to make sure SDK have time fix their issue, and make the operator switch to v2.1 more smooth.","commit_id":"a73c25051f8dfa63ac2c826a41baf021c0bffde4"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e3f4d796b0428fd6a8fa93446804d0c32902f866","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"For this to work, we need to redefine what it means to make an API request"},{"line_number":20,"context_line":"with no version headers. It doesn\u0027t mean give me the min_version, it means"},{"line_number":21,"context_line":"you are making a v2.0 API request."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Problem description"},{"line_number":24,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1aca2d91_9aba5bbf","line":21,"in_reply_to":"1aca2d91_7e144ff4","updated":"2015-05-08 12:57:50.000000000","message":"To be clear, I am not saying we remove the concept of a min_version, just you have to explicitly request the version","commit_id":"a73c25051f8dfa63ac2c826a41baf021c0bffde4"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"32d7406dffc9e480a79dc83f752e354ecf1d27ee","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"For this to work, we need to redefine what it means to make an API request"},{"line_number":20,"context_line":"with no version headers. It doesn\u0027t mean give me the min_version, it means"},{"line_number":21,"context_line":"you are making a v2.0 API request."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Problem description"},{"line_number":24,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1aca2d91_7e144ff4","line":21,"in_reply_to":"3acd31a7_f063f218","updated":"2015-05-07 04:55:00.000000000","message":"Even if not implementing this feature, I also am feeling it is very difficult to raise min_version from v2.1 anyway. However, micro versions can cover it as the mechanism and we need to consider how to work this relaxation when raising the min_version.\n\nI think this feature should work only when min_version is v2.1 and a client is not specifying microversion in a header. So after raising min_version from v2.1, this relax validation should not work.\nIf the relax validation still works after raising, API behavior without specifying a microversion is min_version(v2.10 or something) without validation. That seems strange/difficult because API behavior is changed in a half. This feature should work for v2.0 clients, so this feature will be unnecessary after raising from v2.1.","commit_id":"a73c25051f8dfa63ac2c826a41baf021c0bffde4"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"6b223536d558d5fb28784b6873757a4c1ae8ca02","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"For this to work, we need to redefine what it means to make an API request"},{"line_number":20,"context_line":"with no version headers. It doesn\u0027t mean give me the min_version, it means"},{"line_number":21,"context_line":"you are making a v2.0 API request."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Problem description"},{"line_number":24,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3acd31a7_f063f218","line":21,"in_reply_to":"5ad0253b_58653843","updated":"2015-04-30 15:18:53.000000000","message":"So relax validation has to be (almost) for ever right?\n\nIts not just SDKs right, its all little scripts people have all over the place.\n\nThat why we are doing micro versions, and not just creating v3.0 any more right?\n\nAnyways, that can be a good basis for our API discussions.","commit_id":"a73c25051f8dfa63ac2c826a41baf021c0bffde4"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"32d7406dffc9e480a79dc83f752e354ecf1d27ee","unresolved":false,"context_lines":[{"line_number":89,"context_line":"such requests."},{"line_number":90,"context_line":"For example, where v2.0 is missing validation and we silently change"},{"line_number":91,"context_line":"\"foo\" to the boolean False, the request might work for v2.0, but still fail"},{"line_number":92,"context_line":"with v2.1 even after these suggested changes. Thats because v2.1 would reject"},{"line_number":93,"context_line":"the request as having a invalid boolean value."},{"line_number":94,"context_line":"That seems like an acceptable trade off."},{"line_number":95,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"1aca2d91_9e7ccb73","line":92,"updated":"2015-05-07 04:55:00.000000000","message":"nit: s/Thats/That\u0027s/","commit_id":"a73c25051f8dfa63ac2c826a41baf021c0bffde4"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"b91801007fe5c75a956fae50c3c27769005d5fbe","unresolved":false,"context_lines":[{"line_number":114,"context_line":"informed choice about when to switch over to using v2.1. But it seems easier"},{"line_number":115,"context_line":"to build this mode into the default operation of v2.1."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"It has been suggested that we could should only relax the validation of"},{"line_number":118,"context_line":"unversioned requests if there is a configuration value to enable that change."},{"line_number":119,"context_line":"However, this would mean different deployments of v2.1 would behave in very"},{"line_number":120,"context_line":"different ways, which would defeat some of the major design goals of v2.1."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3acd31a7_33bf34fd","line":117,"updated":"2015-04-30 15:26:14.000000000","message":"could should --\u003e could?","commit_id":"a73c25051f8dfa63ac2c826a41baf021c0bffde4"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"ccaf9e1d4a3507825382261b3a0c603da3b94f05","unresolved":false,"context_lines":[{"line_number":117,"context_line":"It has been suggested that we could should only relax the validation of"},{"line_number":118,"context_line":"unversioned requests if there is a configuration value to enable that change."},{"line_number":119,"context_line":"However, this would mean different deployments of v2.1 would behave in very"},{"line_number":120,"context_line":"different ways, which would defeat some of the major design goals of v2.1."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"It is expected that clients will request the highest micro version they"},{"line_number":123,"context_line":"understand to all requests they make to the v2.1 API. If the server does"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1aca2d91_de880325","line":120,"updated":"2015-05-07 05:01:37.000000000","message":"OK, I can agree with the above comment. but one point we need to consider is v2.1 is already released without this feature in Kilo.\nSo if deployments of v2.1 are created with Kilo release, the above situation(default API behaviors are different) would happen in short-term and we cannot avoid it.\n\nIn middle-term, the above description will be right.\n\nIn long-term, this feature will be unnecessary I hope, because all clients will send valid requests ;)","commit_id":"a73c25051f8dfa63ac2c826a41baf021c0bffde4"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"2bb2c6e8173948efa20fe0730097f0d9efc95532","unresolved":false,"context_lines":[{"line_number":22,"context_line":"In this way, we are still free to raise the min_version in the future."},{"line_number":23,"context_line":"Raising the min_version would no longer affect calls made to the API"},{"line_number":24,"context_line":"without a version header, they would always be considered requests to"},{"line_number":25,"context_line":"for the v2.0 API."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Problem description"},{"line_number":28,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9af37de9_71da8b7a","line":25,"updated":"2015-05-11 02:10:29.000000000","message":"One purpose of raising min_version is for reducing the maintenance cost. By raising min_version, we can remove old implementation code from Nova repository.\n\nHowever, the above description seems we need to keep v2.0 compatible code forever and we cannot remove it.\nIs that different from microversions purpose for me.","commit_id":"03d5ead5f800326b7fa7a4af2a2b92ace2c16a8b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3ae2d04f6cf264725fb7ef4db67c58e8fc1b2f88","unresolved":false,"context_lines":[{"line_number":22,"context_line":"In this way, we are still free to raise the min_version in the future."},{"line_number":23,"context_line":"Raising the min_version would no longer affect calls made to the API"},{"line_number":24,"context_line":"without a version header, they would always be considered requests to"},{"line_number":25,"context_line":"for the v2.0 API."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Problem description"},{"line_number":28,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9a0c5dc1_e9ed6c26","line":25,"in_reply_to":"9a0c5dc1_3c2065f7","updated":"2015-05-12 09:02:14.000000000","message":"I am not saying that here. Let me update it.","commit_id":"03d5ead5f800326b7fa7a4af2a2b92ace2c16a8b"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"5cf6a6adf4bcf60bd947e5d497fbe6ea71902538","unresolved":false,"context_lines":[{"line_number":22,"context_line":"In this way, we are still free to raise the min_version in the future."},{"line_number":23,"context_line":"Raising the min_version would no longer affect calls made to the API"},{"line_number":24,"context_line":"without a version header, they would always be considered requests to"},{"line_number":25,"context_line":"for the v2.0 API."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Problem description"},{"line_number":28,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9a0c5dc1_3c2065f7","line":25,"in_reply_to":"9af37de9_71da8b7a","updated":"2015-05-12 07:43:23.000000000","message":"I agree with Ken\u0027ichi here. For me too, objective of raising min version is to reduce maintenance cost by removing older version code. \n\nIMO also, we can have life of relaxing validation till min_version is v2.1\n\nIn other word, relaxation logic should go away when we decide to remove the support of v2.0 (v2.1)","commit_id":"03d5ead5f800326b7fa7a4af2a2b92ace2c16a8b"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"5cf6a6adf4bcf60bd947e5d497fbe6ea71902538","unresolved":false,"context_lines":[{"line_number":95,"context_line":"\"foo\" to the boolean False, the request might work for v2.0, but still fail"},{"line_number":96,"context_line":"with v2.1 even after these suggested changes. Thats because v2.1 would reject"},{"line_number":97,"context_line":"the request as having a invalid boolean value."},{"line_number":98,"context_line":"That seems like an acceptable trade off."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Alternatives"},{"line_number":101,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9a0c5dc1_b0b8f9e6","line":98,"updated":"2015-05-12 07:43:23.000000000","message":"Big +1 on this. Otherwise it would have been end up with lot of changes.","commit_id":"03d5ead5f800326b7fa7a4af2a2b92ace2c16a8b"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"cdb537dd64b8a53af468f9efe8060cf66620f5d0","unresolved":false,"context_lines":[{"line_number":63,"context_line":"* requests to /v2.1 work the same as today after this change"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* requests to /v2.0 will have relaxed validation, and will reject any requests"},{"line_number":66,"context_line":"  that include a version header for /v2.1"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"The relaxed validation consists of:"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"3afb71cf_df1ffc59","line":66,"updated":"2015-06-05 01:47:14.000000000","message":"\"/v2.0\" should be changed to \"/v2\" because current etc/nova/api-paste.ini likes following:\n\n /v1.1: openstack_compute_api_v2\n /v2: openstack_compute_api_v2\n /v2.1: openstack_compute_api_v21","commit_id":"4d8a405fb6af0b1f6a28afacb6ee8a2382734ef3"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"3eee5e08be9cf180c2692205169c76098903ba64","unresolved":false,"context_lines":[{"line_number":63,"context_line":"* requests to /v2.1 work the same as today after this change"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* requests to /v2.0 will have relaxed validation, and will reject any requests"},{"line_number":66,"context_line":"  that include a version header for /v2.1"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"The relaxed validation consists of:"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"3afb71cf_399509e4","line":66,"in_reply_to":"3afb71cf_753707e4","updated":"2015-06-05 06:56:46.000000000","message":"I remember we will get rid of v1.1","commit_id":"4d8a405fb6af0b1f6a28afacb6ee8a2382734ef3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"8b0339ee4abf07dc61763bf1063a3a453c5930e1","unresolved":false,"context_lines":[{"line_number":63,"context_line":"* requests to /v2.1 work the same as today after this change"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* requests to /v2.0 will have relaxed validation, and will reject any requests"},{"line_number":66,"context_line":"  that include a version header for /v2.1"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"The relaxed validation consists of:"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"3afb71cf_12643447","line":66,"in_reply_to":"3afb71cf_c713a35b","updated":"2015-06-07 14:32:46.000000000","message":"Yeah, /v1.1 should be the same as /v2 because of the summit conclusion.","commit_id":"4d8a405fb6af0b1f6a28afacb6ee8a2382734ef3"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"98ea71805684c9fc33ebfbf7a4127b139a7f1654","unresolved":false,"context_lines":[{"line_number":63,"context_line":"* requests to /v2.1 work the same as today after this change"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* requests to /v2.0 will have relaxed validation, and will reject any requests"},{"line_number":66,"context_line":"  that include a version header for /v2.1"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"The relaxed validation consists of:"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"3afb71cf_c713a35b","line":66,"in_reply_to":"3afb71cf_df1ffc59","updated":"2015-06-05 13:10:36.000000000","message":"I don\u0027t think we can get rid of v1.1\n\nit would have the same stuff as v2","commit_id":"4d8a405fb6af0b1f6a28afacb6ee8a2382734ef3"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"2b67e3f3faceab0b1dc43502046a3228cdae69ee","unresolved":false,"context_lines":[{"line_number":63,"context_line":"* requests to /v2.1 work the same as today after this change"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* requests to /v2.0 will have relaxed validation, and will reject any requests"},{"line_number":66,"context_line":"  that include a version header for /v2.1"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"The relaxed validation consists of:"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"3afb71cf_753707e4","line":66,"in_reply_to":"3afb71cf_df1ffc59","updated":"2015-06-05 04:58:57.000000000","message":"So how about request coming with /v1.1 ?","commit_id":"4d8a405fb6af0b1f6a28afacb6ee8a2382734ef3"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"2b67e3f3faceab0b1dc43502046a3228cdae69ee","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"* no longer error out requests due to additionalProperties, instead strip out"},{"line_number":71,"context_line":"  those extra properties before sending the request to the v2.1 code for"},{"line_number":72,"context_line":"  processing"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"* as this only applies to the /v2.0 urls, its probably means this happens in"},{"line_number":75,"context_line":"  wsgi middleware"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3afb71cf_b5245faf","line":72,"updated":"2015-06-05 04:58:57.000000000","message":"Would be good if we start logging such invalid request which going to be relaxed.","commit_id":"4d8a405fb6af0b1f6a28afacb6ee8a2382734ef3"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"98ea71805684c9fc33ebfbf7a4127b139a7f1654","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"* no longer error out requests due to additionalProperties, instead strip out"},{"line_number":71,"context_line":"  those extra properties before sending the request to the v2.1 code for"},{"line_number":72,"context_line":"  processing"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"* as this only applies to the /v2.0 urls, its probably means this happens in"},{"line_number":75,"context_line":"  wsgi middleware"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3afb71cf_e7245fb0","line":72,"in_reply_to":"3afb71cf_b5245faf","updated":"2015-06-05 13:10:36.000000000","message":"yes, I should add that.","commit_id":"4d8a405fb6af0b1f6a28afacb6ee8a2382734ef3"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"3eee5e08be9cf180c2692205169c76098903ba64","unresolved":false,"context_lines":[{"line_number":72,"context_line":"  processing"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"* as this only applies to the /v2.0 urls, its probably means this happens in"},{"line_number":75,"context_line":"  wsgi middleware"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3afb71cf_bc3a07cc","line":75,"updated":"2015-06-05 06:56:46.000000000","message":"The request coming from which endpoint can be checked by request object, for example: \"req.application_url\" so we may needn\u0027t make it happen in middleware.","commit_id":"4d8a405fb6af0b1f6a28afacb6ee8a2382734ef3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"cdb537dd64b8a53af468f9efe8060cf66620f5d0","unresolved":false,"context_lines":[{"line_number":72,"context_line":"  processing"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"* as this only applies to the /v2.0 urls, its probably means this happens in"},{"line_number":75,"context_line":"  wsgi middleware"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3afb71cf_1f4d9472","line":75,"updated":"2015-06-05 01:47:14.000000000","message":"ditto","commit_id":"4d8a405fb6af0b1f6a28afacb6ee8a2382734ef3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"8b0339ee4abf07dc61763bf1063a3a453c5930e1","unresolved":false,"context_lines":[{"line_number":72,"context_line":"  processing"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"* as this only applies to the /v2.0 urls, its probably means this happens in"},{"line_number":75,"context_line":"  wsgi middleware"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3afb71cf_52f86c49","line":75,"in_reply_to":"3afb71cf_90d84af1","updated":"2015-06-07 14:32:46.000000000","message":"I prefer Sylvain\u0027s idea.\nThe separated middleware would be easy to handle this difference(between /v2 and /v2.1).","commit_id":"4d8a405fb6af0b1f6a28afacb6ee8a2382734ef3"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"98ea71805684c9fc33ebfbf7a4127b139a7f1654","unresolved":false,"context_lines":[{"line_number":72,"context_line":"  processing"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"* as this only applies to the /v2.0 urls, its probably means this happens in"},{"line_number":75,"context_line":"  wsgi middleware"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3afb71cf_27527714","line":75,"in_reply_to":"3afb71cf_90d84af1","updated":"2015-06-05 13:10:36.000000000","message":"its an implementation thing, let me refactor that out a bit","commit_id":"4d8a405fb6af0b1f6a28afacb6ee8a2382734ef3"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"67db680b8644257ceec3e52124b556363b1858a7","unresolved":false,"context_lines":[{"line_number":72,"context_line":"  processing"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"* as this only applies to the /v2.0 urls, its probably means this happens in"},{"line_number":75,"context_line":"  wsgi middleware"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3afb71cf_90d84af1","line":75,"in_reply_to":"3afb71cf_bc3a07cc","updated":"2015-06-05 09:43:48.000000000","message":"I would tend to favor a separate middleware which would isolate the API check until we decide to drop support for V2.","commit_id":"4d8a405fb6af0b1f6a28afacb6ee8a2382734ef3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"cdb537dd64b8a53af468f9efe8060cf66620f5d0","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"This should have zero impact for the /v2.1 endpoint."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"The /v2.0 endpoint powered by the v2.1 code gets the relaxed validation to"},{"line_number":99,"context_line":"make it more compatible, as mentioned above."},{"line_number":100,"context_line":"In addition /v2.0 should always reject requests that have v2.1 version"},{"line_number":101,"context_line":"headers."}],"source_content_type":"text/x-rst","patch_set":12,"id":"3afb71cf_7f3ec8b9","line":98,"updated":"2015-06-05 01:47:14.000000000","message":"ditto","commit_id":"4d8a405fb6af0b1f6a28afacb6ee8a2382734ef3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"cdb537dd64b8a53af468f9efe8060cf66620f5d0","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"The /v2.0 endpoint powered by the v2.1 code gets the relaxed validation to"},{"line_number":99,"context_line":"make it more compatible, as mentioned above."},{"line_number":100,"context_line":"In addition /v2.0 should always reject requests that have v2.1 version"},{"line_number":101,"context_line":"headers."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3afb71cf_bf7200ac","line":100,"updated":"2015-06-05 01:47:14.000000000","message":"ditto","commit_id":"4d8a405fb6af0b1f6a28afacb6ee8a2382734ef3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"cdb537dd64b8a53af468f9efe8060cf66620f5d0","unresolved":false,"context_lines":[{"line_number":98,"context_line":"The /v2.0 endpoint powered by the v2.1 code gets the relaxed validation to"},{"line_number":99,"context_line":"make it more compatible, as mentioned above."},{"line_number":100,"context_line":"In addition /v2.0 should always reject requests that have v2.1 version"},{"line_number":101,"context_line":"headers."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Security impact"},{"line_number":104,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3afb71cf_dff25c06","line":101,"updated":"2015-06-05 01:47:14.000000000","message":"better to change here like:\n\n - headers\n + header(X-OpenStack-Nova-API-Version).\n\nfor clarifying microversion.","commit_id":"4d8a405fb6af0b1f6a28afacb6ee8a2382734ef3"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"9d31e8be0d58c37669ff7abf7c0210ec821fe429","unresolved":false,"context_lines":[{"line_number":98,"context_line":"The /v2.0 endpoint powered by the v2.1 code gets the relaxed validation to"},{"line_number":99,"context_line":"make it more compatible, as mentioned above."},{"line_number":100,"context_line":"In addition /v2.0 should always reject requests that have v2.1 version"},{"line_number":101,"context_line":"headers."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Security impact"},{"line_number":104,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3afb71cf_8bd37538","line":101,"in_reply_to":"3afb71cf_c741633b","updated":"2015-06-05 14:25:24.000000000","message":"The v2 behavior is just ignore. So we can just ignore it, and ensure we won\u0027t return header about version","commit_id":"4d8a405fb6af0b1f6a28afacb6ee8a2382734ef3"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"67db680b8644257ceec3e52124b556363b1858a7","unresolved":false,"context_lines":[{"line_number":98,"context_line":"The /v2.0 endpoint powered by the v2.1 code gets the relaxed validation to"},{"line_number":99,"context_line":"make it more compatible, as mentioned above."},{"line_number":100,"context_line":"In addition /v2.0 should always reject requests that have v2.1 version"},{"line_number":101,"context_line":"headers."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Security impact"},{"line_number":104,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3afb71cf_b002263d","line":101,"in_reply_to":"3afb71cf_dff25c06","updated":"2015-06-05 09:43:48.000000000","message":"Yeah, would be good to explicitely mention the header to check and where you plan to do so (I guess in the same middleware)\n\nAlso, which error code do you plan to serve ? I guess a 404 ?","commit_id":"4d8a405fb6af0b1f6a28afacb6ee8a2382734ef3"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"98ea71805684c9fc33ebfbf7a4127b139a7f1654","unresolved":false,"context_lines":[{"line_number":98,"context_line":"The /v2.0 endpoint powered by the v2.1 code gets the relaxed validation to"},{"line_number":99,"context_line":"make it more compatible, as mentioned above."},{"line_number":100,"context_line":"In addition /v2.0 should always reject requests that have v2.1 version"},{"line_number":101,"context_line":"headers."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Security impact"},{"line_number":104,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3afb71cf_c741633b","line":101,"in_reply_to":"3afb71cf_dff25c06","updated":"2015-06-05 13:10:36.000000000","message":"its not 404 I suspect, let me define that.","commit_id":"4d8a405fb6af0b1f6a28afacb6ee8a2382734ef3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"cdb537dd64b8a53af468f9efe8060cf66620f5d0","unresolved":false,"context_lines":[{"line_number":142,"context_line":"Work Items"},{"line_number":143,"context_line":"----------"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"* relax validation for /v2.0 requests"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"* error our when v2.1 version headers sent to /v2.0"},{"line_number":148,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"3afb71cf_9fdd0473","line":145,"updated":"2015-06-05 01:47:14.000000000","message":"ditto","commit_id":"4d8a405fb6af0b1f6a28afacb6ee8a2382734ef3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"cdb537dd64b8a53af468f9efe8060cf66620f5d0","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"* relax validation for /v2.0 requests"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"* error our when v2.1 version headers sent to /v2.0"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Dependencies"},{"line_number":150,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3afb71cf_ffd4f847","line":147,"updated":"2015-06-05 01:47:14.000000000","message":"ditto s/v2.0/v2/","commit_id":"4d8a405fb6af0b1f6a28afacb6ee8a2382734ef3"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"3eee5e08be9cf180c2692205169c76098903ba64","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"* relax validation for /v2.0 requests"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"* error our when v2.1 version headers sent to /v2.0"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Dependencies"},{"line_number":150,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3afb71cf_79e5c1a6","line":147,"updated":"2015-06-05 06:56:46.000000000","message":"s/error our/error out/ ?","commit_id":"4d8a405fb6af0b1f6a28afacb6ee8a2382734ef3"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"84182d242945746547d460a36c58dd04a6b3cbec","unresolved":false,"context_lines":[{"line_number":162,"context_line":"* relax validation for /v2 requests when using v2.1 codebase,"},{"line_number":163,"context_line":"  instead just filter out bad properties"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"* error our when v2.1 version headers sent to /v2,"},{"line_number":166,"context_line":"  when using either v2.0 or v2.1 codebase."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":14,"id":"1af86dd1_af20874a","line":165,"updated":"2015-06-12 11:13:25.000000000","message":"nit, s/error our/error out/","commit_id":"3138a5c447c0d2540e9cfc5863f18b06e3f7065c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"84182d242945746547d460a36c58dd04a6b3cbec","unresolved":false,"context_lines":[{"line_number":163,"context_line":"  instead just filter out bad properties"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"* error our when v2.1 version headers sent to /v2,"},{"line_number":166,"context_line":"  when using either v2.0 or v2.1 codebase."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Dependencies"},{"line_number":169,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":14,"id":"1af86dd1_0fa67bc1","line":166,"updated":"2015-06-12 11:13:25.000000000","message":"oops, you mean we should make currently v2 implement return fault also?\n\nas I know the currently python-novaclient send such header for v2 request.\n\nalex@hp-pc:~$ nova --debug list\n\n....\n\nDEBUG (session:197) REQ: curl -g -i -X GET http://hp-pc:8774/v2/475f5b67eb9a4f3f8bef785e66912a60/servers/detail -H \"User-Agent: python-novaclient\" -H \"Accept: application/json\" -H \"X-OpenStack-Nova-API-Version: 2.0\" -H \"X-Auth-Token: 6d4d435252e940efb9dba4c0f13abea4\"\n\nThis is novaclient bug? at lease we release novaclient with this in Kilo\n\notherwise, after this implemented, the client will be break.","commit_id":"3138a5c447c0d2540e9cfc5863f18b06e3f7065c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"ddf12cd8c5ec0454959d79c2884a6e83ff0a6090","unresolved":false,"context_lines":[{"line_number":163,"context_line":"  instead just filter out bad properties"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"* error our when v2.1 version headers sent to /v2,"},{"line_number":166,"context_line":"  when using either v2.0 or v2.1 codebase."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Dependencies"},{"line_number":169,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":14,"id":"1af86dd1_cf7183e2","line":166,"in_reply_to":"1af86dd1_0f655b44","updated":"2015-06-12 11:27:15.000000000","message":"Emm...my mistake...my env install a strange version novaclient, after I updated the code. I didn\u0027t saw that header anymore...","commit_id":"3138a5c447c0d2540e9cfc5863f18b06e3f7065c"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"0b359b530ff82b4f0129d9c7c26c8ce959d0c63a","unresolved":false,"context_lines":[{"line_number":163,"context_line":"  instead just filter out bad properties"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"* error our when v2.1 version headers sent to /v2,"},{"line_number":166,"context_line":"  when using either v2.0 or v2.1 codebase."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Dependencies"},{"line_number":169,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":14,"id":"1af86dd1_0f655b44","line":166,"in_reply_to":"1af86dd1_0fa67bc1","updated":"2015-06-12 11:21:28.000000000","message":"This shouldn\u0027t be an error, v2.0 is relaxed validation. Sending extra headers shouldn\u0027t cause a failure, it\u0027s relaxed. We just ignore them.","commit_id":"3138a5c447c0d2540e9cfc5863f18b06e3f7065c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"7dd1b4715847af823b79faa0f75fbf37b14dc343","unresolved":false,"context_lines":[{"line_number":163,"context_line":"  instead just filter out bad properties"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"* error our when v2.1 version headers sent to /v2,"},{"line_number":166,"context_line":"  when using either v2.0 or v2.1 codebase."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Dependencies"},{"line_number":169,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":14,"id":"fa32b979_10ca1ba2","line":166,"in_reply_to":"1af86dd1_cf7183e2","updated":"2015-06-15 00:17:56.000000000","message":"According to  https://etherpad.openstack.org/p/YVR-nova-api-2.0-3rd-party ,\n\n     /v2.0 -\u003e v2.1 (block microversions, plus validation relax) - coupled\n\nWhen I saw this \"block microversions\", I imagined Nova errors out when the version header is received.\nbut it is difficult to do it in current situation. so I +1 that \"block microversions\" means \"ignore the version header\".","commit_id":"3138a5c447c0d2540e9cfc5863f18b06e3f7065c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"aaa985ed500afdaa623f1c6a61f0ed5ef406299e","unresolved":false,"context_lines":[{"line_number":184,"context_line":"References"},{"line_number":185,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3afb71cf_d2869cda","line":187,"updated":"2015-06-07 14:35:53.000000000","message":"better to contain\n\n https://etherpad.openstack.org/p/YVR-nova-api-2.0-3rd-party\n\nas Liberty Summit conclusion.","commit_id":"3138a5c447c0d2540e9cfc5863f18b06e3f7065c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"23a1b44f97af8e8a1e260e4f5755d9ba04132fe8","unresolved":false,"context_lines":[{"line_number":184,"context_line":"References"},{"line_number":185,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":14,"id":"1af86dd1_a45e6e43","line":187,"in_reply_to":"3afb71cf_d2869cda","updated":"2015-06-12 10:54:14.000000000","message":"So I honestly don\u0027t like referencing those much, but we could add that later I guess.","commit_id":"3138a5c447c0d2540e9cfc5863f18b06e3f7065c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"33a42c408061d4b517018af4bb2c30c76e11a990","unresolved":false,"context_lines":[{"line_number":64,"context_line":"* requests to /v2.1 work the same as today after this change"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"* requests to /v2 will have relaxed validation, and will ignore"},{"line_number":67,"context_line":"  X-OpenStack-Nova-API-Version headers, and always return /v2 responses"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"* if we keep /v1.1 it will remain the same as /v2"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"fa32b979_6829cc36","line":67,"updated":"2015-06-17 05:15:30.000000000","message":"I think the response should always contain \"X-OpenStack-Nova-API-Version: 2.1\", right?\n\nOn microversions mechanism, Nova returns \"worked microversion\" as the result in a response. So I think we need to keep the header on this feature also.\n\nBefore changing \"deny\" to \"ignore\" the header, it is not necessary to clarify it because the reason in response contains it.\nBut now the header is ignored, so it is good to notify worked microversion clearly to clients.\n\nThe header is different from current v2.0, so I hope this will be described clearly on the spec.","commit_id":"2243dbc60649d577a8ac2d243648952505012188"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"f0da4fc40d74065fbd950e23a10264d0e19015f6","unresolved":false,"context_lines":[{"line_number":64,"context_line":"* requests to /v2.1 work the same as today after this change"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"* requests to /v2 will have relaxed validation, and will ignore"},{"line_number":67,"context_line":"  X-OpenStack-Nova-API-Version headers, and always return /v2 responses"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"* if we keep /v1.1 it will remain the same as /v2"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"fa32b979_6ab0d68a","line":67,"in_reply_to":"fa32b979_49f967c6","updated":"2015-06-17 11:12:08.000000000","message":"OK, nice point.\n\nI\u0027ve changed my +1(about this) to remove the header from a response.\nAnyway, this should be described on the spec.","commit_id":"2243dbc60649d577a8ac2d243648952505012188"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"659cb4ca24b9c6b63ec3ab6de23270553b518bd8","unresolved":false,"context_lines":[{"line_number":64,"context_line":"* requests to /v2.1 work the same as today after this change"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"* requests to /v2 will have relaxed validation, and will ignore"},{"line_number":67,"context_line":"  X-OpenStack-Nova-API-Version headers, and always return /v2 responses"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"* if we keep /v1.1 it will remain the same as /v2"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"fa32b979_49f967c6","line":67,"in_reply_to":"fa32b979_63800af8","updated":"2015-06-17 08:49:19.000000000","message":"yea, The client depend on whether X-OpenStack-Nova-API-Version returned in response to determine the api is v2 or v2.1","commit_id":"2243dbc60649d577a8ac2d243648952505012188"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d5e7328b8c721266b21b23c3a4f6345f61934694","unresolved":false,"context_lines":[{"line_number":64,"context_line":"* requests to /v2.1 work the same as today after this change"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"* requests to /v2 will have relaxed validation, and will ignore"},{"line_number":67,"context_line":"  X-OpenStack-Nova-API-Version headers, and always return /v2 responses"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"* if we keep /v1.1 it will remain the same as /v2"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"fa32b979_a30cd5ed","line":67,"in_reply_to":"fa32b979_6829cc36","updated":"2015-06-17 06:18:04.000000000","message":"As microversion never got published on /v2, I think their response also should not contain microversion information (same as v2 response with v2 code base).  \n\nAlso returning worked \"X-OpenStack-Nova-API-Version: 2.1\" in v2 response may make user confused whether it is served from v2 or from returned microversion?","commit_id":"2243dbc60649d577a8ac2d243648952505012188"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"41f489c1b04450aba9c447f5a02073706bf26682","unresolved":false,"context_lines":[{"line_number":64,"context_line":"* requests to /v2.1 work the same as today after this change"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"* requests to /v2 will have relaxed validation, and will ignore"},{"line_number":67,"context_line":"  X-OpenStack-Nova-API-Version headers, and always return /v2 responses"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"* if we keep /v1.1 it will remain the same as /v2"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"fa32b979_189156f1","line":67,"in_reply_to":"fa32b979_6ab0d68a","updated":"2015-06-17 15:49:19.000000000","message":"+1 its totally missing here, lets add that.","commit_id":"2243dbc60649d577a8ac2d243648952505012188"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"4c93f9f6a32724487f90844a18fc4d8dda46fb5c","unresolved":false,"context_lines":[{"line_number":64,"context_line":"* requests to /v2.1 work the same as today after this change"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"* requests to /v2 will have relaxed validation, and will ignore"},{"line_number":67,"context_line":"  X-OpenStack-Nova-API-Version headers, and always return /v2 responses"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"* if we keep /v1.1 it will remain the same as /v2"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"fa32b979_63800af8","line":67,"in_reply_to":"fa32b979_a30cd5ed","updated":"2015-06-17 08:03:04.000000000","message":"+1 for v2 not having any headers returned, at least thats what my gut is saying.","commit_id":"2243dbc60649d577a8ac2d243648952505012188"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"c8b35369fa3fee8618b81b8c8d8ee071ee0e3e36","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"* no longer error out requests due to additionalProperties, instead strip out"},{"line_number":77,"context_line":"  those extra properties before sending the request to the v2.1 code for"},{"line_number":78,"context_line":"  processing, and it will log a message if anything was stripped out."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"In addition:"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa32b979_1231830b","line":78,"updated":"2015-06-22 18:12:42.000000000","message":"I have a slight concern here that there are deployers/users relying on being able to send additional properties which will break with this change.  While they will need to figure out a way to deal with that in v2.1 this does mean that v2 today versus v2 on v2.1 will be different.","commit_id":"1b027b9d0c10091ff93c6ce4dd930d8b7b08406d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ab83556d1932fb33e76023ab3b8136f706697037","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"* no longer error out requests due to additionalProperties, instead strip out"},{"line_number":77,"context_line":"  those extra properties before sending the request to the v2.1 code for"},{"line_number":78,"context_line":"  processing, and it will log a message if anything was stripped out."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"In addition:"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"ba3cc151_3c25aaaa","line":78,"in_reply_to":"ba3cc151_1b37acb1","updated":"2015-06-29 20:39:08.000000000","message":"Agreed, but doesn\u0027t that change it from the v2.0 behaviour ?\nImagine a kwargs where we would accept anything from the request body in v2.0 translated into a v2.1 additionalProperties set to True, we could possibly have different behaviour southbound, right ?\n\nOr did I missed something ?","commit_id":"1b027b9d0c10091ff93c6ce4dd930d8b7b08406d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"8920e7cdaa4d52a92c1a4fad652371b2d25218a8","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"* no longer error out requests due to additionalProperties, instead strip out"},{"line_number":77,"context_line":"  those extra properties before sending the request to the v2.1 code for"},{"line_number":78,"context_line":"  processing, and it will log a message if anything was stripped out."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"In addition:"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"ba3cc151_99910ff4","line":78,"in_reply_to":"ba3cc151_3c25aaaa","updated":"2015-07-01 12:00:48.000000000","message":"it does change the behaviour, I and thats totally a trade off that I thought we were going to make.","commit_id":"1b027b9d0c10091ff93c6ce4dd930d8b7b08406d"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"0bcec6c17c0e3cee047a0fbe7dfce7de232519ae","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"* no longer error out requests due to additionalProperties, instead strip out"},{"line_number":77,"context_line":"  those extra properties before sending the request to the v2.1 code for"},{"line_number":78,"context_line":"  processing, and it will log a message if anything was stripped out."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"In addition:"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa32b979_24d1c1cd","line":78,"in_reply_to":"fa32b979_1231830b","updated":"2015-06-23 11:00:05.000000000","message":"Right, if they take the v2.1 stack, put it on v2.0, it will be just like it is today, except we\u0027ll have logging about it.","commit_id":"1b027b9d0c10091ff93c6ce4dd930d8b7b08406d"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"330ddd83ac072d0445d0630ec439274732035ac9","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"* no longer error out requests due to additionalProperties, instead strip out"},{"line_number":77,"context_line":"  those extra properties before sending the request to the v2.1 code for"},{"line_number":78,"context_line":"  processing, and it will log a message if anything was stripped out."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"In addition:"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa32b979_6dec4cbb","line":78,"in_reply_to":"fa32b979_22597c35","updated":"2015-06-24 14:49:37.000000000","message":"Why strip them out? Will they cause exceptions, or will they be passed along unchanged, as they are in v2? Unless keeping them will cause things to blow up, I would prefer not to break v2 behavior.","commit_id":"1b027b9d0c10091ff93c6ce4dd930d8b7b08406d"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"1821eda9680314a6c45c6773c0ab252a0a59eb6d","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"* no longer error out requests due to additionalProperties, instead strip out"},{"line_number":77,"context_line":"  those extra properties before sending the request to the v2.1 code for"},{"line_number":78,"context_line":"  processing, and it will log a message if anything was stripped out."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"In addition:"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa32b979_fa8a7b63","line":78,"in_reply_to":"fa32b979_24d1c1cd","updated":"2015-06-23 19:30:09.000000000","message":"My reading is slightly different.  Let\u0027s say I\u0027m using an out of tree scheduler filter that takes a \u0027randomize\u003dTrue\u0027 scheduler hint, as a silly example.  With v2 today that works because it\u0027s passed through, with v2 on v2.1 it will get stripped out and break that functionality.  It\u0027s not truly backwards compatible, though it is compatible when just considering in-tree code.\n\nScheduler hints may be the outlier here though, because I don\u0027t think we can reasonable validate the input there right now since it\u0027s a plug point that can be used for out of tree filters.","commit_id":"1b027b9d0c10091ff93c6ce4dd930d8b7b08406d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"af70405d2f0c8cf3a1966b75b72f35d93a5b1c4e","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"* no longer error out requests due to additionalProperties, instead strip out"},{"line_number":77,"context_line":"  those extra properties before sending the request to the v2.1 code for"},{"line_number":78,"context_line":"  processing, and it will log a message if anything was stripped out."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"In addition:"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"ba3cc151_1b37acb1","line":78,"in_reply_to":"fa32b979_4a5a1c2c","updated":"2015-06-29 08:42:43.000000000","message":"So at the summit we agreed (I though) we should strip them out, because of all the APIs that send things straight into the DB layer unchecked, and similar other things.","commit_id":"1b027b9d0c10091ff93c6ce4dd930d8b7b08406d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"cd48220bf00165833fd4b5be63f75295206c8842","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"* no longer error out requests due to additionalProperties, instead strip out"},{"line_number":77,"context_line":"  those extra properties before sending the request to the v2.1 code for"},{"line_number":78,"context_line":"  processing, and it will log a message if anything was stripped out."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"In addition:"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa32b979_e8a04a44","line":78,"in_reply_to":"fa32b979_6dec4cbb","updated":"2015-06-24 15:02:27.000000000","message":"or we just say \"ignore\"?","commit_id":"1b027b9d0c10091ff93c6ce4dd930d8b7b08406d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4b9a929903f06227bcc75a7340f147545807aa65","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"* no longer error out requests due to additionalProperties, instead strip out"},{"line_number":77,"context_line":"  those extra properties before sending the request to the v2.1 code for"},{"line_number":78,"context_line":"  processing, and it will log a message if anything was stripped out."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"In addition:"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa32b979_4a5a1c2c","line":78,"in_reply_to":"fa32b979_e8a04a44","updated":"2015-06-26 16:29:18.000000000","message":"I\u0027m trying hard to think about that and consider v2 as free-form, right ?\nSo, wouldn\u0027t we assume that if v3 accepts additionalProperties, we should keep that accepted as by the relaxation module (or middleware, whatever) ?","commit_id":"1b027b9d0c10091ff93c6ce4dd930d8b7b08406d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"214475327d84929888a035e1bf94b7b0d5554748","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"* no longer error out requests due to additionalProperties, instead strip out"},{"line_number":77,"context_line":"  those extra properties before sending the request to the v2.1 code for"},{"line_number":78,"context_line":"  processing, and it will log a message if anything was stripped out."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"In addition:"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"fa32b979_22597c35","line":78,"in_reply_to":"fa32b979_fa8a7b63","updated":"2015-06-24 10:57:18.000000000","message":"So we should deal with that issues more specifically in that case.\n\nBut supporting those out of tree filters seems to conflict with our policy here:\nhttp://docs.openstack.org/developer/nova/policies.html#out-of-tree-support\n\nIf you have out of tree filters, you may as well hack the API to allow those things through. So I don\u0027t see this really blocking any more than it does now.","commit_id":"1b027b9d0c10091ff93c6ce4dd930d8b7b08406d"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"fdcb5857e14692f7c44bf9a26ad5a22b5cdf1022","unresolved":false,"context_lines":[{"line_number":103,"context_line":"It also feels slightly better from an input validation and security point"},{"line_number":104,"context_line":"of view, but it does risk changing how the API behaves."},{"line_number":105,"context_line":"We could still look to add this at a later date, if it turns out to be a"},{"line_number":106,"context_line":"good idea."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Data model impact"},{"line_number":109,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"ba3cc151_10d149fa","line":106,"updated":"2015-07-01 14:10:12.000000000","message":"If the goal is to put v2 on v2.1 in a transparent and backwards compatible way I don\u0027t see how we can do this.  The behavior should stay completely the same IMO.","commit_id":"dbc91b9f0ea5c2e4480388730daff56ac05e668f"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"fdcb5857e14692f7c44bf9a26ad5a22b5cdf1022","unresolved":false,"context_lines":[{"line_number":168,"context_line":"----------"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"* relax validation for /v2 requests when using v2.1 codebase,"},{"line_number":171,"context_line":"  instead just filter out bad properties"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"* requests made to /v2 will never return X-OpenStack-Nova-API-Version headers,"},{"line_number":174,"context_line":"  even when powered by the v2.1 codebase"}],"source_content_type":"text/x-rst","patch_set":18,"id":"ba3cc151_909c7910","line":171,"updated":"2015-07-01 14:10:12.000000000","message":"This should be updated to match the change above.","commit_id":"dbc91b9f0ea5c2e4480388730daff56ac05e668f"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"6427c895215afe0a4b4fd808e688f486650255d8","unresolved":false,"context_lines":[{"line_number":168,"context_line":"----------"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"* relax validation for /v2 requests when using v2.1 codebase,"},{"line_number":171,"context_line":"  instead just filter out bad properties"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"* requests made to /v2 will never return X-OpenStack-Nova-API-Version headers,"},{"line_number":174,"context_line":"  even when powered by the v2.1 codebase"}],"source_content_type":"text/x-rst","patch_set":18,"id":"ba3cc151_326c55cd","line":171,"in_reply_to":"ba3cc151_909c7910","updated":"2015-07-02 15:06:04.000000000","message":"oops.","commit_id":"dbc91b9f0ea5c2e4480388730daff56ac05e668f"},{"author":{"_account_id":964,"name":"Anne Gentle","email":"annegentle@justwriteclick.com","username":"annegentle"},"change_message_id":"9691f8ed7ba052820f0bfbacee9ee357c996c2fa","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"* requests to /v2 will have relaxed validation, and will ignore"},{"line_number":67,"context_line":"  X-OpenStack-Nova-API-Version headers, and always return /v2 responses"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"* requests made to /v2 will never return X-OpenStack-Nova-API-Version headers,"},{"line_number":70,"context_line":"  even when powered by the v2.1 codebase"},{"line_number":71,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"ba3cc151_d0e93680","line":68,"updated":"2015-07-03 12:33:42.000000000","message":"I\u0027d like this header name to use the service type rather than project name. I don\u0027t believe it\u0027s too late for that.","commit_id":"a9d4c5ed83a285ca045267519f612d94d8aec0cb"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b51559766c8447174db938d6762ccf3d9266d9f0","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"* requests to /v2 will have relaxed validation, and will ignore"},{"line_number":67,"context_line":"  X-OpenStack-Nova-API-Version headers, and always return /v2 responses"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"* requests made to /v2 will never return X-OpenStack-Nova-API-Version headers,"},{"line_number":70,"context_line":"  even when powered by the v2.1 codebase"},{"line_number":71,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"ba3cc151_b313ab64","line":68,"in_reply_to":"ba3cc151_d0e93680","updated":"2015-07-08 16:16:16.000000000","message":"Sadly, it is too late, the API has already shipped, this is just talking about slight changes to how it is ignored.","commit_id":"a9d4c5ed83a285ca045267519f612d94d8aec0cb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f280b21c9e5bcd294dd8e70fd10a6297db0860b7","unresolved":false,"context_lines":[{"line_number":103,"context_line":"It also feels slightly better from an input validation and security point"},{"line_number":104,"context_line":"of view, but it does risk changing how the API behaves."},{"line_number":105,"context_line":"We could still look to add this at a later date, if it turns out to be a"},{"line_number":106,"context_line":"good idea."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Data model impact"},{"line_number":109,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":19,"id":"ba3cc151_59b8f910","line":106,"updated":"2015-07-03 10:52:55.000000000","message":"Well, I can see it as an implementation detail that can be discussed later, but if we want to have relaxed v2.1 as the same sugar as v2, then we can just leave the invalid ones go in.","commit_id":"a9d4c5ed83a285ca045267519f612d94d8aec0cb"},{"author":{"_account_id":964,"name":"Anne Gentle","email":"annegentle@justwriteclick.com","username":"annegentle"},"change_message_id":"9691f8ed7ba052820f0bfbacee9ee357c996c2fa","unresolved":false,"context_lines":[{"line_number":154,"context_line":"----------------"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"None"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"Implementation"},{"line_number":159,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":160,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"ba3cc151_9023aebc","line":157,"updated":"2015-07-03 12:33:42.000000000","message":"Since when did your template remove a Documentation impact section? You should add it here as well as to the template.\n\nThe doc impact is:\nDocumentation should be updated to include the expectations for the version returned from v2 and v1.1. \nRequests and responses should be accurate in the documentation. There is a doc spec for API docs that takes microversions into account: https://review.openstack.org/#/c/177934/. Please review for this validation change.","commit_id":"a9d4c5ed83a285ca045267519f612d94d8aec0cb"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b51559766c8447174db938d6762ccf3d9266d9f0","unresolved":false,"context_lines":[{"line_number":154,"context_line":"----------------"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"None"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"Implementation"},{"line_number":159,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":160,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"ba3cc151_165fe50f","line":157,"in_reply_to":"ba3cc151_9023aebc","updated":"2015-07-08 16:16:16.000000000","message":"There should be zero changes to v2 and v1.1 due to this spec.\n\nThey don\u0027t return the version, and they should continue to not return the version when we start using the v2.1 code to server v2 and v1.1.","commit_id":"a9d4c5ed83a285ca045267519f612d94d8aec0cb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f280b21c9e5bcd294dd8e70fd10a6297db0860b7","unresolved":false,"context_lines":[{"line_number":168,"context_line":"----------"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"* relax validation for /v2 requests when using v2.1 codebase,"},{"line_number":171,"context_line":"  instead just ignore bad properties"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"* requests made to /v2 will never return X-OpenStack-Nova-API-Version headers,"},{"line_number":174,"context_line":"  even when powered by the v2.1 codebase"}],"source_content_type":"text/x-rst","patch_set":19,"id":"ba3cc151_d942c90e","line":171,"updated":"2015-07-03 10:52:55.000000000","message":"that can be discussed at the implementation stage IMHO","commit_id":"a9d4c5ed83a285ca045267519f612d94d8aec0cb"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b51559766c8447174db938d6762ccf3d9266d9f0","unresolved":false,"context_lines":[{"line_number":168,"context_line":"----------"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"* relax validation for /v2 requests when using v2.1 codebase,"},{"line_number":171,"context_line":"  instead just ignore bad properties"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"* requests made to /v2 will never return X-OpenStack-Nova-API-Version headers,"},{"line_number":174,"context_line":"  even when powered by the v2.1 codebase"}],"source_content_type":"text/x-rst","patch_set":19,"id":"ba3cc151_16b6053e","line":171,"in_reply_to":"ba3cc151_d942c90e","updated":"2015-07-08 16:16:16.000000000","message":"yep.","commit_id":"a9d4c5ed83a285ca045267519f612d94d8aec0cb"},{"author":{"_account_id":964,"name":"Anne Gentle","email":"annegentle@justwriteclick.com","username":"annegentle"},"change_message_id":"8f16e9b2a316472b847a0bcb3b7bc15990846243","unresolved":false,"context_lines":[{"line_number":191,"context_line":"Documentation Impact"},{"line_number":192,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"None"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"References"},{"line_number":197,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":19,"id":"ba3cc151_cb5bcb84","line":194,"updated":"2015-07-03 12:52:45.000000000","message":"Ah, here it is. Please add information from my prior comment here.","commit_id":"a9d4c5ed83a285ca045267519f612d94d8aec0cb"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b51559766c8447174db938d6762ccf3d9266d9f0","unresolved":false,"context_lines":[{"line_number":191,"context_line":"Documentation Impact"},{"line_number":192,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"None"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"References"},{"line_number":197,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":19,"id":"ba3cc151_f6a041f6","line":194,"in_reply_to":"ba3cc151_cb5bcb84","updated":"2015-07-08 16:16:16.000000000","message":"The point of this spec is there are zero changes v2 and v1.1","commit_id":"a9d4c5ed83a285ca045267519f612d94d8aec0cb"}]}
