Skip to content

Commit d677568

Browse files
committed
num_shards
1 parent af906f1 commit d677568

File tree

3 files changed

+132
-3
lines changed

3 files changed

+132
-3
lines changed

internal/convert/convert.go

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,17 +142,28 @@ func fillReplicationSpecs(resourceb *hclwrite.Body, root attrVals) error {
142142
if specSrc == nil {
143143
break
144144
}
145-
if err := checkDynamicBlock(specSrc.Body()); err != nil {
145+
specbSrc := specSrc.Body()
146+
if err := checkDynamicBlock(specbSrc); err != nil {
146147
return err
147148
}
148149
configs, err := getRegionConfigs(specSrc, root)
149150
if err != nil {
150151
return err
151152
}
152153
// ok to fail as zone_name is optional
153-
_ = hcl.MoveAttr(specSrc.Body(), specb, nZoneName, nZoneName, errRepSpecs)
154+
_ = hcl.MoveAttr(specbSrc, specb, nZoneName, nZoneName, errRepSpecs)
154155
specb.SetAttributeRaw(nConfig, configs)
155-
specbs = append(specbs, specb)
156+
shards := specbSrc.GetAttribute(nNumShards)
157+
if shards == nil {
158+
return fmt.Errorf("%s: %s not found", errRepSpecs, nNumShards)
159+
}
160+
shardsVal, err := hcl.GetAttrInt(shards, errRepSpecs)
161+
if err != nil {
162+
return err
163+
}
164+
for range shardsVal {
165+
specbs = append(specbs, specb)
166+
}
156167
resourceb.RemoveBlock(specSrc)
157168
}
158169
resourceb.SetAttributeRaw(nRepSpecs, hcl.TokensArray(specbs))

internal/convert/testdata/clu2adv/multi_replicaction_specs.in.tf

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,34 @@ resource "mongodbatlas_cluster" "multirep" {
2626
}
2727
}
2828
}
29+
30+
resource "mongodbatlas_cluster" "geo" {
31+
project_id = "1234"
32+
name = "geo"
33+
disk_size_gb = 80
34+
num_shards = 1
35+
cloud_backup = false
36+
cluster_type = "GEOSHARDED"
37+
provider_name = "AWS"
38+
provider_instance_size_name = "M10"
39+
replication_specs {
40+
zone_name = "Zone 1"
41+
num_shards = 2
42+
regions_config {
43+
region_name = "US_EAST_1"
44+
electable_nodes = 3
45+
priority = 7
46+
read_only_nodes = 0
47+
}
48+
}
49+
replication_specs {
50+
zone_name = "Zone 2"
51+
num_shards = 3
52+
regions_config {
53+
region_name = "US_WEST_2"
54+
electable_nodes = 3
55+
priority = 7
56+
read_only_nodes = 0
57+
}
58+
}
59+
}

internal/convert/testdata/clu2adv/multi_replicaction_specs.out.tf

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,90 @@ resource "mongodbatlas_advanced_cluster" "multirep" {
3939
# Generated by atlas-cli-plugin-terraform.
4040
# Please confirm that all references to this resource are updated.
4141
}
42+
43+
resource "mongodbatlas_advanced_cluster" "geo" {
44+
project_id = "1234"
45+
name = "geo"
46+
cluster_type = "GEOSHARDED"
47+
backup_enabled = false
48+
replication_specs = [
49+
{
50+
zone_name = "Zone 1"
51+
region_configs = [
52+
{
53+
provider_name = "AWS"
54+
region_name = "US_EAST_1"
55+
priority = 7
56+
electable_specs = {
57+
node_count = 3
58+
instance_size = "M10"
59+
disk_size_gb = 80
60+
}
61+
}
62+
]
63+
},
64+
{
65+
zone_name = "Zone 1"
66+
region_configs = [
67+
{
68+
provider_name = "AWS"
69+
region_name = "US_EAST_1"
70+
priority = 7
71+
electable_specs = {
72+
node_count = 3
73+
instance_size = "M10"
74+
disk_size_gb = 80
75+
}
76+
}
77+
]
78+
},
79+
{
80+
zone_name = "Zone 2"
81+
region_configs = [
82+
{
83+
provider_name = "AWS"
84+
region_name = "US_WEST_2"
85+
priority = 7
86+
electable_specs = {
87+
node_count = 3
88+
instance_size = "M10"
89+
disk_size_gb = 80
90+
}
91+
}
92+
]
93+
},
94+
{
95+
zone_name = "Zone 2"
96+
region_configs = [
97+
{
98+
provider_name = "AWS"
99+
region_name = "US_WEST_2"
100+
priority = 7
101+
electable_specs = {
102+
node_count = 3
103+
instance_size = "M10"
104+
disk_size_gb = 80
105+
}
106+
}
107+
]
108+
},
109+
{
110+
zone_name = "Zone 2"
111+
region_configs = [
112+
{
113+
provider_name = "AWS"
114+
region_name = "US_WEST_2"
115+
priority = 7
116+
electable_specs = {
117+
node_count = 3
118+
instance_size = "M10"
119+
disk_size_gb = 80
120+
}
121+
}
122+
]
123+
}
124+
]
125+
126+
# Generated by atlas-cli-plugin-terraform.
127+
# Please confirm that all references to this resource are updated.
128+
}

0 commit comments

Comments
 (0)