diff --git a/changelog/62082.fixed b/changelog/62082.fixed new file mode 100644 index 00000000000..02e5f5ff407 --- /dev/null +++ b/changelog/62082.fixed @@ -0,0 +1 @@ +Ignore extend declarations in sls files that are excluded. diff --git a/salt/state.py b/salt/state.py index 8dddf2233cc..22f791e4d9c 100644 --- a/salt/state.py +++ b/salt/state.py @@ -1685,6 +1685,25 @@ class State: else: name = ids[0][0] + sls_excludes = [] + # excluded sls are plain list items or dicts with an "sls" key + for exclude in high.get("__exclude__", []): + if isinstance(exclude, str): + sls_excludes.append(exclude) + elif exclude.get("sls"): + sls_excludes.append(exclude["sls"]) + + if body.get("__sls__") in sls_excludes: + log.debug( + "Cannot extend ID '%s' in '%s:%s' because '%s:%s' is excluded.", + name, + body.get("__env__", "base"), + body.get("__sls__", "base"), + body.get("__env__", "base"), + body.get("__sls__", "base"), + ) + continue + for state, run in body.items(): if state.startswith("__"): continue