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__, {}) __runner__.name = "__salt__" 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__)