Source code for _roster.file
# -*- coding: utf-8 -*-
'''
Load the list of devices from an arbitrary SLS file.
To use this module, you only need to configure the --roster option to ``file``
(on the CLI or Master config), and if the Roster SLS file is in a different
location than ``/etc/salt/roster``, you'd also need to specify ``--roster-file``
(or ``roster_file`` in the Master config).
'''
# Import Python libs
from __future__ import absolute_import, print_function, unicode_literals
import logging
import salt.loader
from salt.roster import get_roster_file
from salt.template import compile_template
import salt_sproxy._roster
__virtualname__ = 'file'
log = logging.getLogger(__name__)
[docs]def targets(tgt, tgt_type='glob', **kwargs):
'''
Return the targets from the sls file, checks opts for location but
defaults to /etc/salt/roster
'''
template = get_roster_file(__opts__)
rend = salt.loader.render(__opts__, {})
kwargs['__salt__'] = __runner__
pool = compile_template(
template,
rend,
__opts__['renderer'],
__opts__['renderer_blacklist'],
__opts__['renderer_whitelist'],
mask_value='passw*',
**kwargs
)
pool = {host: {'minion_opts': conf} for host, conf in pool.items()}
pool = salt_sproxy._roster.load_cache(
pool, __runner__, __opts__, tgt, tgt_type=tgt_type
)
engine = salt_sproxy._roster.TGT_FUN[tgt_type]
return engine(pool, tgt, opts=__opts__)