コード例 #1
0
def render(opts, functions, states=None):
    '''
    Returns the render modules
    '''
    load = _create_loader(opts,
                          'renderers',
                          'render',
                          ext_type_dirs='render_dirs')
    pack = [{
        'name': '__salt__',
        'value': functions
    }, {
        'name': '__pillar__',
        'value': opts.get('pillar', {})
    }]

    if states:
        pack.append({'name': '__states__', 'value': states})
    rend = load.filter_func('render', pack)
    if not check_render_pipe_str(opts['renderer'], rend):
        err = ('The renderer {0} is unavailable, this error is often because '
               'the needed software is unavailable'.format(opts['renderer']))
        log.critical(err)
        raise LoaderError(err)
    return rend
コード例 #2
0
    def load_module(self, module):
        '''
        Introspect Ansible module.

        :param module:
        :return:
        '''
        m_ref = self._modules_map.get(module)
        if m_ref is None:
            raise LoaderError('Module "{0}" was not found'.format(module))
        mod = importlib.import_module('ansible.modules{0}'.format('.'.join(
            [elm.split('.')[0] for elm in m_ref.split(os.path.sep)])))

        return mod
コード例 #3
0
 def __init__(self, module_dirs, opts=dict(), tag='module'):
     self.module_dirs = module_dirs
     if '_' in tag:
         raise LoaderError('Cannot tag loader with an "_"')
     self.tag = tag
     if 'grains' in opts:
         self.grains = opts['grains']
     else:
         self.grains = {}
     if 'pillar' in opts:
         self.pillar = opts['pillar']
     else:
         self.pillar = {}
     self.opts = self.__prep_mod_opts(opts)
コード例 #4
0
ファイル: loader.py プロジェクト: mlanner/salt
def render(opts, functions):
    '''
    Returns the render modules
    '''
    load = _create_loader(opts, 'renderers', 'render', ext_type_dirs='render_dirs')
    pack = {'name': '__salt__',
            'value': functions}
    rend = load.filter_func('render', pack)
    if opts['renderer'] not in rend:
        err = ('The renderer {0} is unavailable, this error is often because '
               'the needed software is unavailable'.format(opts['renderer']))
        log.critical(err)
        raise LoaderError(err)
    return rend
コード例 #5
0
ファイル: salt.py プロジェクト: whytewolf/salt
    def _progress_ret(self, progress, out):
        """
        Print progress events
        """
        import salt.output

        # Get the progress bar
        if not hasattr(self, "progress_bar"):
            try:
                self.progress_bar = salt.output.get_progress(self.config, out, progress)
            except Exception:  # pylint: disable=broad-except
                raise LoaderError(
                    "\nWARNING: Install the `progressbar` python package. "
                    "Requested job was still run but output cannot be displayed.\n"
                )
        salt.output.update_progress(self.config, progress, self.progress_bar, out)
コード例 #6
0
ファイル: salt.py プロジェクト: eirinikos/salt
 def _progress_ret(self, progress, out):
     '''
     Print progress events
     '''
     import salt.output
     # Get the progress bar
     if not hasattr(self, 'progress_bar'):
         try:
             self.progress_bar = salt.output.get_progress(
                 self.config, out, progress)
         except Exception:
             raise LoaderError(
                 '\nWARNING: Install the `progressbar` python package. '
                 'Requested job was still run but output cannot be displayed.\n'
             )
     salt.output.update_progress(self.config, progress, self.progress_bar,
                                 out)
コード例 #7
0
ファイル: loader.py プロジェクト: terminalmage/salt
def render(opts, functions):
    '''
    Returns the render modules
    '''
    extra_dirs = [os.path.join(opts['extension_modules'], 'renderers')]
    if 'render_dirs' in opts:
        extra_dirs.extend(opts['render_dirs'])
    module_dirs = [
        os.path.join(salt_base_path, 'renderers'),
    ] + extra_dirs
    load = Loader(module_dirs, opts)
    pack = {'name': '__salt__', 'value': functions}
    rend = load.filter_func('render', pack)
    if opts['renderer'] not in rend:
        err = ('The renderer {0} is unavailable, this error is often because '
               'the needed software is unavailable'.format(opts['renderer']))
        log.critical(err)
        raise LoaderError(err)
    return rend
コード例 #8
0
ファイル: __init__.py プロジェクト: unix196/salt
def render(opts, functions, states=None, proxy=None, context=None):
    """
    Returns the render modules
    """
    if context is None:
        context = {}

    pack = {
        "__salt__": functions,
        "__grains__": opts.get("grains", {}),
        "__context__": context,
    }

    if states:
        pack["__states__"] = states

    if proxy is None:
        proxy = {}
    pack["__proxy__"] = proxy

    ret = LazyLoader(
        _module_dirs(
            opts,
            "renderers",
            "render",
            ext_type_dirs="render_dirs",
        ),
        opts,
        tag="render",
        pack=pack,
    )
    rend = FilterDictWrapper(ret, ".render")

    if not check_render_pipe_str(
        opts["renderer"], rend, opts["renderer_blacklist"], opts["renderer_whitelist"]
    ):
        err = (
            "The renderer {} is unavailable, this error is often because "
            "the needed software is unavailable".format(opts["renderer"])
        )
        log.critical(err)
        raise LoaderError(err)
    return rend
コード例 #9
0
ファイル: loader.py プロジェクト: cewood/salt
def render(opts, functions, states=None):
    '''
    Returns the render modules
    '''
    pack = {'__salt__': functions}
    if states:
        pack['__states__'] = states
    ret = LazyLoader(
        _module_dirs(opts, 'renderers', 'render', ext_type_dirs='render_dirs'),
        opts,
        tag='render',
        pack=pack,
    )
    rend = FilterDictWrapper(ret, '.render')

    if not check_render_pipe_str(opts['renderer'], rend):
        err = ('The renderer {0} is unavailable, this error is often because '
               'the needed software is unavailable'.format(opts['renderer']))
        log.critical(err)
        raise LoaderError(err)
    return rend