)]}'
{"tests/remote/test_remote_hostvars.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"f3e294082bff293916fe5b9ff96141d7c313463e","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            inventory \u003d yaml.safe_load(open(os.path.join("},{"line_number":76,"context_line":"                self.test_root, build.uuid, \u0027ansible\u0027, \u0027inventory.yaml\u0027)))"},{"line_number":77,"context_line":"            self.assertEqual("},{"line_number":78,"context_line":"                \"python2\","},{"line_number":79,"context_line":"                inventory[\"all\"][\"hosts\"][\"controller\"]["},{"line_number":80,"context_line":"                    \"ansible_python_interpreter\"])"}],"source_content_type":"text/x-python","patch_set":6,"id":"bfb3d3c7_549ee207","line":78,"updated":"2019-05-17 20:41:38.000000000","message":"Wouldn\u0027t it be a better test to assert a python3 value since ansible and zuul have both defaulted to python2 previously? Basically checking it is python2 here isn\u0027t checking that we\u0027ve changed anything.","commit_id":"bb2b73184557b02171fbcecde88a3f297c51620b"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"ec0e1fcc3b7e70dd6f5bc7adf98929fad42b7e39","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            inventory \u003d yaml.safe_load(open(os.path.join("},{"line_number":76,"context_line":"                self.test_root, build.uuid, \u0027ansible\u0027, \u0027inventory.yaml\u0027)))"},{"line_number":77,"context_line":"            self.assertEqual("},{"line_number":78,"context_line":"                \"python2\","},{"line_number":79,"context_line":"                inventory[\"all\"][\"hosts\"][\"controller\"]["},{"line_number":80,"context_line":"                    \"ansible_python_interpreter\"])"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fb8cfa7_948caad7","line":78,"in_reply_to":"bfb3d3c7_4fb5efed","updated":"2019-06-12 19:34:25.000000000","message":"I don\u0027t think this matters because we already require python3 to test zuul. However, tobiash has pointed out the interpreter specified in the test is \u0027python2\u0027 not \u0027/usr/bin/python2\u0027 so we are already asserting a difference.","commit_id":"bb2b73184557b02171fbcecde88a3f297c51620b"},{"author":{"_account_id":4162,"name":"Paul Belanger","email":"pabelanger@redhat.com","username":"pabelanger"},"change_message_id":"aac1751491b42a07223d7a18aa4b97b790f9c5db","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            inventory \u003d yaml.safe_load(open(os.path.join("},{"line_number":76,"context_line":"                self.test_root, build.uuid, \u0027ansible\u0027, \u0027inventory.yaml\u0027)))"},{"line_number":77,"context_line":"            self.assertEqual("},{"line_number":78,"context_line":"                \"python2\","},{"line_number":79,"context_line":"                inventory[\"all\"][\"hosts\"][\"controller\"]["},{"line_number":80,"context_line":"                    \"ansible_python_interpreter\"])"}],"source_content_type":"text/x-python","patch_set":6,"id":"bfb3d3c7_4fb5efed","line":78,"in_reply_to":"bfb3d3c7_549ee207","updated":"2019-05-17 21:20:44.000000000","message":"I think the issue here, is we don\u0027t know if the remote node has python3 currently. Since we get it from nodepool in opendev.org.","commit_id":"bb2b73184557b02171fbcecde88a3f297c51620b"}],"zuul/executor/server.py":[{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"508db7219bfc930791d4fa5f0dceb6598e240dad","unresolved":false,"context_lines":[{"line_number":1245,"context_line":"                    ansible_user\u003dself.executor_server.default_username,"},{"line_number":1246,"context_line":"                    ansible_port\u003dport,"},{"line_number":1247,"context_line":"                    ansible_python_interpreter\u003dnode.get("},{"line_number":1248,"context_line":"                        \u0027python_path\u0027, \u0027/usr/bin/python2\u0027),"},{"line_number":1249,"context_line":"                    nodepool\u003ddict("},{"line_number":1250,"context_line":"                        label\u003dnode.get(\u0027label\u0027),"},{"line_number":1251,"context_line":"                        az\u003dnode.get(\u0027az\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_d5c20334","line":1248,"updated":"2019-02-16 08:32:58.000000000","message":"Do you know how does that cooperate with localhost (which is by intention not specified in the hosts)? Removing the ansible_python_interpreter from all_vars will remove it from local tasks. Will it work correctly if we leave it in all_vars and additionally add it to the host vars here?","commit_id":"c3188cb2999d6988d1f6f7b941e71ccef4de5e49"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"e2dea51a73c537f3541d0d5b243d9b3d1efe759a","unresolved":false,"context_lines":[{"line_number":1245,"context_line":"                    ansible_user\u003dself.executor_server.default_username,"},{"line_number":1246,"context_line":"                    ansible_port\u003dport,"},{"line_number":1247,"context_line":"                    ansible_python_interpreter\u003dnode.get("},{"line_number":1248,"context_line":"                        \u0027python_path\u0027, \u0027/usr/bin/python2\u0027),"},{"line_number":1249,"context_line":"                    nodepool\u003ddict("},{"line_number":1250,"context_line":"                        label\u003dnode.get(\u0027label\u0027),"},{"line_number":1251,"context_line":"                        az\u003dnode.get(\u0027az\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_ffd6be27","line":1248,"updated":"2019-03-20 16:59:25.000000000","message":"If a user specifies ansible_python_interpreter using Zuul host_vars (e.g., https://opendev.org/openstack-infra/system-config/src/branch/master/.zuul.yaml#L397 ), this will overwrite it.  We should be careful not to do that.","commit_id":"c3188cb2999d6988d1f6f7b941e71ccef4de5e49"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"2024a0a1bf0fb45fa700789d66a176cde6a777dc","unresolved":false,"context_lines":[{"line_number":1245,"context_line":"                    ansible_user\u003dself.executor_server.default_username,"},{"line_number":1246,"context_line":"                    ansible_port\u003dport,"},{"line_number":1247,"context_line":"                    ansible_python_interpreter\u003dnode.get("},{"line_number":1248,"context_line":"                        \u0027python_path\u0027, \u0027/usr/bin/python2\u0027),"},{"line_number":1249,"context_line":"                    nodepool\u003ddict("},{"line_number":1250,"context_line":"                        label\u003dnode.get(\u0027label\u0027),"},{"line_number":1251,"context_line":"                        az\u003dnode.get(\u0027az\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_74fc2c3e","line":1248,"in_reply_to":"5fc1f717_ffd6be27","updated":"2019-03-21 00:03:40.000000000","message":"Done","commit_id":"c3188cb2999d6988d1f6f7b941e71ccef4de5e49"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"239702716bf8b574d6a9096aefc75e3e404fcbf4","unresolved":false,"context_lines":[{"line_number":1245,"context_line":"                    ansible_user\u003dself.executor_server.default_username,"},{"line_number":1246,"context_line":"                    ansible_port\u003dport,"},{"line_number":1247,"context_line":"                    ansible_python_interpreter\u003dnode.get("},{"line_number":1248,"context_line":"                        \u0027python_path\u0027, \u0027/usr/bin/python2\u0027),"},{"line_number":1249,"context_line":"                    nodepool\u003ddict("},{"line_number":1250,"context_line":"                        label\u003dnode.get(\u0027label\u0027),"},{"line_number":1251,"context_line":"                        az\u003dnode.get(\u0027az\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_27222503","line":1248,"in_reply_to":"9fdfeff1_d5c20334","updated":"2019-02-19 04:44:33.000000000","message":"IIUC, ansible use sys.executable by default for localhost\u0027s python interpreter path.","commit_id":"c3188cb2999d6988d1f6f7b941e71ccef4de5e49"},{"author":{"_account_id":4162,"name":"Paul Belanger","email":"pabelanger@redhat.com","username":"pabelanger"},"change_message_id":"2c83af63e3574b50811e20512d9c203d73937dca","unresolved":false,"context_lines":[{"line_number":1305,"context_line":""},{"line_number":1306,"context_line":"                host_vars.setdefault("},{"line_number":1307,"context_line":"                    \u0027ansible_python_interpreter\u0027,"},{"line_number":1308,"context_line":"                    node.get(\u0027python_path\u0027, \u0027/usr/bin/python2\u0027))"},{"line_number":1309,"context_line":""},{"line_number":1310,"context_line":"                username \u003d node.get(\u0027username\u0027)"},{"line_number":1311,"context_line":"                if username:"}],"source_content_type":"text/x-python","patch_set":5,"id":"dfbec78f_15cf81b0","line":1308,"range":{"start_line":1308,"start_character":20,"end_line":1308,"end_character":28},"updated":"2019-05-13 14:14:45.000000000","message":"we don\u0027t seem to test actually getting data from zookeeper. In this case, I think we should at least add something to FakeZookeeper (like we did for executor-zones), then assert the data is correct.\n\nI have a patch up to add some integration testing for quickstart, and hope to also look at tox-remote to see if there is a way to add some there too.","commit_id":"e6107399283c0b66d4a848d3390a8b957eca7527"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"9ba26f63525a605e5daf3d2551447d9f83241883","unresolved":false,"context_lines":[{"line_number":1304,"context_line":""},{"line_number":1305,"context_line":"                host_vars.setdefault("},{"line_number":1306,"context_line":"                    \u0027ansible_python_interpreter\u0027,"},{"line_number":1307,"context_line":"                    node.get(\u0027python_path\u0027, \u0027/usr/bin/python2\u0027))"},{"line_number":1308,"context_line":""},{"line_number":1309,"context_line":"                username \u003d node.get(\u0027username\u0027)"},{"line_number":1310,"context_line":"                if username:"}],"source_content_type":"text/x-python","patch_set":6,"id":"bfb3d3c7_0e3b7dd1","line":1307,"range":{"start_line":1307,"start_character":45,"end_line":1307,"end_character":61},"updated":"2019-05-17 17:55:22.000000000","message":"At some point in time we probably want to thing about switching the default to python3 :)","commit_id":"bb2b73184557b02171fbcecde88a3f297c51620b"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"f3e294082bff293916fe5b9ff96141d7c313463e","unresolved":false,"context_lines":[{"line_number":1304,"context_line":""},{"line_number":1305,"context_line":"                host_vars.setdefault("},{"line_number":1306,"context_line":"                    \u0027ansible_python_interpreter\u0027,"},{"line_number":1307,"context_line":"                    node.get(\u0027python_path\u0027, \u0027/usr/bin/python2\u0027))"},{"line_number":1308,"context_line":""},{"line_number":1309,"context_line":"                username \u003d node.get(\u0027username\u0027)"},{"line_number":1310,"context_line":"                if username:"}],"source_content_type":"text/x-python","patch_set":6,"id":"bfb3d3c7_54e9027e","line":1307,"range":{"start_line":1307,"start_character":45,"end_line":1307,"end_character":61},"in_reply_to":"bfb3d3c7_0e3b7dd1","updated":"2019-05-17 20:41:38.000000000","message":"Because we don\u0027t get the executor/localhost from nodepool and don\u0027t add it to the inventory I think that means we are stuck using whatever python ansible wants to use by default on localhost.\n\nIs this something we need to address? At least before it was hardcoded to python2 which is a known quantity.","commit_id":"bb2b73184557b02171fbcecde88a3f297c51620b"},{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"a36c80816609ca59773d1b7ef3724f6b830ea4f4","unresolved":false,"context_lines":[{"line_number":1304,"context_line":""},{"line_number":1305,"context_line":"                host_vars.setdefault("},{"line_number":1306,"context_line":"                    \u0027ansible_python_interpreter\u0027,"},{"line_number":1307,"context_line":"                    node.get(\u0027python_path\u0027, \u0027/usr/bin/python2\u0027))"},{"line_number":1308,"context_line":""},{"line_number":1309,"context_line":"                username \u003d node.get(\u0027username\u0027)"},{"line_number":1310,"context_line":"                if username:"}],"source_content_type":"text/x-python","patch_set":6,"id":"bfb3d3c7_448871c5","line":1307,"range":{"start_line":1307,"start_character":45,"end_line":1307,"end_character":61},"in_reply_to":"bfb3d3c7_2f52fb68","updated":"2019-05-18 06:46:43.000000000","message":"It seems like Ansible 2.8 introduced an \u0027auto\u0027 python interpreter that discover the path.","commit_id":"bb2b73184557b02171fbcecde88a3f297c51620b"},{"author":{"_account_id":4162,"name":"Paul Belanger","email":"pabelanger@redhat.com","username":"pabelanger"},"change_message_id":"b1988f022aee98e922d1942099fbca2a16cab964","unresolved":false,"context_lines":[{"line_number":1304,"context_line":""},{"line_number":1305,"context_line":"                host_vars.setdefault("},{"line_number":1306,"context_line":"                    \u0027ansible_python_interpreter\u0027,"},{"line_number":1307,"context_line":"                    node.get(\u0027python_path\u0027, \u0027/usr/bin/python2\u0027))"},{"line_number":1308,"context_line":""},{"line_number":1309,"context_line":"                username \u003d node.get(\u0027username\u0027)"},{"line_number":1310,"context_line":"                if username:"}],"source_content_type":"text/x-python","patch_set":6,"id":"bfb3d3c7_cee8f017","line":1307,"range":{"start_line":1307,"start_character":45,"end_line":1307,"end_character":61},"in_reply_to":"bfb3d3c7_448871c5","updated":"2019-05-20 13:24:21.000000000","message":"yes:\n\n  https://docs.ansible.com/ansible/devel/porting_guides/porting_guide_2.8.html#python-interpreter-discovery\n\nauto is the future, but not set.  We can still pass the actually interpreter.","commit_id":"bb2b73184557b02171fbcecde88a3f297c51620b"},{"author":{"_account_id":4162,"name":"Paul Belanger","email":"pabelanger@redhat.com","username":"pabelanger"},"change_message_id":"aac1751491b42a07223d7a18aa4b97b790f9c5db","unresolved":false,"context_lines":[{"line_number":1304,"context_line":""},{"line_number":1305,"context_line":"                host_vars.setdefault("},{"line_number":1306,"context_line":"                    \u0027ansible_python_interpreter\u0027,"},{"line_number":1307,"context_line":"                    node.get(\u0027python_path\u0027, \u0027/usr/bin/python2\u0027))"},{"line_number":1308,"context_line":""},{"line_number":1309,"context_line":"                username \u003d node.get(\u0027username\u0027)"},{"line_number":1310,"context_line":"                if username:"}],"source_content_type":"text/x-python","patch_set":6,"id":"bfb3d3c7_ef9aa36c","line":1307,"range":{"start_line":1307,"start_character":45,"end_line":1307,"end_character":61},"in_reply_to":"bfb3d3c7_54e9027e","updated":"2019-05-17 21:20:44.000000000","message":"Yah, I think it is unmanaged today, and defaults to whatever python version is on zuul-executor.\n\nThis might mean, if we install zuul into virtualenv, with no python2, we are going to break.","commit_id":"bb2b73184557b02171fbcecde88a3f297c51620b"},{"author":{"_account_id":4162,"name":"Paul Belanger","email":"pabelanger@redhat.com","username":"pabelanger"},"change_message_id":"1d2110976ca02b93324aa511fa3959c98ee61ebd","unresolved":false,"context_lines":[{"line_number":1304,"context_line":""},{"line_number":1305,"context_line":"                host_vars.setdefault("},{"line_number":1306,"context_line":"                    \u0027ansible_python_interpreter\u0027,"},{"line_number":1307,"context_line":"                    node.get(\u0027python_path\u0027, \u0027/usr/bin/python2\u0027))"},{"line_number":1308,"context_line":""},{"line_number":1309,"context_line":"                username \u003d node.get(\u0027username\u0027)"},{"line_number":1310,"context_line":"                if username:"}],"source_content_type":"text/x-python","patch_set":6,"id":"bfb3d3c7_2f52fb68","line":1307,"range":{"start_line":1307,"start_character":45,"end_line":1307,"end_character":61},"in_reply_to":"bfb3d3c7_ef9aa36c","updated":"2019-05-17 21:49:28.000000000","message":"actually, I think we are safe, we are just moving ansible_python_interpreter from all to under the node. And because localhost isn\u0027t configured, this is really a noop here.\n\nI agree, we should think about how to make localhost python3 aware too. For now, I handle that in a virtualenv, since python will be python3","commit_id":"bb2b73184557b02171fbcecde88a3f297c51620b"}]}
