diff --git a/changelogs/fragments/ensure_text_source.yaml b/changelogs/fragments/ensure_text_source.yaml deleted file mode 100644 index 51bbdf022da..00000000000 --- a/changelogs/fragments/ensure_text_source.yaml +++ /dev/null @@ -1,2 +0,0 @@ -bugfixes: - - remove ambiguity when it comes to 'the source' diff --git a/lib/ansible/inventory/manager.py b/lib/ansible/inventory/manager.py index 12727fabcda..934ba42f6c4 100644 --- a/lib/ansible/inventory/manager.py +++ b/lib/ansible/inventory/manager.py @@ -223,9 +223,7 @@ class InventoryManager(object): parsed = False display.debug(u'Examining possible inventory source: %s' % source) - # use binary for path functions b_source = to_bytes(source) - # process directories as a collection of inventories if os.path.isdir(b_source): display.debug(u'Searching for inventory files in directory: %s' % source) @@ -237,9 +235,9 @@ class InventoryManager(object): continue # recursively deal with directory entries - fullpath = to_text(os.path.join(b_source, i), errors='surrogate_or_strict') - parsed_this_one = self.parse_source(fullpath, cache=cache) - display.debug(u'parsed %s as %s' % (fullpath, parsed_this_one)) + b_fullpath = os.path.join(b_source, i) + parsed_this_one = self.parse_source(b_fullpath, cache=cache) + display.debug(u'parsed %s as %s' % (to_text(b_fullpath), parsed_this_one)) if not parsed: parsed = parsed_this_one else: @@ -260,7 +258,7 @@ class InventoryManager(object): # initialize and figure out if plugin wants to attempt parsing this file try: - plugin_wants = bool(plugin.verify_file(source)) + plugin_wants = bool(plugin.verify_file(to_text(source))) except Exception: plugin_wants = False @@ -269,16 +267,16 @@ class InventoryManager(object): # in case plugin fails 1/2 way we dont want partial inventory plugin.parse(self._inventory, self._loader, source, cache=cache) parsed = True - display.vvv('Parsed %s inventory source with %s plugin' % (source, plugin_name)) + display.vvv('Parsed %s inventory source with %s plugin' % (to_text(source), plugin_name)) break except AnsibleParserError as e: - display.debug('%s was not parsable by %s' % (source, plugin_name)) + display.debug('%s was not parsable by %s' % (to_text(source), plugin_name)) failures.append({'src': source, 'plugin': plugin_name, 'exc': e}) except Exception as e: - display.debug('%s failed to parse %s' % (plugin_name, source)) + display.debug('%s failed to parse %s' % (plugin_name, to_text(source))) failures.append({'src': source, 'plugin': plugin_name, 'exc': AnsibleError(e)}) else: - display.debug('%s did not meet %s requirements' % (source, plugin_name)) + display.debug('%s did not meet %s requirements' % (to_text(source), plugin_name)) else: if not parsed and failures: # only if no plugin processed files should we show errors. @@ -286,10 +284,8 @@ class InventoryManager(object): display.warning(u'\n* Failed to parse %s with %s plugin: %s' % (to_text(fail['src']), fail['plugin'], to_text(fail['exc']))) if hasattr(fail['exc'], 'tb'): display.vvv(to_text(fail['exc'].tb)) - if C.INVENTORY_ANY_UNPARSED_IS_FAILED: - raise AnsibleError(u'Completely failed to parse inventory source %s' % (source)) if not parsed: - display.warning("Unable to parse %s as an inventory source" % source) + display.warning("Unable to parse %s as an inventory source" % to_text(source)) # clear up, jic self._inventory.current_source = None