Ejemplo n.º 1
0
    def setup(self):
        try:
            self.setup_basic_logging()
            self.setup_signals()
            self.setup_environment_variables()
            self.read_configuration()
            self.setup_logging()
            self.parse_args()
            self.setup_default_loglevel()

            self.logger.info('Starting EVA: the EVent Adapter.')
            self.print_environment('Global configuration: ')
            self.setup_client_group_id()
            self.setup_health_check_server()
            self.setup_statsd_client()
            self.setup_zookeeper()
            self.setup_productstatus()
            self.setup_listeners()
            self.setup_executor()
            self.setup_adapter()

        except eva.exceptions.EvaException as e:
            self.logger.critical(str(e))
            self.logger.info('Shutting down EVA due to missing or invalid configuration.')
            sys.exit(1)

        except Exception as e:
            eva.print_exception_as_bug(e, self.logger)
            self.logger.critical('EVA initialization failed. Your code is broken, please fix it.')
            sys.exit(255)
Ejemplo n.º 2
0
    def start(self):
        try:
            evaloop = eva.eventloop.Eventloop(self.productstatus_api,
                                              self.listeners,
                                              self.adapter,
                                              self.executor,
                                              self.statsd_client,
                                              self.zookeeper,
                                              self.environment_variables,
                                              self.health_check_server,
                                              self.logger,
                                              )

            if self.args.process_all_in_product_instance or self.args.process_data_instance:
                if self.args.process_all_in_product_instance:
                    product_instance = self.productstatus_api.productinstance[self.args.process_all_in_product_instance]
                    evaloop.process_all_in_product_instance(product_instance)
                elif self.args.process_data_instance:
                    evaloop.process_data_instance(self.args.process_data_instance)
                evaloop.sort_queue()
                while evaloop.process_all_events_once():
                    continue
            else:
                evaloop()

        except eva.exceptions.ShutdownException as e:
            self.logger.info(str(e))
        except kazoo.exceptions.ConnectionLoss as e:
            self.logger.critical('Shutting down EVA due to ZooKeeper connection loss: %s', str(e))
            self.statsd.incr('zookeeper_connection_loss')
        except Exception as e:
            eva.print_exception_as_bug(e, self.logger)
            sys.exit(255)

        if self.zookeeper:
            self.logger.info('Stopping ZooKeeper.')
            self.zookeeper.stop()
        self.logger.info('Shutting down EVA.')