def _init(self): """ Initializes all the basic run-time data structures and connects to the Zato broker. """ fs_server_config = get_config(self.repo_location, 'server.conf') app_context = get_app_context(fs_server_config) crypto_manager = get_crypto_manager(self.repo_location, app_context, fs_server_config) config_odb = fs_server_config.odb self.odb = app_context.get_object('odb_manager') self.odb.crypto_manager = crypto_manager self.odb.token = fs_server_config.main.token # Key-value DB self.kvdb = KVDB() self.kvdb.config = fs_server_config.kvdb self.kvdb.decrypt_func = self.odb.crypto_manager.decrypt self.kvdb.init() # Broker client self.broker_client = BrokerClient(self.kvdb, self.broker_client_id, self.broker_callbacks) self.broker_client.start() # ODB # # Ticket #35 Don't ignore odb_port when creating an ODB # https://github.com/zatosource/zato/issues/35 # engine = config_odb.engine port = config_odb['port'] self.odb_config = Bunch() self.odb_config.db_name = config_odb.db_name self.odb_config.is_active = True self.odb_config.engine = engine self.odb_config.extra = config_odb.extra self.odb_config.host = config_odb.host self.odb_config.port = port self.odb_config.password = self.odb.crypto_manager.decrypt( config_odb.password) self.odb_config.pool_size = config_odb.pool_size self.odb_config.username = config_odb.username self.odb_config.is_odb = True self.sql_pool_store = app_context.get_object('sql_pool_store') self.sql_pool_store[ZATO_ODB_POOL_NAME] = self.odb_config self.odb.pool = self.sql_pool_store[ZATO_ODB_POOL_NAME].pool self._setup_odb() # Delivery store self.delivery_store = DeliveryStore( self.kvdb, self.broker_client, self.odb, float(fs_server_config.misc.delivery_lock_timeout))
def delivery_store(self): return DeliveryStore(self.kvdb())