def run_run_plus(self, fun, *arg, **kwargs): """ Execute the runner function and return the return data and output in a dict """ output = kwargs.pop("_output", None) opts_overrides = kwargs.pop("opts_overrides", None) ret = {"fun": fun} # Late import import salt.config import salt.output import salt.runner opts = salt.config.client_config(self.get_config_file_path("master")) if opts_overrides: opts.update(opts_overrides) opts_arg = list(arg) if kwargs: opts_arg.append({"__kwarg__": True}) opts_arg[-1].update(kwargs) opts.update({"doc": False, "fun": fun, "arg": opts_arg}) with RedirectStdStreams(): runner = salt.runner.Runner(opts) ret["return"] = runner.run() try: ret["jid"] = runner.jid except AttributeError: ret["jid"] = None # Compile output # TODO: Support outputters other than nested opts["color"] = False opts["output_file"] = io.StringIO() try: salt.output.display_output(ret["return"], opts=opts, out=output) out = opts["output_file"].getvalue() if output is None: out = out.splitlines() elif output == "json": out = json.loads(out) ret["out"] = out finally: opts["output_file"].close() log.debug( "Result of run_run_plus for fun '%s' with arg '%s': %s", fun, opts_arg, ret ) return ret
def run_run_plus(self, fun, *arg, **kwargs): """ Execute the runner function and return the return data and output in a dict """ # Late import import salt.runner import salt.output ret = {"fun": fun} from_scratch = bool(kwargs.pop("__reload_config", False)) # Have to create an empty dict and then update it, as the result from # self.get_config() is an ImmutableDict which cannot be updated. opts = {} opts.update(self.get_config("client_config", from_scratch=from_scratch)) opts_arg = list(arg) if 'asynchronous' in kwargs: opts['async'] = True kwargs.pop('asynchronous') if kwargs: opts_arg.append({"__kwarg__": True}) opts_arg[-1].update(kwargs) opts.update({"doc": False, "fun": fun, "arg": opts_arg}) with RedirectStdStreams(): runner = salt.runner.Runner(opts) ret["return"] = runner.run() try: ret["jid"] = runner.jid except AttributeError: ret["jid"] = None # Compile output # TODO: Support outputters other than nested opts["color"] = False opts["output_file"] = cStringIO() try: salt.output.display_output(ret["return"], opts=opts) ret["out"] = opts["output_file"].getvalue().splitlines() finally: opts["output_file"].close() log.debug("Result of run_run_plus for fun '%s' with arg '%s': %s", fun, opts_arg, ret) return ret
def run_run_plus(self, fun, *arg, **kwargs): ''' Execute the runner function and return the return data and output in a dict ''' # Late import import salt.runner import salt.output ret = {'fun': fun} from_scratch = bool(kwargs.pop('__reload_config', False)) # Have to create an empty dict and then update it, as the result from # self.get_config() is an ImmutableDict which cannot be updated. opts = {} opts.update(self.get_config('client_config', from_scratch=from_scratch)) opts_arg = list(arg) if 'asynchronous' in kwargs: opts['async'] = True kwargs.pop('asynchronous') if kwargs: opts_arg.append({'__kwarg__': True}) opts_arg[-1].update(kwargs) opts.update({'doc': False, 'fun': fun, 'arg': opts_arg}) with RedirectStdStreams(): runner = salt.runner.Runner(opts) ret['return'] = runner.run() try: ret['jid'] = runner.jid except AttributeError: ret['jid'] = None # Compile output # TODO: Support outputters other than nested opts['color'] = False opts['output_file'] = cStringIO() try: salt.output.display_output(ret['return'], opts=opts) ret['out'] = opts['output_file'].getvalue().splitlines() finally: opts['output_file'].close() log.debug('Result of run_run_plus for fun \'%s\' with arg \'%s\': %s', fun, opts_arg, ret) return ret
def run_run_plus(self, fun, *arg, **kwargs): """ Execute the runner function and return the return data and output in a dict """ ret = {"fun": fun} # Late import import salt.config import salt.output import salt.runner from salt.ext.six.moves import cStringIO opts = salt.config.master_config(self.get_config_file_path("master")) if 'asynchronous' in kwargs: opts['async'] = True kwargs.pop('asynchronous') opts_arg = list(arg) if kwargs: opts_arg.append({"__kwarg__": True}) opts_arg[-1].update(kwargs) opts.update({"doc": False, "fun": fun, "arg": opts_arg}) with RedirectStdStreams(): runner = salt.runner.Runner(opts) ret["return"] = runner.run() try: ret["jid"] = runner.jid except AttributeError: ret["jid"] = None # Compile output # TODO: Support outputters other than nested opts["color"] = False opts["output_file"] = cStringIO() try: salt.output.display_output(ret["return"], opts=opts) ret["out"] = opts["output_file"].getvalue() finally: opts["output_file"].close() return ret
def run_run_plus(self, fun, *arg, **kwargs): ''' Execute the runner function and return the return data and output in a dict ''' ret = {'fun': fun} # Late import import salt.config import salt.output import salt.runner from salt.ext.six.moves import cStringIO opts = salt.config.master_config(self.get_config_file_path('master')) if 'asynchronous' in kwargs: opts['async'] = True kwargs.pop('asynchronous') opts_arg = list(arg) if kwargs: opts_arg.append({'__kwarg__': True}) opts_arg[-1].update(kwargs) opts.update({'doc': False, 'fun': fun, 'arg': opts_arg}) with RedirectStdStreams(): runner = salt.runner.Runner(opts) ret['return'] = runner.run() try: ret['jid'] = runner.jid except AttributeError: ret['jid'] = None # Compile output # TODO: Support outputters other than nested opts['color'] = False opts['output_file'] = cStringIO() try: salt.output.display_output(ret['return'], opts=opts) ret['out'] = opts['output_file'].getvalue() finally: opts['output_file'].close() return ret