Skip to content

Commit

Permalink
add dynamic saltenv directory __env__ to ext_pillar.stack
Browse files Browse the repository at this point in the history
  • Loading branch information
root authored and root committed Jan 1, 2020
1 parent 00da538 commit 123831b
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 13 deletions.
18 changes: 10 additions & 8 deletions salt/pillar/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -897,29 +897,31 @@ def _external_pillar_data(self, pillar, val, key):
if ('extra_minion_data' in args) and self.extra_minion_data:
ext = self.ext_pillars[key](
self.minion_id, pillar,
extra_minion_data=self.extra_minion_data, **val)
extra_minion_data=self.extra_minion_data,
pillarenv = self.opts.get('pillarenv','base'), **val)
else:
ext = self.ext_pillars[key](self.minion_id, pillar, **val)
ext = self.ext_pillars[key](self.minion_id, pillar,
pillarenv = self.opts.get('pillarenv','base'), **val)
elif isinstance(val, list):
if ('extra_minion_data' in args) and self.extra_minion_data:
ext = self.ext_pillars[key](
self.minion_id, pillar, *val,
extra_minion_data=self.extra_minion_data)
extra_minion_data=self.extra_minion_data,
pillarenv = self.opts.get('pillarenv','base'))
else:
ext = self.ext_pillars[key](self.minion_id,
pillar,
*val)
pillar,*val,pillarenv = self.opts.get('pillarenv','base'))
else:
if ('extra_minion_data' in args) and self.extra_minion_data:
ext = self.ext_pillars[key](
self.minion_id,
pillar,
val,
extra_minion_data=self.extra_minion_data)
extra_minion_data=self.extra_minion_data,
pillarenv = self.opts.get('pillarenv','base'))
else:
ext = self.ext_pillars[key](self.minion_id,
pillar,
val)
pillar,val,pillarenv = self.opts.get('pillarenv','base'))
return ext

def ext_pillar(self, pillar, errors=None):
Expand Down
19 changes: 14 additions & 5 deletions salt/pillar/stack.py
Original file line number Diff line number Diff line change
Expand Up @@ -402,15 +402,24 @@ def ext_pillar(minion_id, pillar, *args, **kwargs):
'grains': functools.partial(salt.utils.data.traverse_dict_and_list, __grains__),
'opts': functools.partial(salt.utils.data.traverse_dict_and_list, __opts__),
}
pillarenv = kwargs.pop('pillarenv','base')
for matcher, matchs in six.iteritems(kwargs):
t, matcher = matcher.split(':', 1)
if t not in traverse:
raise Exception('Unknown traverse option "{0}", '
'should be one of {1}'.format(t, traverse.keys()))
cfgs = matchs.get(traverse[t](matcher, None), [])
if matcher == 'environment':
if pillarenv in matchs:
cfgs = matchs.get(pillarenv,[])
elif '__env__' in matchs:
cfgs = matchs.get('__env__',[])
else:
t, matcher = matcher.split(':', 1)
if t not in traverse:
raise Exception('Unknown traverse option "{0}", '
'should be one of {1}'.format(t, traverse.keys()))
cfgs = matchs.get(traverse[t](matcher, None), [])
if not isinstance(cfgs, list):
cfgs = [cfgs]
stack_config_files += cfgs

stack_config_files = [c.replace("__env__", pillarenv) for c in stack_config_files]
for cfg in stack_config_files:
if not os.path.isfile(cfg):
log.info(
Expand Down

0 comments on commit 123831b

Please sign in to comment.