)]}'
{"doc/requirements.txt":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"27c7297df62ef7fe5b928c01520b710715e070fc","unresolved":false,"context_lines":[{"line_number":10,"context_line":"sphinxcontrib-seqdiag\u003e\u003d0.8.4 # BSD"},{"line_number":11,"context_line":"docutils\u003e\u003d0.11 # OSI-Approved Open Source, Public Domain"},{"line_number":12,"context_line":"sphinx!\u003d1.6.6,!\u003d1.6.7,\u003e\u003d1.6.2,\u003c2.0.0;python_version\u003d\u003d\u00272.7\u0027  # BSD"},{"line_number":13,"context_line":"sphinx!\u003d1.6.6,!\u003d1.6.7,!\u003d2.1.0,\u003e\u003d1.6.2;python_version\u003e\u003d\u00273.4\u0027  # BSD"},{"line_number":14,"context_line":"graphviz!\u003d0.5.0,\u003e\u003d0.4 # MIT License"},{"line_number":15,"context_line":"openstackdocstheme\u003e\u003d1.20.0 # Apache-2.0"},{"line_number":16,"context_line":"sadisplay\u003e\u003d0.4.8 # BSD"}],"source_content_type":"text/plain","patch_set":14,"id":"3fa7e38b_78077b18","side":"PARENT","line":13,"updated":"2019-11-25 14:03:03.000000000","message":"Err, ok, but we should still require the py3 version because it *is* required to build. Just because it might happen to be pulled in as a dep of the other sphinx reqs (and version constrained by lower-requirements.txt) isn\u0027t actually enough to warrant removing it completely, as far as I\u0027m aware.","commit_id":"93a7116b547e7861b2bb93a362cc0f7e2787b6db"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"9749133b4f068610db207b83e7c2a1733d285c7b","unresolved":false,"context_lines":[{"line_number":10,"context_line":"sphinxcontrib-seqdiag\u003e\u003d0.8.4 # BSD"},{"line_number":11,"context_line":"docutils\u003e\u003d0.11 # OSI-Approved Open Source, Public Domain"},{"line_number":12,"context_line":"sphinx!\u003d1.6.6,!\u003d1.6.7,\u003e\u003d1.6.2,\u003c2.0.0;python_version\u003d\u003d\u00272.7\u0027  # BSD"},{"line_number":13,"context_line":"sphinx!\u003d1.6.6,!\u003d1.6.7,!\u003d2.1.0,\u003e\u003d1.6.2;python_version\u003e\u003d\u00273.4\u0027  # BSD"},{"line_number":14,"context_line":"graphviz!\u003d0.5.0,\u003e\u003d0.4 # MIT License"},{"line_number":15,"context_line":"openstackdocstheme\u003e\u003d1.20.0 # Apache-2.0"},{"line_number":16,"context_line":"sadisplay\u003e\u003d0.4.8 # BSD"}],"source_content_type":"text/plain","patch_set":14,"id":"3fa7e38b_99c91626","side":"PARENT","line":13,"in_reply_to":"3fa7e38b_78077b18","updated":"2019-11-25 19:44:33.000000000","message":"Yeah, I should put this back, originally tox -e requirements was giving me some issues, but now it seems to be working as long as I leave the python_version check in there.","commit_id":"93a7116b547e7861b2bb93a362cc0f7e2787b6db"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"27c7297df62ef7fe5b928c01520b710715e070fc","unresolved":false,"context_lines":[{"line_number":25,"context_line":"pydotplus\u003e\u003d2.0.2 # MIT License"},{"line_number":26,"context_line":"pyparsing\u003e\u003d2.1.0 # MIT"},{"line_number":27,"context_line":"networkx\u003e\u003d1.10,\u003c2.3;python_version\u003c\u00273.0\u0027 # BSD"},{"line_number":28,"context_line":"networkx\u003e\u003d1.10;python_version\u003e\u003d\u00273.4\u0027 # BSD"}],"source_content_type":"text/plain","patch_set":14,"id":"3fa7e38b_9827d7b6","side":"PARENT","line":28,"updated":"2019-11-25 14:03:03.000000000","message":"Similar here -- we should just keep the single py3 requirement.","commit_id":"93a7116b547e7861b2bb93a362cc0f7e2787b6db"}],"octavia/__init__.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e4a62db2c4894de5d7d60250311648827f41181b","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import gettext"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"gettext.install(\u0027octavia\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_91404d08","line":18,"updated":"2019-11-20 16:47:52.000000000","message":"I am going to update this change to make sure changes like this (remove python 2 support) are separated from the others (remove *testing* python 2).  The former is being discussed upstream now, and will most likely happen after the January 2020 deprecation of python 2.","commit_id":"47b021d2ceb38956663b3f4d4e1f8ea0290495aa"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"27c7297df62ef7fe5b928c01520b710715e070fc","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import gettext"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"gettext.install(\u0027octavia\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_3836e3e8","line":18,"in_reply_to":"3fa7e38b_91404d08","updated":"2019-11-25 14:03:03.000000000","message":"sure.","commit_id":"47b021d2ceb38956663b3f4d4e1f8ea0290495aa"}],"playbooks/legacy/grenade-devstack-octavia/run.yaml":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1b98abd7adf24ae95a4a8a9ba860774fa7e5f089","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"          export DEVSTACK_GATE_TEMPEST\u003d1"},{"line_number":44,"context_line":"          export DEVSTACK_GATE_GRENADE\u003dpullup"},{"line_number":45,"context_line":"          export DEVSTACK_GATE_USE_PYTHON3\u003dTrue"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"          export BRANCH_OVERRIDE\u003ddefault"},{"line_number":48,"context_line":"          if [ \"$BRANCH_OVERRIDE\" !\u003d \"default\" ] ; then"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3fa7e38b_8661b8ab","line":45,"updated":"2019-10-16 18:29:04.000000000","message":"I\u0027m going to remove this and see if it changes grenade to green.","commit_id":"026579699c7a80c9bcac6b373581aa27144bf79f"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"dbb1753375e8ea469513a73c1467fb2b20bbceb0","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"          export DEVSTACK_GATE_TEMPEST\u003d1"},{"line_number":44,"context_line":"          export DEVSTACK_GATE_GRENADE\u003dpullup"},{"line_number":45,"context_line":"          export DEVSTACK_GATE_USE_PYTHON3\u003dTrue"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"          export BRANCH_OVERRIDE\u003ddefault"},{"line_number":48,"context_line":"          if [ \"$BRANCH_OVERRIDE\" !\u003d \"default\" ] ; then"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3fa7e38b_86ff78ff","line":45,"in_reply_to":"3fa7e38b_8661b8ab","updated":"2019-11-04 17:14:21.000000000","message":"Should we open a story for grenade not running under python3?","commit_id":"026579699c7a80c9bcac6b373581aa27144bf79f"}],"requirements.txt":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"163328a84c7a61d89d6f5c2fe3692b5127886f64","unresolved":false,"context_lines":[{"line_number":57,"context_line":"ipaddress\u003e\u003d1.0.17;python_version\u003c\u00273.3\u0027 # PSF"},{"line_number":58,"context_line":"cryptography\u003e\u003d2.1 # BSD/Apache-2.0"},{"line_number":59,"context_line":"pyroute2\u003e\u003d0.4.21;sys_platform!\u003d\u0027win32\u0027 # Apache-2.0 (+ dual licensed GPL2)"},{"line_number":60,"context_line":"gunicorn\u003e\u003d19.9.0 # MIT"},{"line_number":61,"context_line":"Werkzeug\u003e\u003d0.14.1 # BSD License"}],"source_content_type":"text/plain","patch_set":14,"id":"3fa7e38b_11d21dfe","side":"PARENT","line":60,"updated":"2019-11-20 17:08:54.000000000","message":"btw, the reason I believe it\u0027s Ok to remove this is that it is simply specifying a minimum requirement, but it\u0027s already met based on lower-constraints.txt, so we\u0027re fine with *any* version of gunicorn after that.  It actually generates a strange error from openstack-requirements to leave it here now:\n\n\"ERROR: Could not find a global requirements entry to match package gunicorn. If the package is already included in the global list, the name or platform markers there may not match the local settings.\"\n\nHere\u0027s an example of another change that does the same thing:\n\nhttps://review.opendev.org/#/c/688731/\n\nIf we ever need to differ, or blacklist a version, we\u0027ll need to add it back.","commit_id":"93a7116b547e7861b2bb93a362cc0f7e2787b6db"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"27c7297df62ef7fe5b928c01520b710715e070fc","unresolved":false,"context_lines":[{"line_number":57,"context_line":"ipaddress\u003e\u003d1.0.17;python_version\u003c\u00273.3\u0027 # PSF"},{"line_number":58,"context_line":"cryptography\u003e\u003d2.1 # BSD/Apache-2.0"},{"line_number":59,"context_line":"pyroute2\u003e\u003d0.4.21;sys_platform!\u003d\u0027win32\u0027 # Apache-2.0 (+ dual licensed GPL2)"},{"line_number":60,"context_line":"gunicorn\u003e\u003d19.9.0 # MIT"},{"line_number":61,"context_line":"Werkzeug\u003e\u003d0.14.1 # BSD License"}],"source_content_type":"text/plain","patch_set":14,"id":"3fa7e38b_55360804","side":"PARENT","line":60,"in_reply_to":"3fa7e38b_11d21dfe","updated":"2019-11-25 14:03:03.000000000","message":"err, yes, but it has to *be present* in requirements.txt to actually be required, no? interestingly though, it shouldn\u0027t be necessary for octavia to run, as we only use it in the amphora, right?","commit_id":"93a7116b547e7861b2bb93a362cc0f7e2787b6db"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"9749133b4f068610db207b83e7c2a1733d285c7b","unresolved":false,"context_lines":[{"line_number":57,"context_line":"ipaddress\u003e\u003d1.0.17;python_version\u003c\u00273.3\u0027 # PSF"},{"line_number":58,"context_line":"cryptography\u003e\u003d2.1 # BSD/Apache-2.0"},{"line_number":59,"context_line":"pyroute2\u003e\u003d0.4.21;sys_platform!\u003d\u0027win32\u0027 # Apache-2.0 (+ dual licensed GPL2)"},{"line_number":60,"context_line":"gunicorn\u003e\u003d19.9.0 # MIT"},{"line_number":61,"context_line":"Werkzeug\u003e\u003d0.14.1 # BSD License"}],"source_content_type":"text/plain","patch_set":14,"id":"3fa7e38b_99c036e2","side":"PARENT","line":60,"in_reply_to":"3fa7e38b_55360804","updated":"2019-11-25 19:44:33.000000000","message":"This was the one giving me more trouble last week, due to the way oslo.requirements does version checking.  I\u0027ll need to match what it does and put a python_version\u003e\u003d3.0 here.","commit_id":"93a7116b547e7861b2bb93a362cc0f7e2787b6db"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"b7f14cadd53af55b64d8cdb8add774e04eebb05d","unresolved":false,"context_lines":[{"line_number":56,"context_line":"ipaddress\u003e\u003d1.0.17;python_version\u003c\u00273.3\u0027 # PSF"},{"line_number":57,"context_line":"cryptography\u003e\u003d2.1 # BSD/Apache-2.0"},{"line_number":58,"context_line":"pyroute2\u003e\u003d0.4.21;sys_platform!\u003d\u0027win32\u0027 # Apache-2.0 (+ dual licensed GPL2)"},{"line_number":59,"context_line":"gunicorn\u003e\u003d19.9.0;python_version\u003e\u003d\u00273.0\u0027 # MIT"},{"line_number":60,"context_line":"Werkzeug\u003e\u003d0.14.1 # BSD License"}],"source_content_type":"text/plain","patch_set":16,"id":"3fa7e38b_d6ff37fe","line":59,"updated":"2019-11-27 16:17:15.000000000","message":"Is this necessary? Everything at this point will be python \u003e\u003d3.0","commit_id":"2aa31325adedd62284b77ede4ec39bd8bedf8c13"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"52b5b2d8ba2387db48c16ee2dde47e561a5e8864","unresolved":false,"context_lines":[{"line_number":56,"context_line":"ipaddress\u003e\u003d1.0.17;python_version\u003c\u00273.3\u0027 # PSF"},{"line_number":57,"context_line":"cryptography\u003e\u003d2.1 # BSD/Apache-2.0"},{"line_number":58,"context_line":"pyroute2\u003e\u003d0.4.21;sys_platform!\u003d\u0027win32\u0027 # Apache-2.0 (+ dual licensed GPL2)"},{"line_number":59,"context_line":"gunicorn\u003e\u003d19.9.0;python_version\u003e\u003d\u00273.0\u0027 # MIT"},{"line_number":60,"context_line":"Werkzeug\u003e\u003d0.14.1 # BSD License"}],"source_content_type":"text/plain","patch_set":16,"id":"3fa7e38b_b6007bb3","line":59,"in_reply_to":"3fa7e38b_d6ff37fe","updated":"2019-11-27 16:38:23.000000000","message":"It is unfortunately, openstack-requirements check fails otherwise (tox -e requirements) because it wants to match the \u0027markers\u0027:\n\nValidating requirements.txt\nWARNING: possible mismatch found for package \"gunicorn\"\n   Attribute \"markers\" does not match\n   \"\" does not match \"python_version\u003c\u00273.0\u0027\"\n   Requirement(package\u003d\u0027gunicorn\u0027, location\u003d\u0027\u0027, specifiers\u003d\u0027\u003e\u003d19.9.0\u0027, markers\u003d\u0027\u0027, comment\u003d\u0027# MIT\u0027, extras\u003dfrozenset())\n   Requirement(package\u003d\u0027gunicorn\u0027, location\u003d\u0027\u0027, specifiers\u003d\u0027\u003c20.0.0\u0027, markers\u003d\"python_version\u003c\u00273.0\u0027\", comment\u003d\u0027# MIT\u0027, extras\u003dfrozenset())\nWARNING: possible mismatch found for package \"gunicorn\"\n   Attribute \"markers\" does not match\n   \"\" does not match \"python_version\u003e\u003d\u00273.0\u0027\"\n   Requirement(package\u003d\u0027gunicorn\u0027, location\u003d\u0027\u0027, specifiers\u003d\u0027\u003e\u003d19.9.0\u0027, markers\u003d\u0027\u0027, comment\u003d\u0027# MIT\u0027, extras\u003dfrozenset())\n   Requirement(package\u003d\u0027gunicorn\u0027, location\u003d\u0027\u0027, specifiers\u003d\u0027\u0027, markers\u003d\"python_version\u003e\u003d\u00273.0\u0027\", comment\u003d\u0027# MIT\u0027, extras\u003dfrozenset())\nERROR: Could not find a global requirements entry to match package gunicorn. If the package is already included in the global list, the name or platform markers there may not match the local settings.","commit_id":"2aa31325adedd62284b77ede4ec39bd8bedf8c13"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"3dbd68f7463cccb82888ed7e90446a86981be7ff","unresolved":false,"context_lines":[{"line_number":53,"context_line":"#for the amphora api"},{"line_number":54,"context_line":"Flask!\u003d0.11,\u003e\u003d0.10 # BSD"},{"line_number":55,"context_line":"netifaces\u003e\u003d0.10.4 # MIT"},{"line_number":56,"context_line":"ipaddress\u003e\u003d1.0.17;python_version\u003c\u00273.3\u0027 # PSF"},{"line_number":57,"context_line":"cryptography\u003e\u003d2.1 # BSD/Apache-2.0"},{"line_number":58,"context_line":"pyroute2\u003e\u003d0.4.21;sys_platform!\u003d\u0027win32\u0027 # Apache-2.0 (+ dual licensed GPL2)"},{"line_number":59,"context_line":"gunicorn\u003e\u003d19.9.0;python_version\u003e\u003d\u00273.0\u0027 # MIT"}],"source_content_type":"text/plain","patch_set":19,"id":"3fa7e38b_295c024b","line":56,"range":{"start_line":56,"start_character":17,"end_line":56,"end_character":38},"updated":"2019-12-02 16:10:26.000000000","message":"If we are to remove py2 support, we may as well remove support to really old and untested Python 3 versions.","commit_id":"4c79ed5df04ebb0eff7e4e42362fe076e6d0a40c"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"e09f21cc54043a78dac7da1e712c863dc7f75c2d","unresolved":false,"context_lines":[{"line_number":53,"context_line":"#for the amphora api"},{"line_number":54,"context_line":"Flask!\u003d0.11,\u003e\u003d0.10 # BSD"},{"line_number":55,"context_line":"netifaces\u003e\u003d0.10.4 # MIT"},{"line_number":56,"context_line":"ipaddress\u003e\u003d1.0.17;python_version\u003c\u00273.3\u0027 # PSF"},{"line_number":57,"context_line":"cryptography\u003e\u003d2.1 # BSD/Apache-2.0"},{"line_number":58,"context_line":"pyroute2\u003e\u003d0.4.21;sys_platform!\u003d\u0027win32\u0027 # Apache-2.0 (+ dual licensed GPL2)"},{"line_number":59,"context_line":"gunicorn\u003e\u003d19.9.0;python_version\u003e\u003d\u00273.0\u0027 # MIT"}],"source_content_type":"text/plain","patch_set":19,"id":"3fa7e38b_4cc38c3a","line":56,"range":{"start_line":56,"start_character":17,"end_line":56,"end_character":38},"in_reply_to":"3fa7e38b_295c024b","updated":"2019-12-02 16:39:21.000000000","message":"I think it\u0027s just that these need to be set to match g-r or it barfs on the requirements checks? Eventually it\u0027ll get cleaned up.","commit_id":"4c79ed5df04ebb0eff7e4e42362fe076e6d0a40c"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"5baa20ceb1e4e2f8a7f058e4d890ce6d48f7209c","unresolved":false,"context_lines":[{"line_number":53,"context_line":"#for the amphora api"},{"line_number":54,"context_line":"Flask!\u003d0.11,\u003e\u003d0.10 # BSD"},{"line_number":55,"context_line":"netifaces\u003e\u003d0.10.4 # MIT"},{"line_number":56,"context_line":"ipaddress\u003e\u003d1.0.17;python_version\u003c\u00273.3\u0027 # PSF"},{"line_number":57,"context_line":"cryptography\u003e\u003d2.1 # BSD/Apache-2.0"},{"line_number":58,"context_line":"pyroute2\u003e\u003d0.4.21;sys_platform!\u003d\u0027win32\u0027 # Apache-2.0 (+ dual licensed GPL2)"},{"line_number":59,"context_line":"gunicorn\u003e\u003d19.9.0;python_version\u003e\u003d\u00273.0\u0027 # MIT"}],"source_content_type":"text/plain","patch_set":19,"id":"3fa7e38b_6c7f68df","line":56,"range":{"start_line":56,"start_character":17,"end_line":56,"end_character":38},"in_reply_to":"3fa7e38b_2c3bb039","updated":"2019-12-02 16:43:55.000000000","message":"Yeah, but we haven\u0027t removed the CODE that uses it yet I think? So we can\u0027t drop it until then. Which will be a followup, this patch is JUST to kill testing.","commit_id":"4c79ed5df04ebb0eff7e4e42362fe076e6d0a40c"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"e5f9c2334f967fa6f5e4a7ebb8308273e0e83505","unresolved":false,"context_lines":[{"line_number":53,"context_line":"#for the amphora api"},{"line_number":54,"context_line":"Flask!\u003d0.11,\u003e\u003d0.10 # BSD"},{"line_number":55,"context_line":"netifaces\u003e\u003d0.10.4 # MIT"},{"line_number":56,"context_line":"ipaddress\u003e\u003d1.0.17;python_version\u003c\u00273.3\u0027 # PSF"},{"line_number":57,"context_line":"cryptography\u003e\u003d2.1 # BSD/Apache-2.0"},{"line_number":58,"context_line":"pyroute2\u003e\u003d0.4.21;sys_platform!\u003d\u0027win32\u0027 # Apache-2.0 (+ dual licensed GPL2)"},{"line_number":59,"context_line":"gunicorn\u003e\u003d19.9.0;python_version\u003e\u003d\u00273.0\u0027 # MIT"}],"source_content_type":"text/plain","patch_set":19,"id":"3fa7e38b_c780b54c","line":56,"range":{"start_line":56,"start_character":17,"end_line":56,"end_character":38},"in_reply_to":"3fa7e38b_4c6e2cff","updated":"2019-12-02 17:01:09.000000000","message":"Hmm... Yeah, I guess we could technically remove this since we don\u0027t test on \u003c3.3, you\u0027re right... Ok, let me just ... do it.","commit_id":"4c79ed5df04ebb0eff7e4e42362fe076e6d0a40c"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"dc01d5afb65c7dbab9a5e5609094276f13d7e3f7","unresolved":false,"context_lines":[{"line_number":53,"context_line":"#for the amphora api"},{"line_number":54,"context_line":"Flask!\u003d0.11,\u003e\u003d0.10 # BSD"},{"line_number":55,"context_line":"netifaces\u003e\u003d0.10.4 # MIT"},{"line_number":56,"context_line":"ipaddress\u003e\u003d1.0.17;python_version\u003c\u00273.3\u0027 # PSF"},{"line_number":57,"context_line":"cryptography\u003e\u003d2.1 # BSD/Apache-2.0"},{"line_number":58,"context_line":"pyroute2\u003e\u003d0.4.21;sys_platform!\u003d\u0027win32\u0027 # Apache-2.0 (+ dual licensed GPL2)"},{"line_number":59,"context_line":"gunicorn\u003e\u003d19.9.0;python_version\u003e\u003d\u00273.0\u0027 # MIT"}],"source_content_type":"text/plain","patch_set":19,"id":"3fa7e38b_2c3bb039","line":56,"range":{"start_line":56,"start_character":17,"end_line":56,"end_character":38},"in_reply_to":"3fa7e38b_4cc38c3a","updated":"2019-12-02 16:41:15.000000000","message":"Ah, true. Yet, we don\u0027t need this lib anymore going forward with Python 3 only.","commit_id":"4c79ed5df04ebb0eff7e4e42362fe076e6d0a40c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c0e46d40e0df1bafcb47ee9a366cc77cc984da22","unresolved":false,"context_lines":[{"line_number":53,"context_line":"#for the amphora api"},{"line_number":54,"context_line":"Flask!\u003d0.11,\u003e\u003d0.10 # BSD"},{"line_number":55,"context_line":"netifaces\u003e\u003d0.10.4 # MIT"},{"line_number":56,"context_line":"ipaddress\u003e\u003d1.0.17;python_version\u003c\u00273.3\u0027 # PSF"},{"line_number":57,"context_line":"cryptography\u003e\u003d2.1 # BSD/Apache-2.0"},{"line_number":58,"context_line":"pyroute2\u003e\u003d0.4.21;sys_platform!\u003d\u0027win32\u0027 # Apache-2.0 (+ dual licensed GPL2)"},{"line_number":59,"context_line":"gunicorn\u003e\u003d19.9.0;python_version\u003e\u003d\u00273.0\u0027 # MIT"}],"source_content_type":"text/plain","patch_set":19,"id":"3fa7e38b_27142941","line":56,"range":{"start_line":56,"start_character":17,"end_line":56,"end_character":38},"in_reply_to":"3fa7e38b_6c7f68df","updated":"2019-12-02 17:06:01.000000000","message":"Right, this is one of those cases where we have no py3 g-r requirement set, there isn\u0027t even an upper-constraint in openstack-requirements.  We do use the ipaddress lib in some code, we just don\u0027t care about the version with py3.","commit_id":"4c79ed5df04ebb0eff7e4e42362fe076e6d0a40c"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"dce5150c22dafd9ebf4f7380bfaa670c8a770e64","unresolved":false,"context_lines":[{"line_number":53,"context_line":"#for the amphora api"},{"line_number":54,"context_line":"Flask!\u003d0.11,\u003e\u003d0.10 # BSD"},{"line_number":55,"context_line":"netifaces\u003e\u003d0.10.4 # MIT"},{"line_number":56,"context_line":"ipaddress\u003e\u003d1.0.17;python_version\u003c\u00273.3\u0027 # PSF"},{"line_number":57,"context_line":"cryptography\u003e\u003d2.1 # BSD/Apache-2.0"},{"line_number":58,"context_line":"pyroute2\u003e\u003d0.4.21;sys_platform!\u003d\u0027win32\u0027 # Apache-2.0 (+ dual licensed GPL2)"},{"line_number":59,"context_line":"gunicorn\u003e\u003d19.9.0;python_version\u003e\u003d\u00273.0\u0027 # MIT"}],"source_content_type":"text/plain","patch_set":19,"id":"3fa7e38b_4c6e2cff","line":56,"range":{"start_line":56,"start_character":17,"end_line":56,"end_character":38},"in_reply_to":"3fa7e38b_6c7f68df","updated":"2019-12-02 16:52:03.000000000","message":"ipaddress is part of python 3 base\n\nhttps://docs.python.org/3/library/ipaddress.html","commit_id":"4c79ed5df04ebb0eff7e4e42362fe076e6d0a40c"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"3dbd68f7463cccb82888ed7e90446a86981be7ff","unresolved":false,"context_lines":[{"line_number":56,"context_line":"ipaddress\u003e\u003d1.0.17;python_version\u003c\u00273.3\u0027 # PSF"},{"line_number":57,"context_line":"cryptography\u003e\u003d2.1 # BSD/Apache-2.0"},{"line_number":58,"context_line":"pyroute2\u003e\u003d0.4.21;sys_platform!\u003d\u0027win32\u0027 # Apache-2.0 (+ dual licensed GPL2)"},{"line_number":59,"context_line":"gunicorn\u003e\u003d19.9.0;python_version\u003e\u003d\u00273.0\u0027 # MIT"},{"line_number":60,"context_line":"Werkzeug\u003e\u003d0.14.1 # BSD License"}],"source_content_type":"text/plain","patch_set":19,"id":"3fa7e38b_c9620e16","line":59,"range":{"start_line":59,"start_character":16,"end_line":59,"end_character":38},"updated":"2019-12-02 16:10:26.000000000","message":"Hmm. Why?","commit_id":"4c79ed5df04ebb0eff7e4e42362fe076e6d0a40c"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"e09f21cc54043a78dac7da1e712c863dc7f75c2d","unresolved":false,"context_lines":[{"line_number":56,"context_line":"ipaddress\u003e\u003d1.0.17;python_version\u003c\u00273.3\u0027 # PSF"},{"line_number":57,"context_line":"cryptography\u003e\u003d2.1 # BSD/Apache-2.0"},{"line_number":58,"context_line":"pyroute2\u003e\u003d0.4.21;sys_platform!\u003d\u0027win32\u0027 # Apache-2.0 (+ dual licensed GPL2)"},{"line_number":59,"context_line":"gunicorn\u003e\u003d19.9.0;python_version\u003e\u003d\u00273.0\u0027 # MIT"},{"line_number":60,"context_line":"Werkzeug\u003e\u003d0.14.1 # BSD License"}],"source_content_type":"text/plain","patch_set":19,"id":"3fa7e38b_0cbd94b0","line":59,"range":{"start_line":59,"start_character":16,"end_line":59,"end_character":38},"in_reply_to":"3fa7e38b_290ac226","updated":"2019-12-02 16:39:21.000000000","message":"Same","commit_id":"4c79ed5df04ebb0eff7e4e42362fe076e6d0a40c"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"20624bea7ac0aeb588c112a434bba9626d5dbdf7","unresolved":false,"context_lines":[{"line_number":56,"context_line":"ipaddress\u003e\u003d1.0.17;python_version\u003c\u00273.3\u0027 # PSF"},{"line_number":57,"context_line":"cryptography\u003e\u003d2.1 # BSD/Apache-2.0"},{"line_number":58,"context_line":"pyroute2\u003e\u003d0.4.21;sys_platform!\u003d\u0027win32\u0027 # Apache-2.0 (+ dual licensed GPL2)"},{"line_number":59,"context_line":"gunicorn\u003e\u003d19.9.0;python_version\u003e\u003d\u00273.0\u0027 # MIT"},{"line_number":60,"context_line":"Werkzeug\u003e\u003d0.14.1 # BSD License"}],"source_content_type":"text/plain","patch_set":19,"id":"3fa7e38b_290ac226","line":59,"range":{"start_line":59,"start_character":16,"end_line":59,"end_character":38},"in_reply_to":"3fa7e38b_c9620e16","updated":"2019-12-02 16:12:02.000000000","message":"I missed previous comments, like https://review.opendev.org/#/c/687370/14/requirements.txt@a60","commit_id":"4c79ed5df04ebb0eff7e4e42362fe076e6d0a40c"}],"setup.cfg":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"780d97ccd8d392df9c88c08c0c78c328444cc24a","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    License :: OSI Approved :: Apache Software License"},{"line_number":16,"context_line":"    Operating System :: POSIX :: Linux"},{"line_number":17,"context_line":"    Programming Language :: Python"},{"line_number":18,"context_line":"    Programming Language :: Python :: 2.7"},{"line_number":19,"context_line":"    Programming Language :: Python :: 3"},{"line_number":20,"context_line":"    Programming Language :: Python :: 3.6"},{"line_number":21,"context_line":"    Programming Language :: Python :: 3.7"}],"source_content_type":"text/x-ttcn-cfg","patch_set":1,"id":"3fa7e38b_8ae341d8","line":18,"updated":"2019-10-11 16:39:55.000000000","message":"I think we should remove this declaration as well.","commit_id":"60df503d45ef50604ac163e1309d74f1324f0104"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"d830dbbdea24588720161ff35ddd1e6ab1c8ac09","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    License :: OSI Approved :: Apache Software License"},{"line_number":16,"context_line":"    Operating System :: POSIX :: Linux"},{"line_number":17,"context_line":"    Programming Language :: Python"},{"line_number":18,"context_line":"    Programming Language :: Python :: 2.7"},{"line_number":19,"context_line":"    Programming Language :: Python :: 3"},{"line_number":20,"context_line":"    Programming Language :: Python :: 3.6"},{"line_number":21,"context_line":"    Programming Language :: Python :: 3.7"}],"source_content_type":"text/x-ttcn-cfg","patch_set":1,"id":"3fa7e38b_0db52b32","line":18,"in_reply_to":"3fa7e38b_8ae341d8","updated":"2019-10-11 17:26:58.000000000","message":"Whoops, missed that.","commit_id":"60df503d45ef50604ac163e1309d74f1324f0104"}],"test-requirements.txt":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"27c7297df62ef7fe5b928c01520b710715e070fc","unresolved":false,"context_lines":[{"line_number":20,"context_line":"tempest\u003e\u003d17.1.0 # Apache-2.0"},{"line_number":21,"context_line":"# Required for pep8 - doc8 tests"},{"line_number":22,"context_line":"sphinx!\u003d1.6.6,!\u003d1.6.7,\u003e\u003d1.6.2,\u003c2.0.0;python_version\u003d\u003d\u00272.7\u0027  # BSD"},{"line_number":23,"context_line":"sphinx!\u003d1.6.6,!\u003d1.6.7,\u003e\u003d1.6.2;python_version\u003e\u003d\u00273.4\u0027  # BSD"},{"line_number":24,"context_line":"bashate\u003e\u003d0.5.1 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":14,"id":"3fa7e38b_f8404b34","side":"PARENT","line":23,"updated":"2019-11-25 14:03:03.000000000","message":"Isn\u0027t this still required at least in the py3 form?","commit_id":"93a7116b547e7861b2bb93a362cc0f7e2787b6db"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"9749133b4f068610db207b83e7c2a1733d285c7b","unresolved":false,"context_lines":[{"line_number":20,"context_line":"tempest\u003e\u003d17.1.0 # Apache-2.0"},{"line_number":21,"context_line":"# Required for pep8 - doc8 tests"},{"line_number":22,"context_line":"sphinx!\u003d1.6.6,!\u003d1.6.7,\u003e\u003d1.6.2,\u003c2.0.0;python_version\u003d\u003d\u00272.7\u0027  # BSD"},{"line_number":23,"context_line":"sphinx!\u003d1.6.6,!\u003d1.6.7,\u003e\u003d1.6.2;python_version\u003e\u003d\u00273.4\u0027  # BSD"},{"line_number":24,"context_line":"bashate\u003e\u003d0.5.1 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":14,"id":"3fa7e38b_f9b04a8d","side":"PARENT","line":23,"in_reply_to":"3fa7e38b_f8404b34","updated":"2019-11-25 19:44:33.000000000","message":"Done","commit_id":"93a7116b547e7861b2bb93a362cc0f7e2787b6db"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"b7f14cadd53af55b64d8cdb8add774e04eebb05d","unresolved":false,"context_lines":[{"line_number":21,"context_line":"# Required for pep8 - doc8 tests"},{"line_number":22,"context_line":"sphinx!\u003d1.6.6,!\u003d1.6.7,\u003e\u003d1.6.2;python_version\u003e\u003d\u00273.4\u0027  # BSD"},{"line_number":23,"context_line":"bashate\u003e\u003d0.5.1 # Apache-2.0"},{"line_number":24,"context_line":"Pygments\u003e\u003d2.2.0 # BSD"}],"source_content_type":"text/plain","patch_set":16,"id":"3fa7e38b_360ecb33","line":24,"updated":"2019-11-27 16:17:15.000000000","message":"Interesting, we were missing a test req?","commit_id":"2aa31325adedd62284b77ede4ec39bd8bedf8c13"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"52b5b2d8ba2387db48c16ee2dde47e561a5e8864","unresolved":false,"context_lines":[{"line_number":21,"context_line":"# Required for pep8 - doc8 tests"},{"line_number":22,"context_line":"sphinx!\u003d1.6.6,!\u003d1.6.7,\u003e\u003d1.6.2;python_version\u003e\u003d\u00273.4\u0027  # BSD"},{"line_number":23,"context_line":"bashate\u003e\u003d0.5.1 # Apache-2.0"},{"line_number":24,"context_line":"Pygments\u003e\u003d2.2.0 # BSD"}],"source_content_type":"text/plain","patch_set":16,"id":"3fa7e38b_760a03d2","line":24,"in_reply_to":"3fa7e38b_360ecb33","updated":"2019-11-27 16:38:23.000000000","message":"Hmm, I can\u0027t remember why I added this now, let me test, probably a fall-out from previously removing sphinx.","commit_id":"2aa31325adedd62284b77ede4ec39bd8bedf8c13"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"3dbd68f7463cccb82888ed7e90446a86981be7ff","unresolved":false,"context_lines":[{"line_number":9,"context_line":"mock\u003e\u003d2.0.0 # BSD"},{"line_number":10,"context_line":"python-subunit\u003e\u003d1.0.0 # Apache-2.0/BSD"},{"line_number":11,"context_line":"oslotest\u003e\u003d3.2.0 # Apache-2.0"},{"line_number":12,"context_line":"pylint\u003d\u003d1.9.2;python_version\u003c\u00273.0\u0027 # GPLv2"},{"line_number":13,"context_line":"pylint\u003e\u003d1.9.2;python_version\u003e\u003d\u00273.0\u0027 # GPLv2"},{"line_number":14,"context_line":"testrepository\u003e\u003d0.0.18 # Apache-2.0/BSD"},{"line_number":15,"context_line":"testtools\u003e\u003d2.2.0 # MIT"}],"source_content_type":"text/plain","patch_set":19,"id":"3fa7e38b_a92d52af","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":42},"updated":"2019-12-02 16:10:26.000000000","message":"ditto","commit_id":"4c79ed5df04ebb0eff7e4e42362fe076e6d0a40c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c0e46d40e0df1bafcb47ee9a366cc77cc984da22","unresolved":false,"context_lines":[{"line_number":9,"context_line":"mock\u003e\u003d2.0.0 # BSD"},{"line_number":10,"context_line":"python-subunit\u003e\u003d1.0.0 # Apache-2.0/BSD"},{"line_number":11,"context_line":"oslotest\u003e\u003d3.2.0 # Apache-2.0"},{"line_number":12,"context_line":"pylint\u003d\u003d1.9.2;python_version\u003c\u00273.0\u0027 # GPLv2"},{"line_number":13,"context_line":"pylint\u003e\u003d1.9.2;python_version\u003e\u003d\u00273.0\u0027 # GPLv2"},{"line_number":14,"context_line":"testrepository\u003e\u003d0.0.18 # Apache-2.0/BSD"},{"line_number":15,"context_line":"testtools\u003e\u003d2.2.0 # MIT"}],"source_content_type":"text/plain","patch_set":19,"id":"3fa7e38b_07600dcf","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":42},"in_reply_to":"3fa7e38b_a92d52af","updated":"2019-12-02 17:06:01.000000000","message":"I can update and remove this now, or in the follow-on removing py2 from the code itself, just missed it.","commit_id":"4c79ed5df04ebb0eff7e4e42362fe076e6d0a40c"}],"tox.ini":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"780d97ccd8d392df9c88c08c0c78c328444cc24a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[tox]"},{"line_number":2,"context_line":"minversion \u003d 2.5.0"},{"line_number":3,"context_line":"envlist \u003d docs,py27,py36,py37,functional-py37,functional-py36,functional,pep8,specs"},{"line_number":4,"context_line":"skipsdist \u003d True"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"[testenv]"}],"source_content_type":"text/x-properties","patch_set":1,"id":"3fa7e38b_ca061987","line":3,"range":{"start_line":3,"start_character":10,"end_line":3,"end_character":83},"updated":"2019-10-11 16:39:55.000000000","message":"I think we should pull \"py27\" and maybe remove \"functional\" or remove the functional-py3x.\nfunctional is a long test set, I would hate to run the same tests twice.","commit_id":"60df503d45ef50604ac163e1309d74f1324f0104"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"b417bba93f0852cfc36def8e70900b388e8a3774","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[tox]"},{"line_number":2,"context_line":"minversion \u003d 2.5.0"},{"line_number":3,"context_line":"envlist \u003d docs,py27,py36,py37,functional-py37,functional-py36,functional,pep8,specs"},{"line_number":4,"context_line":"skipsdist \u003d True"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"[testenv]"}],"source_content_type":"text/x-properties","patch_set":1,"id":"3fa7e38b_ade897b2","line":3,"range":{"start_line":3,"start_character":10,"end_line":3,"end_character":83},"in_reply_to":"3fa7e38b_ad42d70d","updated":"2019-10-11 17:32:53.000000000","message":"Well, this is just the \"default\" environment run list right? As long as those py27 jobs are still defined below, the other parent jobs should still run right?\nMy understanding of this line is it defines what is run when a user just runs \"tox\" with no parameters.","commit_id":"60df503d45ef50604ac163e1309d74f1324f0104"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"d830dbbdea24588720161ff35ddd1e6ab1c8ac09","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[tox]"},{"line_number":2,"context_line":"minversion \u003d 2.5.0"},{"line_number":3,"context_line":"envlist \u003d docs,py27,py36,py37,functional-py37,functional-py36,functional,pep8,specs"},{"line_number":4,"context_line":"skipsdist \u003d True"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"[testenv]"}],"source_content_type":"text/x-properties","patch_set":1,"id":"3fa7e38b_ad42d70d","line":3,"range":{"start_line":3,"start_character":10,"end_line":3,"end_character":83},"in_reply_to":"3fa7e38b_ca061987","updated":"2019-10-11 17:26:58.000000000","message":"So we can\u0027t remove py27 yet, since there is an inherited job from the openstack-python-*-jobs template that needs it.  Once that template removes it this can go.  I can add a TODO as I did in the neutron one.\n\nRegarding functional, it looks like there are two functional jobs being run against changes:\n\n  openstack-tox-functional\n  openstack-tox-functional-py36\n\nThe first is (was) using python27.  I\u0027ll remove the -py37 one here and make functional run against python37, I don\u0027t think that will interfere with the zuul job definitions.","commit_id":"60df503d45ef50604ac163e1309d74f1324f0104"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"cba1abbf63169a6225fe3927f81f263a0cd5805e","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    coverage xml -o cover/coverage.xml"},{"line_number":47,"context_line":"    coverage report --fail-under\u003d90 --skip-covered"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"[testenv:functional]"},{"line_number":50,"context_line":"setenv \u003d OS_TEST_PATH\u003d{toxinidir}/octavia/tests/functional"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"[testenv:functional-py36]"}],"source_content_type":"text/x-properties","patch_set":11,"id":"3fa7e38b_c42eb38b","line":49,"updated":"2019-11-06 06:59:27.000000000","message":"I wonder whether this can be removed completely","commit_id":"4bfb573b8585da834bf3938b1c84a8f0d73305c2"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"b7f14cadd53af55b64d8cdb8add774e04eebb05d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[tox]"},{"line_number":2,"context_line":"minversion \u003d 2.5.0"},{"line_number":3,"context_line":"envlist \u003d docs,py36,py37,functional-py36,functional-py37,pep8,specs"},{"line_number":4,"context_line":"skipsdist \u003d True"},{"line_number":5,"context_line":"ignore_basepython_conflict \u003d True"},{"line_number":6,"context_line":""}],"source_content_type":"text/x-properties","patch_set":16,"id":"3fa7e38b_3637abe7","line":3,"updated":"2019-11-27 16:17:15.000000000","message":"so we no longer have a \"default\" functional, have to specify -py3X? I guess that\u0027s fine, though I might have just switched `functional` to do the tests with basepython and not require specifying the minor version.","commit_id":"2aa31325adedd62284b77ede4ec39bd8bedf8c13"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"52b5b2d8ba2387db48c16ee2dde47e561a5e8864","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[tox]"},{"line_number":2,"context_line":"minversion \u003d 2.5.0"},{"line_number":3,"context_line":"envlist \u003d docs,py36,py37,functional-py36,functional-py37,pep8,specs"},{"line_number":4,"context_line":"skipsdist \u003d True"},{"line_number":5,"context_line":"ignore_basepython_conflict \u003d True"},{"line_number":6,"context_line":""}],"source_content_type":"text/x-properties","patch_set":16,"id":"3fa7e38b_96abff86","line":3,"in_reply_to":"3fa7e38b_3637abe7","updated":"2019-11-27 16:38:23.000000000","message":"I can put it back, along with the \"ambiguous\" comment on L51, since it will just whatever python3 you have installed.  The gate jobs are what matters.","commit_id":"2aa31325adedd62284b77ede4ec39bd8bedf8c13"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"61fbc0eed2b1ada9ff1d0ebbb755ad74e8ca23a2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[tox]"},{"line_number":2,"context_line":"minversion \u003d 2.5.0"},{"line_number":3,"context_line":"envlist \u003d docs,py36,py37,functional-py36,functional-py37,functional,pep8,specs"},{"line_number":4,"context_line":"skipsdist \u003d True"},{"line_number":5,"context_line":"ignore_basepython_conflict \u003d True"},{"line_number":6,"context_line":""}],"source_content_type":"text/x-properties","patch_set":18,"id":"3fa7e38b_b6eb9b79","line":3,"updated":"2019-11-27 16:44:39.000000000","message":"Ah, I don\u0027t think `functional` needs to be in THIS list, I just wanted it to exist such that I can run it. It doesn\u0027t really make sense to run it again in a \"full run\" situation.","commit_id":"ce734bc8bedf11f0905bfc56d72013306a5e1aa8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"56c99422e3ea9dc9652de20b5eb2c97e18427e27","unresolved":false,"context_lines":[{"line_number":1,"context_line":"[tox]"},{"line_number":2,"context_line":"minversion \u003d 2.5.0"},{"line_number":3,"context_line":"envlist \u003d docs,py36,py37,functional-py36,functional-py37,functional,pep8,specs"},{"line_number":4,"context_line":"skipsdist \u003d True"},{"line_number":5,"context_line":"ignore_basepython_conflict \u003d True"},{"line_number":6,"context_line":""}],"source_content_type":"text/x-properties","patch_set":18,"id":"3fa7e38b_b62cfbb2","line":3,"in_reply_to":"3fa7e38b_b6eb9b79","updated":"2019-11-27 16:48:42.000000000","message":"Done","commit_id":"ce734bc8bedf11f0905bfc56d72013306a5e1aa8"}],"zuul.d/projects.yaml":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"a8ca3ba891422f10cf118f4a1d2b28efb8edec94","unresolved":false,"context_lines":[{"line_number":6,"context_line":"      - periodic-stable-jobs-neutron"},{"line_number":7,"context_line":"      - openstack-cover-jobs"},{"line_number":8,"context_line":"      - openstack-lower-constraints-jobs"},{"line_number":9,"context_line":"      - openstack-python-jobs"},{"line_number":10,"context_line":"      - openstack-python3-ussuri-jobs"},{"line_number":11,"context_line":"      - publish-openstack-docs-pti"},{"line_number":12,"context_line":"      - release-notes-jobs-python3"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3fa7e38b_466c20cf","line":9,"updated":"2019-11-04 17:23:59.000000000","message":"I think we can drop this now that the openstack-python3-ussuri-jobs is complete.","commit_id":"4bfb573b8585da834bf3938b1c84a8f0d73305c2"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"cba1abbf63169a6225fe3927f81f263a0cd5805e","unresolved":false,"context_lines":[{"line_number":6,"context_line":"      - periodic-stable-jobs-neutron"},{"line_number":7,"context_line":"      - openstack-cover-jobs"},{"line_number":8,"context_line":"      - openstack-lower-constraints-jobs"},{"line_number":9,"context_line":"      - openstack-python-jobs"},{"line_number":10,"context_line":"      - openstack-python3-ussuri-jobs"},{"line_number":11,"context_line":"      - publish-openstack-docs-pti"},{"line_number":12,"context_line":"      - release-notes-jobs-python3"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3fa7e38b_e4372fe4","line":9,"in_reply_to":"3fa7e38b_466c20cf","updated":"2019-11-06 06:59:27.000000000","message":"Yes, and that would drop the py27 unit test job","commit_id":"4bfb573b8585da834bf3938b1c84a8f0d73305c2"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"cba1abbf63169a6225fe3927f81f263a0cd5805e","unresolved":false,"context_lines":[{"line_number":13,"context_line":"      - octavia-tox-tips"},{"line_number":14,"context_line":"    check:"},{"line_number":15,"context_line":"      jobs:"},{"line_number":16,"context_line":"        - openstack-tox-functional:"},{"line_number":17,"context_line":"            irrelevant-files:"},{"line_number":18,"context_line":"              - ^.*\\.rst$"},{"line_number":19,"context_line":"              - ^api-ref/.*$"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3fa7e38b_6449ff64","line":16,"updated":"2019-11-06 06:59:27.000000000","message":"This is a py27 job so can remove it here and in gate section below.","commit_id":"4bfb573b8585da834bf3938b1c84a8f0d73305c2"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"27c7297df62ef7fe5b928c01520b710715e070fc","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        - octavia-v2-dsvm-noop-py2-api"},{"line_number":32,"context_line":"        - octavia-v2-dsvm-scenario"},{"line_number":33,"context_line":"        - octavia-v2-dsvm-py2-scenario"},{"line_number":34,"context_line":"        - octavia-v2-dsvm-py2-scenario-centos-7:"},{"line_number":35,"context_line":"            voting: false"},{"line_number":36,"context_line":"        - octavia-v2-dsvm-scenario-two-node:"},{"line_number":37,"context_line":"            voting: false"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"3fa7e38b_b8865364","side":"PARENT","line":34,"updated":"2019-11-25 14:03:03.000000000","message":"Interestingly, our cent7 tests don\u0027t have a py3 equiv yet. We should probably make sure that happens? Though I\u0027m ok with not doing it in this patch.","commit_id":"93a7116b547e7861b2bb93a362cc0f7e2787b6db"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"9749133b4f068610db207b83e7c2a1733d285c7b","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        - octavia-v2-dsvm-noop-py2-api"},{"line_number":32,"context_line":"        - octavia-v2-dsvm-scenario"},{"line_number":33,"context_line":"        - octavia-v2-dsvm-py2-scenario"},{"line_number":34,"context_line":"        - octavia-v2-dsvm-py2-scenario-centos-7:"},{"line_number":35,"context_line":"            voting: false"},{"line_number":36,"context_line":"        - octavia-v2-dsvm-scenario-two-node:"},{"line_number":37,"context_line":"            voting: false"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"3fa7e38b_3c049013","side":"PARENT","line":34,"in_reply_to":"3fa7e38b_b8865364","updated":"2019-11-25 19:44:33.000000000","message":"Yes, looking over in octavia-tempest-plugin there should be a py3 equivalent, but even the octavia-v2-dsvm-scenario-centos-7 job (no py2) inherits from the py2 definition. I\u0027ll have to create a story to unravel all of that.","commit_id":"93a7116b547e7861b2bb93a362cc0f7e2787b6db"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"27c7297df62ef7fe5b928c01520b710715e070fc","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            voting: false"},{"line_number":69,"context_line":"        - octavia-v2-act-stdby-iptables-dsvm-py2-scenario:"},{"line_number":70,"context_line":"            voting: false"},{"line_number":71,"context_line":"        - octavia-v2-act-stdby-iptables-dsvm-py2-scenario-centos-7:"},{"line_number":72,"context_line":"            voting: false"},{"line_number":73,"context_line":"    gate:"},{"line_number":74,"context_line":"      fail-fast: true"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"3fa7e38b_f8ae0be2","side":"PARENT","line":71,"updated":"2019-11-25 14:03:03.000000000","message":"Same as above","commit_id":"93a7116b547e7861b2bb93a362cc0f7e2787b6db"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"4208e32555a60966279325b16560f5655e7170ed","unresolved":false,"context_lines":[{"line_number":23,"context_line":"        - octavia-v2-dsvm-scenario"},{"line_number":24,"context_line":"        - octavia-v2-dsvm-scenario-two-node:"},{"line_number":25,"context_line":"            voting: false"},{"line_number":26,"context_line":"            voting: false"},{"line_number":27,"context_line":"        # TODO(haleyb): restore to voting once python3 issues fixed"},{"line_number":28,"context_line":"        - octavia-grenade:"},{"line_number":29,"context_line":"            voting: false"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"3fa7e38b_76a0c3f4","line":26,"updated":"2019-11-27 16:17:50.000000000","message":"Ah, double-voting line","commit_id":"2aa31325adedd62284b77ede4ec39bd8bedf8c13"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"52b5b2d8ba2387db48c16ee2dde47e561a5e8864","unresolved":false,"context_lines":[{"line_number":23,"context_line":"        - octavia-v2-dsvm-scenario"},{"line_number":24,"context_line":"        - octavia-v2-dsvm-scenario-two-node:"},{"line_number":25,"context_line":"            voting: false"},{"line_number":26,"context_line":"            voting: false"},{"line_number":27,"context_line":"        # TODO(haleyb): restore to voting once python3 issues fixed"},{"line_number":28,"context_line":"        - octavia-grenade:"},{"line_number":29,"context_line":"            voting: false"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"3fa7e38b_b685db0c","line":26,"in_reply_to":"3fa7e38b_76a0c3f4","updated":"2019-11-27 16:38:23.000000000","message":"Oops, introduced fixing merge conflict.","commit_id":"2aa31325adedd62284b77ede4ec39bd8bedf8c13"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"3dbd68f7463cccb82888ed7e90446a86981be7ff","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        - octavia-v2-dsvm-noop-py2-api"},{"line_number":32,"context_line":"        - octavia-v2-dsvm-scenario"},{"line_number":33,"context_line":"        - octavia-v2-dsvm-py2-scenario"},{"line_number":34,"context_line":"        - octavia-v2-dsvm-py2-scenario-centos-7:"},{"line_number":35,"context_line":"            voting: false"},{"line_number":36,"context_line":"        - octavia-v2-dsvm-scenario-two-node:"},{"line_number":37,"context_line":"            voting: false"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"3fa7e38b_a9ba326e","side":"PARENT","line":34,"range":{"start_line":34,"start_character":10,"end_line":34,"end_character":47},"updated":"2019-12-02 16:10:26.000000000","message":"Can we keep CentOS 7 until 8 becomes available? If yes,  the job requires now USE_PYTHON3\u003dFalse with the switch to python3 default in devstack.","commit_id":"a308ad28bf6d2e2538576eedc3c19f2e6ed9a3a6"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"99d73218facdc842209b230c2590554d38d5e116","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        - octavia-v2-dsvm-noop-py2-api"},{"line_number":32,"context_line":"        - octavia-v2-dsvm-scenario"},{"line_number":33,"context_line":"        - octavia-v2-dsvm-py2-scenario"},{"line_number":34,"context_line":"        - octavia-v2-dsvm-py2-scenario-centos-7:"},{"line_number":35,"context_line":"            voting: false"},{"line_number":36,"context_line":"        - octavia-v2-dsvm-scenario-two-node:"},{"line_number":37,"context_line":"            voting: false"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"3fa7e38b_676b0186","side":"PARENT","line":34,"range":{"start_line":34,"start_character":10,"end_line":34,"end_character":47},"in_reply_to":"3fa7e38b_47c28588","updated":"2019-12-02 17:09:22.000000000","message":"Oh, that would be cool!","commit_id":"a308ad28bf6d2e2538576eedc3c19f2e6ed9a3a6"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c0e46d40e0df1bafcb47ee9a366cc77cc984da22","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        - octavia-v2-dsvm-noop-py2-api"},{"line_number":32,"context_line":"        - octavia-v2-dsvm-scenario"},{"line_number":33,"context_line":"        - octavia-v2-dsvm-py2-scenario"},{"line_number":34,"context_line":"        - octavia-v2-dsvm-py2-scenario-centos-7:"},{"line_number":35,"context_line":"            voting: false"},{"line_number":36,"context_line":"        - octavia-v2-dsvm-scenario-two-node:"},{"line_number":37,"context_line":"            voting: false"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"3fa7e38b_47c28588","side":"PARENT","line":34,"range":{"start_line":34,"start_character":10,"end_line":34,"end_character":47},"in_reply_to":"3fa7e38b_8c5bc484","updated":"2019-12-02 17:06:01.000000000","message":"I could propose a patch on octavia-tempest-lib to add a py3 scenario test on centos-7 then add a dependency here to see what happens.  Based on what I\u0027ve seen w/OVN we\u0027ll probably hit some weird py3 issue.  I\u0027ll do it in a separate patch.","commit_id":"a308ad28bf6d2e2538576eedc3c19f2e6ed9a3a6"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"dc01d5afb65c7dbab9a5e5609094276f13d7e3f7","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        - octavia-v2-dsvm-noop-py2-api"},{"line_number":32,"context_line":"        - octavia-v2-dsvm-scenario"},{"line_number":33,"context_line":"        - octavia-v2-dsvm-py2-scenario"},{"line_number":34,"context_line":"        - octavia-v2-dsvm-py2-scenario-centos-7:"},{"line_number":35,"context_line":"            voting: false"},{"line_number":36,"context_line":"        - octavia-v2-dsvm-scenario-two-node:"},{"line_number":37,"context_line":"            voting: false"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"3fa7e38b_ac024071","side":"PARENT","line":34,"range":{"start_line":34,"start_character":10,"end_line":34,"end_character":47},"in_reply_to":"3fa7e38b_a9ba326e","updated":"2019-12-02 16:41:15.000000000","message":"On second thought, keeping the job would imply keeping the py2 requirements which is what we\u0027re trying to get rid of in this patch so I won\u0027t oppose to drop centos7.","commit_id":"a308ad28bf6d2e2538576eedc3c19f2e6ed9a3a6"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"e09f21cc54043a78dac7da1e712c863dc7f75c2d","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        - octavia-v2-dsvm-noop-py2-api"},{"line_number":32,"context_line":"        - octavia-v2-dsvm-scenario"},{"line_number":33,"context_line":"        - octavia-v2-dsvm-py2-scenario"},{"line_number":34,"context_line":"        - octavia-v2-dsvm-py2-scenario-centos-7:"},{"line_number":35,"context_line":"            voting: false"},{"line_number":36,"context_line":"        - octavia-v2-dsvm-scenario-two-node:"},{"line_number":37,"context_line":"            voting: false"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"3fa7e38b_2ccdf05d","side":"PARENT","line":34,"range":{"start_line":34,"start_character":10,"end_line":34,"end_character":47},"in_reply_to":"3fa7e38b_a9ba326e","updated":"2019-12-02 16:39:21.000000000","message":"Yeah, I SUPPOSE it\u0027s fair to keep just that one py2 check around. Alright.","commit_id":"a308ad28bf6d2e2538576eedc3c19f2e6ed9a3a6"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"5baa20ceb1e4e2f8a7f058e4d890ce6d48f7209c","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        - octavia-v2-dsvm-noop-py2-api"},{"line_number":32,"context_line":"        - octavia-v2-dsvm-scenario"},{"line_number":33,"context_line":"        - octavia-v2-dsvm-py2-scenario"},{"line_number":34,"context_line":"        - octavia-v2-dsvm-py2-scenario-centos-7:"},{"line_number":35,"context_line":"            voting: false"},{"line_number":36,"context_line":"        - octavia-v2-dsvm-scenario-two-node:"},{"line_number":37,"context_line":"            voting: false"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"3fa7e38b_8c5bc484","side":"PARENT","line":34,"range":{"start_line":34,"start_character":10,"end_line":34,"end_character":47},"in_reply_to":"3fa7e38b_ac024071","updated":"2019-12-02 16:43:55.000000000","message":"That\u0027s just more motivation to get cent8 going! :D","commit_id":"a308ad28bf6d2e2538576eedc3c19f2e6ed9a3a6"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c0e46d40e0df1bafcb47ee9a366cc77cc984da22","unresolved":false,"context_lines":[{"line_number":67,"context_line":"              - ^releasenotes/.*$"},{"line_number":68,"context_line":"        - octavia-v2-dsvm-noop-api"},{"line_number":69,"context_line":"        - octavia-v2-dsvm-scenario"},{"line_number":70,"context_line":"        - octavia-v2-dsvm-py2-scenario"},{"line_number":71,"context_line":"    periodic:"},{"line_number":72,"context_line":"      jobs:"},{"line_number":73,"context_line":"        - publish-openstack-octavia-amphora-image-xenial:"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"3fa7e38b_07b56d32","line":70,"updated":"2019-12-02 17:06:01.000000000","message":"Ooh, missed one","commit_id":"4c79ed5df04ebb0eff7e4e42362fe076e6d0a40c"}]}
