def main(self): raw_options = parse_options() self.logger.info("Starting powa-collector...") if (not self.connect(raw_options)): exit(1) self.config = add_servers_config(self.__repo_conn, raw_options) for k, conf in self.config["servers"].items(): self.register_worker(k, self.config["repository"], conf) self.list_workers() try: while (not self.stopping): if (self.__repo_conn is not None): try: cur = self.__repo_conn.cursor() cur.execute("SELECT 1") cur.close() except Exception: self.__repo_conn = None self.logger.warning("Connection was dropped!") if (not self.__repo_conn): self.connect(raw_options) select.select([self.__repo_conn], [], [], 10) self.process_notification() except KeyboardInterrupt: self.logger.debug("KeyboardInterrupt caught") self.logger.info("Stopping all workers and exiting...") self.stop_all_workers()
def main(self): """Start the active loop. Connect or reconnect to the repository and starts threads to manage the monitored servers """ raw_options = parse_options() self.logger.info("Starting powa-collector...") if (not self.connect(raw_options)): exit(1) try: self.config = add_servers_config(self.__repo_conn, raw_options) except psycopg2.Error as e: self.__repo_conn.close() self.__repo_conn = None self.logger.error( "Error retrieving the list of remote servers:" "\n%s", e) exit(1) for k, conf in self.config["servers"].items(): self.register_worker(k, self.config["repository"], conf) self.list_workers() try: while (not self.stopping): if (self.__repo_conn is not None): try: cur = self.__repo_conn.cursor() cur.execute("SELECT 1") cur.close() except Exception: self.__repo_conn = None self.logger.warning("Connection was dropped!") if (not self.__repo_conn): self.connect(raw_options) select.select([self.__repo_conn], [], [], 10) self.process_notification() except KeyboardInterrupt: self.logger.debug("KeyboardInterrupt caught") self.logger.info("Stopping all workers and exiting...") self.stop_all_workers()
def __init__(self): self.workers = {} self.logger = logging.getLogger("powa-collector") self.stopping = False raw_options = parse_options() loglevel = logging.INFO if (raw_options["debug"]): loglevel = logging.DEBUG extra = {'threadname': '-'} logging.basicConfig( format='%(asctime)s %(threadname)s %(levelname)-6s: %(message)s ', level=loglevel) self.logger = logging.LoggerAdapter(self.logger, extra) signal.signal(signal.SIGHUP, self.sighandler) signal.signal(signal.SIGTERM, self.sighandler)