From db77ad3e24daf3bc014dc3d85a49aa1bb33ae1ae Mon Sep 17 00:00:00 2001 From: Bo Maryniuk Date: Wed, 9 Jan 2019 16:08:19 +0100 Subject: [PATCH] Fix issue #2068 test Skip injecting `__call__` if chunk is not dict. This also fixes `integration/modules/test_state.py:StateModuleTest.test_exclude` that tests `include` and `exclude` state directives containing the only list of strings. Minor update: more correct is-dict check. --- salt/state.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/salt/state.py b/salt/state.py index b1bce4e0cd..cc6db7e1b2 100644 --- a/salt/state.py +++ b/salt/state.py @@ -12,6 +12,7 @@ The data sent to the state calls is as follows: """ +import collections import copy import datetime import fnmatch @@ -3206,16 +3207,18 @@ class State: """ for chunk in high: state = high[chunk] + if not isinstance(state, collections.Mapping): + continue for state_ref in state: needs_default = True + if not isinstance(state[state_ref], list): + continue for argset in state[state_ref]: if isinstance(argset, str): needs_default = False break if needs_default: - order = state[state_ref].pop(-1) - state[state_ref].append("__call__") - state[state_ref].append(order) + state[state_ref].insert(-1, "__call__") def call_high(self, high, orchestration_jid=None): """ -- 2.29.2