예제 #1
0
파일: __init__.py 프로젝트: yanghao-zh/salt
 def run_run_plus(self, fun, options='', *arg):
     '''
     Execute Salt run and the salt run function and return the data from
     each in a dict
     '''
     ret = {}
     ret['out'] = self.run_run('{0} {1} {2}'.format(options, fun,
                                                    ' '.join(arg)))
     opts = salt.config.master_config(self.get_config_file_path('master'))
     opts.update({'doc': False, 'fun': fun, 'arg': arg})
     with RedirectStdStreams():
         runner = salt.runner.Runner(opts)
         ret['fun'] = runner.run()
     return ret
예제 #2
0
    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'))

        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