diff --git a/lib/ansible/module_utils/facts.py b/lib/ansible/module_utils/facts.py index d8223b90be..40b57c4c21 100644 --- a/lib/ansible/module_utils/facts.py +++ b/lib/ansible/module_utils/facts.py @@ -101,6 +101,19 @@ def timeout(seconds=None, error_message="Timer expired"): return wrapper + # If we were called as @timeout, then the first parameter will be the + # function we are to wrap instead of the number of seconds. Detect this + # and correct it by setting seconds to our default value and return the + # inner decorator function manually wrapped around the function + if callable(seconds): + func = seconds + seconds = 10 + return decorator(func) + else: + # If we were called as @timeout([...]) then python itself will take + # care of wrapping the inner decorator around the function + return decorator + return decorator # --------------------------------------------------------------