)]}'
{"specs/liberty/approved/novaclient-api-microversions.rst":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"304f5aac22c327355f95482aecdd793cb90b404b","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Nova API Microversions support in NovaClient"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/python-novaclient/+spec/api-microversion-support"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3afb71cf_3a039044","line":8,"updated":"2015-06-06 18:35:31.000000000","message":"Better also use \"python-novaclient\" here as in the remainder of the text","commit_id":"3cc011c0fd8a2340f3b760216c6e082039c0afb3"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"8b969c9173152cecf81c610bd397b846af3acc44","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Nova API Microversions support in NovaClient"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/python-novaclient/+spec/api-microversion-support"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3afb71cf_6d401ba6","line":8,"in_reply_to":"3afb71cf_3a039044","updated":"2015-06-08 12:00:01.000000000","message":"Done","commit_id":"3cc011c0fd8a2340f3b760216c6e082039c0afb3"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"d4d0c0cb3b825d2dc3f0b67be35462b9a787bf44","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Nova API Microversions support in NovaClient"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/python-novaclient/+spec/api-microversion-support"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3afb71cf_4c1697f2","line":8,"in_reply_to":"3afb71cf_3a039044","updated":"2015-06-07 07:50:12.000000000","message":"ok","commit_id":"3cc011c0fd8a2340f3b760216c6e082039c0afb3"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"304f5aac22c327355f95482aecdd793cb90b404b","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    API versions[3]."},{"line_number":84,"context_line":"  * The client filters version by \"CURRENT\" status and \"2.1\" id."},{"line_number":85,"context_line":"  * The client informs the user that it cannot communicate to Nova using that"},{"line_number":86,"context_line":"    microversion and exits."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Use Case 3B:  New Client communicating with Nova V2.0 (user-specified)"},{"line_number":89,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3afb71cf_7a9fc803","line":86,"updated":"2015-06-06 18:35:31.000000000","message":"So this together with the behaviour from 3B would imply that the new client cannot work with Nova V2.0 anymore? I don\u0027t think that this makes sense, the client should have a fallback and use V2 here IMO.","commit_id":"3cc011c0fd8a2340f3b760216c6e082039c0afb3"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"d4d0c0cb3b825d2dc3f0b67be35462b9a787bf44","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    API versions[3]."},{"line_number":84,"context_line":"  * The client filters version by \"CURRENT\" status and \"2.1\" id."},{"line_number":85,"context_line":"  * The client informs the user that it cannot communicate to Nova using that"},{"line_number":86,"context_line":"    microversion and exits."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Use Case 3B:  New Client communicating with Nova V2.0 (user-specified)"},{"line_number":89,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3afb71cf_6c1b931c","line":86,"in_reply_to":"3afb71cf_7a9fc803","updated":"2015-06-07 07:50:12.000000000","message":"--compute-api-version\u003dNone is equal to \"no microversion\" and allows to support Nova V2.0 in New Client. I\u0027ll add 3C.","commit_id":"3cc011c0fd8a2340f3b760216c6e082039c0afb3"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"8b969c9173152cecf81c610bd397b846af3acc44","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    API versions[3]."},{"line_number":84,"context_line":"  * The client filters version by \"CURRENT\" status and \"2.1\" id."},{"line_number":85,"context_line":"  * The client informs the user that it cannot communicate to Nova using that"},{"line_number":86,"context_line":"    microversion and exits."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Use Case 3B:  New Client communicating with Nova V2.0 (user-specified)"},{"line_number":89,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3afb71cf_f831670c","line":86,"in_reply_to":"3afb71cf_7a9fc803","updated":"2015-06-08 12:00:01.000000000","message":"Also, if user specify \"2.0\", \"3.0\", client will not use/check headers.","commit_id":"3cc011c0fd8a2340f3b760216c6e082039c0afb3"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"304f5aac22c327355f95482aecdd793cb90b404b","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"  * The user specifies a microversion to the client that is invalid. The client"},{"line_number":111,"context_line":"    should return an error to the user, i.e. the client should provide some"},{"line_number":112,"context_line":"    validation that a valid microversion identifier is provided."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Use Case 5: New Client/Nova V2.1: Unsupported Nova version"},{"line_number":115,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3afb71cf_5aa40c56","line":112,"updated":"2015-06-06 18:35:31.000000000","message":"It would be nice to have a reference here to how a valid microversion identifier looks like, this is not directly obvious from the negative examples above.","commit_id":"3cc011c0fd8a2340f3b760216c6e082039c0afb3"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"8b969c9173152cecf81c610bd397b846af3acc44","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"  * The user specifies a microversion to the client that is invalid. The client"},{"line_number":111,"context_line":"    should return an error to the user, i.e. the client should provide some"},{"line_number":112,"context_line":"    validation that a valid microversion identifier is provided."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Use Case 5: New Client/Nova V2.1: Unsupported Nova version"},{"line_number":115,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3afb71cf_f32ce84b","line":112,"in_reply_to":"3afb71cf_5aa40c56","updated":"2015-06-08 12:00:01.000000000","message":"Done","commit_id":"3cc011c0fd8a2340f3b760216c6e082039c0afb3"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"304f5aac22c327355f95482aecdd793cb90b404b","unresolved":false,"context_lines":[{"line_number":176,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"To address the specific behaviour between Nova and python-novacclient, the"},{"line_number":179,"context_line":"following Use Cases are listed to specify the expected functionality."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"For the purposes of definition, we will use the term \"Nova V2.0\" to refer to"},{"line_number":182,"context_line":"a version of Nova that predates microversions and has no knowledge of them."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3afb71cf_3a8a70c0","line":179,"updated":"2015-06-06 18:35:31.000000000","message":"With the current ordering, the Use Cases are not following, but preceding this section.","commit_id":"3cc011c0fd8a2340f3b760216c6e082039c0afb3"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"d4d0c0cb3b825d2dc3f0b67be35462b9a787bf44","unresolved":false,"context_lines":[{"line_number":176,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"To address the specific behaviour between Nova and python-novacclient, the"},{"line_number":179,"context_line":"following Use Cases are listed to specify the expected functionality."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"For the purposes of definition, we will use the term \"Nova V2.0\" to refer to"},{"line_number":182,"context_line":"a version of Nova that predates microversions and has no knowledge of them."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3afb71cf_cce047fd","line":179,"in_reply_to":"3afb71cf_3a8a70c0","updated":"2015-06-07 07:50:12.000000000","message":"Order is formed on the basis of liberty-template.\n\nhttps://github.com/openstack/nova-specs/blob/master/specs/liberty-template.rst","commit_id":"3cc011c0fd8a2340f3b760216c6e082039c0afb3"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"8b969c9173152cecf81c610bd397b846af3acc44","unresolved":false,"context_lines":[{"line_number":176,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"To address the specific behaviour between Nova and python-novacclient, the"},{"line_number":179,"context_line":"following Use Cases are listed to specify the expected functionality."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"For the purposes of definition, we will use the term \"Nova V2.0\" to refer to"},{"line_number":182,"context_line":"a version of Nova that predates microversions and has no knowledge of them."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3afb71cf_d32fac3c","line":179,"in_reply_to":"3afb71cf_4cc4575e","updated":"2015-06-08 12:00:01.000000000","message":"Done","commit_id":"3cc011c0fd8a2340f3b760216c6e082039c0afb3"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"129317e2472a17e3862be28e7a7f8d08dc9f969e","unresolved":false,"context_lines":[{"line_number":176,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"To address the specific behaviour between Nova and python-novacclient, the"},{"line_number":179,"context_line":"following Use Cases are listed to specify the expected functionality."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"For the purposes of definition, we will use the term \"Nova V2.0\" to refer to"},{"line_number":182,"context_line":"a version of Nova that predates microversions and has no knowledge of them."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3afb71cf_4cc4575e","line":179,"in_reply_to":"3afb71cf_cce047fd","updated":"2015-06-07 08:26:19.000000000","message":"Right, so just s/following/preceding/ in this line ;)","commit_id":"3cc011c0fd8a2340f3b760216c6e082039c0afb3"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"304f5aac22c327355f95482aecdd793cb90b404b","unresolved":false,"context_lines":[{"line_number":275,"context_line":"Testing"},{"line_number":276,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":277,"context_line":"NovaClient\u0027s functional tests should cover as much as possible microverions."},{"line_number":278,"context_line":"Patch for V2.2 can be used as how-to for writing such tests."},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"Documentation Impact"},{"line_number":281,"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":1,"id":"3afb71cf_babc206d","line":278,"updated":"2015-06-06 18:35:31.000000000","message":"Can you add a reference to this patch here?","commit_id":"3cc011c0fd8a2340f3b760216c6e082039c0afb3"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"8b969c9173152cecf81c610bd397b846af3acc44","unresolved":false,"context_lines":[{"line_number":275,"context_line":"Testing"},{"line_number":276,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":277,"context_line":"NovaClient\u0027s functional tests should cover as much as possible microverions."},{"line_number":278,"context_line":"Patch for V2.2 can be used as how-to for writing such tests."},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"Documentation Impact"},{"line_number":281,"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":1,"id":"3afb71cf_ad0cd394","line":278,"in_reply_to":"3afb71cf_babc206d","updated":"2015-06-08 12:00:01.000000000","message":"Done","commit_id":"3cc011c0fd8a2340f3b760216c6e082039c0afb3"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"d4d0c0cb3b825d2dc3f0b67be35462b9a787bf44","unresolved":false,"context_lines":[{"line_number":275,"context_line":"Testing"},{"line_number":276,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":277,"context_line":"NovaClient\u0027s functional tests should cover as much as possible microverions."},{"line_number":278,"context_line":"Patch for V2.2 can be used as how-to for writing such tests."},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"Documentation Impact"},{"line_number":281,"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":1,"id":"3afb71cf_8cf5afcc","line":278,"in_reply_to":"3afb71cf_babc206d","updated":"2015-06-07 07:50:12.000000000","message":"sorry, it was added to references list(number #4), but I forgot to mention it here.","commit_id":"3cc011c0fd8a2340f3b760216c6e082039c0afb3"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"1142e101734d5b482c7a71a3af8f94b052ecc94f","unresolved":false,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"Project Priority"},{"line_number":205,"context_line":"----------------"},{"line_number":206,"context_line":"None"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"Proposed change"},{"line_number":209,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3afb71cf_6393e35b","line":206,"updated":"2015-06-11 13:00:46.000000000","message":"This is a priority! \n\nhttp://specs.openstack.org/openstack/nova-specs/priorities/liberty-priorities.html","commit_id":"0bfe72901fc1f26bfdf568874b6602893990c39f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"2c91583aab82a21d504b1e511d31f5978abdc608","unresolved":false,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"Project Priority"},{"line_number":205,"context_line":"----------------"},{"line_number":206,"context_line":"None"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"Proposed change"},{"line_number":209,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3afb71cf_2ae49baa","line":206,"in_reply_to":"3afb71cf_5ecc3c88","updated":"2015-06-11 14:28:29.000000000","message":"Done","commit_id":"0bfe72901fc1f26bfdf568874b6602893990c39f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"d0fb8baeba14764f0833ffa14c53555bab650fa4","unresolved":false,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"Project Priority"},{"line_number":205,"context_line":"----------------"},{"line_number":206,"context_line":"None"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"Proposed change"},{"line_number":209,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3afb71cf_83b37f97","line":206,"in_reply_to":"3afb71cf_6393e35b","updated":"2015-06-11 13:09:26.000000000","message":"What should I write here?\n\"V2.1 API - http://specs.openstack.org/openstack/nova-specs/priorities/liberty-priorities.html#v2-1-api\" will be enough?","commit_id":"0bfe72901fc1f26bfdf568874b6602893990c39f"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"c54b6fc9f90aa7a62135f58106177cd5ba528556","unresolved":false,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"Project Priority"},{"line_number":205,"context_line":"----------------"},{"line_number":206,"context_line":"None"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"Proposed change"},{"line_number":209,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3afb71cf_5ecc3c88","line":206,"in_reply_to":"3afb71cf_83b37f97","updated":"2015-06-11 13:25:45.000000000","message":"yup","commit_id":"0bfe72901fc1f26bfdf568874b6602893990c39f"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"c54b6fc9f90aa7a62135f58106177cd5ba528556","unresolved":false,"context_lines":[{"line_number":217,"context_line":"that includes support for microversions."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"For novaclient, we will apply labels \"old client\" for novaclient which doesn\u0027t"},{"line_number":220,"context_line":"support microversions and \"new client\" for novaclient which support it."},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"New Client Default Microversion"},{"line_number":223,"context_line":"-------------------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3afb71cf_3e4860cb","line":220,"updated":"2015-06-11 13:25:45.000000000","message":"what do you mean here?","commit_id":"0bfe72901fc1f26bfdf568874b6602893990c39f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"2c91583aab82a21d504b1e511d31f5978abdc608","unresolved":false,"context_lines":[{"line_number":217,"context_line":"that includes support for microversions."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"For novaclient, we will apply labels \"old client\" for novaclient which doesn\u0027t"},{"line_number":220,"context_line":"support microversions and \"new client\" for novaclient which support it."},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"New Client Default Microversion"},{"line_number":223,"context_line":"-------------------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3afb71cf_8aeb8f78","line":220,"in_reply_to":"3afb71cf_3e4860cb","updated":"2015-06-11 14:28:29.000000000","message":"this text should be moved to the top of Use Cases section. Fixed","commit_id":"0bfe72901fc1f26bfdf568874b6602893990c39f"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"4fb00ab41be3f0b1734ecb03bc1819c0f4cc97bd","unresolved":false,"context_lines":[{"line_number":66,"context_line":"* The client makes a connection to Nova, not specifying the HTTP header"},{"line_number":67,"context_line":"  X-OpenStack-Nova-API-Version"},{"line_number":68,"context_line":"* Nova does not check for an X-OpenStack-Nova-API-Version header, and"},{"line_number":69,"context_line":"  processes all communication simply as v2.0 (stable/kilo)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Use Case 2: Old Client communicating with Nova V2.1"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa32b979_f048d72f","line":69,"updated":"2015-06-15 00:39:15.000000000","message":"+1","commit_id":"3d1290fc3a3e5941bca5a918a4493b385ad82263"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"4fb00ab41be3f0b1734ecb03bc1819c0f4cc97bd","unresolved":false,"context_lines":[{"line_number":94,"context_line":"* The client makes a connection to Nova and ask supported API versions."},{"line_number":95,"context_line":"* Nova doesn\u0027t look for, or parse the HTTP header. It just return json with"},{"line_number":96,"context_line":"  API versions [4]."},{"line_number":97,"context_line":"* The client filters version by \"CURRENT\" status and \"2.1\" id."},{"line_number":98,"context_line":"* The client informs the user that it cannot communicate to Nova using that"},{"line_number":99,"context_line":"  microversion and exits."},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa32b979_302b9f32","line":97,"updated":"2015-06-15 00:39:15.000000000","message":"This behavior seems to try switching API endpoint automatically, but that seems a little overkill for me.\n\nCurrent novaclient is using \"compute\" as the default service-type and that is the one of v2.0 API. So I feel automatic switch will make confusion because the default value is ignored.\nIn addition, this automatic switch will be unnecessary in long-term, because the default API endpoint will be v2.1 API.","commit_id":"3d1290fc3a3e5941bca5a918a4493b385ad82263"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"df33050170b27b75c4d97c0f34624e37afd18d63","unresolved":false,"context_lines":[{"line_number":94,"context_line":"* The client makes a connection to Nova and ask supported API versions."},{"line_number":95,"context_line":"* Nova doesn\u0027t look for, or parse the HTTP header. It just return json with"},{"line_number":96,"context_line":"  API versions [4]."},{"line_number":97,"context_line":"* The client filters version by \"CURRENT\" status and \"2.1\" id."},{"line_number":98,"context_line":"* The client informs the user that it cannot communicate to Nova using that"},{"line_number":99,"context_line":"  microversion and exits."},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa32b979_e1b6c43c","line":97,"in_reply_to":"fa32b979_302b9f32","updated":"2015-06-15 06:20:10.000000000","message":"the described behavior doesn\u0027t tries to change nova api entry point, it only checks that used(it\u0027s active) nova api entry point is v2.1.","commit_id":"3d1290fc3a3e5941bca5a918a4493b385ad82263"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"4fb00ab41be3f0b1734ecb03bc1819c0f4cc97bd","unresolved":false,"context_lines":[{"line_number":96,"context_line":"  API versions [4]."},{"line_number":97,"context_line":"* The client filters version by \"CURRENT\" status and \"2.1\" id."},{"line_number":98,"context_line":"* The client informs the user that it cannot communicate to Nova using that"},{"line_number":99,"context_line":"  microversion and exits."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Use Case 3B: New Client communicating with Nova V2.0 (user-specified)"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa32b979_f06f7790","line":99,"updated":"2015-06-15 00:39:15.000000000","message":"The user doesn\u0027t specify the microversion, so I feel it is enough that Nova works as default(minimum) microversion. Why here needs to error out?","commit_id":"3d1290fc3a3e5941bca5a918a4493b385ad82263"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"df33050170b27b75c4d97c0f34624e37afd18d63","unresolved":false,"context_lines":[{"line_number":96,"context_line":"  API versions [4]."},{"line_number":97,"context_line":"* The client filters version by \"CURRENT\" status and \"2.1\" id."},{"line_number":98,"context_line":"* The client informs the user that it cannot communicate to Nova using that"},{"line_number":99,"context_line":"  microversion and exits."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Use Case 3B: New Client communicating with Nova V2.0 (user-specified)"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa32b979_6125d4a9","line":99,"in_reply_to":"fa32b979_f06f7790","updated":"2015-06-15 06:20:10.000000000","message":"Please, read section \"New Client Default Version\" at L353. The default version is changed to latest(maximum)","commit_id":"3d1290fc3a3e5941bca5a918a4493b385ad82263"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"ce67294b9fdbab9f5dcbaf7a99849f525d910ea1","unresolved":false,"context_lines":[{"line_number":247,"context_line":"extensions, use correct command parsers and etc)."},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"If user specify compute-api-version as \u0027None\u0027, client should use default major"},{"line_number":250,"context_line":"API version without microversion."},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"Help message should display all variations of commands, sub-commands and their"},{"line_number":253,"context_line":"options with information about supported versions(min and max)."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_9b829f51","line":250,"updated":"2015-06-12 16:54:42.000000000","message":"-1. This is where I believe things are incorrect. By default the CLI should use the most recent available version that it can. I\u0027m fine with the user being able to specify an older version, but the CLI default should be as far foward as possible.","commit_id":"3d1290fc3a3e5941bca5a918a4493b385ad82263"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"f402b0aa459c5741a1fb6892e99ef216f8d28f64","unresolved":false,"context_lines":[{"line_number":247,"context_line":"extensions, use correct command parsers and etc)."},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"If user specify compute-api-version as \u0027None\u0027, client should use default major"},{"line_number":250,"context_line":"API version without microversion."},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"Help message should display all variations of commands, sub-commands and their"},{"line_number":253,"context_line":"options with information about supported versions(min and max)."}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa32b979_3eeda28b","line":250,"in_reply_to":"1af86dd1_9b829f51","updated":"2015-06-15 12:01:18.000000000","message":"This sentence is extended.","commit_id":"3d1290fc3a3e5941bca5a918a4493b385ad82263"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"c61203e2c78f74511728978f4a19143c485e2722","unresolved":false,"context_lines":[{"line_number":247,"context_line":"extensions, use correct command parsers and etc)."},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"If user specify compute-api-version as \u0027None\u0027, client should use default major"},{"line_number":250,"context_line":"API version without microversion."},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"Help message should display all variations of commands, sub-commands and their"},{"line_number":253,"context_line":"options with information about supported versions(min and max)."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_5c5add84","line":250,"in_reply_to":"1af86dd1_9b829f51","updated":"2015-06-12 18:11:29.000000000","message":"This topic was discussed in mailing - http://lists.openstack.org/pipermail/openstack-dev/2015-April/062511.html\n\nExcerpt:\n\n\u003e \u003e\u0027--os-compute-version\u003dNone\u0027 can be supported, that means will return the\n\u003e min version of server supported.\n\u003e\n\u003e From my point of view \u0027--os-compute-version\u003dNone\u0027 is equal to not\n\u003e specified value. Maybe, it would be better to accept value \"min\" for\n\u003e os-compute-version option.\n\u003e\n\nI think \u0027--os-compute-version\u003dNone\u0027 means not specified version request\nheader when send api request to server. The server behavior is if there\nisn\u0027t value specified, the min version will be used.","commit_id":"3d1290fc3a3e5941bca5a918a4493b385ad82263"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"355ca8191dc3c50d4b98bad2c95509c10a18fc54","unresolved":false,"context_lines":[{"line_number":247,"context_line":"extensions, use correct command parsers and etc)."},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"If user specify compute-api-version as \u0027None\u0027, client should use default major"},{"line_number":250,"context_line":"API version without microversion."},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"Help message should display all variations of commands, sub-commands and their"},{"line_number":253,"context_line":"options with information about supported versions(min and max)."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_017522ca","line":250,"in_reply_to":"1af86dd1_9b829f51","updated":"2015-06-12 17:51:43.000000000","message":"You understand this statement incorrect, so I should rewrite it. If user specify --compute-api-version\u003dNone , it means that user doesn\u0027t want to use microversion and non-specified compute-api-version means that client should use default version, which is latest one.","commit_id":"3d1290fc3a3e5941bca5a918a4493b385ad82263"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"ce67294b9fdbab9f5dcbaf7a99849f525d910ea1","unresolved":false,"context_lines":[{"line_number":253,"context_line":"options with information about supported versions(min and max)."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Since cloud can have several entry points of Nova API(v2, v2.1), it would be"},{"line_number":256,"context_line":"nice to mention here:"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"* ``nova version-list`` cmd displays all entry points and supported"},{"line_number":259,"context_line":"  microversions(min and max);"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_f022d2b8","line":256,"updated":"2015-06-12 16:54:42.000000000","message":"entry points means something specific in python land, lets change this to be \u0027service catalog entries\u0027 or \u0027major version urls\u0027","commit_id":"3d1290fc3a3e5941bca5a918a4493b385ad82263"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"f402b0aa459c5741a1fb6892e99ef216f8d28f64","unresolved":false,"context_lines":[{"line_number":253,"context_line":"options with information about supported versions(min and max)."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Since cloud can have several entry points of Nova API(v2, v2.1), it would be"},{"line_number":256,"context_line":"nice to mention here:"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"* ``nova version-list`` cmd displays all entry points and supported"},{"line_number":259,"context_line":"  microversions(min and max);"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa32b979_be90d2ed","line":256,"in_reply_to":"1af86dd1_f022d2b8","updated":"2015-06-15 12:01:18.000000000","message":"Done","commit_id":"3d1290fc3a3e5941bca5a918a4493b385ad82263"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"c61203e2c78f74511728978f4a19143c485e2722","unresolved":false,"context_lines":[{"line_number":253,"context_line":"options with information about supported versions(min and max)."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Since cloud can have several entry points of Nova API(v2, v2.1), it would be"},{"line_number":256,"context_line":"nice to mention here:"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"* ``nova version-list`` cmd displays all entry points and supported"},{"line_number":259,"context_line":"  microversions(min and max);"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_1c55854f","line":256,"in_reply_to":"1af86dd1_f022d2b8","updated":"2015-06-12 18:11:29.000000000","message":"ok, will change","commit_id":"3d1290fc3a3e5941bca5a918a4493b385ad82263"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"ce67294b9fdbab9f5dcbaf7a99849f525d910ea1","unresolved":false,"context_lines":[{"line_number":282,"context_line":""},{"line_number":283,"context_line":"If microversion is specified, client should add special header"},{"line_number":284,"context_line":"X-OpenStack-Nova-API-Version to each call and validate response includes"},{"line_number":285,"context_line":"equal header too, which means API side supports microversions."},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"python-novaclient from developer side of view : adding new microverions"},{"line_number":288,"context_line":"-----------------------------------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_b0d8da1e","line":285,"updated":"2015-06-12 16:54:42.000000000","message":"+1 - Agree with the python lib piece.","commit_id":"3d1290fc3a3e5941bca5a918a4493b385ad82263"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"5a11c3c39145d24df5e3c976c20ec703ea765b4b","unresolved":false,"context_lines":[{"line_number":355,"context_line":"The default microversion should be changed to \u0027latest\u0027. The goal of this"},{"line_number":356,"context_line":"requirement is for python-novaclient / Nova communication to \"just work\" for"},{"line_number":357,"context_line":"the user, and if possible, to use the most recent version of the REST API"},{"line_number":358,"context_line":"possible, so that the user is able to make use of the latest functionality."},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"Alternatives"},{"line_number":361,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa32b979_41b6908b","line":358,"updated":"2015-06-15 06:43:06.000000000","message":"-1 for changing the default microversion to \"latest\".\n\nCurrent microversion supports backwards incompatible changes. So if changing the default to \"latest\", that means novaclient can be broken when backwards incompatible change happen on nova side and the change of novaclient is not implemented yet.\n\nIn addition, we need to consider the situation the old novaclient keep existing on user side and cloud environment continue updating.\nIn this case, the microversion of nova continue increasing and user application cannot work if the default value is \"latest\".\n\n\"latest\" is just for development, so I don\u0027t think we need to recommend it as the default value.","commit_id":"3d1290fc3a3e5941bca5a918a4493b385ad82263"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"2c3730e7a94a2864c45fef89102dd892365d61d5","unresolved":false,"context_lines":[{"line_number":355,"context_line":"The default microversion should be changed to \u0027latest\u0027. The goal of this"},{"line_number":356,"context_line":"requirement is for python-novaclient / Nova communication to \"just work\" for"},{"line_number":357,"context_line":"the user, and if possible, to use the most recent version of the REST API"},{"line_number":358,"context_line":"possible, so that the user is able to make use of the latest functionality."},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"Alternatives"},{"line_number":361,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa32b979_33007e34","line":358,"in_reply_to":"fa32b979_41b6908b","updated":"2015-06-15 09:43:43.000000000","message":"\u003ethat means novaclient can be broken when backwards incompatible change happen on nova side and the change of novaclient is not implemented yet.\n\nnovaclient will not send \"latest\" value at header in any situations.\nPlease, pay attention at L279-281 .\n\n\u003e user application cannot work if the default value is \"latest\".\n\nuser application uses python-novaclient as a lib. novaclient.client.Client[1][2] doesn\u0027t have default value of version, so user applications must use specified version. All existing implementation will be not broken. novaclient.client.Client is designed in backward compatible way. Please, read L268-274\n\n[1] - master: https://github.com/openstack/python-novaclient/blob/master/novaclient/client.py#L808\n[2] - proposed implementation: https://review.openstack.org/#/c/152569/34/novaclient/client.py","commit_id":"3d1290fc3a3e5941bca5a918a4493b385ad82263"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"35adfcce93b3294333f1535387af2980a52c2ccf","unresolved":false,"context_lines":[{"line_number":355,"context_line":"The default microversion should be changed to \u0027latest\u0027. The goal of this"},{"line_number":356,"context_line":"requirement is for python-novaclient / Nova communication to \"just work\" for"},{"line_number":357,"context_line":"the user, and if possible, to use the most recent version of the REST API"},{"line_number":358,"context_line":"possible, so that the user is able to make use of the latest functionality."},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"Alternatives"},{"line_number":361,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa32b979_87e9081d","line":358,"in_reply_to":"fa32b979_41b6908b","updated":"2015-06-15 07:23:38.000000000","message":"I agree with Ken\u0027ichi.","commit_id":"3d1290fc3a3e5941bca5a918a4493b385ad82263"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"3d00e27b3676bc6dac689143cc52bbd37ee804f2","unresolved":false,"context_lines":[{"line_number":355,"context_line":"The default microversion should be changed to \u0027latest\u0027. The goal of this"},{"line_number":356,"context_line":"requirement is for python-novaclient / Nova communication to \"just work\" for"},{"line_number":357,"context_line":"the user, and if possible, to use the most recent version of the REST API"},{"line_number":358,"context_line":"possible, so that the user is able to make use of the latest functionality."},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"Alternatives"},{"line_number":361,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa32b979_8a646122","line":358,"in_reply_to":"fa32b979_41b6908b","updated":"2015-06-16 16:01:53.000000000","message":"this section is moved to subsection of \u0027python-novaclient as CLI tool\u0027 at latest patch-set, since it relates only to CLI part","commit_id":"3d1290fc3a3e5941bca5a918a4493b385ad82263"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"c1a54f745ada1412dcde039794c5e8a2b5bb6590","unresolved":false,"context_lines":[{"line_number":94,"context_line":"* The client makes a connection to Nova and ask supported API versions."},{"line_number":95,"context_line":"* Nova doesn\u0027t look for, or parse the HTTP header. It just return json with"},{"line_number":96,"context_line":"  API versions [4]."},{"line_number":97,"context_line":"* The client filters version by \"CURRENT\" status and \"2.1\" id."},{"line_number":98,"context_line":"* The client informs the user that it cannot communicate to Nova using that"},{"line_number":99,"context_line":"  microversion and exits."},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa32b979_02735b4e","line":97,"updated":"2015-06-16 15:01:37.000000000","message":"\u003eThe client filters version by \"CURRENT\" status and \"2.1\" id.\n\nit is wrong way","commit_id":"2532df41fff3a41061cf3637fbd870f70ef0f626"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"c1a54f745ada1412dcde039794c5e8a2b5bb6590","unresolved":false,"context_lines":[{"line_number":247,"context_line":"extensions, use correct command parsers and etc)."},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"If user specify compute-api-version as \u0027None\u0027(it means"},{"line_number":250,"context_line":"--compute-api-version\u003d\"None\", which is different from not-specified"},{"line_number":251,"context_line":"compute-api-version), client should use default major API version without"},{"line_number":252,"context_line":"microversion."},{"line_number":253,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa32b979_36ad8931","line":250,"updated":"2015-06-16 15:01:37.000000000","message":"s/--compute-api-version/--os-compute-api-version","commit_id":"2532df41fff3a41061cf3637fbd870f70ef0f626"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"00a0bb14ba66f052d598de796d007d9c73caa345","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"For Nova API, if no HTTP header is supplied, v2.1 (stable/kilo) of the API is"},{"line_number":33,"context_line":"used. If an invalid version is specified in the HTTP header, an HTTP 406 Not"},{"line_number":34,"context_line":"Acceptable is returned with an indication of the supported range of"},{"line_number":35,"context_line":"versions. If the special \u0027latest\u0027 version is specified, Nova will use"},{"line_number":36,"context_line":"its most recent version."},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa32b979_46af70e3","line":34,"updated":"2015-06-22 06:53:07.000000000","message":"Exactly to say we return 406, but we don\u0027t have supported range of versions. The range includes in the error message, but it isn\u0027t good for client to parse. \n\nFor example, the output as below:\n\nX-Openstack-Nova-Api-Version: 2.10\nVary: X-OpenStack-Nova-API-Version\nContent-Length: 122\nContent-Type: application/json; charset\u003dUTF-8\nX-Compute-Request-Id: req-fb6e1b5c-4bf8-460e-b845-090ca20777f6\nDate: Mon, 22 Jun 2015 00:54:33 GMT\n\n{\"computeFault\": {\"message\": \"Version 2.10 is not supported by the API. Minimum is 2.1 and maximum is 2.4.\", \"code\": 406}}","commit_id":"e40746c0a5348d0533c0322fc6a70be796c567da"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7458ee3c0386914195ebdedd7a407cff90e85896","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"For Nova API, if no HTTP header is supplied, v2.1 (stable/kilo) of the API is"},{"line_number":33,"context_line":"used. If an invalid version is specified in the HTTP header, an HTTP 406 Not"},{"line_number":34,"context_line":"Acceptable is returned with an indication of the supported range of"},{"line_number":35,"context_line":"versions. If the special \u0027latest\u0027 version is specified, Nova will use"},{"line_number":36,"context_line":"its most recent version."},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa32b979_d4f47cd0","line":34,"in_reply_to":"fa32b979_46af70e3","updated":"2015-06-22 12:56:29.000000000","message":"thanks a lot. fixed.","commit_id":"e40746c0a5348d0533c0322fc6a70be796c567da"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"00a0bb14ba66f052d598de796d007d9c73caa345","unresolved":false,"context_lines":[{"line_number":89,"context_line":"Nova."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"* The user does not specify the microversion to use in communication with"},{"line_number":92,"context_line":"  the client.  Consequentally, the client attempts to use the latest"},{"line_number":93,"context_line":"  microversion."},{"line_number":94,"context_line":"* The client makes a connection to Nova and ask supported API versions."},{"line_number":95,"context_line":"* Nova doesn\u0027t look for, or parse the HTTP header. It just return json with"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa32b979_e686c464","line":92,"updated":"2015-06-22 06:53:07.000000000","message":"s/Consequentally/consequentially?","commit_id":"e40746c0a5348d0533c0322fc6a70be796c567da"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7458ee3c0386914195ebdedd7a407cff90e85896","unresolved":false,"context_lines":[{"line_number":89,"context_line":"Nova."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"* The user does not specify the microversion to use in communication with"},{"line_number":92,"context_line":"  the client.  Consequentally, the client attempts to use the latest"},{"line_number":93,"context_line":"  microversion."},{"line_number":94,"context_line":"* The client makes a connection to Nova and ask supported API versions."},{"line_number":95,"context_line":"* Nova doesn\u0027t look for, or parse the HTTP header. It just return json with"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa32b979_34d3683a","line":92,"in_reply_to":"fa32b979_e686c464","updated":"2015-06-22 12:56:29.000000000","message":"Consequently","commit_id":"e40746c0a5348d0533c0322fc6a70be796c567da"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"00a0bb14ba66f052d598de796d007d9c73caa345","unresolved":false,"context_lines":[{"line_number":91,"context_line":"* The user does not specify the microversion to use in communication with"},{"line_number":92,"context_line":"  the client.  Consequentally, the client attempts to use the latest"},{"line_number":93,"context_line":"  microversion."},{"line_number":94,"context_line":"* The client makes a connection to Nova and ask supported API versions."},{"line_number":95,"context_line":"* Nova doesn\u0027t look for, or parse the HTTP header. It just return json with"},{"line_number":96,"context_line":"  API versions [4]."},{"line_number":97,"context_line":"* The client checks versions info, informs the user that it cannot"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa32b979_06908894","line":94,"updated":"2015-06-22 06:53:07.000000000","message":"you mean client ask supported API versions by Version API: https://github.com/openstack/nova/blob/master/doc/api_samples/versions/versions-get-resp.json ?","commit_id":"e40746c0a5348d0533c0322fc6a70be796c567da"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7458ee3c0386914195ebdedd7a407cff90e85896","unresolved":false,"context_lines":[{"line_number":91,"context_line":"* The user does not specify the microversion to use in communication with"},{"line_number":92,"context_line":"  the client.  Consequentally, the client attempts to use the latest"},{"line_number":93,"context_line":"  microversion."},{"line_number":94,"context_line":"* The client makes a connection to Nova and ask supported API versions."},{"line_number":95,"context_line":"* Nova doesn\u0027t look for, or parse the HTTP header. It just return json with"},{"line_number":96,"context_line":"  API versions [4]."},{"line_number":97,"context_line":"* The client checks versions info, informs the user that it cannot"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa32b979_74c81075","line":94,"in_reply_to":"fa32b979_06908894","updated":"2015-06-22 12:56:29.000000000","message":"yes","commit_id":"e40746c0a5348d0533c0322fc6a70be796c567da"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"00a0bb14ba66f052d598de796d007d9c73caa345","unresolved":false,"context_lines":[{"line_number":93,"context_line":"  microversion."},{"line_number":94,"context_line":"* The client makes a connection to Nova and ask supported API versions."},{"line_number":95,"context_line":"* Nova doesn\u0027t look for, or parse the HTTP header. It just return json with"},{"line_number":96,"context_line":"  API versions [4]."},{"line_number":97,"context_line":"* The client checks versions info, informs the user that it cannot"},{"line_number":98,"context_line":"  communicate to Nova using microversion and exits."},{"line_number":99,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa32b979_1e4b9a2b","line":96,"updated":"2015-06-22 06:53:07.000000000","message":"Do you mean client request to v2 API with \"X-OpenStack-Nova-API-Version\" header. Then server return json with API versions?\n\nThis isn\u0027t current behavior for server side.\n\nThe reference \u0027[4]\u0027 looks like wrong.","commit_id":"e40746c0a5348d0533c0322fc6a70be796c567da"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7458ee3c0386914195ebdedd7a407cff90e85896","unresolved":false,"context_lines":[{"line_number":93,"context_line":"  microversion."},{"line_number":94,"context_line":"* The client makes a connection to Nova and ask supported API versions."},{"line_number":95,"context_line":"* Nova doesn\u0027t look for, or parse the HTTP header. It just return json with"},{"line_number":96,"context_line":"  API versions [4]."},{"line_number":97,"context_line":"* The client checks versions info, informs the user that it cannot"},{"line_number":98,"context_line":"  communicate to Nova using microversion and exits."},{"line_number":99,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa32b979_3404c87c","line":96,"in_reply_to":"fa32b979_1e4b9a2b","updated":"2015-06-22 12:56:29.000000000","message":"\u003eDo you mean client request to v2 API with \"X-OpenStack-Nova-API-Version\" header. \n\nNo. The client doesn\u0027t use any specific header, it discovers API versions and decides that current endpoint doesn\u0027t support microversions and exists.\n\n\u003eThe reference \u0027[4]\u0027 looks like wrong.\n\nyes, it should be [3]","commit_id":"e40746c0a5348d0533c0322fc6a70be796c567da"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"00a0bb14ba66f052d598de796d007d9c73caa345","unresolved":false,"context_lines":[{"line_number":107,"context_line":"* The client makes a connection to Nova V2.0, supplying a"},{"line_number":108,"context_line":"  X-OpenStack-Nova-API-Version HTTP header"},{"line_number":109,"context_line":"* Nova doesn\u0027t look for, or parse the HTTP header. It communicates using"},{"line_number":110,"context_line":"  the only API code path it knows about, that being v2.0"},{"line_number":111,"context_line":"* The client does not receive a X-OpenStack-Nova-API-Version header in"},{"line_number":112,"context_line":"  the response, and from that is able to assume that the version of Nova that"},{"line_number":113,"context_line":"  it is talking to does not support microversions. That is, it is using"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa32b979_c6e86019","line":110,"updated":"2015-06-22 06:53:07.000000000","message":"Why 3A didn\u0027t use this way to find out the server didn\u0027t support microversions?","commit_id":"e40746c0a5348d0533c0322fc6a70be796c567da"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7458ee3c0386914195ebdedd7a407cff90e85896","unresolved":false,"context_lines":[{"line_number":107,"context_line":"* The client makes a connection to Nova V2.0, supplying a"},{"line_number":108,"context_line":"  X-OpenStack-Nova-API-Version HTTP header"},{"line_number":109,"context_line":"* Nova doesn\u0027t look for, or parse the HTTP header. It communicates using"},{"line_number":110,"context_line":"  the only API code path it knows about, that being v2.0"},{"line_number":111,"context_line":"* The client does not receive a X-OpenStack-Nova-API-Version header in"},{"line_number":112,"context_line":"  the response, and from that is able to assume that the version of Nova that"},{"line_number":113,"context_line":"  it is talking to does not support microversions. That is, it is using"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa32b979_c18919cc","line":110,"in_reply_to":"fa32b979_c6e86019","updated":"2015-06-22 12:56:29.000000000","message":"Because 3A uses standard way for \"latest\" label :)","commit_id":"e40746c0a5348d0533c0322fc6a70be796c567da"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"00a0bb14ba66f052d598de796d007d9c73caa345","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"  ^([1-9]\\d*)\\.([1-9]\\d*|0|latest)$"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Examples of valid microversion identifier: \u00272.1\u0027, \u00272.10\u0027, \u00272.latest\u0027, \u00272.0\u0027..."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Use Case 5: New Client/Nova V2.1: Unsupported Nova version"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa32b979_e6cb241d","line":159,"updated":"2015-06-22 06:53:07.000000000","message":"I\u0027m not sure we should support \u00272.latest\u0027. We may bump major version in the future...although it isn\u0027t foreseeable.","commit_id":"e40746c0a5348d0533c0322fc6a70be796c567da"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7458ee3c0386914195ebdedd7a407cff90e85896","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"  ^([1-9]\\d*)\\.([1-9]\\d*|0|latest)$"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Examples of valid microversion identifier: \u00272.1\u0027, \u00272.10\u0027, \u00272.latest\u0027, \u00272.0\u0027..."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Use Case 5: New Client/Nova V2.1: Unsupported Nova version"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa32b979_cf4f05bd","line":159,"in_reply_to":"fa32b979_e6cb241d","updated":"2015-06-22 12:56:29.000000000","message":"\u0027X.latest\u0027 is used only to determine which API should be used on client side, so users will be able to select latest microversion of V2 or V3 using one client.","commit_id":"e40746c0a5348d0533c0322fc6a70be796c567da"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"00a0bb14ba66f052d598de796d007d9c73caa345","unresolved":false,"context_lines":[{"line_number":168,"context_line":"* The client makes a connection to Nova, supplying 2.6 as the requested"},{"line_number":169,"context_line":"  microversion."},{"line_number":170,"context_line":"* Nova responds with a 406 Not Acceptable, along with the -Min- and -Max-"},{"line_number":171,"context_line":"  headers that it can support (in this case 2.8 and 2.15)"},{"line_number":172,"context_line":"* As the client does not support a version supported by Nova, it cannot"},{"line_number":173,"context_line":"  continue and reports such to the user."},{"line_number":174,"context_line":"* (An alternative path would be for the client to try and proceed using a"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa32b979_a6d51cba","line":171,"updated":"2015-06-22 06:53:07.000000000","message":"we didn\u0027t have such headers yet. As nova meeting said, we only use thing we have now.","commit_id":"e40746c0a5348d0533c0322fc6a70be796c567da"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7458ee3c0386914195ebdedd7a407cff90e85896","unresolved":false,"context_lines":[{"line_number":168,"context_line":"* The client makes a connection to Nova, supplying 2.6 as the requested"},{"line_number":169,"context_line":"  microversion."},{"line_number":170,"context_line":"* Nova responds with a 406 Not Acceptable, along with the -Min- and -Max-"},{"line_number":171,"context_line":"  headers that it can support (in this case 2.8 and 2.15)"},{"line_number":172,"context_line":"* As the client does not support a version supported by Nova, it cannot"},{"line_number":173,"context_line":"  continue and reports such to the user."},{"line_number":174,"context_line":"* (An alternative path would be for the client to try and proceed using a"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa32b979_6ffcb93e","line":171,"in_reply_to":"fa32b979_a6d51cba","updated":"2015-06-22 12:56:29.000000000","message":"sorry, will be fixed.","commit_id":"e40746c0a5348d0533c0322fc6a70be796c567da"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"00a0bb14ba66f052d598de796d007d9c73caa345","unresolved":false,"context_lines":[{"line_number":226,"context_line":"Compute API version(in terms of python-novaclient) should be extended to"},{"line_number":227,"context_line":"include major and minor parts of version. It should look like \"X.Y\", where X"},{"line_number":228,"context_line":"is major part and Y is a minor one. Major part can be only numeric and Y can be"},{"line_number":229,"context_line":"numeric or \"latest\"(\"X.latest\" means that client should use latest"},{"line_number":230,"context_line":"microversion of \"X\" API version)."},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"The requested microversion(when it specified) should be used (unless"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa32b979_668634bb","line":229,"updated":"2015-06-22 06:53:07.000000000","message":"I don\u0027t think we should support \u0027X.latest\u0027, it should just \u0027latest\u0027.","commit_id":"e40746c0a5348d0533c0322fc6a70be796c567da"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7458ee3c0386914195ebdedd7a407cff90e85896","unresolved":false,"context_lines":[{"line_number":226,"context_line":"Compute API version(in terms of python-novaclient) should be extended to"},{"line_number":227,"context_line":"include major and minor parts of version. It should look like \"X.Y\", where X"},{"line_number":228,"context_line":"is major part and Y is a minor one. Major part can be only numeric and Y can be"},{"line_number":229,"context_line":"numeric or \"latest\"(\"X.latest\" means that client should use latest"},{"line_number":230,"context_line":"microversion of \"X\" API version)."},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"The requested microversion(when it specified) should be used (unless"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa32b979_cfab851d","line":229,"in_reply_to":"fa32b979_668634bb","updated":"2015-06-22 12:56:29.000000000","message":"What if API side support both V2 and V3? Users will be able to use only latest V3?","commit_id":"e40746c0a5348d0533c0322fc6a70be796c567da"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"00a0bb14ba66f052d598de796d007d9c73caa345","unresolved":false,"context_lines":[{"line_number":231,"context_line":""},{"line_number":232,"context_line":"The requested microversion(when it specified) should be used (unless"},{"line_number":233,"context_line":"the client cannot support that version). This includes \u0027latest\u0027 version which"},{"line_number":234,"context_line":"choice the latest version supported both by client and server sides."},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"python-novaclient as CLI tool"},{"line_number":237,"context_line":"-----------------------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa32b979_66add430","line":234,"updated":"2015-06-22 06:53:07.000000000","message":"Is this \u0027latest\u0027 point to same thing with \u0027X.latest\u0027?","commit_id":"e40746c0a5348d0533c0322fc6a70be796c567da"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7458ee3c0386914195ebdedd7a407cff90e85896","unresolved":false,"context_lines":[{"line_number":231,"context_line":""},{"line_number":232,"context_line":"The requested microversion(when it specified) should be used (unless"},{"line_number":233,"context_line":"the client cannot support that version). This includes \u0027latest\u0027 version which"},{"line_number":234,"context_line":"choice the latest version supported both by client and server sides."},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"python-novaclient as CLI tool"},{"line_number":237,"context_line":"-----------------------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa32b979_8f7c9db6","line":234,"in_reply_to":"fa32b979_66add430","updated":"2015-06-22 12:56:29.000000000","message":"Yes. It is hardcoded now(which may be not the best way) and it is \"2.latest\"","commit_id":"e40746c0a5348d0533c0322fc6a70be796c567da"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"00a0bb14ba66f052d598de796d007d9c73caa345","unresolved":false,"context_lines":[{"line_number":247,"context_line":"If user specify compute-api-version as \u0027None\u0027(it means"},{"line_number":248,"context_line":"--os-compute-api-version\u003d\"None\", which is different from not-specified"},{"line_number":249,"context_line":"compute-api-version), client should use default major API version without"},{"line_number":250,"context_line":"microversion."},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"Help message should display all variations of commands, sub-commands and their"},{"line_number":253,"context_line":"options with information about supported versions(min and max)."}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa32b979_41951a3e","line":250,"updated":"2015-06-22 06:53:07.000000000","message":"how about use \u0027--os-compute-api-version\u0027 for microversion also?","commit_id":"e40746c0a5348d0533c0322fc6a70be796c567da"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7458ee3c0386914195ebdedd7a407cff90e85896","unresolved":false,"context_lines":[{"line_number":247,"context_line":"If user specify compute-api-version as \u0027None\u0027(it means"},{"line_number":248,"context_line":"--os-compute-api-version\u003d\"None\", which is different from not-specified"},{"line_number":249,"context_line":"compute-api-version), client should use default major API version without"},{"line_number":250,"context_line":"microversion."},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"Help message should display all variations of commands, sub-commands and their"},{"line_number":253,"context_line":"options with information about supported versions(min and max)."}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa32b979_ef3a09e7","line":250,"in_reply_to":"fa32b979_41951a3e","updated":"2015-06-22 12:56:29.000000000","message":"L238-241\n\n\u0027--os-compute-api-version\u0027 is used also for microversions.","commit_id":"e40746c0a5348d0533c0322fc6a70be796c567da"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"559114d5fa81d2665729482570df515e23e6d8e4","unresolved":false,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"Checked version should be transmitted to ``novaclient.client.Client`` function."},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"Default Version"},{"line_number":267,"context_line":"~~~~~~~~~~~~~~~"},{"line_number":268,"context_line":"The default microversion should be changed to \u0027latest\u0027. The goal of this"},{"line_number":269,"context_line":"requirement is for python-novaclient / Nova communication to \"just work\" for"},{"line_number":270,"context_line":"the user, and if possible, to use the most recent version of the REST API"},{"line_number":271,"context_line":"possible, so that the user is able to make use of the latest functionality."},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"NOTE: this requirement is True only for python-novaclient as CLI tool, because"},{"line_number":274,"context_line":"python-novaclient as a lib doesn\u0027t have default version and should not have it."},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"python-novaclient as a Python lib (novaclient.client entry point)"},{"line_number":277,"context_line":"-----------------------------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa32b979_9f85ecae","line":274,"range":{"start_line":266,"start_character":0,"end_line":274,"end_character":79},"updated":"2015-06-19 12:16:13.000000000","message":"Great, thank you for this change. This was my major concern before.","commit_id":"e40746c0a5348d0533c0322fc6a70be796c567da"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"47fbeb5ac1344f0bf3d115153e79c06c041c753e","unresolved":false,"context_lines":[{"line_number":271,"context_line":"possible, so that the user is able to make use of the latest functionality."},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"NOTE: this requirement is True only for python-novaclient as CLI tool, because"},{"line_number":274,"context_line":"python-novaclient as a lib doesn\u0027t have default version and should not have it."},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"python-novaclient as a Python lib (novaclient.client entry point)"},{"line_number":277,"context_line":"-----------------------------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa32b979_f301cf6b","line":274,"in_reply_to":"fa32b979_9f85ecae","updated":"2015-06-19 13:41:25.000000000","message":"I agree to provide the latest features as possible. But On Current versioning X.Y, Y contains incompatible changes also and users will face incompatible issues on this default.\nI think users generally make shellscript with CLIs and awk or something. So even if CLIs, incompatible issues happen.\n\nIf Y is only for compatible changes meaning new features, l prefer X.latest as the default. Users can use features without incompatible issues. So current versioning seems difficult to use.","commit_id":"e40746c0a5348d0533c0322fc6a70be796c567da"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"9cf21d1e35b4ea156d4dd61a4f161bf4b9ee6fd7","unresolved":false,"context_lines":[{"line_number":271,"context_line":"possible, so that the user is able to make use of the latest functionality."},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"NOTE: this requirement is True only for python-novaclient as CLI tool, because"},{"line_number":274,"context_line":"python-novaclient as a lib doesn\u0027t have default version and should not have it."},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"python-novaclient as a Python lib (novaclient.client entry point)"},{"line_number":277,"context_line":"-----------------------------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa32b979_3003aa78","line":274,"in_reply_to":"fa32b979_f301cf6b","updated":"2015-06-19 14:11:44.000000000","message":"\u003eI think users generally make shellscript with CLIs and awk or something. \n\nImo, all scripts, which use novaclient(no matter as a lib or as a cli tool), should specify definite value of compute-api-version. \n\nIt doesn\u0027t relate to microversions and \"latest\". Switch from V2 to V3(in feature) will produce the same issues for scripts which doesn\u0027t specify directly compute version.\n\n\u003e l prefer X.latest as the default.\n\nIt already implemented in such way : https://review.openstack.org/#/c/184658/1","commit_id":"e40746c0a5348d0533c0322fc6a70be796c567da"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"00a0bb14ba66f052d598de796d007d9c73caa345","unresolved":false,"context_lines":[{"line_number":298,"context_line":"  \"min_version\" and \"version\" of current version. If current version doesn\u0027t"},{"line_number":299,"context_line":"  support microversions(\"min_version\" and \"version\" are empty), the client"},{"line_number":300,"context_line":"  should raise an exception with this information."},{"line_number":301,"context_line":"* choose latest microversion supported by both novaclient and Nova API."},{"line_number":302,"context_line":""},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"python-novaclient from developer side of view : adding new microverions"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa32b979_03cd8165","line":301,"updated":"2015-06-22 06:53:07.000000000","message":"This sounds we put some version negotiation in api bit.","commit_id":"e40746c0a5348d0533c0322fc6a70be796c567da"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7458ee3c0386914195ebdedd7a407cff90e85896","unresolved":false,"context_lines":[{"line_number":298,"context_line":"  \"min_version\" and \"version\" of current version. If current version doesn\u0027t"},{"line_number":299,"context_line":"  support microversions(\"min_version\" and \"version\" are empty), the client"},{"line_number":300,"context_line":"  should raise an exception with this information."},{"line_number":301,"context_line":"* choose latest microversion supported by both novaclient and Nova API."},{"line_number":302,"context_line":""},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"python-novaclient from developer side of view : adding new microverions"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa32b979_c1ca794f","line":301,"in_reply_to":"fa32b979_03cd8165","updated":"2015-06-22 12:56:29.000000000","message":"No. Changes in client side will be enough:)\n\nSomething like https://review.openstack.org/#/c/184281/2 . This patch includes a little bit wrong check, it checks the name and status of version, but should check href","commit_id":"e40746c0a5348d0533c0322fc6a70be796c567da"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c03943180bd00a2c106628918bf1b3c145cba95d","unresolved":false,"context_lines":[{"line_number":223,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":224,"context_line":"Compute API version(in terms of python-novaclient) should be extended to"},{"line_number":225,"context_line":"include major and minor parts of version. It should look like \"X.Y\", where X"},{"line_number":226,"context_line":"is major part and Y is a minor one. Major part can be only numeric and Y can be"},{"line_number":227,"context_line":"numeric or \"latest\"(\"X.latest\" means that client should use latest"},{"line_number":228,"context_line":"microversion of \"X\" API version)."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"The requested microversion(when it specified) should be used (unless"},{"line_number":231,"context_line":"the client cannot support that version). This includes \u0027latest\u0027 version which"}],"source_content_type":"text/x-rst","patch_set":11,"id":"ba3cc151_0945e66e","line":228,"range":{"start_line":226,"start_character":36,"end_line":228,"end_character":33},"updated":"2015-06-30 14:30:01.000000000","message":"This makes it sound like we\u0027re requesting 2.latest on the wire. From talking in IRC and re-reading the sentence before this, I assume this means that the Python API will take a version option which is used in negotiating what version will actually be spoken over the wire with the server. If that\u0027s right, some more definitive text would be good here to make that clear.","commit_id":"9ab08f14a62b493a3356b6ed48d524ac5f70c048"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"f2b70b71b1bbcdbddc9374ad9dc632f01ba00556","unresolved":false,"context_lines":[{"line_number":225,"context_line":"include major and minor parts of version. It should look like \"X.Y\", where X"},{"line_number":226,"context_line":"is major part and Y is a minor one. Major part can be only numeric and Y can be"},{"line_number":227,"context_line":"numeric or \"latest\"(\"X.latest\" means that client should use latest"},{"line_number":228,"context_line":"microversion of \"X\" API version)."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"The requested microversion(when it specified) should be used (unless"},{"line_number":231,"context_line":"the client cannot support that version). This includes \u0027latest\u0027 version which"}],"source_content_type":"text/x-rst","patch_set":11,"id":"ba3cc151_306da698","line":228,"in_reply_to":"ba3cc151_0945e66e","updated":"2015-06-30 15:21:16.000000000","message":"fixed by adding a link to section about latest and refrasing this section a bit.","commit_id":"9ab08f14a62b493a3356b6ed48d524ac5f70c048"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"1c3d8b930548e4e64265ca9520641bf441e2d748","unresolved":false,"context_lines":[{"line_number":24,"context_line":"available, while also ensuring they don\u0027t break due to incompatibilities."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Microversions are implemented in the API through the addition of a new HTTP"},{"line_number":27,"context_line":"header - specifically \u0027X-OpenStack-Nova-API-Version\u0027.  This header is"},{"line_number":28,"context_line":"accepted by Nova so a client can indicate which version of the API it wants"},{"line_number":29,"context_line":"to use for communication, and likewise for Nova to indicate which version"},{"line_number":30,"context_line":"it is using for communication."}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba3cc151_27ba47c1","line":27,"updated":"2015-06-30 18:48:27.000000000","message":"Two potential issues:\n\n1) The prefix \u0027X-\u0027 is no longer supposed to be used, so this might change\n\n2) There is ongoing discussion about the use of code names (i.e., \u0027Nova\u0027) instead of the generic name (\u0027Compute\u0027). See the thread starting with this message: http://lists.openstack.org/pipermail/openstack-dev/2015-June/066957.html. Note that novaclient CLI uses \u0027--os-compute-api-version\u0027 and not \u0027--os-nova-api-version\u0027.","commit_id":"3b7330d6ca26a4bba5b7acbdf68c8a64511e913f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"c137cfd1104ca981981b7f09d078a6117175f005","unresolved":false,"context_lines":[{"line_number":24,"context_line":"available, while also ensuring they don\u0027t break due to incompatibilities."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Microversions are implemented in the API through the addition of a new HTTP"},{"line_number":27,"context_line":"header - specifically \u0027X-OpenStack-Nova-API-Version\u0027.  This header is"},{"line_number":28,"context_line":"accepted by Nova so a client can indicate which version of the API it wants"},{"line_number":29,"context_line":"to use for communication, and likewise for Nova to indicate which version"},{"line_number":30,"context_line":"it is using for communication."}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba3cc151_a8ecdf8f","line":27,"in_reply_to":"ba3cc151_27ba47c1","updated":"2015-06-30 21:59:39.000000000","message":"I read the thread. Both issues should be resolved at API side.\n\nBtw, since novaclient doesn\u0027t support microversions yet, we can easily change header without any deprecation stuff.","commit_id":"3b7330d6ca26a4bba5b7acbdf68c8a64511e913f"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"8ba4e374bdba26cc91efe4c08663361e1e7e5a5f","unresolved":false,"context_lines":[{"line_number":24,"context_line":"available, while also ensuring they don\u0027t break due to incompatibilities."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Microversions are implemented in the API through the addition of a new HTTP"},{"line_number":27,"context_line":"header - specifically \u0027X-OpenStack-Nova-API-Version\u0027.  This header is"},{"line_number":28,"context_line":"accepted by Nova so a client can indicate which version of the API it wants"},{"line_number":29,"context_line":"to use for communication, and likewise for Nova to indicate which version"},{"line_number":30,"context_line":"it is using for communication."}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba3cc151_2ab19c47","line":27,"in_reply_to":"ba3cc151_5b271864","updated":"2015-07-01 01:38:08.000000000","message":"That discussion didn\u0027t get consistent yet. Our agreement is only depend on what we have now to implement client side.","commit_id":"3b7330d6ca26a4bba5b7acbdf68c8a64511e913f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"add19b143af1a2495ea51e14995cf4c2cdf21458","unresolved":false,"context_lines":[{"line_number":24,"context_line":"available, while also ensuring they don\u0027t break due to incompatibilities."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Microversions are implemented in the API through the addition of a new HTTP"},{"line_number":27,"context_line":"header - specifically \u0027X-OpenStack-Nova-API-Version\u0027.  This header is"},{"line_number":28,"context_line":"accepted by Nova so a client can indicate which version of the API it wants"},{"line_number":29,"context_line":"to use for communication, and likewise for Nova to indicate which version"},{"line_number":30,"context_line":"it is using for communication."}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba3cc151_5b271864","line":27,"in_reply_to":"ba3cc151_a8ecdf8f","updated":"2015-06-30 22:20:52.000000000","message":"No we cannot. We\u0027ve released the API, so it can\u0027t change now. The python novaclient is not the only client of nova.","commit_id":"3b7330d6ca26a4bba5b7acbdf68c8a64511e913f"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"1c3d8b930548e4e64265ca9520641bf441e2d748","unresolved":false,"context_lines":[{"line_number":126,"context_line":"* Nova doesn\u0027t look for, or parse the HTTP header. It communicates using"},{"line_number":127,"context_line":"  the only API code path it knows about, that being v2.0."},{"line_number":128,"context_line":"* The client doesn\u0027t look for, or parse the HTTP header, it knows that"},{"line_number":129,"context_line":"  microversions doens\u0027t used."},{"line_number":130,"context_line":"* The client processes received data, display it to user and exits."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"Another supported way:"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba3cc151_e7869fda","line":129,"updated":"2015-06-30 18:48:27.000000000","message":"s/doesns\u0027t/aren\u0027t","commit_id":"3b7330d6ca26a4bba5b7acbdf68c8a64511e913f"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"a61a75078a97caf5d208ac653706c62ede11d0fc","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"A valid microversion identifier must comply with the following regex:"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"  ^([1-9]\\d*)\\.([1-9]\\d*|0|latest)$"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"Examples of valid microversion identifier: \u00272.1\u0027, \u00272.10\u0027, \u00272.latest\u0027, \u00272.0\u0027..."},{"line_number":159,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba3cc151_07de2311","line":156,"updated":"2015-06-30 17:45:13.000000000","message":"Technically, this should be:\n\n ^([2-9]\\d*)\\.([1-9]\\d*|0|latest)$\n\n:)","commit_id":"3b7330d6ca26a4bba5b7acbdf68c8a64511e913f"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"1c3d8b930548e4e64265ca9520641bf441e2d748","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"A valid microversion identifier must comply with the following regex:"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"  ^([1-9]\\d*)\\.([1-9]\\d*|0|latest)$"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"Examples of valid microversion identifier: \u00272.1\u0027, \u00272.10\u0027, \u00272.latest\u0027, \u00272.0\u0027..."},{"line_number":159,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba3cc151_60c0352b","line":156,"in_reply_to":"ba3cc151_07de2311","updated":"2015-06-30 18:48:27.000000000","message":"Nope - version 12.13 is a valid version :)","commit_id":"3b7330d6ca26a4bba5b7acbdf68c8a64511e913f"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"1c3d8b930548e4e64265ca9520641bf441e2d748","unresolved":false,"context_lines":[{"line_number":172,"context_line":"* (An alternative path would be for the client to try and proceed using a"},{"line_number":173,"context_line":"  version acceptable to Nova. Note that in this case the client should be"},{"line_number":174,"context_line":"  able to proceed since any change that would break basic compatibility"},{"line_number":175,"context_line":"  would likely require a major version bump to v3)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"Use Case 6: New Client/Nova V2.1: Unsupported Client version"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba3cc151_67684f88","line":175,"updated":"2015-06-30 18:48:27.000000000","message":"Well, it depends on what you mean by \u0027compatibility\u0027. A microversion bump could add/remove data that was previously returned by a particular method, which could break the application that is using the client. It couls also remove a method altogether. If nova can\u0027t support the requested version, it should simply return 406.","commit_id":"3b7330d6ca26a4bba5b7acbdf68c8a64511e913f"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"1c3d8b930548e4e64265ca9520641bf441e2d748","unresolved":false,"context_lines":[{"line_number":184,"context_line":"Steps are the same as Use Case 5."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"This scenario should not occur in practice as the client should always"},{"line_number":187,"context_line":"be able to talk to any version of Nova."},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Use Case 7: New Client/Nova V2.1: Compatible Version"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba3cc151_25d79f24","line":187,"updated":"2015-06-30 18:48:27.000000000","message":"Are there plans to raise the minimum supported version in novaclient? That doesn\u0027t sound like a very good idea, so this use case not only shouldn\u0027t happen in practice, it shouldn\u0027t be possible.","commit_id":"3b7330d6ca26a4bba5b7acbdf68c8a64511e913f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"c137cfd1104ca981981b7f09d078a6117175f005","unresolved":false,"context_lines":[{"line_number":184,"context_line":"Steps are the same as Use Case 5."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"This scenario should not occur in practice as the client should always"},{"line_number":187,"context_line":"be able to talk to any version of Nova."},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Use Case 7: New Client/Nova V2.1: Compatible Version"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba3cc151_e3a528b5","line":187,"in_reply_to":"ba3cc151_25d79f24","updated":"2015-06-30 21:59:39.000000000","message":"\u003eAre there plans to raise the minimum supported version in novaclient?\n\ngood point. It relates to all cases when NotAcceptable exceptions is returned from API-side. The client can handle it and discover(make extra call to APi side) what versions are supported.","commit_id":"3b7330d6ca26a4bba5b7acbdf68c8a64511e913f"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"1c3d8b930548e4e64265ca9520641bf441e2d748","unresolved":false,"context_lines":[{"line_number":322,"context_line":""},{"line_number":323,"context_line":"NOTE: To decrease number of extra calls, the client should cache discovered"},{"line_number":324,"context_line":"versions. Since different methods/API calls can have different \"latest\""},{"line_number":325,"context_line":"versions, each discovered versions should be cached with related method."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"python-novaclient from developer side of view : adding new microverions"},{"line_number":328,"context_line":"-----------------------------------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba3cc151_2051cd0e","line":325,"updated":"2015-06-30 18:48:27.000000000","message":"This could be clearer. The methods in the API will all be at the same version, but the methods in the client that call them can have different versions.","commit_id":"3b7330d6ca26a4bba5b7acbdf68c8a64511e913f"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"fd32bf2ff9b96f569bfe07df84e2485b2db2bff0","unresolved":false,"context_lines":[{"line_number":322,"context_line":""},{"line_number":323,"context_line":"NOTE: To decrease number of extra calls, the client should cache discovered"},{"line_number":324,"context_line":"versions. Since different methods/API calls can have different \"latest\""},{"line_number":325,"context_line":"versions, each discovered versions should be cached with related method."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"python-novaclient from developer side of view : adding new microverions"},{"line_number":328,"context_line":"-----------------------------------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba3cc151_accb851d","line":325,"in_reply_to":"ba3cc151_2051cd0e","updated":"2015-07-01 05:01:33.000000000","message":"The microversions is a global version of API, not for single one.\n\nAfter quick look the implementation https://review.openstack.org/#/c/184281/6/novaclient/api_versions.py\n\nYou detective version for each method. I think we just need detective version for global","commit_id":"3b7330d6ca26a4bba5b7acbdf68c8a64511e913f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"9c369a077fa4e0c9c36903ec62f884d3c64ef638","unresolved":false,"context_lines":[{"line_number":322,"context_line":""},{"line_number":323,"context_line":"NOTE: To decrease number of extra calls, the client should cache discovered"},{"line_number":324,"context_line":"versions. Since different methods/API calls can have different \"latest\""},{"line_number":325,"context_line":"versions, each discovered versions should be cached with related method."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"python-novaclient from developer side of view : adding new microverions"},{"line_number":328,"context_line":"-----------------------------------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba3cc151_9691dcf3","line":325,"in_reply_to":"ba3cc151_accb851d","updated":"2015-07-01 11:49:14.000000000","message":"@Alex:\nSituation:\n\n * both nova and novaclient support microversion N\n * user specifies \"latest\" microversion\n * user calls method client.servers.some_old_method \n   (novaclient.v2.servers.ServerManager.some_old_method), which was \n   deprecated in nova N-2\n * client should not use N microversion, which are global latest version for \n   nova and novaclient, client should use N-2, which is latest supported \n   version for client.servers.some_old_method\n\nif we use \"global latest\" version for such situations, client will fail.","commit_id":"3b7330d6ca26a4bba5b7acbdf68c8a64511e913f"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"1c3d8b930548e4e64265ca9520641bf441e2d748","unresolved":false,"context_lines":[{"line_number":338,"context_line":"  class SomeResourceManager(base.Manager)"},{"line_number":339,"context_line":"      @api_version(min_version\u003d\u00272.0\u0027)"},{"line_number":340,"context_line":"      def show(self, req, id):"},{"line_number":341,"context_line":"          pass"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"      @api_versions.wrap(start_version\u003d\u00272.2\u0027, end_version\u003d\u00272.8\u0027)"},{"line_number":344,"context_line":"      def show(self, req, id):"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba3cc151_804c5943","line":341,"updated":"2015-06-30 18:48:27.000000000","message":"Instead of \u0027pass\u0027, it might be more illustrative to use:\n\n  return \"I\u0027m version 2.0\"\n\nor\n\n  return \"I\u0027m versions 2.2-2.8\"\n\nso that the reader understands that the methods do something different for different versions.","commit_id":"3b7330d6ca26a4bba5b7acbdf68c8a64511e913f"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"1c3d8b930548e4e64265ca9520641bf441e2d748","unresolved":false,"context_lines":[{"line_number":396,"context_line":"result in would be a group of large changes happening simultaneously, resulting"},{"line_number":397,"context_line":"in unpaired server/client versions not being compatible at all. It would also"},{"line_number":398,"context_line":"result in less frequent, but larger incompatible API changes. And nobody wants"},{"line_number":399,"context_line":"that."},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"Data model impact"},{"line_number":402,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba3cc151_e029a538","line":399,"updated":"2015-06-30 18:48:27.000000000","message":"That\u0027s not really an alternative. Microversions exist in Nova\u0027, and this spec is considering how to support them. An alternative would be something like: \"always send the latest version, and let the client sort it out\", or something like that.","commit_id":"3b7330d6ca26a4bba5b7acbdf68c8a64511e913f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"4ba8acb8d8dee2f122898cf70bd81e71ccc5e2a3","unresolved":false,"context_lines":[{"line_number":405,"context_line":"REST API impact"},{"line_number":406,"context_line":"---------------"},{"line_number":407,"context_line":"As described above, a new HTTP header would be accepted, and returned by"},{"line_number":408,"context_line":"Nova."},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"If a client chose to use that header to request a specific version, Nova"},{"line_number":411,"context_line":"would respond, either accepting the requested version for future communication,"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba3cc151_d4a54704","line":408,"updated":"2015-06-30 17:18:22.000000000","message":"This is already in place, so no change to Nova. You mean this to apply to novaclient, right?","commit_id":"3b7330d6ca26a4bba5b7acbdf68c8a64511e913f"},{"author":{"_account_id":6681,"name":"Brent Eagles","email":"beagles@redhat.com","username":"beagles"},"change_message_id":"c9f337eda4ef346608cb303e1e6e4e6c361d3280","unresolved":false,"context_lines":[{"line_number":427,"context_line":"---------------------"},{"line_number":428,"context_line":"Clients that wish to use new features available over the REST API added since"},{"line_number":429,"context_line":"the \u0027Kilo\u0027 release will need to start using this HTTP header.  The fact that"},{"line_number":430,"context_line":"new features will only be added in new versions will encourage them to do so."},{"line_number":431,"context_line":""},{"line_number":432,"context_line":"Performance Impact"},{"line_number":433,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba3cc151_c0e8217f","line":430,"updated":"2015-06-30 19:06:41.000000000","message":"stupid nit: added vs available or accessible from the client perspective, maybe?","commit_id":"3b7330d6ca26a4bba5b7acbdf68c8a64511e913f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"4ba8acb8d8dee2f122898cf70bd81e71ccc5e2a3","unresolved":false,"context_lines":[{"line_number":441,"context_line":"----------------"},{"line_number":442,"context_line":"Any future changes to Nova\u0027s REST API (whether that be in the request or"},{"line_number":443,"context_line":"any response) *must* result in a microversion update, and guarded in the code"},{"line_number":444,"context_line":"appropriately."},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"Implementation"},{"line_number":447,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba3cc151_3486f365","line":444,"updated":"2015-06-30 17:18:22.000000000","message":"This is really already in place and irrelevant to this client-side spec, IMHO.","commit_id":"3b7330d6ca26a4bba5b7acbdf68c8a64511e913f"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a52692fc670161a226d9adaf31e3f02ce63d0bf2","unresolved":false,"context_lines":[{"line_number":441,"context_line":"----------------"},{"line_number":442,"context_line":"Any future changes to Nova\u0027s REST API (whether that be in the request or"},{"line_number":443,"context_line":"any response) *must* result in a microversion update, and guarded in the code"},{"line_number":444,"context_line":"appropriately."},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"Implementation"},{"line_number":447,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba3cc151_d96f9729","line":444,"in_reply_to":"ba3cc151_3486f365","updated":"2015-07-01 11:59:24.000000000","message":"+1","commit_id":"3b7330d6ca26a4bba5b7acbdf68c8a64511e913f"}]}
