Source code for infrahouse_toolkit.terraform.backends

"""
Module for various Terraform backends.
"""

from typing import Union
from urllib.parse import urlparse

from infrahouse_toolkit.terraform.backends.exceptions import IHUnknownBackend
from infrahouse_toolkit.terraform.backends.s3backend import TFS3Backend


[docs]def get_backend(backend_id: str) -> Union[TFS3Backend,]: """ Parse ``backend_id`` string and build a Terraform backend object based on the parsed values. :param backend_id: a straing that identifies a Terraform backend. :type backend_id: str :return: Terraform backend object. :rtype: Union[TFS3Backend, ] :raise IHUnknownBackend: If parsing failed or the encoded backend is not supported """ result = urlparse(backend_id) if result.scheme == "s3": return TFS3Backend(result.netloc, result.path.lstrip("/")) raise IHUnknownBackend(f"Cannot find supported Terraform backend from {backend_id}.")