summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorxzeck <ajaypnair99@gmail.com>2025-01-13 17:51:49 +0100
committerGitHub <noreply@github.com>2025-01-13 17:51:49 +0100
commit40d364985dee5d4afecc478547f765574b3e41d6 (patch)
treec9eb036591c2ce94476803c22b9e39749e826489
parentansible-test - Update utility containers (#84545) (diff)
downloadansible-40d364985dee5d4afecc478547f765574b3e41d6.tar.xz
ansible-40d364985dee5d4afecc478547f765574b3e41d6.zip
host_group_vars - fix Python API traceback caused by undefined 'key' variable (#84488)
Fixes: Traceback (most recent call last): File "/home/shertel/ansible/lib/ansible/plugins/vars/host_group_vars.py", line 139, in get_vars FOUND[key] = found_files = loader.find_vars_files(opath, entity_name) ^^^ UnboundLocalError: cannot access local variable 'key' where it is not associated with a value During handling of the above exception, another exception occurred: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/shertel/ansible/lib/ansible/plugins/vars/host_group_vars.py", line 151, in get_vars raise AnsibleParserError(to_native(e)) ansible.errors.AnsibleParserError: cannot access local variable 'key' where it is not associated with a value
-rw-r--r--changelogs/fragments/84384-fix-undefined-key-host-group-vars.yml4
-rw-r--r--lib/ansible/plugins/vars/host_group_vars.py16
2 files changed, 11 insertions, 9 deletions
diff --git a/changelogs/fragments/84384-fix-undefined-key-host-group-vars.yml b/changelogs/fragments/84384-fix-undefined-key-host-group-vars.yml
new file mode 100644
index 0000000000..00f7117d80
--- /dev/null
+++ b/changelogs/fragments/84384-fix-undefined-key-host-group-vars.yml
@@ -0,0 +1,4 @@
+# Filename: changelogs/fragments/84384-fix-undefined-key-host-group-vars.yml
+
+bugfixes:
+ - host_group_vars - fixed defining the 'key' variable if the get_vars method is called with cache=False (https://github.com/ansible/ansible/issues/84384)
diff --git a/lib/ansible/plugins/vars/host_group_vars.py b/lib/ansible/plugins/vars/host_group_vars.py
index cb5b4b0c2b..7baa76bf28 100644
--- a/lib/ansible/plugins/vars/host_group_vars.py
+++ b/lib/ansible/plugins/vars/host_group_vars.py
@@ -119,21 +119,19 @@ class VarsModule(BaseVarsPlugin):
else:
raise AnsibleParserError("Supplied entity must be Host or Group, got %s instead" % (type(entity)))
- if cache:
- try:
- opath = PATH_CACHE[(realpath_basedir, subdir)]
- except KeyError:
- opath = PATH_CACHE[(realpath_basedir, subdir)] = os.path.join(realpath_basedir, subdir)
+ try:
+ opath = PATH_CACHE[(realpath_basedir, subdir)]
+ except KeyError:
+ opath = PATH_CACHE[(realpath_basedir, subdir)] = os.path.join(realpath_basedir, subdir)
+
+ key = '%s.%s' % (entity_name, opath)
+ if cache:
if opath in NAK:
continue
- key = '%s.%s' % (entity_name, opath)
if key in FOUND:
data = self.load_found_files(loader, data, FOUND[key])
continue
- else:
- opath = PATH_CACHE[(realpath_basedir, subdir)] = os.path.join(realpath_basedir, subdir)
-
if os.path.isdir(opath):
self._display.debug("\tprocessing dir %s" % opath)
FOUND[key] = found_files = loader.find_vars_files(opath, entity_name)