diff --git a/lib/ansible/cli/doc.py b/lib/ansible/cli/doc.py index 7f9ba3f2f6..99a275e697 100644 --- a/lib/ansible/cli/doc.py +++ b/lib/ansible/cli/doc.py @@ -124,6 +124,8 @@ class DocCLI(CLI): try: # if the plugin lives in a non-python file (eg, win_X.ps1), require the corresponding python file for docs filename = loader.find_plugin(plugin, mod_type='.py', ignore_deprecated=True) + if filename is None and loader == module_loader: + filename = action_loader.find_plugin(module, mod_type='.py') if filename is None: display.warning("%s %s not found in %s\n" % (plugin_type, plugin, DocCLI.print_paths(loader))) continue @@ -217,6 +219,8 @@ class DocCLI(CLI): # if the module lives in a non-python file (eg, win_X.ps1), require the corresponding python file for docs filename = loader.find_plugin(plugin, mod_type='.py', ignore_deprecated=True) + if filename is None and loader == module_loader: + filename = action_loader.find_plugin(module, mod_type='.py') if filename is None: continue if filename.endswith(".ps1"): diff --git a/lib/ansible/parsing/mod_args.py b/lib/ansible/parsing/mod_args.py index ba47dd27b4..39d9ff25dc 100644 --- a/lib/ansible/parsing/mod_args.py +++ b/lib/ansible/parsing/mod_args.py @@ -23,7 +23,7 @@ from ansible.errors import AnsibleParserError, AnsibleError from ansible.module_utils.six import iteritems, string_types from ansible.module_utils._text import to_text from ansible.parsing.splitter import parse_kv, split_args -from ansible.plugins import module_loader +from ansible.plugins import module_loader, action_loader from ansible.template import Templar @@ -286,7 +286,7 @@ class ModuleArgsParser: # walk the input dictionary to see we recognize a module name for (item, value) in iteritems(self._task_ds): - if item in module_loader or item in ['meta', 'include', 'include_tasks', 'include_role', 'import_tasks', 'import_role']: + if item in module_loader or item in action_loader or item in ['meta', 'include', 'include_tasks', 'include_role', 'import_tasks', 'import_role']: # finding more than one module name is a problem if action is not None: raise AnsibleParserError("conflicting action statements: %s, %s" % (action, item), obj=self._task_ds)