Use default port if ansible_ssh_port is not set for the delegated node

Also add testcase for it.
pull/1648/head
Daniel Hokka Zakrisson 12 years ago
parent be300b562a
commit fbda2d4628

@ -384,6 +384,7 @@ class Runner(object):
interpreters.append(i)
for i in interpreters:
del inject[i]
port = C.DEFAULT_REMOTE_PORT
try:
delegate_info = inject['hostvars'][delegate_to]
actual_host = delegate_info.get('ansible_ssh_host', delegate_to)
@ -393,6 +394,7 @@ class Runner(object):
inject[i] = delegate_info[i]
except errors.AnsibleError:
actual_host = delegate_to
actual_port = port
try:
if actual_port is not None:

@ -160,12 +160,19 @@ class TestPlaybook(unittest.TestCase):
actual = self._run(pb, 'test/alias_hosts')
expected = {
"alias-node.example.com": {
"changed": 3,
"changed": 5,
"failures": 0,
"ok": 4,
"ok": 6,
"skipped": 1,
"unreachable": 0,
}
},
"other-alias-node.example.com": {
"changed": 1,
"failures": 0,
"ok": 1,
"skipped": 0,
"unreachable": 1,
},
}
assert utils.jsonify(expected, format=True) == utils.jsonify(actual, format=True)

@ -1,2 +1,4 @@
other-alias-node.example.com ansible_ssh_host=localhost ansible_ssh_port=28848
[aliasgroup]
alias-node.example.com ansible_ssh_host=localhost ansible_ssh_port=22
alias-node.example.com ansible_ssh_host=localhost

@ -1,5 +1,5 @@
---
- hosts: all
- hosts: aliasgroup
vars:
test_file: /tmp/ansible-alias-test
tasks:
@ -7,3 +7,10 @@
- action: command creates=$test_file false
- local_action: command true
- action: command removes=$test_file rm -f $test_file
- hosts: all
gather_facts: False
tasks:
- action: command true
delegate_to: alias-node.example.com
- action: command true

Loading…
Cancel
Save