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
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
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)
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
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)
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)
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
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
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