mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Instantiate inventory plugins only once for efficiency reasons.
This commit is contained in:
parent
817b0cdc80
commit
5a8dff5bce
1 changed files with 7 additions and 2 deletions
|
@ -37,7 +37,8 @@ class Inventory(object):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
__slots__ = [ 'host_list', 'groups', '_restriction', '_also_restriction', '_subset',
|
__slots__ = [ 'host_list', 'groups', '_restriction', '_also_restriction', '_subset',
|
||||||
'parser', '_vars_per_host', '_vars_per_group', '_hosts_cache', '_groups_list']
|
'parser', '_vars_per_host', '_vars_per_group', '_hosts_cache', '_groups_list',
|
||||||
|
'_vars_plugins']
|
||||||
|
|
||||||
def __init__(self, host_list=C.DEFAULT_HOST_LIST):
|
def __init__(self, host_list=C.DEFAULT_HOST_LIST):
|
||||||
|
|
||||||
|
@ -97,6 +98,9 @@ class Inventory(object):
|
||||||
else:
|
else:
|
||||||
raise errors.AnsibleError("Unable to find an inventory file, specify one with -i ?")
|
raise errors.AnsibleError("Unable to find an inventory file, specify one with -i ?")
|
||||||
|
|
||||||
|
self._vars_plugins = [ x for x in utils.plugins.vars_loader.all(self) ]
|
||||||
|
|
||||||
|
|
||||||
def _match(self, str, pattern_str):
|
def _match(self, str, pattern_str):
|
||||||
if pattern_str.startswith('~'):
|
if pattern_str.startswith('~'):
|
||||||
return re.search(pattern_str[1:], str)
|
return re.search(pattern_str[1:], str)
|
||||||
|
@ -277,7 +281,8 @@ class Inventory(object):
|
||||||
raise errors.AnsibleError("host not found: %s" % hostname)
|
raise errors.AnsibleError("host not found: %s" % hostname)
|
||||||
|
|
||||||
vars = {}
|
vars = {}
|
||||||
for updated in map(lambda x: x.run(host), utils.plugins.vars_loader.all(self)):
|
vars_results = [ plugin.run(host) for plugin in self._vars_plugins ]
|
||||||
|
for updated in vars_results:
|
||||||
if updated is not None:
|
if updated is not None:
|
||||||
vars.update(updated)
|
vars.update(updated)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue