diff --git a/aries_cloudagent/askar/profile.py b/aries_cloudagent/askar/profile.py index 90f8ace5be..20d964987d 100644 --- a/aries_cloudagent/askar/profile.py +++ b/aries_cloudagent/askar/profile.py @@ -23,6 +23,7 @@ from ..ledger.indy_vdr import IndyVdrLedger, IndyVdrLedgerPool from ..storage.base import BaseStorage, BaseStorageSearch from ..storage.vc_holder.base import VCHolder +from ..utils.multi_ledger import get_write_ledger_config_for_profile from ..wallet.base import BaseWallet from ..wallet.crypto import validate_seed @@ -124,26 +125,10 @@ def bind_providers(self): self.settings.get("ledger.ledger_config_list") and len(self.settings.get("ledger.ledger_config_list")) >= 1 ): - write_ledger_config = None - prod_write_ledger_pool = [] - non_prod_write_ledger_pool = [] - for ledger_config in self.settings.get("ledger.ledger_config_list"): - if ledger_config.get("is_production") and ledger_config.get("is_write"): - prod_write_ledger_pool.append(ledger_config) - elif not ledger_config.get("is_production") and ledger_config.get( - "is_write" - ): - non_prod_write_ledger_pool.append(ledger_config) + write_ledger_config = get_write_ledger_config_for_profile( + settings=self.settings + ) cache = self.context.injector.inject_or(BaseCache) - if len(prod_write_ledger_pool) >= 1: - write_ledger_config = prod_write_ledger_pool[0] - elif len(non_prod_write_ledger_pool) >= 1: - write_ledger_config = non_prod_write_ledger_pool[0] - else: - raise ProfileError( - "No write ledger configuration found in ledger_config_list which " - "was provided with --genesis-transactions-list" - ) injector.bind_provider( BaseLedger, ClassProvider( diff --git a/aries_cloudagent/indy/sdk/profile.py b/aries_cloudagent/indy/sdk/profile.py index 0a23209b21..cdebc86018 100644 --- a/aries_cloudagent/indy/sdk/profile.py +++ b/aries_cloudagent/indy/sdk/profile.py @@ -15,6 +15,7 @@ from ...ledger.indy import IndySdkLedger, IndySdkLedgerPool from ...storage.base import BaseStorage, BaseStorageSearch from ...storage.vc_holder.base import VCHolder +from ...utils.multi_ledger import get_write_ledger_config_for_profile from ...wallet.base import BaseWallet from ...wallet.indy import IndySdkWallet from ..holder import IndyHolder @@ -92,26 +93,10 @@ def bind_providers(self): self.settings.get("ledger.ledger_config_list") and len(self.settings.get("ledger.ledger_config_list")) >= 1 ): - write_ledger_config = None - prod_write_ledger_pool = [] - non_prod_write_ledger_pool = [] - for ledger_config in self.settings.get("ledger.ledger_config_list"): - if ledger_config.get("is_production") and ledger_config.get("is_write"): - prod_write_ledger_pool.append(ledger_config) - elif not ledger_config.get("is_production") and ledger_config.get( - "is_write" - ): - non_prod_write_ledger_pool.append(ledger_config) + write_ledger_config = get_write_ledger_config_for_profile( + settings=self.settings + ) cache = self.context.injector.inject_or(BaseCache) - if len(prod_write_ledger_pool) >= 1: - write_ledger_config = prod_write_ledger_pool[0] - elif len(non_prod_write_ledger_pool) >= 1: - write_ledger_config = non_prod_write_ledger_pool[0] - else: - raise ProfileError( - "No write ledger configuration found in ledger_config_list which " - "was provided with --genesis-transactions-list" - ) injector.bind_provider( BaseLedger, ClassProvider( diff --git a/aries_cloudagent/utils/multi_ledger.py b/aries_cloudagent/utils/multi_ledger.py new file mode 100644 index 0000000000..cad7290def --- /dev/null +++ b/aries_cloudagent/utils/multi_ledger.py @@ -0,0 +1,26 @@ +"""Multiledger related utility methods.""" + +from ..core.error import ProfileError +from ..config.settings import BaseSettings + + +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 = [] + non_prod_write_ledger_pool = [] + for ledger_config in settings.get("ledger.ledger_config_list"): + if ledger_config.get("is_production") and ledger_config.get("is_write"): + prod_write_ledger_pool.append(ledger_config) + elif not ledger_config.get("is_production") and ledger_config.get("is_write"): + non_prod_write_ledger_pool.append(ledger_config) + if len(prod_write_ledger_pool) >= 1: + write_ledger_config = prod_write_ledger_pool[0] + elif len(non_prod_write_ledger_pool) >= 1: + write_ledger_config = non_prod_write_ledger_pool[0] + else: + raise ProfileError( + "No write ledger configuration found in ledger_config_list which " + "was provided with --genesis-transactions-list" + ) + return write_ledger_config