# related: issue #511, #536 # Each case is followed by mitogen_via= case to test hostvars method. # If ansible_python_interpreter isn't set, Ansible 2.8+ tries to connect and # detect the interpreter. If that fails (e.g. connection timeout) # - Ansible 2.8 - 9 (ansible-core 2.8 - 2.16) assumes "/usr/bin/python" # - Ansible 10+ (ansible-core 2.17+) marks the target unreachable - name: integration/transport_config/python_path.yml hosts: tc-python-path-unset tasks: - include_tasks: ../_mitogen_only.yml - meta: end_play when: - ansible_version.full is version('2.17', '>=', strict=True) - {mitogen_get_stack: {}, register: out} - assert_equal: left: out.result[0].kwargs.python_path right: ["{{out.discovered_interpreter}}"] tags: - mitogen_only - hosts: tc-python-path-hostvar vars: {mitogen_via: tc-python-path-unset} tasks: - include_tasks: ../_mitogen_only.yml - meta: end_play when: - ansible_version.full is version('2.17', '>=', strict=True) - {mitogen_get_stack: {}, register: out} - assert_equal: left: out.result[0].kwargs.python_path right: ["{{out.discovered_interpreter}}"] - assert_equal: left: out.result[1].kwargs.python_path right: ["/hostvar/path/to/python"] tags: - mitogen_only # Non-localhost with explicit ansible_python_interpreter - hosts: tc-python-path-hostvar tasks: - include_tasks: ../_mitogen_only.yml - {mitogen_get_stack: {}, register: out} - assert_equal: left: out.result[0].kwargs.python_path right: [/hostvar/path/to/python] tags: - mitogen_only - hosts: tc-python-path-unset vars: {mitogen_via: tc-python-path-hostvar} tasks: - include_tasks: ../_mitogen_only.yml - meta: end_play when: - ansible_version.full is version('2.17', '>=', strict=True) - {mitogen_get_stack: {}, register: out} - assert_equal: left: out.result[0].kwargs.python_path right: ["/hostvar/path/to/python"] - assert_equal: left: out.result[1].kwargs.python_path right: ["{{out.discovered_interpreter}}"] tags: - mitogen_only # Implicit localhost gets ansible_python_interpreter=virtualenv interpreter - hosts: localhost tasks: - include_tasks: ../_mitogen_only.yml - {mitogen_get_stack: {}, register: out} - assert_equal: left: out.result[0].kwargs.python_path right: ["{{ansible_playbook_python}}"] tags: - mitogen_only - hosts: tc-python-path-unset vars: {mitogen_via: localhost} tasks: - include_tasks: ../_mitogen_only.yml - meta: end_play when: - ansible_version.full is version('2.17', '>=', strict=True) - {mitogen_get_stack: {}, register: out} - assert_equal: left: out.result[0].kwargs.python_path right: ["{{ansible_playbook_python}}"] - assert_equal: left: out.result[1].kwargs.python_path right: ["{{out.discovered_interpreter}}"] tags: - mitogen_only # explicit local connections get the same treatment as everything else. - hosts: tc-python-path-local-unset tasks: - include_tasks: ../_mitogen_only.yml - {mitogen_get_stack: {}, register: out} - assert_equal: left: out.result[0].kwargs.python_path right: ["{{out.discovered_interpreter}}"] tags: - mitogen_only - hosts: localhost vars: {mitogen_via: tc-python-path-local-unset} tasks: - include_tasks: ../_mitogen_only.yml - {mitogen_get_stack: {}, register: out} - assert_equal: left: out.result[0].kwargs.python_path right: ["{{out.discovered_interpreter}}"] - assert_equal: left: out.result[1].kwargs.python_path right: ["{{ansible_playbook_python}}"] tags: - mitogen_only # explicit local connection with explicit interpreter - hosts: tc-python-path-local-explicit tasks: - include_tasks: ../_mitogen_only.yml - {mitogen_get_stack: {}, register: out} - assert_equal: left: out.result[0].kwargs.python_path right: ["/a/b/c"] tags: - mitogen_only - hosts: localhost vars: {mitogen_via: tc-python-path-local-explicit} tasks: - include_tasks: ../_mitogen_only.yml - {mitogen_get_stack: {}, register: out} - assert_equal: left: out.result[0].kwargs.python_path right: ["/a/b/c"] - assert_equal: left: out.result[1].kwargs.python_path right: ["{{ansible_playbook_python}}"] tags: - mitogen_only