Example #1
0
    def main(self):
        if len(sys.argv) != 2:
            print("Invalid number of arguments", file=sys.stderr)
            sys.exit(errno.EINVAL)

        key = sys.argv[1]
        logging.basicConfig(file=sys.stdout, level=logging.DEBUG)
        try:
            self.datastore = get_default_datastore()
            self.conn = Client()
            self.conn.connect('127.0.0.1')
            self.conn.login_service('task.{0}'.format(os.getpid()))
            self.conn.enable_server()
            self.conn.rpc.register_service_instance('taskproxy', self.service)
            task = self.conn.call_sync('task.checkin', key)

            module = imp.load_source('plugin', task['filename'])
            setproctitle.setproctitle('task executor (tid {0})'.format(
                task['id']))

            try:
                self.instance = getattr(module, task['class'])(
                    DispatcherWrapper(self.conn), self.datastore)
                self.instance.configstore = ConfigStore(self.datastore)
                self.running.set()
                result = self.instance.run(*task['args'])
            except BaseException, err:
                print("Task exception: {0}".format(str(err)), file=sys.stderr)
                traceback.print_exc(file=sys.stderr)
                self.put_status('FAILED', exception=err)
            else:
Example #2
0
 def setUp(self):
     try:
         self.conn = Client()
         self.conn.event_callback = self.on_event
         self.conn.connect(os.getenv('TESTHOST', '127.0.0.1'))
         self.conn.login_service('tests')
         self.conn.subscribe_events('*')
     except:
         raise
Example #3
0
 def __init__(self):
     self.hostname = None
     self.connection = Client()
     self.ml = None
     self.logger = logging.getLogger('cli')
     self.plugin_dirs = []
     self.task_callbacks = {}
     self.plugins = {}
     self.variables = VariableStore()
     self.root_ns = RootNamespace('')
     self.event_masks = ['*']
     self.event_divert = False
     self.event_queue = Queue.Queue()
     self.keepalive_timer = None
     config.instance = self