Commit Graph

114 Commits (825dd25d43a0c76981efdcb7af9db33cd42b9fb3)

Author SHA1 Message Date
Brian Coca 61a30e5f49 better exception handling with delegated hosts 2014-12-03 07:26:42 -05:00
James Cammarata d19fe8d95d Fetch vars for host directly when calculating the delegated user
This fixes the case in which the delegated to host may not be in the
specified hosts list, in which cases facts/vars for the host were
not available in the injected hostvars.

This also fixes the inventory variable fetching function, so that an
unknown host raises a proper error as opposed to a NoneType exception.

Fixes #8224
2014-10-10 01:18:18 -05:00
Serge van Ginderachter 0ab721d51e better logic for all-group variables for implicit localhost 2014-08-19 16:41:51 +02:00
Serge van Ginderachter a2cfe8770b Inventory: fix logic mistake in loading/retrieving variables for groups 2014-08-19 16:34:26 +02:00
James Cammarata e3895840d1 Make sure group_vars/all is loaded for ungrouped hosts
Fixes #6563
2014-08-18 12:29:46 -05:00
James Cammarata b4476c238f Use match() instead of search() for pattern matching
Also related to f48fa3, fix for #8614
2014-08-14 12:26:52 -05:00
James Cammarata f48fa3759a Fix host pattern matching and enhance error detection
Fixes #8614
2014-08-14 12:13:40 -05:00
James Cammarata bea0845322 Fix vault_password positional args error 2014-08-14 10:28:08 -05:00
Michael DeHaan 8c4161d4a1 Merge branch 'retf_py' of git://github.com/berendt/ansible into devel
Conflicts:
	lib/ansible/inventory/vars_plugins/group_vars.py
	plugins/callbacks/mail.py
2014-08-08 12:17:37 -04:00
Serge van Ginderachter e8b45a9ef7 Invalidate host/group variables cache when loading
extra varsiables based on playbook basedir.
2014-07-14 15:21:33 +02:00
Serge van Ginderachter d39ff55688 Fix logic bug when loading vars for a new playbook basedir. 2014-07-14 15:12:53 +02:00
James Cammarata 4e5eb7559e Merge branch 'svg_and_inventory_refactor' into devel 2014-07-10 14:43:07 -05:00
Dan Slimmon 307a3e8a9c Fixed regex square-bracket bug.
Regexes were being parsed like ordinary ansible host patterns, so
square-bracket groups were getting interpolated wrongly.
2014-07-10 00:08:12 +00:00
James Cammarata aa261bdd14 Optimizing groups_for_host() lookup in inventory 2014-07-07 21:08:39 -05:00
James Cammarata fe892fccb1 Merge remote-tracking branch 'svg/varsplugins_refactor' into svg_and_inventory_refactor 2014-07-07 14:16:37 -05:00
James Cammarata 11a5fc85f4 Merge branch 'inventory_refactoring' into svg_and_inventory_refactor 2014-07-07 13:11:58 -05:00
Serge van Ginderachter ff4119adc0 Performance optimization in resolving host patterns
Avoid resolving a pattern that is a plain host. When matching a hostname in the
hosts_cache, just use the host object from there.

When running a task on say 750 hosts, this yields a huge improvement.
2014-07-07 12:50:50 -05:00
James Cammarata 539426f612 Performance tuning inventory functions for large inventories 2014-06-26 23:15:39 -05:00
James Cammarata d8a7b49b59 Merge branch 'inventorytree' of https://github.com/sergevanginderachter/ansible into sergevanginderachter-inventorytree 2014-06-24 15:21:08 -05:00
Christian Berendt 6676720ce5 fixed typos found by RETF rules in PY files
rules are avaialble at https://en.wikipedia.org/wiki/Wikipedia:AutoWikiBrowser/Typos
2014-05-03 18:40:05 +02:00
Cristian Ciupitu 96ff1444f0 Micro-optimization: replace s.find(x)==0 with s.startswith(x)
timeit shows a speedup of ~1.4x on Python 2.7.5 x86_64.
It also makes the code a bit shorter.
2014-03-27 20:35:20 +02:00
Serge van Ginderachter d4634983f0 Move group/host_vars parsing into core inventory
modified:   lib/ansible/inventory/__init__.py
	deleted:    lib/ansible/inventory/vars_plugins/group_vars.py
	modified:   lib/ansible/utils/__init__.py
2014-03-26 11:37:26 +01:00
Serge van Ginderachter f8ea93c732 Move inventory.set_playbook_basedir from ansible-playbook to playbook constructor 2014-03-25 22:12:01 +01:00
Serge van Ginderachter f6a55a3552 Refactor vars_plugins (host/group_vars)
Split out parsing of vars files to per host and per group
parsing, instead of reparsing all groups for each host. This enhances
performance.

Extend vars_plugins' API with two new methods:
* get host variables: only parses host_vars
* get group variables: only parses group_vars for specific group
The initial run method is still used for backward compatibility.

Parse all vars_plugins at inventory initialisation, instead of
per host when touched first by runner. Here we can also loop through
all groups once easily, then parse them.
This also centralizes all parsing in the inventory constructor.

	modified:   bin/ansible
	modified:   bin/ansible-playbook
	modified:   lib/ansible/inventory/__init__.py
	modified:   lib/ansible/inventory/vars_plugins/group_vars.py
2014-03-25 22:12:01 +01:00
James Cammarata 846933dd53 Make inventory parsing error detection smarter
If something is executable but doesn't look like it should be, or if
something is NOT executable and DOES looks like it should, show a
more apropos error with a hint on correcting the problem

Fixes #5113
2014-03-25 11:41:00 -05:00
Serge van Ginderachter 188375171e Inventory: raise error when adding a group that already exists.
The parsers check if a group already exists.
2014-03-25 12:45:00 +01:00
Michael DeHaan b41541c62a Merge conflict. 2014-03-16 16:48:03 -04:00
James Cammarata e3b887f770 Fix range issue in inventory and add additional error checking
Fixes #6331
2014-03-07 16:34:04 -06:00
Jesse Keating 0c2c37a47a Avoid range selection on empty groups
This prevents a traceback when the group is empty.
Fixes #6258
2014-03-03 13:23:27 -08:00
James Cammarata f23ccebbdc Merge branch 'issue_4620' of https://github.com/jimi-c/ansible into jimi-c-issue_4620 2014-02-24 20:30:25 -06:00
James Tanner 427b8dc78d Ansible vault: a framework for encrypting any playbook or var file. 2014-02-18 15:35:12 -05:00
James Cammarata ca0ec800d8 Revising method for parsing ranges from --limit subsets
Also added a new test (test_subset_range) for future validation.

Fixes #4620
2014-02-05 13:58:03 -06:00
James Cammarata f955d9db6a Handle implicit localhost when using '-i host,' syntax
Fixes #5820
2014-01-30 12:46:02 -06:00
Rob Smith 761fe8cc04 Fix an issue where git-pull fails with AttributeError
As part of 94f3b9bfab the code was changed to support dynamically adding localhost to the inventory. This change introduced an crash when run via ansible-pull

```
Starting ansible-pull at 2014-01-20 23:09:57
Traceback (most recent call last):
  File "/tmp/ansible/bin/ansible", line 157, in <module>
    (runner, results) = cli.run(options, args)
  File "/tmp/ansible/bin/ansible", line 82, in run
    hosts = inventory_manager.list_hosts(pattern)
  File "/tmp/ansible/lib/ansible/inventory/__init__.py", line 372, in list_hosts
    result = [ h.name for h in self.get_hosts(pattern) ]
  File "/tmp/ansible/lib/ansible/inventory/__init__.py", line 136, in get_hosts
    subset = self._get_hosts(self._subset)
  File "/tmp/ansible/lib/ansible/inventory/__init__.py", line 177, in _get_hosts
    that = self.__get_hosts(p)
  File "/tmp/ansible/lib/ansible/inventory/__init__.py", line 198, in __get_hosts
    hpat = self._hosts_in_unenumerated_pattern(name)
  File "/tmp/ansible/lib/ansible/inventory/__init__.py", line 275, in _hosts_in_unenumerated_pattern
    ungrouped.add_host(new_host)
AttributeError: 'NoneType' object has no attribute 'add_host'
```

The root cause is there is no group for the host to be added to. I fixed this case by creating the ungrouped group when it doesn't exist and then adding the host to the newly added group. This fixes the regression for me.
2014-01-20 20:10:47 -08:00
James Tanner 94f3b9bfab Fixes #3129 Do not require localhost to be in inventory 2014-01-20 18:26:14 -05:00
James Tanner 559e89036b Fixes #5631 Return a unique list of hosts when joining groups 2014-01-16 14:24:11 -05:00
jctanner a6bc63512e Merge pull request #5308 from zecrazytux/fix/hash_merge_dynamic_inventory
Let merge hash_bahaviour work with dynamic inventory
2014-01-14 07:58:25 -08:00
jctanner 21b4212ff5 Merge pull request #5517 from lichesser/fix_set_depreciation_warning
Fixes #5513. set is built-in since 2.4 and deprecated since 2.6
2014-01-07 15:48:27 -05:00
James Tanner ab51bd23a2 Fixes #5196 return a unique list of hostnames for a single host pattern 2014-01-06 14:19:20 -05:00
Michael DeHaan 227e8e31c9 Merge branch 'use_comps' of git://github.com/j2sol/ansible into devel 2014-01-04 13:36:40 -05:00
Michael DeHaan 10350d1639 Update various copyrights. Not complete, but sufficient. 2014-01-04 13:32:04 -05:00
Jesse Keating 23720ff19d Use list comprehensions for efficiency
For loops can be inefficient, particularly when doing a dot command with
them. https://wiki.python.org/moin/PythonSpeed/PerformanceTips#Loops and
https://wiki.python.org/moin/PythonSpeed/PerformanceTips#Avoiding_dots...

This patch makes use of list comprehensions to be as efficient as
possible while still retaining order. Efficiency was lost a bit when
switching away from sets() but this gains some of it back.
2014-01-03 18:07:00 -08:00
Sébastien Bocahu c8d5846ab9 Let merge hash_bahaviour work with dynamic inventory 2013-12-16 19:55:20 +01:00
Michael DeHaan b5c9d5a59b Inventory directory should always be absolute. Fixes #4535. 2013-10-30 20:48:53 -04:00
Michael DeHaan 1b2d4c328c Cache patterns a bit higher up to make things a little more efficient. See #4469. 2013-10-11 22:24:37 -04:00
Michael DeHaan 41aaad69aa Make add_host clear the inventory pattern cache, add some more aliases. Fixes #4442. 2013-10-11 16:37:10 -04:00
Serge van Ginderachter c2e5f783da Add caching to pattern enumeration
Inventory._hosts_in_unenumerated_pattern()

Was TODO: cache this logic so if called a second time the result is not
recalculated
2013-10-10 15:41:48 +02:00
Michael DeHaan 8fc46a3a5a Return inventory objects in the order they are presented. Additionally, fix host slicing such that it works on Python terms with
zero indexed lists and a non-inclusive final element.
2013-10-07 15:06:15 -04:00
Jasper Capel d4dec5f577 Allow creating empty inventory
Instantiating the Inventory class with host_list=None now results in an
empty inventory instead of an error.
2013-09-25 15:00:35 +02:00
James Cammarata 39628d012d Minor fix to ipv6 detection for inventory with -i
For link-local addresses, it is sometimes necessary to append the
interface to use for the ipv6 address. This patch extends the ipv6
regex to allow for '%ifnameX' at the end.

See https://bugzilla.redhat.com/show_bug.cgi?id=136852 for more info
2013-08-19 15:27:21 -05:00