Source code for acapy_agent.utils.multi_ledger

"""Multiledger related utility methods."""

import logging
from collections import OrderedDict

from ..config.settings import BaseSettings
from ..core.error import ProfileError

LOGGER = logging.getLogger(__name__)


[docs] def get_write_ledger_config_for_profile(settings: BaseSettings) -> dict: """Return initial/default write ledger config on profile creation.""" write_ledger_config = None prod_write_ledger_pool = OrderedDict() non_prod_write_ledger_pool = OrderedDict() LOGGER.debug("Getting write ledger config for profile") for ledger_config in settings.get("ledger.ledger_config_list"): is_production = ledger_config.get("is_production") is_write = ledger_config.get("is_write") is_read_only = ledger_config.get("read_only") ledger_id = ledger_config.get("id") or ledger_config.get("pool_name") if is_production and (is_write or is_read_only): prod_write_ledger_pool[ledger_id] = ledger_config elif not is_production and (is_write or is_read_only): non_prod_write_ledger_pool[ledger_id] = ledger_config else: LOGGER.warning( "Ledger config %s is not a write ledger nor a read-only ledger", ledger_id, ) write_ledger = settings.get("ledger.write_ledger") if write_ledger: if write_ledger in prod_write_ledger_pool: write_ledger_config = prod_write_ledger_pool.get(write_ledger) elif write_ledger in non_prod_write_ledger_pool: write_ledger_config = non_prod_write_ledger_pool.get(write_ledger) else: error_message = ( "ledger.write_ledger in profile settings does not correspond to a " "write configurable ledger provided with --genesis-transactions-list" ) LOGGER.error(error_message) raise ProfileError(error_message) else: if len(prod_write_ledger_pool) >= 1: LOGGER.debug("Using first production write ledger") write_ledger_config = (list(prod_write_ledger_pool.values()))[0] elif len(non_prod_write_ledger_pool) >= 1: LOGGER.debug("Using first non-production write ledger") write_ledger_config = (list(non_prod_write_ledger_pool.values()))[0] else: LOGGER.error("No write ledger configuration found in ledger_config_list") raise ProfileError( "No write ledger configuration found in ledger_config_list which " "was provided with --genesis-transactions-list" ) return write_ledger_config