diff --git a/ansible_mitogen/transport_config.py b/ansible_mitogen/transport_config.py index 22e82cc6..8ef12165 100644 --- a/ansible_mitogen/transport_config.py +++ b/ansible_mitogen/transport_config.py @@ -509,6 +509,7 @@ class MitogenViaSpec(Spec): def port(self): return ( + self._host_vars.get('ansible_ssh_port') or self._host_vars.get('ansible_port') or C.DEFAULT_REMOTE_PORT ) diff --git a/tests/ansible/hosts/transport_config.hosts b/tests/ansible/hosts/transport_config.hosts index 709d26f7..d68b2d84 100644 --- a/tests/ansible/hosts/transport_config.hosts +++ b/tests/ansible/hosts/transport_config.hosts @@ -41,3 +41,9 @@ tc-become-pass-unset tc-become-pass-password ansible_become_password=apassword tc-become-pass-pass ansible_become_pass=apass tc-become-pass-both ansible_become_password=a.b.c ansible_become_pass=c.b.a + +# port() +tc-port-unset +tc-port-explicit-port ansible_port=1234 +tc-port-explicit-ssh ansible_ssh_port=4321 +tc-port-both ansible_port=1717 ansible_ssh_port=1532 diff --git a/tests/ansible/integration/transport_config/all.yml b/tests/ansible/integration/transport_config/all.yml index 23423a9d..64199314 100644 --- a/tests/ansible/integration/transport_config/all.yml +++ b/tests/ansible/integration/transport_config/all.yml @@ -3,6 +3,7 @@ - include: become_user.yml - include: become.yml - include: password.yml +- include: port.yml - include: python_path.yml - include: remote_addr.yml - include: remote_user.yml diff --git a/tests/ansible/integration/transport_config/port.yml b/tests/ansible/integration/transport_config/port.yml new file mode 100644 index 00000000..2781081a --- /dev/null +++ b/tests/ansible/integration/transport_config/port.yml @@ -0,0 +1,101 @@ +# Each case is followed by mitogen_via= case to test hostvars pass. + + +# No port set +- name: integration/transport_config/port.yml + hosts: tc-port-unset + tasks: + - include: ../_mitogen_only.yml + - {mitogen_get_stack: {}, register: out} + - assert: + that: + - out.result|length == 1 + - out.result[0].method == "ssh" + - out.result[0].kwargs.port == None + +# Not set, mitogen_via= +- hosts: tc-port-explicit-ssh + vars: {mitogen_via: tc-port-unset} + tasks: + - include: ../_mitogen_only.yml + - {mitogen_get_stack: {}, register: out} + - assert: + that: + - out.result|length == 2 + - out.result[0].method == "ssh" + - out.result[0].kwargs.port == None + - out.result[1].method == "ssh" + - out.result[1].kwargs.port == 4321 + +# ansible_ssh_port= +- hosts: tc-port-explicit-ssh + tasks: + - include: ../_mitogen_only.yml + - {mitogen_get_stack: {}, register: out} + - assert: + that: + - out.result|length == 1 + - out.result[0].method == "ssh" + - out.result[0].kwargs.port == 4321 + +- hosts: tc-port-explicit-unset + vars: {mitogen_via: tc-port-explicit-ssh} + tasks: + - include: ../_mitogen_only.yml + - {mitogen_get_stack: {}, register: out} + - assert: + that: + - out.result|length == 2 + - out.result[0].method == "ssh" + - out.result[1].kwargs.port == 4321 + - out.result[1].method == "ssh" + - out.result[0].kwargs.port == None + +# ansible_port= +- hosts: tc-port-explicit-port + tasks: + - include: ../_mitogen_only.yml + - {mitogen_get_stack: {}, register: out} + - assert: + that: + - out.result|length == 1 + - out.result[0].method == "ssh" + - out.result[0].kwargs.port == 1234 + +- hosts: tc-port-unset + vars: {mitogen_via: tc-port-explicit-port} + tasks: + - include: ../_mitogen_only.yml + - {mitogen_get_stack: {}, register: out} + - assert: + that: + - out.result|length == 2 + - out.result[0].method == "ssh" + - out.result[0].kwargs.port == 1234 + - out.result[1].method == "ssh" + - out.result[1].kwargs.port == None + + +# both, ssh takes precedence +- hosts: tc-port-both + tasks: + - include: ../_mitogen_only.yml + - {mitogen_get_stack: {}, register: out} + - assert: + that: + - out.result|length == 1 + - out.result[0].method == "ssh" + - out.result[0].kwargs.port == 1532 + +- hosts: tc-port-unset + vars: {mitogen_via: tc-port-both} + tasks: + - include: ../_mitogen_only.yml + - {mitogen_get_stack: {}, register: out} + - assert: + that: + - out.result|length == 2 + - out.result[0].method == "ssh" + - out.result[0].kwargs.port == 1532 + - out.result[1].method == "ssh" + - out.result[1].kwargs.port == None