def main_loop(poller=None, conf=None, foreground=False): global shutting_down shutting_down = gevent.event.Event() gevent.monkey.patch_all(thread=False) # define custom signal handlers signal.signal(signal.SIGINT, shutdown_handler) signal.signal(signal.SIGTERM, shutdown_handler) # set up logging log_level_string = conf.get("PROVISION_LOG_LEVEL") or conf["LOG_LEVEL"] log_level = getattr(logging, log_level_string.upper(), logging.DEBUG) logging.getLogger().setLevel(log_level) if foreground: add_stderr_logger(logging.getLogger(), log_level=log_level) else: log_file = conf["PROVISION_LOG_FILE"] add_rotating_file_logger(logging.getLogger(), log_file, log_level=log_level, format=conf["VERBOSE_LOG_FORMAT"]) logger.debug('Clearing old running commands') poller.clear_running_commands(u'Stale command cleared on startup') logger.debug('Entering main provision loop') while True: try: poller.poll() except: logger.exception('Failed to poll for queued commands') if shutting_down.wait(timeout=conf.get('SLEEP_TIME', 20)): gevent.hub.get_hub().join() # let running greenlets terminate break logger.debug('Exited main provision loop')
def setUp(self): self.conf = get_conf() self.logger = logging.getLogger(self.__class__.__name__) self.logger.propagate = False self.logger.setLevel(logging.DEBUG) prefix = unique_name(u"watchdogtest%s") self.log_file = tempfile.NamedTemporaryFile(prefix=prefix) add_rotating_file_logger( self.logger, self.log_file.name, maxBytes=_log_maxbytes, backupCount=_log_backupcount, log_level=logging.DEBUG, )
def main_loop(transfer, conf=None, foreground=False): """infinite daemon loop""" # define custom signal handlers signal.signal(signal.SIGTERM, daemon_shutdown) # set up logging log_level_string = conf.get("TRANSFER_LOG_LEVEL") or conf["LOG_LEVEL"] log_level = getattr(logging, log_level_string.upper(), logging.DEBUG) logging.getLogger().setLevel(log_level) if foreground: add_stderr_logger(logging.getLogger(), log_level=log_level) else: log_file = conf["TRANSFER_LOG_FILE"] add_rotating_file_logger(logging.getLogger(), log_file, log_level=log_level, format=conf["VERBOSE_LOG_FORMAT"]) while True: try: transfer.hub._login() # Look for logs to transfer if none transfered then sleep if not transfer.transfer_logs(): logger.debug(80 * '-') transfer.sleep() # write to stdout / stderr sys.stdout.flush() sys.stderr.flush() except socket.sslerror: pass # will try again.. except (ShutdownException, KeyboardInterrupt): # ignore keyboard interrupts and sigterm signal.signal(signal.SIGINT, signal.SIG_IGN) signal.signal(signal.SIGTERM, signal.SIG_IGN) logger.info('Exiting...') break except: # this is a little extreme: log the exception and continue traceback = Traceback() logger.error(traceback.get_traceback()) transfer.sleep()
def main_loop(conf=None, foreground=False): """infinite daemon loop""" # define custom signal handlers signal.signal(signal.SIGTERM, daemon_shutdown) # set up logging log_level_string = conf.get("WATCHDOG_LOG_LEVEL") or conf["LOG_LEVEL"] log_level = getattr(logging, log_level_string.upper(), logging.DEBUG) logging.getLogger().setLevel(log_level) if foreground: add_stderr_logger(logging.getLogger(), log_level=log_level) else: log_file = conf["WATCHDOG_LOG_FILE"] add_rotating_file_logger(logging.getLogger(), log_file, log_level=log_level, format=conf["VERBOSE_LOG_FORMAT"]) try: watchdog = Watchdog(conf=conf) except Exception, ex: sys.stderr.write("Error initializing Watchdog: %s\n" % ex) sys.exit(1)
def main_loop(proxy=None, conf=None, foreground=False): """infinite daemon loop""" global shutting_down shutting_down = gevent.event.Event() gevent.monkey.patch_all() # define custom signal handlers signal.signal(signal.SIGINT, daemon_shutdown) signal.signal(signal.SIGTERM, daemon_shutdown) # set up logging log_level_string = conf["LOG_LEVEL"] log_level = getattr(logging, log_level_string.upper(), logging.DEBUG) logging.getLogger().setLevel(log_level) if foreground: add_stderr_logger(logging.getLogger(), log_level=log_level) else: log_file = conf["LOG_FILE"] add_rotating_file_logger(logging.getLogger(), log_file, log_level=log_level, format=conf["VERBOSE_LOG_FORMAT"]) login = RepeatTimer(conf['RENEW_SESSION_INTERVAL'], proxy.hub._login, stop_on_exception=False) login.daemon = True login.start() server = gevent.wsgi.WSGIServer(('', 8000), WSGIApplication(proxy), handler_class=WSGIHandler, spawn=gevent.pool.Pool()) server.stop_timeout = None server.start() try: shutting_down.wait() finally: server.stop() login.stop()
import ConfigParser, os, socket from time import sleep from bkr.common.message_bus import BeakerBus from bkr.labcontroller.proxy import Watchdog from bkr.labcontroller.config import get_conf import logging log = logging.getLogger(__name__) conf = get_conf() log_level_string = conf.get("QPID_BUS_LOG_LEVEL") or conf["LOG_LEVEL"] log_level = getattr(logging, log_level_string.upper(), logging.DEBUG) log_file = conf["QPID_BUS_LOG_FILE"] add_rotating_file_logger(log, log_file, log_level=log_level, format=conf['VERBOSE_LOG_FORMAT']) class LabBeakerBus(BeakerBus): lc = socket.gethostname() global conf __conf = conf topic_exchange = __conf.get('QPID_TOPIC_EXCHANGE') direct_exchange = __conf.get('QPID_DIRECT_EXCHANGE') service_queue_name = __conf.get('QPID_SERVICE_QUEUE') _broker = __conf.get('QPID_BROKER') krb_auth = __conf.get('QPID_KRB_AUTH') stopped = True _shared_state = {}