diff --git a/lib/ansible/inventory/manager.py b/lib/ansible/inventory/manager.py index 64cb36584c..6876bf3834 100644 --- a/lib/ansible/inventory/manager.py +++ b/lib/ansible/inventory/manager.py @@ -129,7 +129,7 @@ class InventoryManager(object): # caches self._pattern_cache = {} # resolved host patterns - self._inventory_plugins = {} # for generating inventory + self._inventory_plugins = [] # for generating inventory # the inventory dirs, files, script paths or lists of hosts if sources is None: @@ -181,7 +181,7 @@ class InventoryManager(object): for name in C.INVENTORY_ENABLED: plugin = inventory_loader.get(name) name = os.path.splitext(os.path.basename(plugin._original_path))[0] - self._inventory_plugins[name] = plugin + self._inventory_plugins.append(plugin) if not self._inventory_plugins: raise AnsibleError("No inventory plugins available to generate inventory, make sure you have at least one whitelisted.") @@ -208,7 +208,7 @@ class InventoryManager(object): else: display.warning("No inventory was parsed, only implicit localhost is available") - self._inventory_plugins = {} + self._inventory_plugins = [] def parse_source(self, source, cache=True): ''' Generate or update inventory for the source provided ''' @@ -249,10 +249,9 @@ class InventoryManager(object): display.debug(u'Attempting to use plugin %s' % plugin) # initialize - inv = self._inventory_plugins[plugin] - if inv.verify_file(source): + if plugin.verify_file(source): try: - inv.parse(self._inventory, self._loader, source, cache=cache) + plugin.parse(self._inventory, self._loader, source, cache=cache) parsed = True display.vvv(u'Parsed %s inventory source with %s plugin' % (to_text(source), plugin)) break