Source code for config_yourself.provider
# Copyright 2018 Blink Health LLC
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# https://www.apache.org/licenses/LICENSE-2.0
from importlib import import_module
import warnings
from future.utils import raise_from
[docs]def Load(crypto, secrets=None):
"""Load a crypto provider, initializing it with secrets
:param dict[str,Union[str,List]] crypto: The Config's `crypto` node
:param dict[str,str] secrets: The runtime provided secrets
:return: An initialized CryptoService
:rtype: config_yourself.provider.CryptoService
"""
providerName = crypto.get("provider", None)
if not providerName:
msg = "crypto.provider undefined in config file, defaulting to `kms`"
warnings.warn(msg, DeprecationWarning)
providerName = "kms"
module_path = "config_yourself.provider.{}".format(providerName)
module = import_module(module_path)
try:
provider = getattr(module, "Service")
except AttributeError as err: # pragma: no cover
msg = 'Provider "%s" does not define a Service class' % (module_path)
raise_from(ImportError(msg), err)
return provider(crypto, secrets)