summaryrefslogtreecommitdiff
path: root/test/integration/targets
diff options
context:
space:
mode:
authorBrian Coca <bcoca@users.noreply.github.com>2020-05-22 09:31:34 -0400
committerGitHub <noreply@github.com>2020-05-22 09:31:34 -0400
commitde3f7c7739851852dec8ea99a76c353317270b70 (patch)
treef7ffb8197f5937eb61392d9e3d6acc519f614131 /test/integration/targets
parentdc63b365011a583b9e9bcd60d1fad6fb10b553c7 (diff)
downloadansible-de3f7c7739851852dec8ea99a76c353317270b70.tar.gz
fix delegated interpreter discovery (#69604)
* fix delegated interpeter * allow returning fact if it is 'the right host' * added note for future fix/efficiency as it stands we rerun discovery for the delegated host unless its saving facts to itself * fixed test lacking delegate_to mock
Diffstat (limited to 'test/integration/targets')
-rw-r--r--test/integration/targets/delegate_to/inventory_interpreters5
-rw-r--r--test/integration/targets/delegate_to/library/detect_interpreter.py18
-rwxr-xr-xtest/integration/targets/delegate_to/runme.sh11
-rw-r--r--test/integration/targets/delegate_to/verify_interpreter.yml47
4 files changed, 81 insertions, 0 deletions
diff --git a/test/integration/targets/delegate_to/inventory_interpreters b/test/integration/targets/delegate_to/inventory_interpreters
new file mode 100644
index 0000000000..4c202ca5bd
--- /dev/null
+++ b/test/integration/targets/delegate_to/inventory_interpreters
@@ -0,0 +1,5 @@
+testhost ansible_python_interpreter=firstpython
+testhost2 ansible_python_interpreter=secondpython
+
+[all:vars]
+ansible_connection=local
diff --git a/test/integration/targets/delegate_to/library/detect_interpreter.py b/test/integration/targets/delegate_to/library/detect_interpreter.py
new file mode 100644
index 0000000000..1f4016772a
--- /dev/null
+++ b/test/integration/targets/delegate_to/library/detect_interpreter.py
@@ -0,0 +1,18 @@
+#!/usr/bin/python
+
+from __future__ import absolute_import, division, print_function
+
+__metaclass__ = type
+
+import sys
+
+from ansible.module_utils.basic import AnsibleModule
+
+
+def main():
+ module = AnsibleModule(argument_spec={})
+ module.exit_json(**dict(found=sys.executable))
+
+
+if __name__ == '__main__':
+ main()
diff --git a/test/integration/targets/delegate_to/runme.sh b/test/integration/targets/delegate_to/runme.sh
index 717809b3dc..730d5cc9c7 100755
--- a/test/integration/targets/delegate_to/runme.sh
+++ b/test/integration/targets/delegate_to/runme.sh
@@ -58,3 +58,14 @@ ansible-playbook test_delegate_to_loop_caching.yml -i inventory -v "$@"
# ensure we are using correct settings when delegating
ANSIBLE_TIMEOUT=3 ansible-playbook delegate_vars_hanldling.yml -i inventory -v "$@"
+
+
+# test ansible_x_interpreter
+# python
+source virtualenv.sh
+(
+cd "${OUTPUT_DIR}"/venv/bin
+ln -s python firstpython
+ln -s python secondpython
+)
+ansible-playbook verify_interpreter.yml -i inventory_interpreters -v "$@"
diff --git a/test/integration/targets/delegate_to/verify_interpreter.yml b/test/integration/targets/delegate_to/verify_interpreter.yml
new file mode 100644
index 0000000000..63c60a41af
--- /dev/null
+++ b/test/integration/targets/delegate_to/verify_interpreter.yml
@@ -0,0 +1,47 @@
+- name: ensure they are different
+ hosts: localhost
+ tasks:
+ - name: dont game me
+ assert:
+ msg: 'expected different values but got ((hostvars["testhost"]["ansible_python_interpreter"]}} and {{hostvars["testhost2"]["ansible_python_interpreter"]}}'
+ that:
+ - hostvars["testhost"]["ansible_python_interpreter"] != hostvars["testhost2"]["ansible_python_interpreter"]
+
+- name: no delegation
+ hosts: all
+ gather_facts: false
+ tasks:
+ - name: detect interpreter used by each host
+ detect_interpreter:
+ register: baseline
+
+ - name: verify it
+ assert:
+ msg: 'expected {{ansible_python_interpreter}} but got {{baseline.found|basename}}'
+ that:
+ - baseline.found|basename == ansible_python_interpreter
+
+- name: actual test
+ hosts: testhost
+ gather_facts: false
+ tasks:
+ - name: original host
+ detect_interpreter:
+ register: found
+
+ - name: verify it orig host
+ assert:
+ msg: 'expected {{ansible_python_interpreter}} but got {{found.found|basename}}'
+ that:
+ - found.found|basename == ansible_python_interpreter
+
+ - name: delegated host
+ detect_interpreter:
+ register: found2
+ delegate_to: testhost2
+
+ - name: verify it delegated
+ assert:
+ msg: 'expected {{hostvars["testhost2"]["ansible_python_interpreter"]}} but got {{found2.found|basename}}'
+ that:
+ - found2.found|basename == hostvars["testhost2"]["ansible_python_interpreter"]