Skip to content

Commit

Permalink
Merge pull request #33833 from terminalmage/issue33645
Browse files Browse the repository at this point in the history
Support syncing pillar modules to masterless minions
  • Loading branch information
Mike Place committed Jun 8, 2016
2 parents e061788 + 91745c2 commit b8e6c14
Showing 1 changed file with 121 additions and 39 deletions.
160 changes: 121 additions & 39 deletions salt/modules/saltutil.py
Original file line number Diff line number Diff line change
Expand Up @@ -249,18 +249,22 @@ def update(version=None):

def sync_beacons(saltenv=None, refresh=True):
'''
Sync the beacons from the _beacons directory on the salt master file
server. This function is environment aware, pass the desired environment
to grab the contents of the _beacons directory, base is the default
environment.
.. versionadded:: 2015.5.1
Sync the beacons from the ``salt://_beacons`` directory on the Salt
fileserver. This function is environment-aware, pass the desired
environment to grab the contents of the ``_beacons`` directory from that
environment. The default environment, if none is specified, is ``base``.
refresh : True
Also refresh the beacons available to the minion.
CLI Example:
.. code-block:: bash
salt '*' saltutil.sync_beacons
salt '*' saltutil.sync_beacons saltenv=dev
'''
ret = _sync('beacons', saltenv)
if refresh:
Expand All @@ -270,37 +274,46 @@ def sync_beacons(saltenv=None, refresh=True):

def sync_sdb(saltenv=None, refresh=False):
'''
Sync sdb modules from the _sdb directory on the salt master file
server. This function is environment aware, pass the desired environment
to grab the contents of the _sdb directory, base is the default
environment.
.. versionadded:: 2015.5.7
Sync sdb modules from the ``salt://_sdb`` directory on the Salt
fileserver. This function is environment-aware, pass the desired
environment to grab the contents of the ``_sdb`` directory from that
environment. The default environment, if none is specified, is ``base``.
refresh : False
This argument has no affect and is included for consistency with the
other sync functions.
CLI Example:
.. code-block:: bash
salt '*' saltutil.sync_sdb
salt '*' saltutil.sync_sdb saltenv=dev
'''
ret = _sync('sdb', saltenv)
return ret


def sync_modules(saltenv=None, refresh=True):
'''
Sync the modules from the _modules directory on the salt master file
server. This function is environment aware, pass the desired environment
to grab the contents of the _modules directory, base is the default
environment.
.. versionadded:: 2015.5.1
Sync the modules from the ``salt://_modules`` directory on the Salt
fileserver. This function is environment-aware, pass the desired
environment to grab the contents of the ``_modules`` directory from that
environment. The default environment, if none is specified, is ``base``.
refresh : True
Also refresh the execution modules available to the minion.
CLI Example:
.. code-block:: bash
salt '*' saltutil.sync_modules
salt '*' saltutil.sync_modules saltenv=dev
'''
ret = _sync('modules', saltenv)
if refresh:
Expand All @@ -310,16 +323,20 @@ def sync_modules(saltenv=None, refresh=True):

def sync_states(saltenv=None, refresh=True):
'''
Sync the states from the _states directory on the salt master file
server. This function is environment aware, pass the desired environment
to grab the contents of the _states directory, base is the default
environment.
Sync the states from the ``salt://_states`` directory on the Salt
fileserver. This function is environment-aware, pass the desired
environment to grab the contents of the ``_states`` directory from that
environment. The default environment, if none is specified, is ``base``.
refresh : True
Also refresh the execution modules available to the minion.
CLI Example:
.. code-block:: bash
salt '*' saltutil.sync_states
salt '*' saltutil.sync_states saltenv=dev
'''
ret = _sync('states', saltenv)
if refresh:
Expand All @@ -329,16 +346,21 @@ def sync_states(saltenv=None, refresh=True):

def sync_grains(saltenv=None, refresh=True):
'''
Sync the grains from the _grains directory on the salt master file
server. This function is environment aware, pass the desired environment
to grab the contents of the _grains directory, base is the default
environment.
Sync the grains from the ``salt://_grains`` directory on the Salt
fileserver. This function is environment-aware, pass the desired
environment to grab the contents of the ``_grains`` directory from that
environment. The default environment, if none is specified, is ``base``.
refresh : True
Also refresh the execution modules available to the minion, and refresh
pillar data.
CLI Example:
.. code-block:: bash
salt '*' saltutil.sync_grains
salt '*' saltutil.sync_grains saltenv=dev
'''
ret = _sync('grains', saltenv)
if refresh:
Expand All @@ -349,16 +371,20 @@ def sync_grains(saltenv=None, refresh=True):

def sync_renderers(saltenv=None, refresh=True):
'''
Sync the renderers from the _renderers directory on the salt master file
server. This function is environment aware, pass the desired environment
to grab the contents of the _renderers directory, base is the default
environment.
Sync the renderers from the ``salt://_renderers`` directory on the Salt
fileserver. This function is environment-aware, pass the desired
environment to grab the contents of the ``_renderers`` directory from that
environment. The default environment, if none is specified, is ``base``.
refresh : True
Also refresh the execution modules available to the minion.
CLI Example:
.. code-block:: bash
salt '*' saltutil.sync_renderers
salt '*' saltutil.sync_renderers saltenv=dev
'''
ret = _sync('renderers', saltenv)
if refresh:
Expand All @@ -368,16 +394,20 @@ def sync_renderers(saltenv=None, refresh=True):

def sync_returners(saltenv=None, refresh=True):
'''
Sync the returners from the _returners directory on the salt master file
server. This function is environment aware, pass the desired environment
to grab the contents of the _returners directory, base is the default
environment.
Sync the returners from the ``salt://_returners`` directory on the Salt
fileserver. This function is environment-aware, pass the desired
environment to grab the contents of the ``_returners`` directory from that
environment. The default environment, if none is specified, is ``base``.
refresh : True
Also refresh the execution modules available to the minion.
CLI Example:
.. code-block:: bash
salt '*' saltutil.sync_returners
salt '*' saltutil.sync_returners saltenv=dev
'''
ret = _sync('returners', saltenv)
if refresh:
Expand All @@ -387,16 +417,20 @@ def sync_returners(saltenv=None, refresh=True):

def sync_output(saltenv=None, refresh=True):
'''
Sync the output modules from the _output directory on the salt master file
server. This function is environment aware. Pass the desired environment
to grab the contents of the _output directory. Base is the default
environment.
Sync the output modules from the ``salt://_output`` directory on the Salt
fileserver. This function is environment-aware, pass the desired
environment to grab the contents of the ``_output`` directory from that
environment. The default environment, if none is specified, is ``base``.
refresh : True
Also refresh the execution modules available to the minion.
CLI Example:
.. code-block:: bash
salt '*' saltutil.sync_output
salt '*' saltutil.sync_output saltenv=dev
'''
ret = _sync('output', saltenv)
if refresh:
Expand All @@ -408,25 +442,68 @@ def sync_output(saltenv=None, refresh=True):

def sync_utils(saltenv=None, refresh=True):
'''
Sync utility source files from the _utils directory on the salt master file
server. This function is environment aware, pass the desired environment
to grab the contents of the _utils directory, base is the default
environment.
Sync utility source files from the ``salt://_utils`` directory on the Salt
fileserver. This function is environment-aware, pass the desired
environment to grab the contents of the ``_utils`` directory from that
environment. The default environment, if none is specified, is ``base``.
refresh : True
Also refresh the execution modules available to the minion.
CLI Example:
.. code-block:: bash
salt '*' saltutil.sync_utils
salt '*' saltutil.sync_utils saltenv=dev
'''
ret = _sync('utils', saltenv)
if refresh:
refresh_modules()
return ret


def sync_pillar(saltenv=None, refresh=True):
'''
.. versionadded:: 2015.8.11,2016.3.2
Sync pillar modules from the ``salt://_pillar`` directory on the Salt
fileserver. This function is environment-aware, pass the desired
environment to grab the contents of the ``_pillar`` directory from that
environment. The default environment, if none is specified, is ``base``.
refresh : True
Also refresh the execution modules available to the minion, and refresh
pillar data.
.. note::
This function will raise an error if executed on a traditional (i.e.
not masterless) minion
CLI Examples:
.. code-block:: bash
salt '*' saltutil.sync_pillar
salt '*' saltutil.sync_pillar saltenv=dev
'''
if __opts__['file_client'] != 'local':
raise CommandExecutionError(
'Pillar modules can only be synced to masterless minions'
)
ret = _sync('pillar', saltenv)
if refresh:
refresh_modules()
refresh_pillar()
return ret


def sync_all(saltenv=None, refresh=True):
'''
.. versionchanged:: 2015.8.11,2016.3.2
On masterless minions, pillar modules are now synced, and refreshed
when ``refresh`` is set to ``True``.
Sync down all of the dynamic modules from the file server for a specific
environment. This function synchronizes custom modules, states, beacons,
grains, returners, output modules, renderers, and utils.
Expand All @@ -439,6 +516,7 @@ def sync_all(saltenv=None, refresh=True):
.. code-block:: bash
salt '*' saltutil.sync_all
salt '*' saltutil.sync_all saltenv=dev
'''
log.debug('Syncing all')
ret = {}
Expand All @@ -451,8 +529,12 @@ def sync_all(saltenv=None, refresh=True):
ret['returners'] = sync_returners(saltenv, False)
ret['output'] = sync_output(saltenv, False)
ret['utils'] = sync_utils(saltenv, False)
if __opts__['file_client'] == 'local':
ret['pillar'] = sync_pillar(saltenv, False)
if refresh:
refresh_modules()
if __opts__['file_client'] == 'local':
refresh_pillar()
return ret


Expand Down

0 comments on commit b8e6c14

Please sign in to comment.