Skip to main content

Convert Pydantic Models into Terraform Variables

Project description

Pydantic to Terraform

This library converts Pydantic Models into Terraform Variables.

Usage

This needs to be installed in the same virtual environment as the Models that it is converting. Once installed a CLI tool, py2tf, will be available in the environment.

For example, to generate a variables file for the RDS ParameterValidation class-

robert@Roberts-MacBook-Pro terraform-aws-core % py2tf modules.rds.validation.parameters:ParameterValidation

The command will output the following to stdout:

variable "type" {
  type = string
  default = null
}

variable "pit_identifier" {
  type = string
  default = null
}

variable "tags" {
  type = map(any)
  default = {}
}

variable "name" {
  type = string
  validation {
    # Automatically Generated from Rule: minlength
    condition     = length(var.name) >= 1
    error_message = "Field should not be less than 1 characters"
  }
  validation {
    # Automatically Generated from Rule: maxlength
    condition     = length(var.name) <= 63
    error_message = "Field should not be larger than 63 characters"
  }
  validation {
    # Automatically Generated from Rule: pattern
    condition     = length(regexall("^(?!.*--)[a-zA-Z][A-Za-z0-9.-]+(?<!-)$", var.name)) > 0
    error_message = "Field does not match regex pattern ^(?!.*--)[a-zA-Z][A-Za-z0-9.-]+(?<!-)$"
  }
}

variable "vpc_name" {
  type = string
}

variable "engine" {
  type = string
  validation {
    # Automatically Generated from Rule: minlength
    condition     = length(var.engine) >= 1
    error_message = "Field should not be less than 1 characters"
  }
}

variable "engine_version" {
  type = string
  validation {
    # Automatically Generated from Rule: minlength
    condition     = length(var.engine_version) >= 1
    error_message = "Field should not be less than 1 characters"
  }
}

variable "is_public" {
  type = bool
  default = false
}

Next Steps

At the moment this does not generate validation rules (min/max length, regex, etc).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py2tf-0.3.0.tar.gz (5.5 kB view details)

Uploaded Source

Built Distribution

py2tf-0.3.0-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

Details for the file py2tf-0.3.0.tar.gz.

File metadata

  • Download URL: py2tf-0.3.0.tar.gz
  • Upload date:
  • Size: 5.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.15

File hashes

Hashes for py2tf-0.3.0.tar.gz
Algorithm Hash digest
SHA256 87d68c30d0f8c974009556e3116bcf258bd543a3ee330efd237c0fec4a6790e4
MD5 3d3440e4eb6c6f2271e99f11d9c4170f
BLAKE2b-256 01db70a892cfc2e123e4901131170abdc04c2479e594f8b93ff143702a7c06e0

See more details on using hashes here.

File details

Details for the file py2tf-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: py2tf-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 7.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.15

File hashes

Hashes for py2tf-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 caf4cf043f10e98fd847134f05da99fee0b43a780a88a7c7f5a66afafef106c4
MD5 952066d4a8b088609cbf49a820a0ba59
BLAKE2b-256 3e993eb5ad49bf71b1901e37ec4f9efc0b17a3662ad37d300f1250cbd05a624f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page