def main(self): setproctitle('logd') self.init_syslog_server() self.init_klog() self.init_rpc_server() self.init_flush() checkin() signal.signal(signal.SIGUSR1, signal.SIG_DFL) while True: sig = signal.sigwait([signal.SIGTERM, signal.SIGUSR1]) if sig == signal.SIGUSR1: with self.cv: logging.info('Flushing logs on signal') self.flush = True self.cv.notify_all() continue if sig == signal.SIGTERM: logging.info('Got SIGTERM, exiting') with self.cv: self.exiting = True self.cv.notify_all() self.flush_thread.join() break
def main(self): setproctitle('logd') self.init_configstore() self.init_syslog_server() self.init_klog() self.init_rpc_server() self.init_flush() self.load_configuration() checkin() signal.signal(signal.SIGUSR1, signal.SIG_DFL) signal.signal(signal.SIGHUP, signal.SIG_DFL) while True: sig = signal.sigwait([signal.SIGTERM, signal.SIGUSR1, signal.SIGHUP]) if sig == signal.SIGUSR1: with self.cv: logging.info('Flushing logs on signal') self.flush = True self.cv.notify_all() continue if sig == signal.SIGHUP: logging.info('Reloading configuration on SIGHUP') self.load_configuration() continue if sig == signal.SIGTERM: logging.info('Got SIGTERM, exiting') with self.cv: self.exiting = True self.cv.notify_all() self.flush_thread.join() break
def main(self): parser = argparse.ArgumentParser() parser.add_argument('-c', metavar='CONFIG', default=DEFAULT_CONFIGFILE, help='Middleware config file') parser.add_argument('-f', action='store_true', default=False, help='Run in foreground') parser.add_argument('mountpoint', metavar='MOUNTPOINT', default='/etc', help='/etc mount point') args = parser.parse_args() configure_logging('/var/log/etcd.log', 'DEBUG') setproctitle('etcd') self.root = args.mountpoint self.configfile = args.c self.parse_config(args.c) self.scan_plugins() self.init_renderers() self.init_datastore() self.init_dispatcher() self.generate_all() self.checkin() self.client.wait_forever()
def main(self): setproctitle('crashd') configure_logging('crashd', 'DEBUG') logger.info('Started') if not os.path.isdir(REPORTS_PATH): os.mkdir(REPORTS_PATH) self.observer = Observer() self.observer.schedule(Handler(self), path=REPORTS_PATH, recursive=False) self.observer.start() while True: if not self.last_send or self.last_send + datetime.timedelta( hours=24) < datetime.datetime.now(): self.collect_telemetry() self.send_telemetry() for i in os.listdir(REPORTS_PATH): with self.lock: self.send_report(os.path.join(REPORTS_PATH, i)) time.sleep(RETRY_INTERVAL)
def main(self): parser = argparse.ArgumentParser() parser.add_argument('-c', metavar='CONFIG', default=DEFAULT_CONFIGFILE, help='Middleware config file') args = parser.parse_args() configure_logging('fnstatd', 'DEBUG') setproctitle('fnstatd') # Signal handlers gevent.signal(signal.SIGQUIT, self.die) gevent.signal(signal.SIGTERM, self.die) gevent.signal(signal.SIGINT, self.die) gevent.spawn(self.event_worker) self.server = InputServer(self) self.config = args.c self.init_datastore() self.init_dispatcher() self.init_database() self.server.start() self.logger.info('Started') self.checkin() self.client.wait_forever()
def main(self): parser = argparse.ArgumentParser() parser.add_argument('-c', metavar='CONFIG', default=DEFAULT_CONFIGFILE, help='Middleware config file') parser.add_argument('-s', metavar='SOCKET', default=DEFAULT_SOCKET_ADDRESS, help='Socket address to listen on') args = parser.parse_args() configure_logging('dscached', 'DEBUG') setproctitle('dscached') self.config = args.c self.parse_config(self.config) self.init_datastore() self.init_dispatcher() self.load_config() self.init_server(args.s) self.scan_plugins() self.register_schemas() self.wait_for_etcd() self.init_directories() self.checkin() self.client.wait_forever()
def main(self): parser = argparse.ArgumentParser() parser.add_argument('-c', metavar='CONFIG', default=DEFAULT_CONFIGFILE, help='Middleware config file') args = parser.parse_args() self.config = args.c configure_logging('clid', 'DEBUG') setproctitle('clid') self.init_dispatcher() self.init_cli() self.client.wait_forever()
def main(self): parser = argparse.ArgumentParser() parser.add_argument('-s', metavar='SOCKET', default=DEFAULT_SOCKET_ADDRESS, help='Socket address to listen on') args = parser.parse_args() configure_logging('/var/log/serviced.log', 'DEBUG', file=True) bsd.setproctitle('serviced') self.logger.info('Started') self.init_server(args.s) self.bootstrap() self.event_loop()
def main(self): parser = argparse.ArgumentParser() parser.add_argument('-c', metavar='CONFIG', default=DEFAULT_CONFIGFILE, help='Middleware config file') args = parser.parse_args() self.config = args.c configure_logging('/var/log/clid.log', 'DEBUG') setproctitle('clid') self.init_dispatcher() self.init_cli() self.client.wait_forever()
def main(self): parser = argparse.ArgumentParser() parser.add_argument('-c', metavar='CONFIG', default=DEFAULT_CONFIGFILE, help='Middleware config file') parser.add_argument('-f', action='store_true', default=False, help='Run in foreground') args = parser.parse_args() configure_logging('/var/log/schedulerd.log', 'DEBUG') setproctitle('schedulerd') self.config = args.c self.init_datastore() self.init_scheduler() self.init_dispatcher() self.checkin() self.client.wait_forever()
def main(self): parser = argparse.ArgumentParser() parser.add_argument('-c', metavar='CONFIG', default=DEFAULT_CONFIGFILE, help='Middleware config file') args = parser.parse_args() configure_logging('/var/log/alertd.log', 'DEBUG') setproctitle('alertd') self.config = args.c self.parse_config(self.config) self.init_datastore() self.init_dispatcher() self.scan_plugins() self.init_reminder() self.checkin() self.client.wait_forever()
def main(): global proc, null, log if len(sys.argv) < 2: print("Usage: crash-wrapper <path to executable> [args...]", file=sys.stderr) exit(1) setproctitle('crash-wrapper') signal.signal(signal.SIGTERM, sigterm) name = os.path.basename(sys.argv[1]) null = open('/dev/null', 'r') log = open('/var/tmp/{0}.{1}.log'.format(name, os.getpid()), 'a+') proc = subprocess.Popen(sys.argv[1:], stdin=null, stdout=log, stderr=subprocess.STDOUT, close_fds=True) proc.wait() if proc.returncode > 0 or proc.returncode in (-signal.SIGSEGV, -signal.SIGBUS): # Prepare error report log.seek(0, io.SEEK_SET) report = { 'application': name, 'type': 'error', 'timestamp': str(datetime.datetime.now()), 'exit_code': proc.returncode, 'message': log.read() } try: with tempfile.NamedTemporaryFile(dir='/var/tmp/crash', mode='w', suffix='.json', prefix='report-', delete=False) as f: json.dump(report, f, indent=4) except: # at least we tried pass null.close() log.close() return proc.returncode
def main(self): setproctitle('crashd') logging.basicConfig(level=logging.INFO, format=LOGGING_FORMAT) logger.info('Started') if not os.path.isdir(REPORTS_PATH): os.mkdir(REPORTS_PATH) self.observer = Observer() self.observer.schedule(Handler(self), path=REPORTS_PATH, recursive=False) self.observer.start() while True: for i in os.listdir(REPORTS_PATH): with self.lock: self.send_report(os.path.join(REPORTS_PATH, i)) time.sleep(RETRY_INTERVAL)
def main(self): parser = argparse.ArgumentParser() parser.add_argument('-c', metavar='CONFIG', default=DEFAULT_CONFIGFILE, help='Middleware config file') args = parser.parse_args() configure_logging('alertd', 'DEBUG') setproctitle('alertd') self.config = args.c self.parse_config(self.config) self.init_datastore() self.init_dispatcher() self.scan_plugins() self.init_reminder() self.checkin() self.client.wait_forever()
def main(): parser = argparse.ArgumentParser() parser.add_argument("-s", metavar="SOCKET", default=DEFAULT_SOCKET_ADDRESS, help="Socket address to listen on") parser.add_argument("-c", metavar="CONFIG", default=DEFAULT_CONFIGFILE, help="Configuration file path") args = parser.parse_args() logging.basicConfig(level=logging.DEBUG) context = Context() context.start(args.c, args.s) context.init_dispatcher() setproctitle("debugd") if not os.path.isdir(CORES_DIR): os.mkdir(CORES_DIR) checkin() while True: time.sleep(60)
def main(self): parser = argparse.ArgumentParser() parser.add_argument('-c', metavar='CONFIG', default=DEFAULT_CONFIGFILE, help='Middleware config file') parser.add_argument('-f', action='store_true', default=False, help='Run in foreground') args = parser.parse_args() configure_logging('schedulerd', 'DEBUG') setproctitle('schedulerd') self.config = args.c self.init_datastore() self.init_scheduler() self.init_dispatcher() self.checkin() self.client.wait_forever()
def main(self): parser = argparse.ArgumentParser() parser.add_argument('-c', metavar='CONFIG', default=DEFAULT_CONFIGFILE, help='Middleware config file') parser.add_argument('-s', metavar='SOCKET', default=DEFAULT_SOCKET_ADDRESS, help='Socket address to listen on') args = parser.parse_args() configure_logging('dscached', 'DEBUG') setproctitle('dscached') self.config = args.c self.parse_config(self.config) self.init_datastore() self.init_dispatcher() self.load_config() self.init_server(args.s) self.scan_plugins() self.wait_for_etcd() self.init_directories() self.checkin() self.client.wait_forever()
def main(self): parser = argparse.ArgumentParser() parser.add_argument('-c', metavar='CONFIG', default=DEFAULT_CONFIGFILE, help='Middleware config file') parser.add_argument('-f', action='store_true', default=False, help='Run in foreground') parser.add_argument('mountpoint', metavar='MOUNTPOINT', default='/etc', help='/etc mount point') args = parser.parse_args() configure_logging('etcd', 'DEBUG') setproctitle('etcd') self.root = args.mountpoint self.configfile = args.c self.parse_config(args.c) self.scan_plugins() self.init_renderers() self.init_datastore() self.init_dispatcher() self.generate_all() self.checkin() self.client.wait_forever()
def main(self): parser = argparse.ArgumentParser() parser.add_argument('-c', metavar='CONFIG', default=DEFAULT_CONFIGFILE, help='Middleware config file') args = parser.parse_args() configure_logging('networkd', 'DEBUG') setproctitle('networkd') self.config = args.c self.init_datastore() self.init_dispatcher() self.scan_interfaces() self.init_routing_socket() self.client.resume_service('networkd.configuration') self.client.resume_service('networkd.debug') for i in self.configure_network(): self.logger.info('Initial network configuration: {0}, {1}'.format(*i)) self.checkin() self.logger.info('Started') self.client.wait_forever()
def main(self): parser = argparse.ArgumentParser() parser.add_argument('-c', metavar='CONFIG', default=DEFAULT_CONFIGFILE, help='Middleware config file') args = parser.parse_args() configure_logging('/var/log/fnstatd.log', 'DEBUG') setproctitle('fnstatd') # Signal handlers gevent.signal(signal.SIGQUIT, self.die) gevent.signal(signal.SIGTERM, self.die) gevent.signal(signal.SIGINT, self.die) self.server = InputServer(self) self.config = args.c self.init_datastore() self.init_dispatcher() self.init_database() self.server.start() self.logger.info('Started') self.checkin() self.client.wait_forever()
def main(self): setproctitle('crashd') configure_logging('crashd', 'DEBUG') logger.info('Started') if not os.path.isdir(REPORTS_PATH): os.mkdir(REPORTS_PATH) self.observer = Observer() self.observer.schedule(Handler(self), path=REPORTS_PATH, recursive=False) self.observer.start() while True: if not self.last_send or self.last_send + datetime.timedelta(hours=24) < datetime.datetime.now(): self.collect_telemetry() self.send_telemetry() for i in os.listdir(REPORTS_PATH): with self.lock: self.send_report(os.path.join(REPORTS_PATH, i)) time.sleep(RETRY_INTERVAL)
def main(self): if len(sys.argv) != 2: print("Invalid number of arguments", file=sys.stderr) sys.exit(errno.EINVAL) key = sys.argv[1] configure_logging(None, logging.DEBUG) self.datastore = get_datastore() self.configstore = ConfigStore(self.datastore) self.conn = Client() self.conn.connect('unix:') self.conn.login_service('task.{0}'.format(os.getpid())) self.conn.enable_server() self.conn.call_sync('management.enable_features', ['streaming_responses']) self.conn.rpc.register_service_instance('taskproxy', self.service) self.conn.register_event_handler('task.progress', self.task_progress_handler) self.conn.call_sync('task.checkin', key) setproctitle('task executor (idle)') while True: try: task = self.task.get() logging.root.setLevel( self.conn.call_sync('management.get_logging_level')) setproctitle('task executor (tid {0})'.format(task['id'])) if task['debugger']: sys.path.append('/usr/local/lib/dispatcher/pydev') import pydevd host, port = task['debugger'] pydevd.settrace(host, port=port, stdoutToServer=True, stderrToServer=True) name, _ = os.path.splitext(os.path.basename(task['filename'])) module = self.module_cache.get(task['filename']) if not module: module = load_module_from_file(name, task['filename']) self.module_cache[task['filename']] = module setproctitle('task executor (tid {0})'.format(task['id'])) fds = list(self.collect_fds(task['args'])) try: dispatcher = DispatcherWrapper(self.conn) self.instance = getattr(module, task['class'])(dispatcher, self.datastore) self.instance.configstore = self.configstore self.instance.user = task['user'] self.instance.environment = task['environment'] self.running.set() self.run_task_hooks(self.instance, task, 'before') result = self.instance.run(*task['args']) self.run_task_hooks(self.instance, task, 'after', result=result) except BaseException as err: print("Task exception: {0}".format(str(err)), file=sys.stderr) traceback.print_exc(file=sys.stderr) if hasattr(self.instance, 'rollback'): self.put_status('ROLLBACK') try: self.instance.rollback(*task['args']) except BaseException as rerr: print("Task exception during rollback: {0}".format( str(rerr)), file=sys.stderr) traceback.print_exc(file=sys.stderr) # Main task is already failed at this point, so ignore hook errors with contextlib.suppress(RpcException): self.run_task_hooks(self.instance, task, 'error', error=serialize_error(err)) self.put_status('FAILED', exception=err) else: self.put_status('FINISHED', result=result) finally: self.close_fds(fds) self.running.clear() except RpcException as err: print("RPC failed: {0}".format(str(err)), file=sys.stderr) print(traceback.format_exc(), flush=True) sys.exit(errno.EBADMSG) except socket.error as err: print("Cannot connect to dispatcher: {0}".format(str(err)), file=sys.stderr) sys.exit(errno.ETIMEDOUT) if task['debugger']: import pydevd pydevd.stoptrace() setproctitle('task executor (idle)')
def main(self): if len(sys.argv) != 2: print("Invalid number of arguments", file=sys.stderr) sys.exit(errno.EINVAL) key = sys.argv[1] configure_logging(None, logging.DEBUG) self.datastore = get_datastore() self.configstore = ConfigStore(self.datastore) self.conn = Client() self.conn.connect('unix:') self.conn.login_service('task.{0}'.format(os.getpid())) self.conn.enable_server() self.conn.call_sync('management.enable_features', ['streaming_responses']) self.conn.rpc.register_service_instance('taskproxy', self.service) self.conn.register_event_handler('task.progress', self.task_progress_handler) self.conn.call_sync('task.checkin', key) setproctitle('task executor (idle)') while True: try: task = self.task.get() logging.root.setLevel(self.conn.call_sync('management.get_logging_level')) setproctitle('task executor (tid {0})'.format(task['id'])) if task['debugger']: sys.path.append('/usr/local/lib/dispatcher/pydev') import pydevd host, port = task['debugger'] pydevd.settrace(host, port=port, stdoutToServer=True, stderrToServer=True) name, _ = os.path.splitext(os.path.basename(task['filename'])) module = self.module_cache.get(task['filename']) if not module: module = load_module_from_file(name, task['filename']) self.module_cache[task['filename']] = module setproctitle('task executor (tid {0})'.format(task['id'])) fds = list(self.collect_fds(task['args'])) try: dispatcher = DispatcherWrapper(self.conn) self.instance = getattr(module, task['class'])(dispatcher, self.datastore) self.instance.configstore = self.configstore self.instance.user = task['user'] self.instance.environment = task['environment'] self.running.set() self.run_task_hooks(self.instance, task, 'before') result = self.instance.run(*task['args']) self.run_task_hooks(self.instance, task, 'after', result=result) except BaseException as err: print("Task exception: {0}".format(str(err)), file=sys.stderr) traceback.print_exc(file=sys.stderr) if hasattr(self.instance, 'rollback'): self.put_status('ROLLBACK') try: self.instance.rollback(*task['args']) except BaseException as rerr: print("Task exception during rollback: {0}".format(str(rerr)), file=sys.stderr) traceback.print_exc(file=sys.stderr) # Main task is already failed at this point, so ignore hook errors with contextlib.suppress(RpcException): self.run_task_hooks(self.instance, task, 'error', error=serialize_error(err)) self.put_status('FAILED', exception=err) else: self.put_status('FINISHED', result=result) finally: self.close_fds(fds) self.running.clear() except RpcException as err: print("RPC failed: {0}".format(str(err)), file=sys.stderr) print(traceback.format_exc(), flush=True) sys.exit(errno.EBADMSG) except socket.error as err: print("Cannot connect to dispatcher: {0}".format(str(err)), file=sys.stderr) sys.exit(errno.ETIMEDOUT) if task['debugger']: import pydevd pydevd.stoptrace() setproctitle('task executor (idle)')