Various tweaking of the delegate_to loop code.
This commit is contained in:
parent
37b91c7b81
commit
acf2c23808
2 changed files with 21 additions and 24 deletions
|
@ -381,28 +381,23 @@ class Runner(object):
|
||||||
return ReturnData(host=host, result=result)
|
return ReturnData(host=host, result=result)
|
||||||
|
|
||||||
conn = None
|
conn = None
|
||||||
actual_host = host
|
actual_host = inject.get('ansible_ssh_host', host)
|
||||||
actual_port = port
|
actual_port = inject.get('ansible_ssh_port', port)
|
||||||
|
|
||||||
|
# the delegated host may have different SSH port configured, etc
|
||||||
|
# and we need to transfer those, and only those, variables
|
||||||
|
delegate_to = inject.get('delegate_to', None)
|
||||||
|
if delegate_to is not None:
|
||||||
|
delegate_to = utils.template(self.basedir, delegate_to, inject)
|
||||||
|
delegate_info = inject['hostvars'][delegate_to]
|
||||||
|
actual_host = delegate_info.get('ansible_ssh_host', delegate_to)
|
||||||
|
actual_port = delegate_info.get('ansible_ssh_port', port)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
alternative_host = inject.get('ansible_ssh_host', None)
|
|
||||||
if alternative_host is not None:
|
|
||||||
actual_host = alternative_host
|
|
||||||
|
|
||||||
delegate_to = inject.get('delegate_to', None)
|
|
||||||
|
|
||||||
# the delegated host may have different SSH port configured, etc
|
|
||||||
# and we need to transfer those, and only those, variables
|
|
||||||
|
|
||||||
if delegate_to is not None:
|
|
||||||
delegate_to = utils.template(self.basedir, delegate_to, inject)
|
|
||||||
actual_host = inject['hostvars'][delegate_to].get('ansible_ssh_host', delegate_to)
|
|
||||||
actual_port = inject['hostvars'][delegate_to].get('ansible_ssh_port', port)
|
|
||||||
|
|
||||||
# connect
|
# connect
|
||||||
conn = self.connector.connect(actual_host, actual_port)
|
conn = self.connector.connect(actual_host, actual_port)
|
||||||
|
if delegate_to:
|
||||||
if delegate_to is not None or alternative_host is not None:
|
conn.delegate = host
|
||||||
conn._delegate_for = host
|
|
||||||
|
|
||||||
except errors.AnsibleConnectionFailed, e:
|
except errors.AnsibleConnectionFailed, e:
|
||||||
result = dict(failed=True, msg="FAILED: %s" % str(e))
|
result = dict(failed=True, msg="FAILED: %s" % str(e))
|
||||||
|
|
|
@ -26,11 +26,12 @@ class ReturnData(object):
|
||||||
|
|
||||||
# which host is this ReturnData about?
|
# which host is this ReturnData about?
|
||||||
if conn is not None:
|
if conn is not None:
|
||||||
delegate_for = getattr(conn, '_delegate_for', None)
|
self.host = conn.host
|
||||||
if delegate_for:
|
delegate = getattr(conn, 'delegate', None)
|
||||||
self.host = delegate_for
|
if delegate is not None:
|
||||||
else:
|
self.host = delegate
|
||||||
self.host = conn.host
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
self.host = host
|
self.host = host
|
||||||
|
|
||||||
|
@ -40,6 +41,7 @@ class ReturnData(object):
|
||||||
if type(self.result) in [ str, unicode ]:
|
if type(self.result) in [ str, unicode ]:
|
||||||
self.result = utils.parse_json(self.result)
|
self.result = utils.parse_json(self.result)
|
||||||
|
|
||||||
|
|
||||||
if self.host is None:
|
if self.host is None:
|
||||||
raise Exception("host not set")
|
raise Exception("host not set")
|
||||||
if type(self.result) != dict:
|
if type(self.result) != dict:
|
||||||
|
|
Loading…
Reference in a new issue