Skip to content

Commit

Permalink
Use constants for nonzero exit codes in salt/modules/state.py
Browse files Browse the repository at this point in the history
This will make testing more reliable
  • Loading branch information
terminalmage committed Jul 26, 2018
1 parent 635a2c5 commit 3942235
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 28 deletions.
4 changes: 4 additions & 0 deletions salt/defaults/exitcodes.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@
# else is more appropriate.
EX_GENERIC = 1

EX_STATE_COMPILER_ERROR = 1
EX_STATE_FAILURE = 2
EX_PILLAR_FAILURE = 5

# Salt SSH "Thin" deployment failures
EX_THIN_PYTHON_INVALID = 10
EX_THIN_DEPLOY = 11
Expand Down
57 changes: 29 additions & 28 deletions salt/modules/state.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
import salt.utils.stringutils
import salt.utils.url
import salt.utils.versions
import salt.defaults.exitcodes
from salt.exceptions import CommandExecutionError, SaltInvocationError
from salt.runners.state import orchestrate as _orchestrate
from salt.utils.odict import OrderedDict
Expand Down Expand Up @@ -98,13 +99,13 @@ def _set_retcode(ret, highstate=None):
'''

# Set default retcode to 0
__context__['retcode'] = 0
__context__['retcode'] = salt.defaults.exitcodes.EX_OK

if isinstance(ret, list):
__context__['retcode'] = 1
__context__['retcode'] = salt.defaults.exitcodes.EX_STATE_COMPILER_ERROR
return
if not __utils__['state.check_result'](ret, highstate=highstate):
__context__['retcode'] = 2
__context__['retcode'] = salt.defaults.exitcodes.EX_STATE_FAILURE


def _get_pillar_errors(kwargs, pillar=None):
Expand Down Expand Up @@ -417,7 +418,7 @@ def _check_queue(queue, kwargs):
else:
conflict = running(concurrent=kwargs.get('concurrent', False))
if conflict:
__context__['retcode'] = 1
__context__['retcode'] = salt.defaults.exitcodes.EX_STATE_COMPILER_ERROR
return conflict


Expand Down Expand Up @@ -449,13 +450,13 @@ def low(data, queue=False, **kwargs):
st_ = salt.state.State(__opts__)
err = st_.verify_data(data)
if err:
__context__['retcode'] = 1
__context__['retcode'] = salt.defaults.exitcodes.EX_STATE_COMPILER_ERROR
return err
ret = st_.call(data)
if isinstance(ret, list):
__context__['retcode'] = 1
__context__['retcode'] = salt.defaults.exitcodes.EX_STATE_COMPILER_ERROR
if __utils__['state.check_result'](ret):
__context__['retcode'] = 2
__context__['retcode'] = salt.defaults.exitcodes.EX_STATE_FAILURE
return ret


Expand Down Expand Up @@ -557,7 +558,7 @@ def template(tem, queue=False, **kwargs):

errors = _get_pillar_errors(kwargs, pillar=st_.opts['pillar'])
if errors:
__context__['retcode'] = 5
__context__['retcode'] = salt.defaults.exitcodes.EX_PILLAR_FAILURE
raise CommandExecutionError('Pillar failed to render', info=errors)

if not tem.endswith('.sls'):
Expand All @@ -568,7 +569,7 @@ def template(tem, queue=False, **kwargs):
None,
local=True)
if errors:
__context__['retcode'] = 1
__context__['retcode'] = salt.defaults.exitcodes.EX_STATE_COMPILER_ERROR
return errors
ret = st_.state.call_high(high_state)
_set_retcode(ret, highstate=high_state)
Expand Down Expand Up @@ -1052,7 +1053,7 @@ def highstate(test=None, queue=False, **kwargs):

errors = _get_pillar_errors(kwargs, st_.opts['pillar'])
if errors:
__context__['retcode'] = 5
__context__['retcode'] = salt.defaults.exitcodes.EX_PILLAR_FAILURE
return ['Pillar failed to render with the following messages:'] + errors

st_.push_active()
Expand Down Expand Up @@ -1206,7 +1207,7 @@ def sls(mods, test=None, exclude=None, queue=False, sync_mods=None, **kwargs):
else:
conflict = running(concurrent)
if conflict:
__context__['retcode'] = 1
__context__['retcode'] = salt.defaults.exitcodes.EX_STATE_COMPILER_ERROR
return conflict

if isinstance(mods, list):
Expand All @@ -1220,7 +1221,7 @@ def sls(mods, test=None, exclude=None, queue=False, sync_mods=None, **kwargs):
'Salt state %s is disabled. To re-enable, run '
'state.enable %s', state, state
)
__context__['retcode'] = 1
__context__['retcode'] = salt.defaults.exitcodes.EX_STATE_COMPILER_ERROR
return disabled

orig_test = __opts__.get('test', None)
Expand Down Expand Up @@ -1290,7 +1291,7 @@ def sls(mods, test=None, exclude=None, queue=False, sync_mods=None, **kwargs):

errors = _get_pillar_errors(kwargs, pillar=st_.opts['pillar'])
if errors:
__context__['retcode'] = 5
__context__['retcode'] = salt.defaults.exitcodes.EX_PILLAR_FAILURE
return ['Pillar failed to render with the following messages:'] + errors

orchestration_jid = kwargs.get('orchestration_jid')
Expand All @@ -1308,7 +1309,7 @@ def sls(mods, test=None, exclude=None, queue=False, sync_mods=None, **kwargs):
high_, errors = st_.render_highstate({opts['saltenv']: mods})

if errors:
__context__['retcode'] = 1
__context__['retcode'] = salt.defaults.exitcodes.EX_STATE_COMPILER_ERROR
return errors

if exclude:
Expand Down Expand Up @@ -1422,7 +1423,7 @@ def top(topfn, test=None, queue=False, **kwargs):
initial_pillar=_get_initial_pillar(opts))
errors = _get_pillar_errors(kwargs, pillar=st_.opts['pillar'])
if errors:
__context__['retcode'] = 5
__context__['retcode'] = salt.defaults.exitcodes.EX_PILLAR_FAILURE
return ['Pillar failed to render with the following messages:'] + errors

st_.push_active()
Expand Down Expand Up @@ -1489,7 +1490,7 @@ def show_highstate(queue=False, **kwargs):

errors = _get_pillar_errors(kwargs, pillar=st_.opts['pillar'])
if errors:
__context__['retcode'] = 5
__context__['retcode'] = salt.defaults.exitcodes.EX_PILLAR_FAILURE
raise CommandExecutionError('Pillar failed to render', info=errors)

st_.push_active()
Expand Down Expand Up @@ -1527,7 +1528,7 @@ def show_lowstate(queue=False, **kwargs):

errors = _get_pillar_errors(kwargs, pillar=st_.opts['pillar'])
if errors:
__context__['retcode'] = 5
__context__['retcode'] = salt.defaults.exitcodes.EX_PILLAR_FAILURE
raise CommandExecutionError('Pillar failed to render', info=errors)

st_.push_active()
Expand Down Expand Up @@ -1603,7 +1604,7 @@ def show_states(queue=False, **kwargs):

errors = _get_pillar_errors(kwargs, pillar=st_.opts['pillar'])
if errors:
__context__['retcode'] = 5
__context__['retcode'] = salt.defaults.exitcodes.EX_PILLAR_FAILURE
raise CommandExecutionError('Pillar failed to render', info=errors)

st_.push_active()
Expand Down Expand Up @@ -1704,7 +1705,7 @@ def sls_id(id_, mods, test=None, queue=False, **kwargs):

errors = _get_pillar_errors(kwargs, pillar=st_.opts['pillar'])
if errors:
__context__['retcode'] = 5
__context__['retcode'] = salt.defaults.exitcodes.EX_PILLAR_FAILURE
return ['Pillar failed to render with the following messages:'] + errors

split_mods = salt.utils.args.split_input(mods)
Expand All @@ -1721,7 +1722,7 @@ def sls_id(id_, mods, test=None, queue=False, **kwargs):
# but it is required to get the unit tests to pass.
errors.extend(req_in_errors)
if errors:
__context__['retcode'] = 1
__context__['retcode'] = salt.defaults.exitcodes.EX_STATE_COMPILER_ERROR
return errors
chunks = st_.state.compile_high_data(high_)
ret = {}
Expand Down Expand Up @@ -1812,7 +1813,7 @@ def show_low_sls(mods, test=None, queue=False, **kwargs):

errors = _get_pillar_errors(kwargs, pillar=st_.opts['pillar'])
if errors:
__context__['retcode'] = 5
__context__['retcode'] = salt.defaults.exitcodes.EX_PILLAR_FAILURE
raise CommandExecutionError('Pillar failed to render', info=errors)

mods = salt.utils.args.split_input(mods)
Expand All @@ -1823,7 +1824,7 @@ def show_low_sls(mods, test=None, queue=False, **kwargs):
st_.pop_active()
errors += st_.state.verify_high(high_)
if errors:
__context__['retcode'] = 1
__context__['retcode'] = salt.defaults.exitcodes.EX_STATE_COMPILER_ERROR
return errors
ret = st_.state.compile_high_data(high_)
# Work around Windows multiprocessing bug, set __opts__['test'] back to
Expand Down Expand Up @@ -1900,7 +1901,7 @@ def show_sls(mods, test=None, queue=False, **kwargs):

errors = _get_pillar_errors(kwargs, pillar=st_.opts['pillar'])
if errors:
__context__['retcode'] = 5
__context__['retcode'] = salt.defaults.exitcodes.EX_PILLAR_FAILURE
raise CommandExecutionError('Pillar failed to render', info=errors)

mods = salt.utils.args.split_input(mods)
Expand All @@ -1914,7 +1915,7 @@ def show_sls(mods, test=None, queue=False, **kwargs):
# value from before this function was run.
__opts__['test'] = orig_test
if errors:
__context__['retcode'] = 1
__context__['retcode'] = salt.defaults.exitcodes.EX_STATE_COMPILER_ERROR
return errors
return high_

Expand Down Expand Up @@ -1997,14 +1998,14 @@ def show_top(queue=False, **kwargs):

errors = _get_pillar_errors(kwargs, pillar=st_.opts['pillar'])
if errors:
__context__['retcode'] = 5
__context__['retcode'] = salt.defaults.exitcodes.EX_PILLAR_FAILURE
raise CommandExecutionError('Pillar failed to render', info=errors)

errors = []
top_ = st_.get_top()
errors += st_.verify_tops(top_)
if errors:
__context__['retcode'] = 1
__context__['retcode'] = salt.defaults.exitcodes.EX_STATE_COMPILER_ERROR
return errors
matches = st_.top_matches(top_)
return matches
Expand Down Expand Up @@ -2032,7 +2033,7 @@ def single(fun, name, test=None, queue=False, **kwargs):
return conflict
comps = fun.split('.')
if len(comps) < 2:
__context__['retcode'] = 1
__context__['retcode'] = salt.defaults.exitcodes.EX_STATE_COMPILER_ERROR
return 'Invalid function passed'
kwargs.update({'state': comps[0],
'fun': comps[1],
Expand Down Expand Up @@ -2065,7 +2066,7 @@ def single(fun, name, test=None, queue=False, **kwargs):
initial_pillar=_get_initial_pillar(opts))
err = st_.verify_data(kwargs)
if err:
__context__['retcode'] = 1
__context__['retcode'] = salt.defaults.exitcodes.EX_STATE_COMPILER_ERROR
return err

st_._mod_init(kwargs)
Expand Down

0 comments on commit 3942235

Please sign in to comment.