Skip to content

Commit 0a727bb

Browse files
feat: support new tags attribute in cluster, advanced_cluster, and serverless_instance (#1461)
* feat: support new tags attribute in cluster, advanced_cluster, and serverless_instance * defining key/value attributes in tags as required * addressing PR comments * Adjust deprecation message setting removal for September 2024 * addressing docs review
1 parent cfacdb3 commit 0a727bb

30 files changed

+786
-149
lines changed

examples/atlas-advanced-cluster/global-cluster/main.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,11 @@ resource "mongodbatlas_advanced_cluster" "cluster" {
9494
oplog_size_mb = 999
9595
sample_refresh_interval_bi_connector = 300
9696
}
97+
98+
tags {
99+
key = "environment"
100+
value = "dev"
101+
}
97102
}
98103

99104
resource "mongodbatlas_project" "project" {

examples/atlas-advanced-cluster/multi-cloud/main.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,11 @@ resource "mongodbatlas_advanced_cluster" "cluster" {
6060
oplog_size_mb = 999
6161
sample_refresh_interval_bi_connector = 300
6262
}
63+
64+
tags {
65+
key = "environment"
66+
value = "dev"
67+
}
6368
}
6469

6570
resource "mongodbatlas_project" "project" {

examples/atlas-advanced-cluster/tenant-upgrade/main.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ resource "mongodbatlas_advanced_cluster" "cluster" {
2121
priority = 7
2222
}
2323
}
24+
25+
tags {
26+
key = "environment"
27+
value = "dev"
28+
}
2429
}
2530

2631
resource "mongodbatlas_project" "project" {

examples/aws-privatelink-endpoint/serverless-instance/atlas-serverless-instance.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,9 @@ resource "mongodbatlas_serverless_instance" "aws_private_connection" {
55
provider_settings_provider_name = "SERVERLESS"
66
provider_settings_region_name = "US_EAST_1"
77
continuous_backup_enabled = true
8+
9+
tags {
10+
key = "environment"
11+
value = "dev"
12+
}
813
}

mongodbatlas/data_source_mongodbatlas_advanced_cluster.go

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,9 @@ func dataSourceMongoDBAtlasAdvancedCluster() *schema.Resource {
5858
Computed: true,
5959
},
6060
"labels": {
61-
Type: schema.TypeSet,
62-
Computed: true,
61+
Type: schema.TypeSet,
62+
Computed: true,
63+
Deprecated: fmt.Sprintf(DeprecationByDateWithReplacement, "September 2024", "tags"),
6364
Elem: &schema.Resource{
6465
Schema: map[string]*schema.Schema{
6566
"key": {
@@ -73,6 +74,7 @@ func dataSourceMongoDBAtlasAdvancedCluster() *schema.Resource {
7374
},
7475
},
7576
},
77+
"tags": &dsTagsSchema,
7678
"mongo_db_major_version": {
7779
Type: schema.TypeString,
7880
Computed: true,
@@ -225,6 +227,23 @@ func dataSourceMongoDBAtlasAdvancedCluster() *schema.Resource {
225227
}
226228
}
227229

230+
var dsTagsSchema = schema.Schema{
231+
Type: schema.TypeSet,
232+
Computed: true,
233+
Elem: &schema.Resource{
234+
Schema: map[string]*schema.Schema{
235+
"key": {
236+
Type: schema.TypeString,
237+
Computed: true,
238+
},
239+
"value": {
240+
Type: schema.TypeString,
241+
Computed: true,
242+
},
243+
},
244+
},
245+
}
246+
228247
func dataSourceMongoDBAtlasAdvancedClusterRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
229248
// Get client connection.
230249
conn := meta.(*MongoDBClient).Atlas
@@ -272,6 +291,10 @@ func dataSourceMongoDBAtlasAdvancedClusterRead(ctx context.Context, d *schema.Re
272291
return diag.FromErr(fmt.Errorf(errorClusterAdvancedSetting, "labels", clusterName, err))
273292
}
274293

294+
if err := d.Set("tags", flattenTags(&cluster.Tags)); err != nil {
295+
return diag.FromErr(fmt.Errorf(errorClusterAdvancedSetting, "tags", clusterName, err))
296+
}
297+
275298
if err := d.Set("mongo_db_major_version", cluster.MongoDBMajorVersion); err != nil {
276299
return diag.FromErr(fmt.Errorf(errorClusterAdvancedSetting, "mongo_db_major_version", clusterName, err))
277300
}

mongodbatlas/data_source_mongodbatlas_advanced_clusters.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,9 @@ func dataSourceMongoDBAtlasAdvancedClusters() *schema.Resource {
6666
Computed: true,
6767
},
6868
"labels": {
69-
Type: schema.TypeSet,
70-
Computed: true,
69+
Type: schema.TypeSet,
70+
Computed: true,
71+
Deprecated: fmt.Sprintf(DeprecationByDateWithReplacement, "September 2024", "tags"),
7172
Elem: &schema.Resource{
7273
Schema: map[string]*schema.Schema{
7374
"key": {
@@ -81,6 +82,7 @@ func dataSourceMongoDBAtlasAdvancedClusters() *schema.Resource {
8182
},
8283
},
8384
},
85+
"tags": &dsTagsSchema,
8486
"mongo_db_major_version": {
8587
Type: schema.TypeString,
8688
Computed: true,
@@ -281,6 +283,7 @@ func flattenAdvancedClusters(ctx context.Context, conn *matlas.Client, clusters
281283
"disk_size_gb": clusters[i].DiskSizeGB,
282284
"encryption_at_rest_provider": clusters[i].EncryptionAtRestProvider,
283285
"labels": flattenLabels(clusters[i].Labels),
286+
"tags": flattenTags(&clusters[i].Tags),
284287
"mongo_db_major_version": clusters[i].MongoDBMajorVersion,
285288
"mongo_db_version": clusters[i].MongoDBVersion,
286289
"name": clusters[i].Name,

mongodbatlas/data_source_mongodbatlas_cluster.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -284,8 +284,9 @@ func dataSourceMongoDBAtlasCluster() *schema.Resource {
284284
Computed: true,
285285
},
286286
"labels": {
287-
Type: schema.TypeSet,
288-
Computed: true,
287+
Type: schema.TypeSet,
288+
Computed: true,
289+
Deprecated: fmt.Sprintf(DeprecationByDateWithReplacement, "September 2024", "tags"),
289290
Elem: &schema.Resource{
290291
Schema: map[string]*schema.Schema{
291292
"key": {
@@ -299,6 +300,7 @@ func dataSourceMongoDBAtlasCluster() *schema.Resource {
299300
},
300301
},
301302
},
303+
"tags": &dsTagsSchema,
302304
"snapshot_backup_policy": computedCloudProviderSnapshotBackupPolicySchema(),
303305
"container_id": {
304306
Type: schema.TypeString,
@@ -438,6 +440,10 @@ func dataSourceMongoDBAtlasClusterRead(ctx context.Context, d *schema.ResourceDa
438440
return diag.FromErr(fmt.Errorf(errorClusterSetting, "labels", clusterName, err))
439441
}
440442

443+
if err := d.Set("tags", flattenTags(cluster.Tags)); err != nil {
444+
return diag.FromErr(fmt.Errorf(errorClusterSetting, "tags", clusterName, err))
445+
}
446+
441447
if err := d.Set("termination_protection_enabled", cluster.TerminationProtectionEnabled); err != nil {
442448
return diag.FromErr(fmt.Errorf(errorClusterSetting, "termination_protection_enabled", clusterName, err))
443449
}

mongodbatlas/data_source_mongodbatlas_clusters.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -287,8 +287,9 @@ func dataSourceMongoDBAtlasClusters() *schema.Resource {
287287
Computed: true,
288288
},
289289
"labels": {
290-
Type: schema.TypeSet,
291-
Computed: true,
290+
Type: schema.TypeSet,
291+
Computed: true,
292+
Deprecated: fmt.Sprintf(DeprecationByDateWithReplacement, "September 2024", "tags"),
292293
Elem: &schema.Resource{
293294
Schema: map[string]*schema.Schema{
294295
"key": {
@@ -302,6 +303,7 @@ func dataSourceMongoDBAtlasClusters() *schema.Resource {
302303
},
303304
},
304305
},
306+
"tags": &dsTagsSchema,
305307
"snapshot_backup_policy": computedCloudProviderSnapshotBackupPolicySchema(),
306308
"container_id": {
307309
Type: schema.TypeString,
@@ -401,6 +403,7 @@ func flattenClusters(ctx context.Context, d *schema.ResourceData, conn *matlas.C
401403
"bi_connector_config": flattenBiConnectorConfig(clusters[i].BiConnector),
402404
"replication_specs": flattenReplicationSpecs(clusters[i].ReplicationSpecs),
403405
"labels": flattenLabels(clusters[i].Labels),
406+
"tags": flattenTags(clusters[i].Tags),
404407
"snapshot_backup_policy": snapshotBackupPolicy,
405408
"termination_protection_enabled": clusters[i].TerminationProtectionEnabled,
406409
"version_release_system": clusters[i].VersionReleaseSystem,

mongodbatlas/data_source_mongodbatlas_serverless_instance.go

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -35,49 +35,52 @@ func dataSourceMongoDBAtlasServerlessInstanceRead(ctx context.Context, d *schema
3535
}
3636

3737
if err := d.Set("provider_settings_backing_provider_name", serverlessInstance.ProviderSettings.BackingProviderName); err != nil {
38-
return diag.Errorf("error setting `provider_settings_backing_provider_name` for serverless instance (%s): %s", d.Id(), err)
38+
return diag.Errorf(errorServerlessInstanceSetting, "provider_settings_backing_provider_name", d.Id(), err)
3939
}
4040

4141
if err := d.Set("provider_settings_provider_name", serverlessInstance.ProviderSettings.ProviderName); err != nil {
42-
return diag.Errorf("error setting `provider_settings_provider_name` for serverless instance (%s): %s", d.Id(), err)
42+
return diag.Errorf(errorServerlessInstanceSetting, "provider_settings_provider_name", d.Id(), err)
4343
}
4444

4545
if err := d.Set("provider_settings_region_name", serverlessInstance.ProviderSettings.RegionName); err != nil {
46-
return diag.Errorf("error setting `provider_settings_region_name` for serverless instance (%s): %s", d.Id(), err)
46+
return diag.Errorf(errorServerlessInstanceSetting, "provider_settings_region_name", d.Id(), err)
4747
}
4848

4949
if err := d.Set("connection_strings_standard_srv", serverlessInstance.ConnectionStrings.StandardSrv); err != nil {
50-
return diag.Errorf("error setting `connection_strings_standard_srv` for serverless instance (%s): %s", d.Id(), err)
50+
return diag.Errorf(errorServerlessInstanceSetting, "connection_strings_standard_srv", d.Id(), err)
5151
}
5252

5353
if len(serverlessInstance.ConnectionStrings.PrivateEndpoint) > 0 {
5454
if err := d.Set("connection_strings_private_endpoint_srv", flattenSRVConnectionString(serverlessInstance.ConnectionStrings.PrivateEndpoint)); err != nil {
55-
return diag.Errorf("error setting `connection_strings_private_endpoint_srv` for serverless instance (%s): %s", d.Id(), err)
55+
return diag.Errorf(errorServerlessInstanceSetting, "connection_strings_private_endpoint_srv", d.Id(), err)
5656
}
5757
}
5858

5959
if err := d.Set("create_date", serverlessInstance.CreateDate); err != nil {
60-
return diag.Errorf("error setting `create_date` for serverless instance (%s): %s", d.Id(), err)
60+
return diag.Errorf(errorServerlessInstanceSetting, "create_date", d.Id(), err)
6161
}
6262

6363
if err := d.Set("mongo_db_version", serverlessInstance.MongoDBVersion); err != nil {
64-
return diag.Errorf("error setting `mongo_db_version` for serverless instance (%s): %s", d.Id(), err)
64+
return diag.Errorf(errorServerlessInstanceSetting, "mongo_db_version", d.Id(), err)
6565
}
6666

6767
if err := d.Set("links", flattenServerlessInstanceLinks(serverlessInstance.Links)); err != nil {
68-
return diag.Errorf("error setting `links` for serverless instance (%s): %s", d.Id(), err)
68+
return diag.Errorf(errorServerlessInstanceSetting, "links", d.Id(), err)
6969
}
7070

7171
if err := d.Set("state_name", serverlessInstance.StateName); err != nil {
72-
return diag.Errorf("error setting `state_name` for serverless instance (%s): %s", d.Id(), err)
72+
return diag.Errorf(errorServerlessInstanceSetting, "state_name", d.Id(), err)
7373
}
7474

7575
if err := d.Set("termination_protection_enabled", serverlessInstance.TerminationProtectionEnabled); err != nil {
76-
return diag.Errorf("error setting `termination_protection_enabled` for serverless instance (%s): %s", d.Id(), err)
76+
return diag.Errorf(errorServerlessInstanceSetting, "termination_protection_enabled", d.Id(), err)
7777
}
7878

7979
if err := d.Set("continuous_backup_enabled", serverlessInstance.ServerlessBackupOptions.ServerlessContinuousBackupEnabled); err != nil {
80-
return diag.Errorf("error setting `state_name` for serverless instance (%s): %s", d.Id(), err)
80+
return diag.Errorf(errorServerlessInstanceSetting, "continuous_backup_enabled", d.Id(), err)
81+
}
82+
if err := d.Set("tags", flattenTags(serverlessInstance.Tags)); err != nil {
83+
return diag.Errorf(errorClusterAdvancedSetting, "tags", d.Id(), err)
8184
}
8285

8386
d.SetId(encodeStateID(map[string]string{
@@ -163,5 +166,6 @@ func returnServerlessInstanceDSSchema() map[string]*schema.Schema {
163166
Optional: true,
164167
Computed: true,
165168
},
169+
"tags": &dsTagsSchema,
166170
}
167171
}

mongodbatlas/data_source_mongodbatlas_serverless_instances.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ func flattenServerlessInstances(serverlessInstances []*matlas.Cluster) []map[str
104104
"state_name": serverlessInstances[i].StateName,
105105
"termination_protection_enabled": serverlessInstances[i].TerminationProtectionEnabled,
106106
"continuous_backup_enabled": serverlessInstances[i].ServerlessBackupOptions.ServerlessContinuousBackupEnabled,
107+
"tags": flattenTags(serverlessInstances[i].Tags),
107108
}
108109
}
109110

0 commit comments

Comments
 (0)