Merge pull request #25752 from thatch45/state_top_saltenv

State top saltenv
This commit is contained in:
Seth House 2015-07-27 19:02:10 -06:00
commit c1236595f9
5 changed files with 24 additions and 1 deletions

View file

@ -89,6 +89,7 @@ VALID_OPTS = {
'environment': str,
'pillarenv': str,
'state_top': str,
'state_top_saltenv': str,
'startup_states': str,
'sls_list': list,
'top_file': str,
@ -325,6 +326,7 @@ DEFAULT_MINION_OPTS = {
'pillarenv': None,
'extension_modules': '',
'state_top': 'top.sls',
'state_top_saltenv': None,
'startup_states': '',
'sls_list': [],
'top_file': '',
@ -542,6 +544,7 @@ DEFAULT_MASTER_OPTS = {
'renderer': 'yaml_jinja',
'failhard': False,
'state_top': 'top.sls',
'state_top_saltenv': None,
'master_tops': {},
'order_masters': False,
'job_cache': True,

View file

@ -460,6 +460,7 @@ class RemoteFuncs(object):
mopts['renderer'] = self.opts['renderer']
mopts['failhard'] = self.opts['failhard']
mopts['state_top'] = self.opts['state_top']
mopts['state_top_saltenv'] = self.opts['state_top_saltenv']
mopts['nodegroups'] = self.opts['nodegroups']
mopts['state_auto_order'] = self.opts['state_auto_order']
mopts['state_events'] = self.opts['state_events']

View file

@ -1056,6 +1056,7 @@ class AESFuncs(object):
mopts['renderer'] = self.opts['renderer']
mopts['failhard'] = self.opts['failhard']
mopts['state_top'] = self.opts['state_top']
mopts['state_top_saltenv'] = self.opts['state_top_saltenv']
mopts['nodegroups'] = self.opts['nodegroups']
mopts['state_auto_order'] = self.opts['state_auto_order']
mopts['state_events'] = self.opts['state_events']

View file

@ -731,6 +731,7 @@ def sls(mods,
def top(topfn,
test=None,
queue=False,
saltenv=None,
**kwargs):
'''
Execute a specific top file instead of the default
@ -767,6 +768,8 @@ def top(topfn,
st_ = salt.state.HighState(opts, pillar)
st_.push_active()
st_.opts['state_top'] = os.path.join('salt://', topfn)
if saltenv:
st_.opts['state_top_saltenv'] = saltenv
try:
ret = st_.call_highstate(
exclude=kwargs.get('exclude', []),

View file

@ -2245,6 +2245,7 @@ class BaseHighState(object):
opts['state_top'] = os.path.join('salt://', mopts['state_top'][1:])
else:
opts['state_top'] = os.path.join('salt://', mopts['state_top'])
opts['state_top_saltenv'] = mopts.get('state_top_saltenv', None)
opts['nodegroups'] = mopts.get('nodegroups', {})
opts['state_auto_order'] = mopts.get(
'state_auto_order',
@ -2286,7 +2287,8 @@ class BaseHighState(object):
)
]
else:
for saltenv in self._get_envs():
if self.opts.get('state_top_saltenv', False):
saltenv = self.opts['state_top_saltenv']
tops[saltenv].append(
compile_template(
self.client.cache_file(
@ -2298,6 +2300,19 @@ class BaseHighState(object):
saltenv=saltenv
)
)
else:
for saltenv in self._get_envs():
tops[saltenv].append(
compile_template(
self.client.cache_file(
self.opts['state_top'],
saltenv
),
self.state.rend,
self.state.opts['renderer'],
saltenv=saltenv
)
)
# Search initial top files for includes
for saltenv, ctops in tops.items():