)]}'
{".zuul.yaml":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"be3306f11c5fb68865f9c98a09b79bd104773dcc","unresolved":false,"context_lines":[{"line_number":1,"context_line":"- job:"},{"line_number":2,"context_line":"    # TODO(efried): Cut over to zuulv3"},{"line_number":3,"context_line":"    name: python-cinderclient-functional"},{"line_number":4,"context_line":"    parent: devstack"},{"line_number":5,"context_line":"    run: playbooks/python-cinderclient-functional.yaml"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"3fa7e38b_af0af222","line":2,"updated":"2019-10-26 20:08:05.000000000","message":"Why is this being added? Remove this line.","commit_id":"f193c4549461c15f02931cef5ec72283ab3b3612"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7bf3a07a9c8b7f15d7c239fa1b8d3b4258bf4a3f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"- job:"},{"line_number":2,"context_line":"    name: python-cinderclient-functional"},{"line_number":3,"context_line":"    parent: devstack"},{"line_number":4,"context_line":"    run: playbooks/python-cinderclient-functional.yaml"},{"line_number":5,"context_line":"    post-run: playbooks/post.yaml"},{"line_number":6,"context_line":"    timeout: 4500"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"3fa7e38b_5daea62f","line":3,"updated":"2019-12-05 03:28:44.000000000","message":"I suggest changing the parent to devstack-tox-functional, and then you can remove the \u0027run\u0027 and \u0027post-run\u0027 lines below (and also the files they refer to).","commit_id":"1dd74d42529fc18c1915587a068a293bae898d55"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"63388d22f016eb71d4316b9eb97c91a857750c88","unresolved":false,"context_lines":[{"line_number":18,"context_line":"      - lib-forward-testing-python3"},{"line_number":19,"context_line":"      - openstack-cover-jobs"},{"line_number":20,"context_line":"      - openstack-lower-constraints-jobs"},{"line_number":21,"context_line":"      - openstack-python3-train-jobs"},{"line_number":22,"context_line":"      - publish-openstack-docs-pti"},{"line_number":23,"context_line":"      - release-notes-jobs-python3"},{"line_number":24,"context_line":"    check:"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"3fa7e38b_e9c78397","line":21,"updated":"2019-10-28 05:24:10.000000000","message":"you can only switch if you use ussuri-jobs, otherwise you miss tests like pep8.","commit_id":"1dd74d42529fc18c1915587a068a293bae898d55"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7bf3a07a9c8b7f15d7c239fa1b8d3b4258bf4a3f","unresolved":false,"context_lines":[{"line_number":18,"context_line":"      - lib-forward-testing-python3"},{"line_number":19,"context_line":"      - openstack-cover-jobs"},{"line_number":20,"context_line":"      - openstack-lower-constraints-jobs"},{"line_number":21,"context_line":"      - openstack-python3-train-jobs"},{"line_number":22,"context_line":"      - publish-openstack-docs-pti"},{"line_number":23,"context_line":"      - release-notes-jobs-python3"},{"line_number":24,"context_line":"    check:"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"3fa7e38b_1d458eb4","line":21,"in_reply_to":"3fa7e38b_e9c78397","updated":"2019-12-05 03:28:44.000000000","message":"Andreas is correct, you must change this to openstack-python3-ussuri-jobs","commit_id":"1dd74d42529fc18c1915587a068a293bae898d55"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7bf3a07a9c8b7f15d7c239fa1b8d3b4258bf4a3f","unresolved":false,"context_lines":[{"line_number":23,"context_line":"      - release-notes-jobs-python3"},{"line_number":24,"context_line":"    check:"},{"line_number":25,"context_line":"      jobs:"},{"line_number":26,"context_line":"        - python-cinderclient-functional"},{"line_number":27,"context_line":"        - openstack-tox-pylint:"},{"line_number":28,"context_line":"            voting: false"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"3fa7e38b_5d21c6b4","line":26,"updated":"2019-12-05 03:28:44.000000000","message":"This will just use the system python, and we need to be able to run these for py36 and py37.  I think you\u0027ll need to make the job defined at line 1 an abstract job, and then use it as the base for python-cinderclient-functional-py36 and python-cinderclient-functional-py37.  See this file for an example:\nhttps://review.opendev.org/#/c/697383/1/.zuul.yaml","commit_id":"1dd74d42529fc18c1915587a068a293bae898d55"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a160ee2f27f534cfb2d10d10e5d427b54e4120c3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"- job:"},{"line_number":2,"context_line":"    name: python-cinderclient-functional"},{"line_number":3,"context_line":"    parent: devstack"},{"line_number":4,"context_line":"    run: playbooks/python-cinderclient-functional.yaml"},{"line_number":5,"context_line":"    post-run: playbooks/post.yaml"},{"line_number":6,"context_line":"    timeout: 4500"},{"line_number":7,"context_line":"    required-projects:"},{"line_number":8,"context_line":"      - openstack/cinder"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_7cf3216e","side":"PARENT","line":5,"range":{"start_line":4,"start_character":0,"end_line":5,"end_character":33},"updated":"2019-12-19 21:58:49.000000000","message":"These files aren\u0027t being used anymore, so you can remove them as part of this commit.  That will leave the \u0027playbooks\u0027 directory empty, so remove it too.","commit_id":"0462563263844d5fc768d66c702951f8406797da"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"f0ec8b61c8df1443796a2c6bebb3dd6733c26e0b","unresolved":false,"context_lines":[{"line_number":22,"context_line":"- job:"},{"line_number":23,"context_line":"    name: python-cinderclient-functional-py37"},{"line_number":24,"context_line":"    parent: python-cinderclient-functional-base"},{"line_number":25,"context_line":"    nodeset: openstack-single-node-bionic"},{"line_number":26,"context_line":"    vars:"},{"line_number":27,"context_line":"      python_version: 3.7"},{"line_number":28,"context_line":"      tox_envlist: functional-py37"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"- project:"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"3fa7e38b_96f0b1fe","line":27,"range":{"start_line":25,"start_character":0,"end_line":27,"end_character":25},"updated":"2020-01-16 12:46:02.000000000","message":"Just to be clear what\u0027s going on here (because by next week I will probably have forgotten).  Which python is used by tox is controlled by tox.ini.  But, that python needs to actually be available on the node running the job in order for the job to succeed.  At this point, we can assume that 3.6 will be available everywhere (this is guaranteed by openstack-infra).  But 3.7 is still problematic (don\u0027t ask me why).  So for this job that we want running in py3.7, we need to (a) specify a nodeset for which py3.7 is available, and (b) tell the job to make sure it\u0027s available (i.e., install it if necessary).  So that\u0027s the point of these two lines.\n\nFor those two lines to actually work, the \u0027ensure-python\u0027 role must be present in the job playbook (which is also added in this patch).  It consumes the \u0027python_version\u0027 variable; if that\u0027s unset, it just makes sure python is available (and the system python3 will be py3.6).\n\nSo that\u0027s what\u0027s going on here.","commit_id":"575cfc0718a4a662cea4480696d2b8507c0a4bd9"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"0efac295a021aeb25e1ac10d3e957dea2a094074","unresolved":false,"context_lines":[{"line_number":22,"context_line":"- job:"},{"line_number":23,"context_line":"    name: python-cinderclient-functional-py37"},{"line_number":24,"context_line":"    parent: python-cinderclient-functional-base"},{"line_number":25,"context_line":"    nodeset: openstack-single-node-bionic"},{"line_number":26,"context_line":"    vars:"},{"line_number":27,"context_line":"      python_version: 3.7"},{"line_number":28,"context_line":"      tox_envlist: functional-py37"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"- project:"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"3fa7e38b_96b51180","line":27,"range":{"start_line":25,"start_character":0,"end_line":27,"end_character":25},"in_reply_to":"3fa7e38b_568a391e","updated":"2020-01-16 13:34:09.000000000","message":"Done","commit_id":"575cfc0718a4a662cea4480696d2b8507c0a4bd9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"8608df7b9524597688da1a6241ef3562ce423898","unresolved":false,"context_lines":[{"line_number":22,"context_line":"- job:"},{"line_number":23,"context_line":"    name: python-cinderclient-functional-py37"},{"line_number":24,"context_line":"    parent: python-cinderclient-functional-base"},{"line_number":25,"context_line":"    nodeset: openstack-single-node-bionic"},{"line_number":26,"context_line":"    vars:"},{"line_number":27,"context_line":"      python_version: 3.7"},{"line_number":28,"context_line":"      tox_envlist: functional-py37"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"- project:"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"3fa7e38b_568a391e","line":27,"range":{"start_line":25,"start_character":0,"end_line":27,"end_character":25},"in_reply_to":"3fa7e38b_96f0b1fe","updated":"2020-01-16 13:10:10.000000000","message":"Given the complexity of this, shouldn\u0027t we add it as an in code comment?","commit_id":"575cfc0718a4a662cea4480696d2b8507c0a4bd9"}],"doc/requirements.txt":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"76616d6767d034d81d843209a24e5cd97b1fe8f7","unresolved":false,"context_lines":[{"line_number":4,"context_line":"# These are needed for docs generation"},{"line_number":5,"context_line":"openstackdocstheme\u003e\u003d1.20.0 # Apache-2.0"},{"line_number":6,"context_line":"reno\u003e\u003d2.5.0 # Apache-2.0"},{"line_number":7,"context_line":"sphinx!\u003d1.6.6,!\u003d1.6.7,!\u003d2.1.0,\u003e\u003d1.6.2;python_version\u003e\u003d\u00273.4\u0027 # BSD"}],"source_content_type":"text/plain","patch_set":7,"id":"3fa7e38b_b47aec72","line":7,"range":{"start_line":7,"start_character":37,"end_line":7,"end_character":59},"updated":"2020-01-09 13:11:30.000000000","message":"do we still need this qualifier?","commit_id":"6f9eb12f3939ad6051af0e40093dc824ece561bf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"1f025a75f40e8b7e21fca4f3517d9e72e57276e7","unresolved":false,"context_lines":[{"line_number":4,"context_line":"# These are needed for docs generation"},{"line_number":5,"context_line":"openstackdocstheme\u003e\u003d1.20.0 # Apache-2.0"},{"line_number":6,"context_line":"reno\u003e\u003d2.5.0 # Apache-2.0"},{"line_number":7,"context_line":"sphinx!\u003d1.6.6,!\u003d1.6.7,!\u003d2.1.0,\u003e\u003d1.6.2;python_version\u003e\u003d\u00273.4\u0027 # BSD"}],"source_content_type":"text/plain","patch_set":7,"id":"3fa7e38b_b458ac88","line":7,"range":{"start_line":7,"start_character":37,"end_line":7,"end_character":59},"in_reply_to":"3fa7e38b_b47aec72","updated":"2020-01-09 13:18:19.000000000","message":"Technically no, now that the requirements check job has been updated to not enforce py3 markers like this for master.\n\nWe could either drop it here, or there are other py\u003c3.6 clean up things to be done and we could pick it up as part of a larger cleanup.","commit_id":"6f9eb12f3939ad6051af0e40093dc824ece561bf"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"8608df7b9524597688da1a6241ef3562ce423898","unresolved":false,"context_lines":[{"line_number":4,"context_line":"# These are needed for docs generation"},{"line_number":5,"context_line":"openstackdocstheme\u003e\u003d1.20.0 # Apache-2.0"},{"line_number":6,"context_line":"reno\u003e\u003d2.5.0 # Apache-2.0"},{"line_number":7,"context_line":"sphinx!\u003d1.6.6,!\u003d1.6.7,!\u003d2.1.0,\u003e\u003d1.6.2;python_version\u003e\u003d\u00273.4\u0027 # BSD"}],"source_content_type":"text/plain","patch_set":19,"id":"3fa7e38b_d69e2967","line":7,"range":{"start_line":7,"start_character":37,"end_line":7,"end_character":65},"updated":"2020-01-16 13:10:10.000000000","message":"?: If we are only claiming compatibility with 3.6 and 3.7, should we keep this restriction?","commit_id":"575cfc0718a4a662cea4480696d2b8507c0a4bd9"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"0efac295a021aeb25e1ac10d3e957dea2a094074","unresolved":false,"context_lines":[{"line_number":4,"context_line":"# These are needed for docs generation"},{"line_number":5,"context_line":"openstackdocstheme\u003e\u003d1.20.0 # Apache-2.0"},{"line_number":6,"context_line":"reno\u003e\u003d2.5.0 # Apache-2.0"},{"line_number":7,"context_line":"sphinx!\u003d1.6.6,!\u003d1.6.7,!\u003d2.1.0,\u003e\u003d1.6.2;python_version\u003e\u003d\u00273.4\u0027 # BSD"}],"source_content_type":"text/plain","patch_set":19,"id":"3fa7e38b_36ac5d35","line":7,"range":{"start_line":7,"start_character":37,"end_line":7,"end_character":65},"in_reply_to":"3fa7e38b_b6892d1f","updated":"2020-01-16 13:34:09.000000000","message":"Done","commit_id":"575cfc0718a4a662cea4480696d2b8507c0a4bd9"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"cf1b7acd5ef42f7bb5a30ed4c47146459a0d6ee3","unresolved":false,"context_lines":[{"line_number":4,"context_line":"# These are needed for docs generation"},{"line_number":5,"context_line":"openstackdocstheme\u003e\u003d1.20.0 # Apache-2.0"},{"line_number":6,"context_line":"reno\u003e\u003d2.5.0 # Apache-2.0"},{"line_number":7,"context_line":"sphinx!\u003d1.6.6,!\u003d1.6.7,!\u003d2.1.0,\u003e\u003d1.6.2;python_version\u003e\u003d\u00273.4\u0027 # BSD"}],"source_content_type":"text/plain","patch_set":19,"id":"3fa7e38b_b6892d1f","line":7,"range":{"start_line":7,"start_character":37,"end_line":7,"end_character":65},"in_reply_to":"3fa7e38b_d69e2967","updated":"2020-01-16 13:12:21.000000000","message":"Originally we couldn\u0027t drop this due to requirements job enforcement, but if we want to clean things up, it can be removed now.","commit_id":"575cfc0718a4a662cea4480696d2b8507c0a4bd9"}],"playbooks/python-cinderclient-functional.yaml":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"bc40411580c811c49e70ef70990824ed2e8aeb8f","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    - role: tox"},{"line_number":12,"context_line":"      tox_envlist: functional"},{"line_number":13,"context_line":"      tox_install_siblings: false"},{"line_number":14,"context_line":"      environment: \"{{ os_env_vars }}\""}],"source_content_type":"text/x-yaml","patch_set":16,"id":"3fa7e38b_7a6de82d","line":14,"range":{"start_line":14,"start_character":6,"end_line":14,"end_character":38},"updated":"2020-01-15 17:14:19.000000000","message":"FWIW, I think this is what\u0027s missing from my proposed change to the devstack defined job, in case someone wants to follow up with https://review.opendev.org/#/c/702217/","commit_id":"d345168752a95273149629aeee3b8d986f5e69e1"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"101571faa0b095bb5b5631e8c03459ced6162b94","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    - get-os-environment"},{"line_number":11,"context_line":"    - ensure-tox"},{"line_number":12,"context_line":"    - role: tox"},{"line_number":13,"context_line":"      tox_envlist: functional"},{"line_number":14,"context_line":"      tox_install_siblings: false"},{"line_number":15,"context_line":"      environment: \"{{ os_env_vars }}\""}],"source_content_type":"text/x-yaml","patch_set":18,"id":"3fa7e38b_ec1043f7","line":13,"range":{"start_line":13,"start_character":6,"end_line":13,"end_character":29},"updated":"2020-01-15 21:56:41.000000000","message":"I think this is overriding the one defined in the job in .zuul.yaml","commit_id":"d2856cc0e2378e4f163542c56bb8adb814963e25"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"0ad30e5aa6cd840b4dcca5dd8aeae0f96e78e652","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    - get-os-environment"},{"line_number":11,"context_line":"    - ensure-tox"},{"line_number":12,"context_line":"    - role: tox"},{"line_number":13,"context_line":"      tox_envlist: functional"},{"line_number":14,"context_line":"      tox_install_siblings: false"},{"line_number":15,"context_line":"      environment: \"{{ os_env_vars }}\""}],"source_content_type":"text/x-yaml","patch_set":18,"id":"3fa7e38b_eccfe351","line":13,"range":{"start_line":13,"start_character":6,"end_line":13,"end_character":29},"in_reply_to":"3fa7e38b_ec1043f7","updated":"2020-01-15 22:10:48.000000000","message":"Yes, delete this line then the values set at the job level should be passed through.","commit_id":"d2856cc0e2378e4f163542c56bb8adb814963e25"}],"releasenotes/notes/drop-python2-support-d3a1bedc75445edc.yaml":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"637cce7201dc794e6e43bc95085dd1802a54688d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---\r"},{"line_number":2,"context_line":"upgrade:\r"},{"line_number":3,"context_line":"  - |\r"},{"line_number":4,"context_line":"    Python 2 is no longer supported. Python 3 is required."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"3fa7e38b_1a9b3bc9","line":4,"updated":"2019-10-28 10:33:29.000000000","message":"See TC goal for a better release note content.","commit_id":"1dd74d42529fc18c1915587a068a293bae898d55"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7bf3a07a9c8b7f15d7c239fa1b8d3b4258bf4a3f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---\r"},{"line_number":2,"context_line":"upgrade:\r"},{"line_number":3,"context_line":"  - |\r"},{"line_number":4,"context_line":"    Python 2 is no longer supported. Python 3 is required."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"3fa7e38b_fd199286","line":4,"in_reply_to":"3fa7e38b_1a9b3bc9","updated":"2019-12-05 03:28:44.000000000","message":"I\u0027d suggest something like this:\n\n  Python 2.7 support has been dropped. Beginning with\n  python-cinderclient release 6.0.0, the minimum version\n  of Python supported is Python 3.6.","commit_id":"1dd74d42529fc18c1915587a068a293bae898d55"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"40123dfd24e3eb06dbe4b077221d8d76e47a57ca","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---\r"},{"line_number":2,"context_line":"upgrade:\r"},{"line_number":3,"context_line":"  - |\r"},{"line_number":4,"context_line":"    Python 2.7 support has been dropped. \r"},{"line_number":5,"context_line":"    Beginning with python-cinderclient release 6.0.0, \r"},{"line_number":6,"context_line":"    the minimum version of Python supported is Python 3.6."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"3fa7e38b_269f0866","line":4,"range":{"start_line":4,"start_character":40,"end_line":4,"end_character":41},"updated":"2019-12-21 09:51:36.000000000","message":"Trailing spaces on these first two lines.","commit_id":"b9787f732558a55c218ed7c36660c78b633e0f26"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a160ee2f27f534cfb2d10d10e5d427b54e4120c3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"3fa7e38b_bc82f9a3","line":7,"updated":"2019-12-19 21:58:49.000000000","message":"Nit: please remove the trailing whitespace on lines 4 and 5.","commit_id":"1f509cd794949e9b18713a05298aef0c385385fe"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"76616d6767d034d81d843209a24e5cd97b1fe8f7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Python 2.7 support has been dropped. The Last release of"},{"line_number":5,"context_line":"    python-cinderclient to support Python 2.7 is 5.0 from the Train release."},{"line_number":6,"context_line":"    The minimum version of Python now supported by python-cinderclient is"},{"line_number":7,"context_line":"    Python 3.6."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"3fa7e38b_342a7c77","line":4,"range":{"start_line":4,"start_character":45,"end_line":4,"end_character":46},"updated":"2020-01-09 13:11:30.000000000","message":"nit: should be lowercase","commit_id":"6f9eb12f3939ad6051af0e40093dc824ece561bf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"125b00ae298f56cb68f5d27994859963106784ef","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---\r"},{"line_number":2,"context_line":"upgrade:\r"},{"line_number":3,"context_line":"  - |\r"},{"line_number":4,"context_line":"    the minimum version of Python supported is Python 3.6."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"3fa7e38b_a1c57b40","line":4,"updated":"2020-01-15 14:55:57.000000000","message":"This should have been kept with the longer, recommended release note text.","commit_id":"f6846b1f1825f7c7e56a06b78c4b49e399678909"}],"tox.ini":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7bf3a07a9c8b7f15d7c239fa1b8d3b4258bf4a3f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[tox]"},{"line_number":2,"context_line":"distribute \u003d False"},{"line_number":3,"context_line":"envlist \u003d py37,pep8"},{"line_number":4,"context_line":"minversion \u003d 2.0"},{"line_number":5,"context_line":"skipsdist \u003d True"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[testenv]"}],"source_content_type":"text/x-properties","patch_set":2,"id":"3fa7e38b_5d24660e","line":4,"range":{"start_line":4,"start_character":0,"end_line":4,"end_character":16},"updated":"2019-12-05 03:28:44.000000000","message":"change this to 3.1.0 to be consistent with the other cinder components","commit_id":"1dd74d42529fc18c1915587a068a293bae898d55"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7bf3a07a9c8b7f15d7c239fa1b8d3b4258bf4a3f","unresolved":false,"context_lines":[{"line_number":2,"context_line":"distribute \u003d False"},{"line_number":3,"context_line":"envlist \u003d py37,pep8"},{"line_number":4,"context_line":"minversion \u003d 2.0"},{"line_number":5,"context_line":"skipsdist \u003d True"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[testenv]"},{"line_number":8,"context_line":"basepython \u003d python3"}],"source_content_type":"text/x-properties","patch_set":2,"id":"3fa7e38b_bd823ac6","line":5,"updated":"2019-12-05 03:28:44.000000000","message":"You also need to add ignore_basepython_conflict\u003dtrue here.  You can reuse the comment from the cinder tox.ini file:\nhttps://opendev.org/openstack/cinder/src/commit/93f0ca4dc9eedee10df2f03dad834a31b7f09847/tox.ini#L7-L9","commit_id":"1dd74d42529fc18c1915587a068a293bae898d55"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7bf3a07a9c8b7f15d7c239fa1b8d3b4258bf4a3f","unresolved":false,"context_lines":[{"line_number":84,"context_line":"# environments to specify a CA bundle file to use in verifying a"},{"line_number":85,"context_line":"# TLS (https) server certificate."},{"line_number":86,"context_line":"passenv \u003d OS_*"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"[flake8]"},{"line_number":89,"context_line":"show-source \u003d True"},{"line_number":90,"context_line":"ignore \u003d H404,H405,E122,E123,E128,E251"}],"source_content_type":"text/x-properties","patch_set":2,"id":"3fa7e38b_9d589e8a","line":87,"updated":"2019-12-05 03:28:44.000000000","message":"You need to add [testenv:functional-py36] and [testenv:functional-py37].  The [testenv:functional] defined above uses whatever the system python3 is, and we want to be able to run functional tests under both py3.6 and py3.7.  See the cinder tox.ini for an example:\nhttps://opendev.org/openstack/cinder/src/commit/93f0ca4dc9eedee10df2f03dad834a31b7f09847/tox.ini#L51-L61","commit_id":"1dd74d42529fc18c1915587a068a293bae898d55"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7bf3a07a9c8b7f15d7c239fa1b8d3b4258bf4a3f","unresolved":false,"context_lines":[{"line_number":91,"context_line":"exclude\u003d.venv,.git,.tox,dist,doc,*lib/python*,*egg,build"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"[testenv:lower-constraints]"},{"line_number":94,"context_line":"basepython \u003d python3"},{"line_number":95,"context_line":"deps \u003d"},{"line_number":96,"context_line":"  -c{toxinidir}/lower-constraints.txt"},{"line_number":97,"context_line":"  -r{toxinidir}/test-requirements.txt"}],"source_content_type":"text/x-properties","patch_set":2,"id":"3fa7e38b_1d4caec6","line":94,"range":{"start_line":94,"start_character":0,"end_line":94,"end_character":20},"updated":"2019-12-05 03:28:44.000000000","message":"you don\u0027t need this anymore, it will be inherited from the [testenv]","commit_id":"1dd74d42529fc18c1915587a068a293bae898d55"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a160ee2f27f534cfb2d10d10e5d427b54e4120c3","unresolved":false,"context_lines":[{"line_number":3,"context_line":"envlist \u003d py36,py37,pep8"},{"line_number":4,"context_line":"minversion \u003d 3.1.0"},{"line_number":5,"context_line":"skipsdist \u003d True"},{"line_number":6,"context_line":"ignore_basepython_conflict\u003dtrue"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"[testenv]"},{"line_number":9,"context_line":"basepython \u003d python3"}],"source_content_type":"text/x-properties","patch_set":4,"id":"3fa7e38b_f37ec8be","line":6,"updated":"2019-12-19 21:58:49.000000000","message":"I suggest adding a comment before this line, because the option has an ambiguous name:\n\n  # this allows tox to infer the base python from the environment name\n  # and override any basepython configured in this file","commit_id":"1f509cd794949e9b18713a05298aef0c385385fe"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a160ee2f27f534cfb2d10d10e5d427b54e4120c3","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"[testenv:functional-py36]"},{"line_number":90,"context_line":"setenv \u003d"},{"line_number":91,"context_line":"  {[testenv:functional]setenv}"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"[testenv:functional-py37]"},{"line_number":94,"context_line":"setenv \u003d"}],"source_content_type":"text/x-properties","patch_set":4,"id":"3fa7e38b_13412464","line":91,"updated":"2019-12-19 21:58:49.000000000","message":"I believe that since these are inheriting from [testenv], we need to also set the other things that are being overridden in [testenv:functional].  What I mean is, add:\n\n  passenv \u003d {[testenv:functional]passenv}\n  commands \u003d {testenv:functional]commands}\n\n(Just to be clear why we\u0027re doing this, the point of these functional-pyXX environments is that tox will look at the pyXX part and use that version of python.  Also, there may be a better way to do this -- I\u0027m not a tox expert.)","commit_id":"1f509cd794949e9b18713a05298aef0c385385fe"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"9b2f1fc5721cb4cd195dbe78831ce2741ac9e7b3","unresolved":false,"context_lines":[{"line_number":81,"context_line":"[testenv:functional]"},{"line_number":82,"context_line":"commands \u003d stestr run {posargs}"},{"line_number":83,"context_line":"setenv \u003d"},{"line_number":84,"context_line":"  {[testenv]setenv}"},{"line_number":85,"context_line":"  OS_TEST_PATH \u003d ./cinderclient/tests/functional"},{"line_number":86,"context_line":"  OS_VOLUME_API_VERSION \u003d 3"},{"line_number":87,"context_line":"# The OS_CACERT environment variable should be passed to the test"}],"source_content_type":"text/x-properties","patch_set":8,"id":"3fa7e38b_95348afb","line":84,"range":{"start_line":84,"start_character":0,"end_line":84,"end_character":19},"updated":"2020-01-09 16:18:16.000000000","message":"I wonder if this and line 16 are causing the \"No such file or directory: \u0027/home/zuul/src/opendev.org/openstack/python-cinderclient/.tox/functional/bin/cinder\u0027\" problem","commit_id":"1c37b326848b103c5cf774c4c3b50734404af3c9"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"e60dad07d84c8f4605d6595ead22599c3fc0a892","unresolved":false,"context_lines":[{"line_number":81,"context_line":"[testenv:functional]"},{"line_number":82,"context_line":"commands \u003d stestr run {posargs}"},{"line_number":83,"context_line":"setenv \u003d"},{"line_number":84,"context_line":"  {[testenv]setenv}"},{"line_number":85,"context_line":"  OS_TEST_PATH \u003d ./cinderclient/tests/functional"},{"line_number":86,"context_line":"  OS_VOLUME_API_VERSION \u003d 3"},{"line_number":87,"context_line":"# The OS_CACERT environment variable should be passed to the test"}],"source_content_type":"text/x-properties","patch_set":8,"id":"3fa7e38b_e72e758b","line":84,"range":{"start_line":84,"start_character":0,"end_line":84,"end_character":19},"in_reply_to":"3fa7e38b_95348afb","updated":"2020-01-09 16:22:47.000000000","message":"I believe so, because this is telling the test to just use the common testenv, so I believe that results in a \"functional\" venv never being created.","commit_id":"1c37b326848b103c5cf774c4c3b50734404af3c9"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"39a70ad5b695fc921b07f07b28899b2d2f32b57f","unresolved":false,"context_lines":[{"line_number":82,"context_line":"commands \u003d stestr run {posargs}"},{"line_number":83,"context_line":"setenv \u003d"},{"line_number":84,"context_line":"  OS_TEST_PATH \u003d ./cinderclient/tests/functional"},{"line_number":85,"context_line":"  OS_VOLUME_API_VERSION \u003d 3"},{"line_number":86,"context_line":"# The OS_CACERT environment variable should be passed to the test"},{"line_number":87,"context_line":"# environments to specify a CA bundle file to use in verifying a"},{"line_number":88,"context_line":"# TLS (https) server certificate."}],"source_content_type":"text/x-properties","patch_set":9,"id":"3fa7e38b_ac9b75c5","line":85,"updated":"2020-01-10 13:14:38.000000000","message":"This isn\u0027t going to inherit these any more:\n\n    OS_STDOUT_CAPTURE\u003d1\n    OS_STDERR_CAPTURE\u003d1\n    OS_TEST_TIMEOUT\u003d60\n\nWe could add them back here.  For comparison, we don\u0027t add these back to the functional testenv in the cinder tox.ini, so I didn\u0027t add them here.","commit_id":"b48653ce88a540822f786ecf26eeb606c97e4f3f"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"f2c6ba5121ecb19e4141a0a9337e5bdadbd363b6","unresolved":false,"context_lines":[{"line_number":84,"context_line":"  {[testenv]setenv}"},{"line_number":85,"context_line":"  OS_TEST_PATH \u003d ./cinderclient/tests/functional"},{"line_number":86,"context_line":"  OS_VOLUME_API_VERSION \u003d 3"},{"line_number":87,"context_line":"  OS_CINDERCLIENT_EXEC_DIR \u003d {envdir}/bin"},{"line_number":88,"context_line":"# The OS_CACERT environment variable should be passed to the test"},{"line_number":89,"context_line":"# environments to specify a CA bundle file to use in verifying a"},{"line_number":90,"context_line":"# TLS (https) server certificate."}],"source_content_type":"text/x-properties","patch_set":10,"id":"3fa7e38b_cc27d1c7","line":87,"updated":"2020-01-10 14:14:28.000000000","message":"Finally realized it wasn\u0027t a tox configuration problem, if this env var isn\u0027t set, the test code uses a default value that assumes the testenv name is \u0027functional\u0027.","commit_id":"bff2f1ba9be3f957c51f158e535008fe908c6139"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"8608df7b9524597688da1a6241ef3562ce423898","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[tox]"},{"line_number":2,"context_line":"distribute \u003d False"},{"line_number":3,"context_line":"envlist \u003d py36,py37,pep8"},{"line_number":4,"context_line":"minversion \u003d 3.1.0"},{"line_number":5,"context_line":"skipsdist \u003d True"},{"line_number":6,"context_line":"skip_missing_interpreters \u003d true"},{"line_number":7,"context_line":"# this allows tox to infer the base python from the environment name"}],"source_content_type":"text/x-properties","patch_set":19,"id":"3fa7e38b_96a8b18b","line":4,"updated":"2020-01-16 13:10:10.000000000","message":"?: Shouldn\u0027t it be 3.6 since that\u0027s what we say we support? r:-??","commit_id":"575cfc0718a4a662cea4480696d2b8507c0a4bd9"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"cf1b7acd5ef42f7bb5a30ed4c47146459a0d6ee3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[tox]"},{"line_number":2,"context_line":"distribute \u003d False"},{"line_number":3,"context_line":"envlist \u003d py36,py37,pep8"},{"line_number":4,"context_line":"minversion \u003d 3.1.0"},{"line_number":5,"context_line":"skipsdist \u003d True"},{"line_number":6,"context_line":"skip_missing_interpreters \u003d true"},{"line_number":7,"context_line":"# this allows tox to infer the base python from the environment name"}],"source_content_type":"text/x-properties","patch_set":19,"id":"3fa7e38b_d68ce92e","line":4,"in_reply_to":"3fa7e38b_96a8b18b","updated":"2020-01-16 13:12:21.000000000","message":"This is the tox minimum version.","commit_id":"575cfc0718a4a662cea4480696d2b8507c0a4bd9"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"0efac295a021aeb25e1ac10d3e957dea2a094074","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[tox]"},{"line_number":2,"context_line":"distribute \u003d False"},{"line_number":3,"context_line":"envlist \u003d py36,py37,pep8"},{"line_number":4,"context_line":"minversion \u003d 3.1.0"},{"line_number":5,"context_line":"skipsdist \u003d True"},{"line_number":6,"context_line":"skip_missing_interpreters \u003d true"},{"line_number":7,"context_line":"# this allows tox to infer the base python from the environment name"}],"source_content_type":"text/x-properties","patch_set":19,"id":"3fa7e38b_d660690f","line":4,"in_reply_to":"3fa7e38b_d68ce92e","updated":"2020-01-16 13:34:09.000000000","message":"What Sean said.","commit_id":"575cfc0718a4a662cea4480696d2b8507c0a4bd9"}]}
