Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions modules/spanner-instance/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -168,13 +168,13 @@ module "spanner_instance" {

| name | description | type | required | default |
|---|---|:---:|:---:|:---:|
| [instance](variables.tf#L89) | Instance attributes. | <code title="object&#40;&#123;&#10; autoscaling &#61; optional&#40;object&#40;&#123;&#10; limits &#61; optional&#40;object&#40;&#123;&#10; max_nodes &#61; optional&#40;number&#41;&#10; max_processing_units &#61; optional&#40;number&#41;&#10; min_nodes &#61; optional&#40;number&#41;&#10; min_processing_units &#61; optional&#40;number&#41;&#10; &#125;&#41;&#41;&#10; targets &#61; optional&#40;object&#40;&#123;&#10; high_priority_cpu_utilization_percent &#61; optional&#40;number&#41;&#10; storage_utilization_percent &#61; optional&#40;number&#41;&#10; &#125;&#41;&#41;&#10; &#125;&#41;&#41;&#10; config &#61; optional&#40;object&#40;&#123;&#10; name &#61; string&#10; auto_create &#61; optional&#40;object&#40;&#123;&#10; base_config &#61; optional&#40;string&#41;&#10; display_name &#61; optional&#40;string&#41;&#10; labels &#61; optional&#40;map&#40;string&#41;, &#123;&#125;&#41;&#10; replicas &#61; list&#40;object&#40;&#123;&#10; location &#61; string&#10; type &#61; string&#10; default_leader_location &#61; bool&#10; &#125;&#10; &#41;&#41;&#10; &#125;&#41;&#41;&#10; &#125;&#41;&#41;&#10; display_name &#61; optional&#40;string&#41;&#10; labels &#61; optional&#40;map&#40;string&#41;, &#123;&#125;&#41;&#10; name &#61; string&#10; num_nodes &#61; optional&#40;number&#41;&#10; processing_units &#61; optional&#40;number&#41;&#10; force_destroy &#61; optional&#40;bool&#41;&#10;&#125;&#41;">object&#40;&#123;&#8230;&#125;&#41;</code> | ✓ | |
| [project_id](variables.tf#L134) | Project id. | <code>string</code> | ✓ | |
| [instance](variables.tf#L89) | Instance attributes. | <code title="object&#40;&#123;&#10; instance_settings &#61; optional&#40;object&#40;&#123;&#10; default_backup_schedule_type &#61; optional&#40;string&#41;&#10; edition &#61; optional&#40;string&#41;&#10; instance_type &#61; optional&#40;string&#41;&#10; &#125;&#41;&#41;&#10; autoscaling &#61; optional&#40;object&#40;&#123;&#10; limits &#61; optional&#40;object&#40;&#123;&#10; max_nodes &#61; optional&#40;number&#41;&#10; max_processing_units &#61; optional&#40;number&#41;&#10; min_nodes &#61; optional&#40;number&#41;&#10; min_processing_units &#61; optional&#40;number&#41;&#10; &#125;&#41;&#41;&#10; targets &#61; optional&#40;object&#40;&#123;&#10; high_priority_cpu_utilization_percent &#61; optional&#40;number&#41;&#10; storage_utilization_percent &#61; optional&#40;number&#41;&#10; &#125;&#41;&#41;&#10; &#125;&#41;&#41;&#10; config &#61; optional&#40;object&#40;&#123;&#10; name &#61; string&#10; auto_create &#61; optional&#40;object&#40;&#123;&#10; base_config &#61; optional&#40;string&#41;&#10; display_name &#61; optional&#40;string&#41;&#10; labels &#61; optional&#40;map&#40;string&#41;, &#123;&#125;&#41;&#10; replicas &#61; list&#40;object&#40;&#123;&#10; location &#61; string&#10; type &#61; string&#10; default_leader_location &#61; bool&#10; &#125;&#10; &#41;&#41;&#10; &#125;&#41;&#41;&#10; &#125;&#41;&#41;&#10; display_name &#61; optional&#40;string&#41;&#10; labels &#61; optional&#40;map&#40;string&#41;, &#123;&#125;&#41;&#10; name &#61; string&#10; num_nodes &#61; optional&#40;number&#41;&#10; processing_units &#61; optional&#40;number&#41;&#10; force_destroy &#61; optional&#40;bool&#41;&#10;&#125;&#41;">object&#40;&#123;&#8230;&#125;&#41;</code> | ✓ | |
| [project_id](variables.tf#L139) | Project id. | <code>string</code> | ✓ | |
| [databases](variables.tf#L17) | Databases. | <code title="map&#40;object&#40;&#123;&#10; database_dialect &#61; optional&#40;string&#41;&#10; ddl &#61; optional&#40;list&#40;string&#41;, &#91;&#93;&#41;&#10; deletion_protection &#61; optional&#40;bool&#41;&#10; enable_drop_protection &#61; optional&#40;bool&#41;&#10; iam &#61; optional&#40;map&#40;list&#40;string&#41;&#41;, &#123;&#125;&#41;&#10; iam_bindings &#61; optional&#40;map&#40;object&#40;&#123;&#10; members &#61; list&#40;string&#41;&#10; role &#61; string&#10; condition &#61; optional&#40;object&#40;&#123;&#10; expression &#61; string&#10; title &#61; string&#10; description &#61; optional&#40;string&#41;&#10; &#125;&#41;&#41;&#10; &#125;&#41;&#41;, &#123;&#125;&#41;&#10; iam_bindings_additive &#61; optional&#40;map&#40;object&#40;&#123;&#10; member &#61; string&#10; role &#61; string&#10; condition &#61; optional&#40;object&#40;&#123;&#10; expression &#61; string&#10; title &#61; string&#10; description &#61; optional&#40;string&#41;&#10; &#125;&#41;&#41;&#10; &#125;&#41;&#41;, &#123;&#125;&#41;&#10; kms_key_name &#61; optional&#40;string&#41;&#10; version_retention_period &#61; optional&#40;string&#41;&#10;&#125;&#41;&#41;">map&#40;object&#40;&#123;&#8230;&#125;&#41;&#41;</code> | | <code>&#123;&#125;</code> |
| [iam](variables.tf#L63) | IAM bindings in {ROLE => [MEMBERS]} format. | <code>map&#40;list&#40;string&#41;&#41;</code> | | <code>&#123;&#125;</code> |
| [iam_bindings](variables.tf#L69) | Authoritative IAM bindings in {KEY => {role = ROLE, members = [], condition = {}}}. Keys are arbitrary. | <code title="map&#40;object&#40;&#123;&#10; members &#61; list&#40;string&#41;&#10; role &#61; string&#10;&#125;&#41;&#41;">map&#40;object&#40;&#123;&#8230;&#125;&#41;&#41;</code> | | <code>&#123;&#125;</code> |
| [iam_bindings_additive](variables.tf#L79) | Individual additive IAM bindings. Keys are arbitrary. | <code title="map&#40;object&#40;&#123;&#10; member &#61; string&#10; role &#61; string&#10;&#125;&#41;&#41;">map&#40;object&#40;&#123;&#8230;&#125;&#41;&#41;</code> | | <code>&#123;&#125;</code> |
| [instance_create](variables.tf#L127) | Set to false to manage databases and IAM bindings in an existing instance. | <code>bool</code> | | <code>true</code> |
| [instance_create](variables.tf#L132) | Set to false to manage databases and IAM bindings in an existing instance. | <code>bool</code> | | <code>true</code> |

## Outputs

Expand Down
16 changes: 10 additions & 6 deletions modules/spanner-instance/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,15 @@ resource "google_spanner_instance" "spanner_instance" {
? var.instance.config.name
: google_spanner_instance_config.spanner_instance_config[0].name
)
name = var.instance.name
display_name = coalesce(var.instance.display_name, var.instance.name)
num_nodes = var.instance.num_nodes
labels = var.instance.labels
force_destroy = var.instance.force_destroy
processing_units = var.instance.processing_units
name = var.instance.name
display_name = coalesce(var.instance.display_name, var.instance.name)
num_nodes = var.instance.num_nodes
labels = var.instance.labels
force_destroy = var.instance.force_destroy
processing_units = var.instance.processing_units
edition = var.instance.instance_settings.edition
instance_type = var.instance.instance_settings.instance_type
default_backup_schedule_type = var.instance.instance_settings.default_backup_schedule_type
Comment on lines +64 to +66
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

instance_settings is optional, these 3 accesses should use try().

dynamic "autoscaling_config" {
for_each = var.instance.autoscaling == null ? [] : [""]
content {
Expand Down Expand Up @@ -91,6 +94,7 @@ resource "google_spanner_database" "spanner_databases" {
project = var.project_id
instance = local.spanner_instance.name
name = each.key
database_dialect = each.value.database_dialect
ddl = each.value.ddl
enable_drop_protection = each.value.enable_drop_protection
deletion_protection = false
Expand Down
5 changes: 5 additions & 0 deletions modules/spanner-instance/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,11 @@ variable "iam_bindings_additive" {
variable "instance" {
description = "Instance attributes."
type = object({
instance_settings = optional(object({
default_backup_schedule_type = optional(string)
edition = optional(string)
instance_type = optional(string)
}))
Comment on lines +92 to +96
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do you really need a a new nested field here? You could make these 3 attributes top level (and you avoid the try mentioned in my previous comment)

autoscaling = optional(object({
limits = optional(object({
max_nodes = optional(number)
Expand Down
Loading