From 52aea868df88990b247fb4eeadd5e9c6a1414486 Mon Sep 17 00:00:00 2001 From: James Tanner Date: Fri, 4 Oct 2013 16:15:17 -0400 Subject: [PATCH] Allow for updating host vars in add_host --- lib/ansible/runner/action_plugins/add_host.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/ansible/runner/action_plugins/add_host.py b/lib/ansible/runner/action_plugins/add_host.py index 8c1219ef8e..5f379fdb72 100644 --- a/lib/ansible/runner/action_plugins/add_host.py +++ b/lib/ansible/runner/action_plugins/add_host.py @@ -56,20 +56,25 @@ class ActionModule(object): new_name, new_port = new_name.split(":") args['ansible_ssh_port'] = new_port - # create host and get inventory - new_host = Host(new_name) + # redefine inventory and get group "all" inventory = self.runner.inventory - + allgroup = inventory.get_group('all') + + # check if host in cache, add if not + if new_name in inventory._hosts_cache: + new_host = inventory._hosts_cache[new_name] + else: + new_host = Host(new_name) + # only groups can be added directly to inventory + inventory._hosts_cache[new_name] = new_host + allgroup.add_host(new_host) + # Add any variables to the new_host for k in args.keys(): if not k in [ 'name', 'hostname', 'groupname', 'groups' ]: new_host.set_variable(k, args[k]) - # add the new host to the 'all' group - allgroup = inventory.get_group('all') - allgroup.add_host(new_host) - groupnames = args.get('groupname', args.get('groups', '')) # add it to the group if that was specified if groupnames != '':