mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Merge pull request #38645 from rallytime/merge-2016.11
[2016.11] Merge forward from 2016.3 to 2016.11
This commit is contained in:
commit
b0ed91ce2d
3 changed files with 39 additions and 2 deletions
|
@ -3602,7 +3602,7 @@ def apply_template_on_contents(
|
|||
to_str=True,
|
||||
context=context_dict,
|
||||
saltenv=saltenv,
|
||||
grains=__grains__,
|
||||
grains=__opts__['grains'],
|
||||
pillar=__pillar__,
|
||||
salt=__salt__,
|
||||
opts=__opts__)['data'].encode('utf-8')
|
||||
|
@ -3771,7 +3771,7 @@ def get_managed(
|
|||
context=context_dict,
|
||||
salt=__salt__,
|
||||
pillar=__pillar__,
|
||||
grains=__grains__,
|
||||
grains=__opts__['grains'],
|
||||
opts=__opts__,
|
||||
**kwargs)
|
||||
else:
|
||||
|
|
|
@ -9,6 +9,7 @@ import collections
|
|||
|
||||
# Import third party libs
|
||||
import os
|
||||
import copy
|
||||
import yaml
|
||||
import salt.ext.six as six
|
||||
|
||||
|
@ -94,6 +95,7 @@ def get(key,
|
|||
ret = salt.utils.traverse_dict_and_list(pillar_dict, key, {}, delimiter)
|
||||
if isinstance(ret, collections.Mapping) and \
|
||||
isinstance(default, collections.Mapping):
|
||||
default = copy.deepcopy(default)
|
||||
return salt.utils.dictupdate.update(default, ret, merge_lists=opt_merge_lists)
|
||||
|
||||
ret = salt.utils.traverse_dict_and_list(pillar_dict,
|
||||
|
|
|
@ -58,6 +58,41 @@ class PillarModuleTestCase(TestCase):
|
|||
else:
|
||||
self.assertEqual(pillarmod.ls(), ['a', 'b'])
|
||||
|
||||
def test_pillar_get_default_merge(self):
|
||||
pillarmod.__opts__ = {}
|
||||
pillarmod.__pillar__ = {'key': 'value'}
|
||||
default = {'default': 'plop'}
|
||||
|
||||
res = pillarmod.get(key='key', default=default)
|
||||
self.assertEqual("value", res)
|
||||
|
||||
res = pillarmod.get(key='missing pillar', default=default)
|
||||
self.assertEqual({'default': 'plop'}, res)
|
||||
|
||||
def test_pillar_get_default_merge_regression_38558(self):
|
||||
"""Test for pillar.get(key=..., default=..., merge=True)
|
||||
|
||||
Do not update the ``default`` value when using ``merge=True``.
|
||||
|
||||
See: https://github.com/saltstack/salt/issues/38558
|
||||
"""
|
||||
|
||||
pillarmod.__opts__ = {}
|
||||
pillarmod.__pillar__ = {'l1': {'l2': {'l3': 42}}}
|
||||
|
||||
res = pillarmod.get(key='l1')
|
||||
self.assertEqual({'l2': {'l3': 42}}, res)
|
||||
|
||||
default = {'l2': {'l3': 43}}
|
||||
|
||||
res = pillarmod.get(key='l1', default=default)
|
||||
self.assertEqual({'l2': {'l3': 42}}, res)
|
||||
self.assertEqual({'l2': {'l3': 43}}, default)
|
||||
|
||||
res = pillarmod.get(key='l1', default=default, merge=True)
|
||||
self.assertEqual({'l2': {'l3': 42}}, res)
|
||||
self.assertEqual({'l2': {'l3': 43}}, default)
|
||||
|
||||
|
||||
# gracinet: not sure this is really useful, but other test modules have this as well
|
||||
if __name__ == '__main__':
|
||||
|
|
Loading…
Add table
Reference in a new issue