Skip to content

Commit d89a204

Browse files
committed
Merge pull request saltstack#18579 from spuzirev/fix-file-directory-require
Fixed not fully working requires in dir based functions like file.direct...
2 parents c3ef5f4 + 57fc2d2 commit d89a204

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

salt/states/file.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -283,19 +283,26 @@ def _gen_keep_files(name, require):
283283
Generate the list of files that need to be kept when a dir based function
284284
like directory or recurse has a clean.
285285
'''
286+
def _process(name):
287+
ret = set()
288+
ret.add(name.rstrip('/'))
289+
if os.path.isdir(name):
290+
for root, dirs, files in os.walk(name):
291+
for name in files:
292+
ret.add(os.path.join(root, name))
293+
for name in dirs:
294+
ret.add(os.path.join(root, name))
295+
return ret
286296
keep = set()
287297
# Remove last slash if exists for all path
288298
keep.add(name.rstrip('/'))
289299
if isinstance(require, list):
290300
for comp in require:
291301
if 'file' in comp:
292-
keep.add(comp['file'].rstrip('/'))
293-
if os.path.isdir(comp['file']):
294-
for root, dirs, files in os.walk(comp['file']):
295-
for name in files:
296-
keep.add(os.path.join(root, name))
297-
for name in dirs:
298-
keep.add(os.path.join(root, name))
302+
keep.update(_process(comp['file']))
303+
for low in __lowstate__:
304+
if low['__id__'] == comp['file']:
305+
keep.update(_process(low['name']))
299306
return list(keep)
300307

301308

0 commit comments

Comments
 (0)