mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
use the cache runner in the cache roster file to get grains
Instead of having to query each file individitually.
This commit is contained in:
parent
4c2d4159fd
commit
c3e33c3b99
4 changed files with 9 additions and 24 deletions
|
@ -227,6 +227,7 @@ additional-builtins=__opts__,
|
|||
__pillar__,
|
||||
__grains__,
|
||||
__context__,
|
||||
__runner__,
|
||||
__ret__,
|
||||
__env__,
|
||||
__low__,
|
||||
|
|
|
@ -432,7 +432,7 @@ def fileserver(opts, backends):
|
|||
pack={'__utils__': utils(opts)})
|
||||
|
||||
|
||||
def roster(opts, whitelist=None):
|
||||
def roster(opts, runner, whitelist=None):
|
||||
'''
|
||||
Returns the roster modules
|
||||
'''
|
||||
|
@ -441,6 +441,7 @@ def roster(opts, whitelist=None):
|
|||
opts,
|
||||
tag='roster',
|
||||
whitelist=whitelist,
|
||||
pack={'__runner__': runner},
|
||||
)
|
||||
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@ class Roster(object):
|
|||
self.backends = backends
|
||||
if not backends:
|
||||
self.backends = ['flat']
|
||||
self.rosters = salt.loader.roster(opts)
|
||||
self.rosters = salt.loader.roster(opts, runner=salt.loader.runner(self.opts))
|
||||
|
||||
def _gen_back(self):
|
||||
'''
|
||||
|
|
|
@ -18,16 +18,11 @@ file. The default for this is:
|
|||
'''
|
||||
from __future__ import absolute_import
|
||||
|
||||
# Import python libs
|
||||
import os.path
|
||||
import msgpack
|
||||
|
||||
# Import Salt libs
|
||||
import salt.loader
|
||||
import salt.utils
|
||||
import salt.utils.cloud
|
||||
import salt.utils.validate.net
|
||||
from salt import syspaths
|
||||
|
||||
|
||||
def targets(tgt, tgt_type='glob', **kwargs): # pylint: disable=W0613
|
||||
|
@ -35,28 +30,16 @@ def targets(tgt, tgt_type='glob', **kwargs): # pylint: disable=W0613
|
|||
Return the targets from the flat yaml file, checks opts for location but
|
||||
defaults to /etc/salt/roster
|
||||
'''
|
||||
cache = os.path.join(syspaths.CACHE_DIR, 'master', 'minions', tgt, 'data.p')
|
||||
|
||||
if not os.path.exists(cache):
|
||||
return {}
|
||||
|
||||
roster_order = __opts__.get('roster_order', (
|
||||
'public', 'private', 'local'
|
||||
))
|
||||
|
||||
with salt.utils.fopen(cache, 'r') as fh_:
|
||||
cache_data = msgpack.load(fh_)
|
||||
|
||||
ipv4 = cache_data.get('grains', {}).get('ipv4', [])
|
||||
preferred_ip = extract_ipv4(roster_order, ipv4)
|
||||
if preferred_ip is None:
|
||||
return {}
|
||||
|
||||
return {
|
||||
tgt: {
|
||||
'host': preferred_ip,
|
||||
}
|
||||
}
|
||||
cached_data = __runner__['cache.grains'](tgt=tgt, expr_form=tgt_type)
|
||||
ret = {}
|
||||
for server, grains in cached_data.items():
|
||||
ret[server] = {'host': extract_ipv4(roster_order, grains.get('ipv4', []))}
|
||||
return ret
|
||||
|
||||
|
||||
def extract_ipv4(roster_order, ipv4):
|
||||
|
|
Loading…
Add table
Reference in a new issue