Skip to content

Commit 2fd47c2

Browse files
committed
failing test
1 parent 222a235 commit 2fd47c2

File tree

2 files changed

+177
-0
lines changed

2 files changed

+177
-0
lines changed
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
# Based on https://github.com/mongodb/terraform-provider-mongodbatlas/blob/master/examples/migrate_cluster_to_advanced_cluster/module_maintainer/v1/main.tf
2+
resource "mongodbatlas_cluster" "this" {
3+
lifecycle {
4+
precondition {
5+
condition = !(var.auto_scaling_disk_gb_enabled && var.disk_size > 0)
6+
error_message = "Must use either auto_scaling_disk_gb_enabled or disk_size, not both."
7+
}
8+
}
9+
10+
project_id = var.project_id
11+
name = var.cluster_name
12+
auto_scaling_disk_gb_enabled = var.auto_scaling_disk_gb_enabled
13+
cluster_type = var.cluster_type
14+
disk_size_gb = var.disk_size
15+
mongo_db_major_version = var.mongo_db_major_version
16+
provider_instance_size_name = var.instance_size
17+
provider_name = var.provider_name
18+
19+
dynamic "tags" {
20+
for_each = var.tags
21+
content {
22+
key = tags.key
23+
value = tags.value
24+
}
25+
}
26+
27+
dynamic "replication_specs" {
28+
for_each = var.replication_specs
29+
content {
30+
num_shards = replication_specs.value.num_shards
31+
zone_name = replication_specs.value.zone_name
32+
33+
dynamic "regions_config" {
34+
for_each = replication_specs.value.regions_config
35+
content {
36+
electable_nodes = regions_config.value.electable_nodes
37+
priority = regions_config.value.priority
38+
read_only_nodes = regions_config.value.read_only_nodes
39+
region_name = regions_config.value.region_name
40+
}
41+
}
42+
}
43+
}
44+
}
45+
46+
# example of variable for demostration purposes, not used in the conversion
47+
variable "replication_specs" {
48+
description = "List of replication specifications in mongodbatlas_cluster format"
49+
type = list(object({
50+
num_shards = number
51+
zone_name = string
52+
regions_config = list(object({
53+
region_name = string
54+
electable_nodes = number
55+
priority = number
56+
read_only_nodes = optional(number, 0)
57+
}))
58+
}))
59+
default = [
60+
{
61+
num_shards = 1
62+
zone_name = "Zone 1"
63+
regions_config = [
64+
{
65+
region_name = "US_EAST_1"
66+
electable_nodes = 3
67+
priority = 7
68+
}
69+
]
70+
}, {
71+
num_shards = 2
72+
zone_name = "Zone 2"
73+
regions_config = [
74+
{
75+
region_name = "US_WEST_2"
76+
electable_nodes = 2
77+
priority = 6
78+
read_only_nodes = 1
79+
}, {
80+
region_name = "EU_WEST_1"
81+
electable_nodes = 3
82+
priority = 7
83+
}
84+
]
85+
}
86+
]
87+
}
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
# Based on https://github.com/mongodb/terraform-provider-mongodbatlas/blob/master/examples/migrate_cluster_to_advanced_cluster/module_maintainer/v1/main.tf
2+
resource "mongodbatlas_advanced_cluster" "dynamic_regions_config" {
3+
lifecycle {
4+
precondition {
5+
condition = !(var.auto_scaling_disk_gb_enabled && var.disk_size > 0)
6+
error_message = "Must use either auto_scaling_disk_gb_enabled or disk_size, not both."
7+
}
8+
}
9+
10+
project_id = var.project_id
11+
name = var.cluster_name
12+
auto_scaling_disk_gb_enabled = var.auto_scaling_disk_gb_enabled
13+
cluster_type = var.cluster_type
14+
mongo_db_major_version = var.mongo_db_major_version
15+
16+
replication_specs = flatten([
17+
for spec in var.replication_specs : [
18+
for i in range(var.replication_specs.num_shards) : {
19+
zone_name = var.zone_name
20+
region_configs = flatten([
21+
# Regions must be sorted by priority in descending order.
22+
for priority in range(7, 0, -1) : [
23+
for region in var.replication_specs.regions_config : {
24+
provider_name = var.provider_name
25+
region_name = region.region_name
26+
priority = region.priority
27+
electable_specs = region.electable_nodes == 0 ? null : {
28+
node_count = region.electable_nodes
29+
instance_size = var.instance_size
30+
disk_size_gb = var.disk_size
31+
}
32+
read_only_specs = region.read_only_nodes == 0 ? null : {
33+
node_count = region.read_only_nodes
34+
instance_size = var.instance_size
35+
disk_size_gb = var.disk_size
36+
}
37+
} if priority == region.priority
38+
]
39+
])
40+
}
41+
]
42+
])
43+
tags = var.tags
44+
45+
# Generated by atlas-cli-plugin-terraform.
46+
# Please review the changes and confirm that references to this resource are updated.
47+
}
48+
49+
# example of variable for demostration purposes, not used in the conversion
50+
variable "replication_specs" {
51+
description = "List of replication specifications in mongodbatlas_cluster format"
52+
type = list(object({
53+
num_shards = number
54+
zone_name = string
55+
regions_config = list(object({
56+
region_name = string
57+
electable_nodes = number
58+
priority = number
59+
read_only_nodes = optional(number, 0)
60+
}))
61+
}))
62+
default = [
63+
{
64+
num_shards = 1
65+
zone_name = "Zone 1"
66+
regions_config = [
67+
{
68+
region_name = "US_EAST_1"
69+
electable_nodes = 3
70+
priority = 7
71+
}
72+
]
73+
}, {
74+
num_shards = 2
75+
zone_name = "Zone 2"
76+
regions_config = [
77+
{
78+
region_name = "US_WEST_2"
79+
electable_nodes = 2
80+
priority = 6
81+
read_only_nodes = 1
82+
}, {
83+
region_name = "EU_WEST_1"
84+
electable_nodes = 3
85+
priority = 7
86+
}
87+
]
88+
}
89+
]
90+
}

0 commit comments

Comments
 (0)