jbi/configuration.py (21 lines of code) (raw):
"""
Parsing and validating the YAML configuration occurs within this module
"""
import logging
from pydantic import ValidationError
from pydantic_yaml import parse_yaml_raw_as
from jbi import environment
from jbi.models import Actions
logger = logging.getLogger(__name__)
class ConfigError(Exception):
"""Error when an exception occurs during processing config"""
def get_actions_from_file(jbi_config_file: str) -> Actions:
"""Convert and validate YAML configuration to `Action` objects"""
try:
with open(jbi_config_file, encoding="utf8") as file:
content = file.read()
actions: Actions = parse_yaml_raw_as(Actions, content)
return actions
except ValidationError as exception:
logger.exception(exception)
raise ConfigError("Errors exist.") from exception
def get_actions(env=None) -> Actions:
"""Load actions from file determined by ENV name"""
if env is None:
settings = environment.get_settings()
env = settings.env
return get_actions_from_file(f"config/config.{env}.yaml")