Source code for runway.config.models.runway.options.terraform

"""Runway Terraform Module options."""

from __future__ import annotations

from typing import Annotated

from pydantic import ConfigDict, Field, field_validator

from ...base import ConfigProperty


[docs] class RunwayTerraformArgsDataModel(ConfigProperty): """Model for Runway Terraform Module args option.""" model_config = ConfigDict( extra="forbid", title="Runway Terraform Module args option", validate_default=True, validate_assignment=True, ) apply: list[str] = [] init: list[str] = [] plan: list[str] = []
[docs] class RunwayTerraformBackendConfigDataModel(ConfigProperty): """Model for Runway Terraform Module terraform_backend_config option.""" model_config = ConfigDict( extra="forbid", title="Runway Terraform Module terraform_backend_config option", validate_default=True, validate_assignment=True, ) bucket: str | None = None dynamodb_table: str | None = None region: str | None = None workspace_key_prefix: str | None = None def __bool__(self) -> bool: """Evaluate the boolean value of the object instance.""" data = self.model_dump(exclude_none=True) return "bucket" in data or "dynamodb_table" in data
[docs] class RunwayTerraformModuleOptionsDataModel(ConfigProperty): """Model for Runway Terraform Module options.""" model_config = ConfigDict( extra="ignore", title="Runway Terraform Module options", populate_by_name=True, validate_default=True, validate_assignment=True, ) args: RunwayTerraformArgsDataModel = RunwayTerraformArgsDataModel() backend_config: RunwayTerraformBackendConfigDataModel = Field( default=RunwayTerraformBackendConfigDataModel(), alias="terraform_backend_config", ) version: Annotated[str | None, Field(alias="terraform_version")] = None workspace: Annotated[str | None, Field(alias="terraform_workspace")] = None write_auto_tfvars: Annotated[bool, Field(alias="terraform_write_auto_tfvars")] = False @field_validator("args", mode="before") @classmethod def _convert_args(cls, v: list[str] | dict[str, list[str]]) -> dict[str, list[str]]: """Convert args from list to dict.""" if isinstance(v, list): return {"apply": v} return v