diff options
Diffstat (limited to 'lib/ansible/runner/action_plugins/add_host.py')
-rw-r--r-- | lib/ansible/runner/action_plugins/add_host.py | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/lib/ansible/runner/action_plugins/add_host.py b/lib/ansible/runner/action_plugins/add_host.py deleted file mode 100644 index 995b205b62..0000000000 --- a/lib/ansible/runner/action_plugins/add_host.py +++ /dev/null @@ -1,111 +0,0 @@ -# Copyright 2012, Seth Vidal <skvidal@fedoraproject.org> -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see <http://www.gnu.org/licenses/>. - -import ansible - -from ansible.callbacks import vv -from ansible.errors import AnsibleError as ae -from ansible.runner.return_data import ReturnData -from ansible.utils import parse_kv, combine_vars -from ansible.inventory.host import Host -from ansible.inventory.group import Group - -class ActionModule(object): - ''' Create inventory hosts and groups in the memory inventory''' - - ### We need to be able to modify the inventory - BYPASS_HOST_LOOP = True - TRANSFERS_FILES = False - - def __init__(self, runner): - self.runner = runner - - def run(self, conn, tmp, module_name, module_args, inject, complex_args=None, **kwargs): - - if self.runner.noop_on_check(inject): - return ReturnData(conn=conn, comm_ok=True, result=dict(skipped=True, msg='check mode not supported for this module')) - - args = {} - if complex_args: - args.update(complex_args) - args.update(parse_kv(module_args)) - if not 'hostname' in args and not 'name' in args: - raise ae("'name' is a required argument.") - - result = {} - - # Parse out any hostname:port patterns - new_name = args.get('name', args.get('hostname', None)) - vv("creating host via 'add_host': hostname=%s" % new_name) - - if ":" in new_name: - new_name, new_port = new_name.split(":") - args['ansible_ssh_port'] = new_port - - # 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) - - groupnames = args.get('groupname', args.get('groups', args.get('group', ''))) - # add it to the group if that was specified - if groupnames: - for group_name in groupnames.split(","): - group_name = group_name.strip() - if not inventory.get_group(group_name): - new_group = Group(group_name) - inventory.add_group(new_group) - new_group.vars = inventory.get_group_variables(group_name, vault_password=inventory._vault_password) - grp = inventory.get_group(group_name) - grp.add_host(new_host) - - # add this host to the group cache - if inventory._groups_list is not None: - if group_name in inventory._groups_list: - if new_host.name not in inventory._groups_list[group_name]: - inventory._groups_list[group_name].append(new_host.name) - - vv("added host to group via add_host module: %s" % group_name) - result['new_groups'] = groupnames.split(",") - - - # actually load host vars - new_host.vars = combine_vars(new_host.vars, inventory.get_host_variables(new_name, update_cached=True, vault_password=inventory._vault_password)) - - # Add any passed 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]) - - result['new_host'] = new_name - - # clear pattern caching completely since it's unpredictable what - # patterns may have referenced the group - inventory.clear_pattern_cache() - - return ReturnData(conn=conn, comm_ok=True, result=result) - - - |