mirror of
https://github.com/ansible/ansible.git
synced 2026-08-03 00:22:10 +02:00
* Changes as suggested by sivel
* Add changelog fragment and tests
Co-authored-by: Matt Martz <matt@sivel.net>
Co-authored-by: s-hertel <19572925+s-hertel@users.noreply.github.com>
(cherry picked from commit 48bed1e15a)
Co-authored-by: tachyontec <92679798+tachyontec@users.noreply.github.com>
This commit is contained in:
co-authored by
tachyontec
parent
c93234304b
commit
74f99dc36c
@@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- include_vars - fix calculating ``depth`` relative to the root and ensure all files are included (https://github.com/ansible/ansible/issues/80987).
|
||||
@@ -6,6 +6,7 @@ __metaclass__ = type
|
||||
|
||||
from os import path, walk
|
||||
import re
|
||||
import pathlib
|
||||
|
||||
import ansible.constants as C
|
||||
from ansible.errors import AnsibleError
|
||||
@@ -182,16 +183,15 @@ class ActionModule(ActionBase):
|
||||
alphabetical order. Do not iterate pass the set depth.
|
||||
The default depth is unlimited.
|
||||
"""
|
||||
current_depth = 0
|
||||
sorted_walk = list(walk(self.source_dir, onerror=self._log_walk, followlinks=True))
|
||||
sorted_walk.sort(key=lambda x: x[0])
|
||||
for current_root, current_dir, current_files in sorted_walk:
|
||||
current_depth += 1
|
||||
if current_depth <= self.depth or self.depth == 0:
|
||||
current_files.sort()
|
||||
yield (current_root, current_files)
|
||||
else:
|
||||
break
|
||||
# Depth 1 is the root, relative_to omits the root
|
||||
current_depth = len(pathlib.Path(current_root).relative_to(self.source_dir).parts) + 1
|
||||
if self.depth != 0 and current_depth > self.depth:
|
||||
continue
|
||||
current_files.sort()
|
||||
yield (current_root, current_files)
|
||||
|
||||
def _ignore_file(self, filename):
|
||||
""" Return True if a file matches the list of ignore_files.
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
sub11: defined
|
||||
@@ -0,0 +1 @@
|
||||
config11: defined
|
||||
@@ -0,0 +1 @@
|
||||
config112: defined
|
||||
@@ -0,0 +1 @@
|
||||
sub12: defined
|
||||
@@ -0,0 +1 @@
|
||||
sub21: defined
|
||||
@@ -0,0 +1 @@
|
||||
config211: defined
|
||||
@@ -0,0 +1 @@
|
||||
config212: defined
|
||||
@@ -0,0 +1 @@
|
||||
config3: defined
|
||||
@@ -255,3 +255,15 @@
|
||||
vars:
|
||||
hash1: "{{ role_path }}/test_symlink/symlink/hashes/hash1.yml"
|
||||
hash2: "{{ role_path }}/test_symlink/symlink/hashes/hash2.yml"
|
||||
|
||||
- name: Test include_vars includes everything to the correct depth
|
||||
ansible.builtin.include_vars:
|
||||
dir: "{{ role_path }}/files/test_depth"
|
||||
depth: 3
|
||||
name: test_depth_var
|
||||
register: test_depth
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "test_depth.ansible_included_var_files|length == 8"
|
||||
- "test_depth_var.keys()|length == 8"
|
||||
|
||||
Reference in New Issue
Block a user