mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-05-06 13:22:48 +00:00
Cache against hosts pattern (fix a part of problem describe in https://github.com/ansible/ansible/issues/13023).
This commit is contained in:
@@ -37,6 +37,8 @@ from ansible.plugins import vars_loader
|
||||
from ansible.utils.vars import combine_vars
|
||||
from ansible.parsing.utils.addresses import parse_address
|
||||
|
||||
HOSTS_PATTERNS_CACHE = {}
|
||||
|
||||
try:
|
||||
from __main__ import display
|
||||
except ImportError:
|
||||
@@ -156,6 +158,11 @@ class Inventory(object):
|
||||
or applied subsets
|
||||
"""
|
||||
|
||||
# Check if pattern already computed
|
||||
pattern_hash = str(pattern)
|
||||
if pattern_hash in HOSTS_PATTERNS_CACHE:
|
||||
return HOSTS_PATTERNS_CACHE[pattern_hash]
|
||||
|
||||
patterns = Inventory.split_host_pattern(pattern)
|
||||
hosts = self._evaluate_patterns(patterns)
|
||||
|
||||
@@ -170,6 +177,7 @@ class Inventory(object):
|
||||
if self._restriction is not None:
|
||||
hosts = [ h for h in hosts if h in self._restriction ]
|
||||
|
||||
HOSTS_PATTERNS_CACHE[pattern_hash] = hosts
|
||||
return hosts
|
||||
|
||||
@classmethod
|
||||
|
||||
Reference in New Issue
Block a user