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