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.2.0.tar.gz (7.5 kB view details)

Uploaded Source

Built Distribution

py2tf-0.2.0-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for py2tf-0.2.0.tar.gz
Algorithm Hash digest
SHA256 170a26567b57d27bae5981c745aaa8e69360d1d6ed401b8811e6e900fd5bbd6f
MD5 5ba9a86c2f5cfc206f74d4d5a3da8fdd
BLAKE2b-256 1101a35ea416e189c36cf1d28806f8153b8a84277e489c3a6a5ee2839a3fea46

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for py2tf-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 294de4a17b346b073848740a25efb7cad8e51e6416f60b2b61e40114d6c6a3f7
MD5 a4d9ddd9f848c9264a527a1fdf522171
BLAKE2b-256 c4c25ef4ce920db23b2dcbf11d86329455dd731829f12ea0f57c14f2da1b9cb4

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