From e0dbe9c98dfa203043d0edebb9765d0f0fd60fd9 Mon Sep 17 00:00:00 2001 From: Nate Douglas Date: Sun, 25 Feb 2024 01:38:22 -0500 Subject: [PATCH] modprobe: Avoid FileNotFoundError when directories don't exist. (#8005) * Avoid FileNotFoundError when directories don't exist. * Adds changelog fragment. * Update changelogs/fragments/7717-prevent-modprobe-error.yml Co-authored-by: Felix Fontein --------- Co-authored-by: Felix Fontein --- changelogs/fragments/7717-prevent-modprobe-error.yml | 2 ++ plugins/modules/modprobe.py | 4 ++++ 2 files changed, 6 insertions(+) create mode 100644 changelogs/fragments/7717-prevent-modprobe-error.yml diff --git a/changelogs/fragments/7717-prevent-modprobe-error.yml b/changelogs/fragments/7717-prevent-modprobe-error.yml new file mode 100644 index 0000000000..bfef30e67b --- /dev/null +++ b/changelogs/fragments/7717-prevent-modprobe-error.yml @@ -0,0 +1,2 @@ +bugfixes: + - modprobe - listing modules files or modprobe files could trigger a FileNotFoundError if ``/etc/modprobe.d`` or ``/etc/modules-load.d`` did not exist. Relevant functions now return empty lists if the directories do not exist to avoid crashing the module (https://github.com/ansible-collections/community.general/issues/7717). diff --git a/plugins/modules/modprobe.py b/plugins/modules/modprobe.py index 3909a3a2f2..f271b3946f 100644 --- a/plugins/modules/modprobe.py +++ b/plugins/modules/modprobe.py @@ -232,12 +232,16 @@ class Modprobe(object): @property def modules_files(self): + if not os.path.isdir(MODULES_LOAD_LOCATION): + return [] modules_paths = [os.path.join(MODULES_LOAD_LOCATION, path) for path in os.listdir(MODULES_LOAD_LOCATION)] return [path for path in modules_paths if os.path.isfile(path)] @property def modprobe_files(self): + if not os.path.isdir(PARAMETERS_FILES_LOCATION): + return [] modules_paths = [os.path.join(PARAMETERS_FILES_LOCATION, path) for path in os.listdir(PARAMETERS_FILES_LOCATION)] return [path for path in modules_paths if os.path.isfile(path)]