)]}'
{"id":"openstack%2Fpython-cinderclient~402200","triplet_id":"openstack%2Fpython-cinderclient~master~I2e315b19adae4aae39c0a6005a0dda41e50b9682","project":"openstack/python-cinderclient","branch":"master","topic":"bp/s","hashtags":[],"change_id":"I2e315b19adae4aae39c0a6005a0dda41e50b9682","subject":"inder Client Automatic Microversion Selection","status":"ABANDONED","created":"2016-11-24 19:14:15.000000000","updated":"2017-03-09 21:29:16.000000000","total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"e0502d7b0e79447f092972c37e23e477536c9ebf","_number":402200,"virtual_id_number":402200,"owner":{"_account_id":22227,"name":"Justin A Wilson","email":"justin.wilson@intel.com","username":"waj334"},"actions":{},"labels":{"Verified":{"disliked":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"all":[{"date":"2017-01-20 16:44:16.000000000","_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},{"date":"2017-01-25 21:24:53.000000000","_account_id":22227,"name":"Justin A Wilson","email":"justin.wilson@intel.com","username":"waj334"},{"value":-1,"date":"2016-12-14 20:12:35.000000000","_account_id":3,"name":"Jenkins","username":"jenkins"},{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","value":-1,"default_value":0,"optional":true},"Code-Review":{"rejected":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"all":[{"value":0,"permitted_voting_range":{"min":-2,"max":2},"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":22227,"name":"Justin A Wilson","email":"justin.wilson@intel.com","username":"waj334"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":-2,"date":"2016-12-14 19:08:46.000000000","permitted_voting_range":{"min":-1,"max":1},"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},{"value":0,"permitted_voting_range":{"min":-1,"max":0},"_account_id":22227,"name":"Justin A Wilson","email":"justin.wilson@intel.com","username":"waj334"},{"_account_id":3,"name":"Jenkins","username":"jenkins"},{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Review-Priority":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":2},"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},{"_account_id":22227,"name":"Justin A Wilson","email":"justin.wilson@intel.com","username":"waj334"},{"_account_id":3,"name":"Jenkins","username":"jenkins"},{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"}],"values":{"-1":"Branch Freeze"," 0":"No Priority","+1":"Important Change","+2":"Gate Blocker Fix / Urgent Change"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":3,"name":"Jenkins","username":"jenkins"},{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},{"_account_id":22227,"name":"Justin A Wilson","email":"justin.wilson@intel.com","username":"waj334"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2016-12-13 23:38:14.000000000","updated_by":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"reviewer":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"state":"REVIEWER"},{"updated":"2016-12-14 20:12:35.000000000","updated_by":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"reviewer":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"state":"REVIEWER"},{"updated":"2017-01-20 16:44:16.000000000","updated_by":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"reviewer":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"state":"REVIEWER"}],"messages":[{"id":"8dab251a0b1ace031ff7f4320942f4e1153d2124","author":{"_account_id":22227,"name":"Justin A Wilson","email":"justin.wilson@intel.com","username":"waj334"},"date":"2016-11-24 19:14:15.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"7462d64fc4c48519bcd36e43bab5a9672254ef60","author":{"_account_id":22227,"name":"Justin A Wilson","email":"justin.wilson@intel.com","username":"waj334"},"date":"2016-11-24 19:15:28.000000000","message":"Patch Set 1: Workflow-1\n\nMore changes are needed","accounts_in_message":[],"_revision_number":1},{"id":"d9c1e6816a54e5b83e195d3349b4725fc73e1687","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-11-24 19:59:49.000000000","message":"Patch Set 1: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see http://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n- gate-python-cinderclient-docs-ubuntu-xenial http://docs-draft.openstack.org/00/402200/1/check/gate-python-cinderclient-docs-ubuntu-xenial/b20fc0d//doc/build/html/ : SUCCESS in 2m 06s\n- gate-python-cinderclient-pep8-ubuntu-xenial http://logs.openstack.org/00/402200/1/check/gate-python-cinderclient-pep8-ubuntu-xenial/df1732d/ : SUCCESS in 2m 27s\n- gate-python-cinderclient-python27-ubuntu-xenial http://logs.openstack.org/00/402200/1/check/gate-python-cinderclient-python27-ubuntu-xenial/7a3820a/ : FAILURE in 2m 06s\n- gate-python-cinderclient-python34 http://logs.openstack.org/00/402200/1/check/gate-python-cinderclient-python34/44e4196/ : FAILURE in 2m 10s\n- gate-python-cinderclient-python35-nv http://logs.openstack.org/00/402200/1/check/gate-python-cinderclient-python35-nv/654a4db/ : FAILURE in 1m 58s (non-voting)\n- gate-tempest-dsvm-neutron-src-python-cinderclient http://logs.openstack.org/00/402200/1/check/gate-tempest-dsvm-neutron-src-python-cinderclient/42f2af3/ : SUCCESS in 45m 16s\n- gate-python-cinderclient-pypy http://logs.openstack.org/00/402200/1/check/gate-python-cinderclient-pypy/459f1bb/ : FAILURE in 3m 16s (non-voting)\n- gate-cinderclient-dsvm-functional http://logs.openstack.org/00/402200/1/check/gate-cinderclient-dsvm-functional/8062aa3/ : SUCCESS in 27m 04s (non-voting)\n- gate-cinderclient-dsvm-functional-identity-v3-only-nv http://logs.openstack.org/00/402200/1/check/gate-cinderclient-dsvm-functional-identity-v3-only-nv/483d715/ : SUCCESS in 16m 35s (non-voting)\n- gate-python-cinderclient-pylint http://logs.openstack.org/00/402200/1/check/gate-python-cinderclient-pylint/4bfae41/ : FAILURE in 1m 53s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"06d098e80013d89c41f06323283bd8c05b88ca4b","author":{"_account_id":22227,"name":"Justin A Wilson","email":"justin.wilson@intel.com","username":"waj334"},"date":"2016-12-13 23:15:15.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"a93ab950003a0784ed9ac872901f9d18130fac3d","author":{"_account_id":22227,"name":"Justin A Wilson","email":"justin.wilson@intel.com","username":"waj334"},"date":"2016-12-13 23:23:34.000000000","message":"Patch Set 3: Published edit on patch set 2","accounts_in_message":[],"_revision_number":3},{"id":"a50af46966a197bfb97a0be477eeed7b93c3292f","author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"date":"2016-12-13 23:38:14.000000000","message":"Patch Set 3: Code-Review-2\n\nWe\u0027ll want to use api_versions.py discover_version to negotiate the highest version available for both client and server.\nYou can look at manilaclient for an example of how this is used.\nYour code sets the api version to the highest supported by the server, which is incorrect.\nPlease use the existing code.","accounts_in_message":[],"_revision_number":3},{"id":"c1c3b5f904bfea3995cd8e2d796ce7714e4a1c78","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-12-14 01:02:11.000000000","message":"Patch Set 3: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see http://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n- gate-python-cinderclient-docs-ubuntu-xenial http://docs-draft.openstack.org/00/402200/3/check/gate-python-cinderclient-docs-ubuntu-xenial/cef24bb//doc/build/html/ : SUCCESS in 2m 14s\n- gate-python-cinderclient-pep8-ubuntu-xenial http://logs.openstack.org/00/402200/3/check/gate-python-cinderclient-pep8-ubuntu-xenial/25b094b/ : FAILURE in 2m 18s\n- gate-python-cinderclient-python27-ubuntu-xenial http://logs.openstack.org/00/402200/3/check/gate-python-cinderclient-python27-ubuntu-xenial/a0bc7df/ : FAILURE in 3m 43s\n- gate-python-cinderclient-python35-nv http://logs.openstack.org/00/402200/3/check/gate-python-cinderclient-python35-nv/c297323/ : FAILURE in 3m 40s (non-voting)\n- gate-tempest-dsvm-neutron-src-python-cinderclient-ubuntu-xenial http://logs.openstack.org/00/402200/3/check/gate-tempest-dsvm-neutron-src-python-cinderclient-ubuntu-xenial/eee3887/ : SUCCESS in 1h 37m 00s\n- gate-python-cinderclient-pypy http://logs.openstack.org/00/402200/3/check/gate-python-cinderclient-pypy/50159ae/ : FAILURE in 3m 17s (non-voting)\n- gate-cinderclient-dsvm-functional-ubuntu-xenial-nv http://logs.openstack.org/00/402200/3/check/gate-cinderclient-dsvm-functional-ubuntu-xenial-nv/0860d4b/ : FAILURE in 17m 11s (non-voting)\n- gate-cinderclient-dsvm-functional-identity-v3-only-ubuntu-xenial-nv http://logs.openstack.org/00/402200/3/check/gate-cinderclient-dsvm-functional-identity-v3-only-ubuntu-xenial-nv/b568c03/ : SUCCESS in 31m 32s (non-voting)\n- gate-python-cinderclient-pylint-ubuntu-xenial http://logs.openstack.org/00/402200/3/check/gate-python-cinderclient-pylint-ubuntu-xenial/1886759/ : FAILURE in 2m 01s (non-voting)","accounts_in_message":[],"_revision_number":3},{"id":"c7c3e40a99df1c80b28eecba62a177d91e2eb6fd","author":{"_account_id":22227,"name":"Justin A Wilson","email":"justin.wilson@intel.com","username":"waj334"},"date":"2016-12-14 18:24:10.000000000","message":"Uploaded patch set 4.","accounts_in_message":[],"_revision_number":4},{"id":"cc1b1171dbdde2dda794b1b3afe1794e8644bc25","author":{"_account_id":22227,"name":"Justin A Wilson","email":"justin.wilson@intel.com","username":"waj334"},"date":"2016-12-14 19:08:46.000000000","message":"Uploaded patch set 5.","accounts_in_message":[],"_revision_number":5},{"id":"82af89d95c00f7522f3c2ddd05376e58195694ce","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-12-14 20:12:35.000000000","message":"Patch Set 5: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see http://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n- gate-python-cinderclient-docs-ubuntu-xenial http://docs-draft.openstack.org/00/402200/5/check/gate-python-cinderclient-docs-ubuntu-xenial/aae5d67//doc/build/html/ : SUCCESS in 2m 19s\n- gate-python-cinderclient-pep8-ubuntu-xenial http://logs.openstack.org/00/402200/5/check/gate-python-cinderclient-pep8-ubuntu-xenial/2c19d63/ : FAILURE in 3m 16s\n- gate-python-cinderclient-python27-ubuntu-xenial http://logs.openstack.org/00/402200/5/check/gate-python-cinderclient-python27-ubuntu-xenial/c2a0bb2/ : FAILURE in 2m 56s\n- gate-python-cinderclient-python35-nv http://logs.openstack.org/00/402200/5/check/gate-python-cinderclient-python35-nv/5b8f199/ : FAILURE in 2m 22s (non-voting)\n- gate-tempest-dsvm-neutron-src-python-cinderclient-ubuntu-xenial http://logs.openstack.org/00/402200/5/check/gate-tempest-dsvm-neutron-src-python-cinderclient-ubuntu-xenial/bc74d12/ : SUCCESS in 49m 37s\n- gate-python-cinderclient-pypy http://logs.openstack.org/00/402200/5/check/gate-python-cinderclient-pypy/421c808/ : FAILURE in 2m 24s (non-voting)\n- gate-cinderclient-dsvm-functional-ubuntu-xenial-nv http://logs.openstack.org/00/402200/5/check/gate-cinderclient-dsvm-functional-ubuntu-xenial-nv/9f53876/ : SUCCESS in 25m 44s (non-voting)\n- gate-cinderclient-dsvm-functional-identity-v3-only-ubuntu-xenial-nv http://logs.openstack.org/00/402200/5/check/gate-cinderclient-dsvm-functional-identity-v3-only-ubuntu-xenial-nv/005a20f/ : SUCCESS in 16m 38s (non-voting)\n- gate-python-cinderclient-pylint-ubuntu-xenial http://logs.openstack.org/00/402200/5/check/gate-python-cinderclient-pylint-ubuntu-xenial/11f16ae/ : SUCCESS in 2m 08s (non-voting)","accounts_in_message":[],"_revision_number":5},{"id":"7f68051ea8472d38d4e85ebed9c32a6920c1b3fe","author":{"_account_id":22227,"name":"Justin A Wilson","email":"justin.wilson@intel.com","username":"waj334"},"date":"2016-12-15 20:51:10.000000000","message":"Abandoned\n\nNeed to be added to shell","accounts_in_message":[],"_revision_number":5},{"id":"b6a9ff199902d60332512e5962a6f4d522808428","author":{"_account_id":22227,"name":"Justin A Wilson","email":"justin.wilson@intel.com","username":"waj334"},"date":"2017-01-17 19:42:02.000000000","message":"Restored\n\nReworking this","accounts_in_message":[],"_revision_number":5},{"id":"c421a9a39ddf3d884546ed321b28ddb7dbc2d4b5","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2017-01-17 21:06:00.000000000","message":"Patch Set 5:\n\nBuild failed (check pipeline).  For information on how to proceed, see http://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n- gate-python-cinderclient-docs-ubuntu-xenial http://docs-draft.openstack.org/00/402200/5/check/gate-python-cinderclient-docs-ubuntu-xenial/1685369//doc/build/html/ : SUCCESS in 3m 53s\n- gate-python-cinderclient-pep8-ubuntu-xenial http://logs.openstack.org/00/402200/5/check/gate-python-cinderclient-pep8-ubuntu-xenial/bd54a22/ : FAILURE in 2m 43s\n- gate-python-cinderclient-python27-ubuntu-xenial http://logs.openstack.org/00/402200/5/check/gate-python-cinderclient-python27-ubuntu-xenial/e320971/ : FAILURE in 4m 30s\n- gate-python-cinderclient-python35 http://logs.openstack.org/00/402200/5/check/gate-python-cinderclient-python35/671dbc2/ : FAILURE in 2m 34s\n- gate-tempest-dsvm-neutron-src-python-cinderclient-ubuntu-xenial http://logs.openstack.org/00/402200/5/check/gate-tempest-dsvm-neutron-src-python-cinderclient-ubuntu-xenial/6430cde/ : SUCCESS in 1h 20m 25s\n- gate-python-cinderclient-pypy http://logs.openstack.org/00/402200/5/check/gate-python-cinderclient-pypy/d1d98b7/ : FAILURE in 3m 35s (non-voting)\n- gate-cinderclient-dsvm-functional-ubuntu-xenial-nv http://logs.openstack.org/00/402200/5/check/gate-cinderclient-dsvm-functional-ubuntu-xenial-nv/3e5dfe1/ : SUCCESS in 18m 56s (non-voting)\n- gate-cinderclient-dsvm-functional-identity-v3-only-ubuntu-xenial-nv http://logs.openstack.org/00/402200/5/check/gate-cinderclient-dsvm-functional-identity-v3-only-ubuntu-xenial-nv/c1ec5a5/ : SUCCESS in 20m 26s (non-voting)\n- gate-python-cinderclient-pylint-ubuntu-xenial http://logs.openstack.org/00/402200/5/check/gate-python-cinderclient-pylint-ubuntu-xenial/0d2679a/ : SUCCESS in 2m 53s (non-voting)","accounts_in_message":[],"_revision_number":5},{"id":"643a0543b3fb2d7490549ae292bbcdac1080d932","author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"date":"2017-01-20 16:44:16.000000000","message":"Patch Set 5:\n\nIs this superceded by 417169?","accounts_in_message":[],"_revision_number":5},{"id":"f1df036e091102b463503aa614787ca5fbf0d6b3","author":{"_account_id":22227,"name":"Justin A Wilson","email":"justin.wilson@intel.com","username":"waj334"},"date":"2017-01-25 21:24:53.000000000","message":"Patch Set 5:\n\n\u003e Is this superceded by 417169?\n\nDepends on whether or not this feature should be in the python client (this implementation) or shell only (417169)","accounts_in_message":[],"_revision_number":5},{"id":"8cfbbfa4ca4bb12d9a6adc73dbeaa18489608e35","author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"date":"2017-03-09 21:29:16.000000000","message":"Patch Set 5:\n\nThis review is \u003e 4 weeks without comment and currently blocked by a core reviewer with a -2. We are abandoning this for now. Feel free to reactivate the review by pressing the restore button and contacting the reviewer with the -2 on this review to ensure you address their concerns.","accounts_in_message":[],"_revision_number":5},{"id":"f67ae5d1d77d440f67ce8e192fd6719e00b3554e","author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"date":"2017-03-09 21:29:16.000000000","message":"Abandoned\n\nThis review is \u003e 4 weeks without comment and currently blocked by a core reviewer with a -2. We are abandoning this for now. Feel free to reactivate the review by pressing the restore button and contacting the reviewer with the -2 on this review to ensure you address their concerns.","accounts_in_message":[],"_revision_number":5}],"current_revision_number":5,"current_revision":"3bceea73ec589954ff696ad7047629ef9eb310a8","revisions":{"0a8eec6e77266492df80b5a58ae14458c42b9dcb":{"kind":"REWORK","_number":1,"created":"2016-11-24 19:14:15.000000000","uploader":{"_account_id":22227,"name":"Justin A Wilson","email":"justin.wilson@intel.com","username":"waj334"},"ref":"refs/changes/00/402200/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-cinderclient","ref":"refs/changes/00/402200/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-cinderclient refs/changes/00/402200/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-cinderclient refs/changes/00/402200/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-cinderclient refs/changes/00/402200/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-cinderclient refs/changes/00/402200/1"}}},"commit":{"parents":[{"commit":"e8046b72ed9793d0e79f4316ed4b62ecf4e52216","subject":"Updated from global requirements","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-cinderclient/commit/e8046b72ed9793d0e79f4316ed4b62ecf4e52216"}]}],"author":{"name":"Justin A Wilson","email":"justin.wilson@intel.com","date":"2016-11-24 18:06:19.000000000","tz":-480},"committer":{"name":"Justin A Wilson","email":"justin.wilson@intel.com","date":"2016-11-24 18:07:58.000000000","tz":-480},"subject":"inder Client Automatic Microversion Selection","message":"inder Client Automatic Microversion Selection\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nIntroduction\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nWith the Nova, Manilla and Cinder projects implementing support for\nmicroversions, the Openstack Client itself is not microversion aware and\npresent a \"ease of use\" issue when trying to use a feature that may or\nmay not be present in the currently running version of the cinder\nservice. Currently, this is not a issue for the Manilla project, because\nits developers have implemented a auto-negotiation feature to\nautomatically call the highest api version of the service if available.\nThis is not the case for the Cinder client. In order for one\nto make an api call to the Cinder service, at least the minimum\nmicroversion at which the api call was implemented has be known at the\ntime of the api call. As of Cinder v3, the microversion must be provided\nin the HTTP request header, otherwise it falls back to v3.0 which is\nidentical to v2.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nThe Problem\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nCurrently, the caller of any API calls to the Cinder v3 API must know\nthe specific version of the API that they want to use. By default,\nCinder assumes that you meant to use 3.0 if no version is specified.\nThis behavior is likely to maintain backwards compatibility with the v2\nAPI.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nSolution\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThe solution to this problem would be to query the version api, which is\npresent at each endpoint, for the current version of Cinder v3 API.\nThen the version that is returned can be passed to the Cinder client if\nit is compatible. This way the most currently available version of the\nCinder v3 API is always used.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nNeeded Changes\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThe current behavior is to fallback to v3.0 if no version is specifed.\nThis behavior will need to be changed to attempt to choose the highest\ncompatible version. If no version is compatiable, then fallback to\nv3.0. A variable (MIN_SUPPORTED_VERSION ???) must be added to indicate\nthe minimum version that the current (MAX_VERSION) version of the client\ncan interact with. This minimum version variable must be elevated when a\nbackwards compatibility breaking change is introduced at a new\nmicroversion.\n\n                        PCC \u003d Python Cinder Client\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nScenario A\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nAPI Versions  |3.0 --- 3.1|\nPCC Versions  |3.0 -------- 3.2|\n\nThe client will use v3.1, but some API calls will not be available\n(should 404). This case should really not be allowed, but is possible.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nScenario B\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nAPI Versions           |3.3 --- 3.5|\nPCC Versions  |3.1 -------- 3.4|\n\nThe client will use v3.4 and all of the commands that were present a the\ntime of v3.4 will be available.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nScenario C\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nAPI Versions                    |3.6 --- 3.8|\nPCC Versions  |3.1 --- 3.3|\n\nThe client is not compatible, but the client will fallback to v3.0 to\nmaintain minimal functionality.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nConclusion\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThe solution detailed above will greatly simplify the use of the Cinder\npython client with the v3 API by allowing not specifying a specific API\nversion and making use of the latest compatible version of the v3 api.\nThis will also allow the OpenStack client to make use of new features\nof the Cinder API more easily as they become available in the  future\nif the user is running the latest version of the Cinder service.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nReferences\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nREST API Version History\nhttp://docs.openstack.org/developer/cinder/devref/api_microversion_history.html\n\nAPI Microversions for Operators- What? Why? and How?\nhttps://www.youtube.com/watch?feature\u003dplayer_embedded\u0026v\u003d7KdNiuf2f9s\n\nAPI Microversions\nhttp://docs.openstack.org/developer/cinder/devref/api_microversion_dev.html\n\nNova’s Kilo spec for microversions\nhttp://git.openstack.org/cgit/openstack/nova-specs/tree/specs/kilo/implemented/api-microversions.rst\n\nAdvanced Microversion Support - Client : Blueprints : python-manilaclient\nhttps://blueprints.launchpad.net/python-manilaclient/+spec/manila-client-advanced-microversion-support\n\nVarious Discussions via IRC\n\nChange-Id: I2e315b19adae4aae39c0a6005a0dda41e50b9682\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-cinderclient/commit/0a8eec6e77266492df80b5a58ae14458c42b9dcb"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-cinderclient/commit/0a8eec6e77266492df80b5a58ae14458c42b9dcb"}]},"branch":"refs/heads/master"},"455a930a99ae1b8b6e0187b9126872780a882921":{"kind":"REWORK","_number":2,"created":"2016-12-13 23:15:15.000000000","uploader":{"_account_id":22227,"name":"Justin A Wilson","email":"justin.wilson@intel.com","username":"waj334"},"ref":"refs/changes/00/402200/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-cinderclient","ref":"refs/changes/00/402200/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-cinderclient refs/changes/00/402200/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-cinderclient refs/changes/00/402200/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-cinderclient refs/changes/00/402200/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-cinderclient refs/changes/00/402200/2"}}},"commit":{"parents":[{"commit":"e8046b72ed9793d0e79f4316ed4b62ecf4e52216","subject":"Updated from global requirements","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-cinderclient/commit/e8046b72ed9793d0e79f4316ed4b62ecf4e52216"}]}],"author":{"name":"Justin A Wilson","email":"justin.wilson@intel.com","date":"2016-11-24 18:06:19.000000000","tz":-480},"committer":{"name":"Justin A Wilson","email":"justin.wilson@intel.com","date":"2016-09-30 05:09:44.000000000","tz":-420},"subject":"inder Client Automatic Microversion Selection","message":"inder Client Automatic Microversion Selection\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nIntroduction\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nWith the Nova, Manilla and Cinder projects implementing support for\nmicroversions, the Openstack Client itself is not microversion aware and\npresent a \"ease of use\" issue when trying to use a feature that may or\nmay not be present in the currently running version of the cinder\nservice. Currently, this is not a issue for the Manilla project, because\nits developers have implemented a auto-negotiation feature to\nautomatically call the highest api version of the service if available.\nThis is not the case for the Cinder client. In order for one\nto make an api call to the Cinder service, at least the minimum\nmicroversion at which the api call was implemented has be known at the\ntime of the api call. As of Cinder v3, the microversion must be provided\nin the HTTP request header, otherwise it falls back to v3.0 which is\nidentical to v2.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nThe Problem\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nCurrently, the caller of any API calls to the Cinder v3 API must know\nthe specific version of the API that they want to use. By default,\nCinder assumes that you meant to use 3.0 if no version is specified.\nThis behavior is likely to maintain backwards compatibility with the v2\nAPI.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nSolution\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThe solution to this problem would be to query the version api, which is\npresent at each endpoint, for the current version of Cinder v3 API.\nThen the version that is returned can be passed to the Cinder client if\nit is compatible. This way the most currently available version of the\nCinder v3 API is always used.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nNeeded Changes\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThe current behavior is to fallback to v3.0 if no version is specifed.\nThis behavior will need to be changed to attempt to choose the highest\ncompatible version. If no version is compatiable, then fallback to\nv3.0. A variable (MIN_SUPPORTED_VERSION ???) must be added to indicate\nthe minimum version that the current (MAX_VERSION) version of the client\ncan interact with. This minimum version variable must be elevated when a\nbackwards compatibility breaking change is introduced at a new\nmicroversion.\n\n                        PCC \u003d Python Cinder Client\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nScenario A\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nAPI Versions  |3.0 --- 3.1|\nPCC Versions  |3.0 -------- 3.2|\n\nThe client will use v3.1, but some API calls will not be available\n(should 404). This case should really not be allowed, but is possible.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nScenario B\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nAPI Versions           |3.3 --- 3.5|\nPCC Versions  |3.1 -------- 3.4|\n\nThe client will use v3.4 and all of the commands that were present a the\ntime of v3.4 will be available.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nScenario C\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nAPI Versions                    |3.6 --- 3.8|\nPCC Versions  |3.1 --- 3.3|\n\nThe client is not compatible, but the client will fallback to v3.0 to\nmaintain minimal functionality.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nConclusion\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThe solution detailed above will greatly simplify the use of the Cinder\npython client with the v3 API by allowing not specifying a specific API\nversion and making use of the latest compatible version of the v3 api.\nThis will also allow the OpenStack client to make use of new features\nof the Cinder API more easily as they become available in the  future\nif the user is running the latest version of the Cinder service.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nReferences\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nREST API Version History\nhttp://docs.openstack.org/developer/cinder/devref/api_microversion_history.html\n\nAPI Microversions for Operators- What? Why? and How?\nhttps://www.youtube.com/watch?feature\u003dplayer_embedded\u0026v\u003d7KdNiuf2f9s\n\nAPI Microversions\nhttp://docs.openstack.org/developer/cinder/devref/api_microversion_dev.html\n\nNova’s Kilo spec for microversions\nhttp://git.openstack.org/cgit/openstack/nova-specs/tree/specs/kilo/implemented/api-microversions.rst\n\nAdvanced Microversion Support - Client : Blueprints : python-manilaclient\nhttps://blueprints.launchpad.net/python-manilaclient/+spec/manila-client-advanced-microversion-support\n\nVarious Discussions via IRC\n\nChange-Id: I2e315b19adae4aae39c0a6005a0dda41e50b9682\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-cinderclient/commit/455a930a99ae1b8b6e0187b9126872780a882921"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-cinderclient/commit/455a930a99ae1b8b6e0187b9126872780a882921"}]},"branch":"refs/heads/master"},"c499e254b0ba9feb5de96faffb02a20e6c043ff9":{"kind":"REWORK","_number":3,"created":"2016-12-13 23:23:34.000000000","uploader":{"_account_id":22227,"name":"Justin A Wilson","email":"justin.wilson@intel.com","username":"waj334"},"ref":"refs/changes/00/402200/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-cinderclient","ref":"refs/changes/00/402200/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-cinderclient refs/changes/00/402200/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-cinderclient refs/changes/00/402200/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-cinderclient refs/changes/00/402200/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-cinderclient refs/changes/00/402200/3"}}},"commit":{"parents":[{"commit":"e8046b72ed9793d0e79f4316ed4b62ecf4e52216","subject":"Updated from global requirements","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-cinderclient/commit/e8046b72ed9793d0e79f4316ed4b62ecf4e52216"}]}],"author":{"name":"Justin A Wilson","email":"justin.wilson@intel.com","date":"2016-11-24 18:06:19.000000000","tz":-480},"committer":{"name":"Justin A Wilson","email":"justin.wilson@intel.com","date":"2016-12-13 23:22:59.000000000","tz":0},"subject":"inder Client Automatic Microversion Selection","message":"inder Client Automatic Microversion Selection\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nIntroduction\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nWith the Nova, Manilla and Cinder projects implementing support for\nmicroversions, the Openstack Client itself is not microversion aware and\npresent a \"ease of use\" issue when trying to use a feature that may or\nmay not be present in the currently running version of the cinder\nservice. Currently, this is not a issue for the Manilla project, because\nits developers have implemented a auto-negotiation feature to\nautomatically call the highest api version of the service if available.\nThis is not the case for the Cinder client. In order for one\nto make an api call to the Cinder service, at least the minimum\nmicroversion at which the api call was implemented has be known at the\ntime of the api call. As of Cinder v3, the microversion must be provided\nin the HTTP request header, otherwise it falls back to v3.0 which is\nidentical to v2.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nThe Problem\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nCurrently, the caller of any API calls to the Cinder v3 API must know\nthe specific version of the API that they want to use. By default,\nCinder assumes that you meant to use 3.0 if no version is specified.\nThis behavior is likely to maintain backwards compatibility with the v2\nAPI.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nSolution\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThe solution to this problem would be to query the version api, which is\npresent at each endpoint, for the current version of Cinder v3 API.\nThen the version that is returned can be passed to the Cinder client if\nit is compatible. This way the most currently available version of the\nCinder v3 API is always used.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nNeeded Changes\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThe current behavior is to fallback to v3.0 if no version is specifed.\nThis behavior will need to be changed to attempt to choose the highest\ncompatible version. If no version is compatiable, then fallback to\nv3.0. A variable (MIN_SUPPORTED_VERSION ???) must be added to indicate\nthe minimum version that the current (MAX_VERSION) version of the client\ncan interact with. This minimum version variable must be elevated when a\nbackwards compatibility breaking change is introduced at a new\nmicroversion.\n\n                        PCC \u003d Python Cinder Client\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nScenario A\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nAPI Versions  |3.0 --- 3.1|\nPCC Versions  |3.0 -------- 3.2|\n\nThe client will use v3.1, but some API calls will not be available\n(should 404). This case should really not be allowed, but is possible.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nScenario B\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nAPI Versions           |3.3 --- 3.5|\nPCC Versions  |3.1 -------- 3.4|\n\nThe client will use v3.4 and all of the commands that were present a the\ntime of v3.4 will be available.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nScenario C\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nAPI Versions                    |3.6 --- 3.8|\nPCC Versions  |3.1 --- 3.3|\n\nThe client is not compatible, but the client will fallback to v3.0 to\nmaintain minimal functionality.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nConclusion\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThe solution detailed above will greatly simplify the use of the Cinder\npython client with the v3 API by allowing not specifying a specific API\nversion and making use of the latest compatible version of the v3 api.\nThis will also allow the OpenStack client to make use of new features\nof the Cinder API more easily as they become available in the  future\nif the user is running the latest version of the Cinder service.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nReferences\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nREST API Version History\nhttp://docs.openstack.org/developer/cinder/devref/api_microversion_history.html\n\nAPI Microversions for Operators- What? Why? and How?\nhttps://www.youtube.com/watch?feature\u003dplayer_embedded\u0026v\u003d7KdNiuf2f9s\n\nAPI Microversions\nhttp://docs.openstack.org/developer/cinder/devref/api_microversion_dev.html\n\nNova’s Kilo spec for microversions\nhttp://git.openstack.org/cgit/openstack/nova-specs/tree/specs/kilo/implemented/api-microversions.rst\n\nAdvanced Microversion Support - Client : Blueprints : python-manilaclient\nhttps://blueprints.launchpad.net/python-manilaclient/+spec/manila-client-advanced-microversion-support\n\nVarious Discussions via IRC\n\nChange-Id: I2e315b19adae4aae39c0a6005a0dda41e50b9682\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-cinderclient/commit/c499e254b0ba9feb5de96faffb02a20e6c043ff9"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-cinderclient/commit/c499e254b0ba9feb5de96faffb02a20e6c043ff9"}]},"branch":"refs/heads/master"},"bacb429a639f4a861aaeafd31e6fc6cd8a9d0c0f":{"kind":"REWORK","_number":4,"created":"2016-12-14 18:24:10.000000000","uploader":{"_account_id":22227,"name":"Justin A Wilson","email":"justin.wilson@intel.com","username":"waj334"},"ref":"refs/changes/00/402200/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-cinderclient","ref":"refs/changes/00/402200/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-cinderclient refs/changes/00/402200/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-cinderclient refs/changes/00/402200/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-cinderclient refs/changes/00/402200/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-cinderclient refs/changes/00/402200/4"}}},"commit":{"parents":[{"commit":"e8046b72ed9793d0e79f4316ed4b62ecf4e52216","subject":"Updated from global requirements","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-cinderclient/commit/e8046b72ed9793d0e79f4316ed4b62ecf4e52216"}]}],"author":{"name":"Justin A Wilson","email":"justin.wilson@intel.com","date":"2016-11-24 18:06:19.000000000","tz":-480},"committer":{"name":"Justin A Wilson","email":"justin.wilson@intel.com","date":"2016-09-30 09:14:33.000000000","tz":-420},"subject":"inder Client Automatic Microversion Selection","message":"inder Client Automatic Microversion Selection\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nIntroduction\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nWith the Nova, Manilla and Cinder projects implementing support for\nmicroversions, the Openstack Client itself is not microversion aware and\npresent a \"ease of use\" issue when trying to use a feature that may or\nmay not be present in the currently running version of the cinder\nservice. Currently, this is not a issue for the Manilla project, because\nits developers have implemented a auto-negotiation feature to\nautomatically call the highest api version of the service if available.\nThis is not the case for the Cinder client. In order for one\nto make an api call to the Cinder service, at least the minimum\nmicroversion at which the api call was implemented has be known at the\ntime of the api call. As of Cinder v3, the microversion must be provided\nin the HTTP request header, otherwise it falls back to v3.0 which is\nidentical to v2.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nThe Problem\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nCurrently, the caller of any API calls to the Cinder v3 API must know\nthe specific version of the API that they want to use. By default,\nCinder assumes that you meant to use 3.0 if no version is specified.\nThis behavior is likely to maintain backwards compatibility with the v2\nAPI.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nSolution\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThe solution to this problem would be to query the version api, which is\npresent at each endpoint, for the current version of Cinder v3 API.\nThen the version that is returned can be passed to the Cinder client if\nit is compatible. This way the most currently available version of the\nCinder v3 API is always used.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nNeeded Changes\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThe current behavior is to fallback to v3.0 if no version is specifed.\nThis behavior will need to be changed to attempt to choose the highest\ncompatible version. If no version is compatiable, then fallback to\nv3.0. A variable (MIN_SUPPORTED_VERSION ???) must be added to indicate\nthe minimum version that the current (MAX_VERSION) version of the client\ncan interact with. This minimum version variable must be elevated when a\nbackwards compatibility breaking change is introduced at a new\nmicroversion.\n\n                        PCC \u003d Python Cinder Client\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nScenario A\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nAPI Versions  |3.0 --- 3.1|\nPCC Versions  |3.0 -------- 3.2|\n\nThe client will use v3.1, but some API calls will not be available\n(should 404). This case should really not be allowed, but is possible.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nScenario B\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nAPI Versions           |3.3 --- 3.5|\nPCC Versions  |3.1 -------- 3.4|\n\nThe client will use v3.4 and all of the commands that were present a the\ntime of v3.4 will be available.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nScenario C\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nAPI Versions                    |3.6 --- 3.8|\nPCC Versions  |3.1 --- 3.3|\n\nThe client is not compatible, but the client will fallback to v3.0 to\nmaintain minimal functionality.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nConclusion\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThe solution detailed above will greatly simplify the use of the Cinder\npython client with the v3 API by allowing not specifying a specific API\nversion and making use of the latest compatible version of the v3 api.\nThis will also allow the OpenStack client to make use of new features\nof the Cinder API more easily as they become available in the  future\nif the user is running the latest version of the Cinder service.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nReferences\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nREST API Version History\nhttp://docs.openstack.org/developer/cinder/devref/api_microversion_history.html\n\nAPI Microversions for Operators- What? Why? and How?\nhttps://www.youtube.com/watch?feature\u003dplayer_embedded\u0026v\u003d7KdNiuf2f9s\n\nAPI Microversions\nhttp://docs.openstack.org/developer/cinder/devref/api_microversion_dev.html\n\nNova’s Kilo spec for microversions\nhttp://git.openstack.org/cgit/openstack/nova-specs/tree/specs/kilo/implemented/api-microversions.rst\n\nAdvanced Microversion Support - Client : Blueprints : python-manilaclient\nhttps://blueprints.launchpad.net/python-manilaclient/+spec/manila-client-advanced-microversion-support\n\nVarious Discussions via IRC\n\nChange-Id: I2e315b19adae4aae39c0a6005a0dda41e50b9682\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-cinderclient/commit/bacb429a639f4a861aaeafd31e6fc6cd8a9d0c0f"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-cinderclient/commit/bacb429a639f4a861aaeafd31e6fc6cd8a9d0c0f"}]},"branch":"refs/heads/master"},"3bceea73ec589954ff696ad7047629ef9eb310a8":{"kind":"REWORK","_number":5,"created":"2016-12-14 19:08:46.000000000","uploader":{"_account_id":22227,"name":"Justin A Wilson","email":"justin.wilson@intel.com","username":"waj334"},"ref":"refs/changes/00/402200/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-cinderclient","ref":"refs/changes/00/402200/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-cinderclient refs/changes/00/402200/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-cinderclient refs/changes/00/402200/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-cinderclient refs/changes/00/402200/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-cinderclient refs/changes/00/402200/5"}}},"commit":{"parents":[{"commit":"e8046b72ed9793d0e79f4316ed4b62ecf4e52216","subject":"Updated from global requirements","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-cinderclient/commit/e8046b72ed9793d0e79f4316ed4b62ecf4e52216"}]}],"author":{"name":"Justin A Wilson","email":"justin.wilson@intel.com","date":"2016-11-24 18:06:19.000000000","tz":-480},"committer":{"name":"Justin A Wilson","email":"justin.wilson@intel.com","date":"2016-09-30 09:59:12.000000000","tz":-420},"subject":"inder Client Automatic Microversion Selection","message":"inder Client Automatic Microversion Selection\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nIntroduction\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nWith the Nova, Manilla and Cinder projects implementing support for\nmicroversions, the Openstack Client itself is not microversion aware and\npresent a \"ease of use\" issue when trying to use a feature that may or\nmay not be present in the currently running version of the cinder\nservice. Currently, this is not a issue for the Manilla project, because\nits developers have implemented a auto-negotiation feature to\nautomatically call the highest api version of the service if available.\nThis is not the case for the Cinder client. In order for one\nto make an api call to the Cinder service, at least the minimum\nmicroversion at which the api call was implemented has be known at the\ntime of the api call. As of Cinder v3, the microversion must be provided\nin the HTTP request header, otherwise it falls back to v3.0 which is\nidentical to v2.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nThe Problem\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nCurrently, the caller of any API calls to the Cinder v3 API must know\nthe specific version of the API that they want to use. By default,\nCinder assumes that you meant to use 3.0 if no version is specified.\nThis behavior is likely to maintain backwards compatibility with the v2\nAPI.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nSolution\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThe solution to this problem would be to query the version api, which is\npresent at each endpoint, for the current version of Cinder v3 API.\nThen the version that is returned can be passed to the Cinder client if\nit is compatible. This way the most currently available version of the\nCinder v3 API is always used.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nNeeded Changes\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThe current behavior is to fallback to v3.0 if no version is specifed.\nThis behavior will need to be changed to attempt to choose the highest\ncompatible version. If no version is compatiable, then fallback to\nv3.0. A variable (MIN_SUPPORTED_VERSION ???) must be added to indicate\nthe minimum version that the current (MAX_VERSION) version of the client\ncan interact with. This minimum version variable must be elevated when a\nbackwards compatibility breaking change is introduced at a new\nmicroversion.\n\n                        PCC \u003d Python Cinder Client\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nScenario A\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nAPI Versions  |3.0 --- 3.1|\nPCC Versions  |3.0 -------- 3.2|\n\nThe client will use v3.1, but some API calls will not be available\n(should 404). This case should really not be allowed, but is possible.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nScenario B\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nAPI Versions           |3.3 --- 3.5|\nPCC Versions  |3.1 -------- 3.4|\n\nThe client will use v3.4 and all of the commands that were present a the\ntime of v3.4 will be available.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nScenario C\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nAPI Versions                    |3.6 --- 3.8|\nPCC Versions  |3.1 --- 3.3|\n\nThe client is not compatible, but the client will fallback to v3.0 to\nmaintain minimal functionality.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nConclusion\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThe solution detailed above will greatly simplify the use of the Cinder\npython client with the v3 API by allowing not specifying a specific API\nversion and making use of the latest compatible version of the v3 api.\nThis will also allow the OpenStack client to make use of new features\nof the Cinder API more easily as they become available in the  future\nif the user is running the latest version of the Cinder service.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nReferences\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nREST API Version History\nhttp://docs.openstack.org/developer/cinder/devref/api_microversion_history.html\n\nAPI Microversions for Operators- What? Why? and How?\nhttps://www.youtube.com/watch?feature\u003dplayer_embedded\u0026v\u003d7KdNiuf2f9s\n\nAPI Microversions\nhttp://docs.openstack.org/developer/cinder/devref/api_microversion_dev.html\n\nNova’s Kilo spec for microversions\nhttp://git.openstack.org/cgit/openstack/nova-specs/tree/specs/kilo/implemented/api-microversions.rst\n\nAdvanced Microversion Support - Client : Blueprints : python-manilaclient\nhttps://blueprints.launchpad.net/python-manilaclient/+spec/manila-client-advanced-microversion-support\n\nVarious Discussions via IRC\n\nChange-Id: I2e315b19adae4aae39c0a6005a0dda41e50b9682\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-cinderclient/commit/3bceea73ec589954ff696ad7047629ef9eb310a8"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-cinderclient/commit/3bceea73ec589954ff696ad7047629ef9eb310a8"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
