Merge pull request #39770 from rallytime/merge-2016.11

[2016.11] Merge forward from 2016.3 to 2016.11
This commit is contained in:
Nicole Thomas 2017-03-09 15:00:17 -07:00 committed by GitHub
commit c2d4d17589
4 changed files with 46 additions and 18 deletions

View file

@ -203,7 +203,7 @@ def item(*args, **kwargs):
return ret
def setvals(grains, destructive=False, refresh=True):
def setvals(grains, destructive=False):
'''
Set new grains values in the grains config file
@ -211,10 +211,6 @@ def setvals(grains, destructive=False, refresh=True):
If an operation results in a key being removed, delete the key, too.
Defaults to False.
refresh
Refresh modules and pillar after adding the new grains.
Defaults to True.
CLI Example:
.. code-block:: bash
@ -289,13 +285,13 @@ def setvals(grains, destructive=False, refresh=True):
msg = 'Unable to write to cache file {0}. Check permissions.'
log.error(msg.format(fn_))
if not __opts__.get('local', False):
# Sync the grains
__salt__['saltutil.sync_grains'](refresh=refresh)
# Refresh the grains
__salt__['saltutil.refresh_grains']()
# Return the grains we just set to confirm everything was OK
return new_grains
def setval(key, val, destructive=False, refresh=True):
def setval(key, val, destructive=False):
'''
Set a grains value in the grains config file
@ -309,10 +305,6 @@ def setval(key, val, destructive=False, refresh=True):
If an operation results in a key being removed, delete the key, too.
Defaults to False.
refresh
Refresh modules and pillar after adding the new grain.
Defaults to True.
CLI Example:
.. code-block:: bash
@ -320,7 +312,7 @@ def setval(key, val, destructive=False, refresh=True):
salt '*' grains.setval key val
salt '*' grains.setval key "{'sub-key': 'val', 'sub-key2': 'val2'}"
'''
return setvals({key: val}, destructive, refresh)
return setvals({key: val}, destructive)
def append(key, val, convert=False, delimiter=DEFAULT_TARGET_DELIM):
@ -423,7 +415,7 @@ def remove(key, val, delimiter=DEFAULT_TARGET_DELIM):
return setval(key, grains)
def delval(key, destructive=False):
def delval(key, destructive=False, refresh=True):
'''
.. versionadded:: 0.17.0
@ -435,6 +427,9 @@ def delval(key, destructive=False):
destructive
Delete the key, too. Defaults to False.
refresh
Refresh modules and pillar after removing the grain.
CLI Example:
.. code-block:: bash

View file

@ -310,6 +310,39 @@ def sync_states(saltenv=None, refresh=True):
return ret
def refresh_grains(**kwargs):
'''
.. versionadded:: 2016.3.6,2016.11.4,Nitrogen
Refresh the minion's grains without syncing custom grains modules from
``salt://_grains``.
.. note::
The available execution modules will be reloaded as part of this
proceess, as grains can affect which modules are available.
refresh_pillar : True
Set to ``False`` to keep pillar data from being refreshed.
CLI Examples:
.. code-block:: bash
salt '*' saltutil.refresh_grains
'''
kwargs = salt.utils.clean_kwargs(**kwargs)
_refresh_pillar = kwargs.pop('refresh_pillar', True)
if kwargs:
salt.utils.invalid_kwargs(kwargs)
# Modules and pillar need to be refreshed in case grains changes affected
# them, and the module refresh process reloads the grains and assigns the
# newly-reloaded grains to each execution module's __grains__ dunder.
refresh_modules()
if _refresh_pillar:
refresh_pillar()
return True
def sync_grains(saltenv=None, refresh=True):
'''
.. versionadded:: 0.10.0

View file

@ -448,9 +448,9 @@ def __get_artifact(salt_source):
log.debug(traceback.format_exc())
comment = 'Unable to manage file: {0}'.format(e)
else:
resolved_source = salt_source['target_file']
comment = ''
else:
resolved_source = salt_source['target_file']
comment = ''
return resolved_source, comment

View file

@ -32,7 +32,7 @@ grainsmod.__opts__ = {
grainsmod.__salt__ = {}
@patch.dict(grainsmod.__salt__, {'saltutil.sync_grains': MagicMock()})
@patch.dict(grainsmod.__salt__, {'saltutil.refresh_grains': MagicMock()})
@skipIf(NO_MOCK, NO_MOCK_REASON)
class GrainsModuleTestCase(TestCase):