From 54ca96aa7c199b235e7d262e454cd7ee2f89b1bf Mon Sep 17 00:00:00 2001 From: MrWolong Date: Tue, 19 Nov 2024 16:23:17 +0800 Subject: [PATCH] resource/alicloud_mongodb_instance: Added the field backup_retention_policy_on_cluster_deletion; resource/alicloud_mongodb_sharding_instance: Added the field backup_retention_policy_on_cluster_deletion --- .../resource_alicloud_mongodb_instance.go | 8 +- ...resource_alicloud_mongodb_instance_test.go | 112 ++++++++++-------- ...urce_alicloud_mongodb_sharding_instance.go | 8 +- ...alicloud_mongodb_sharding_instance_test.go | 12 ++ alicloud/service_alicloud_mongodb.go | 4 + website/docs/r/mongodb_instance.html.markdown | 4 + .../r/mongodb_sharding_instance.html.markdown | 4 + 7 files changed, 100 insertions(+), 52 deletions(-) diff --git a/alicloud/resource_alicloud_mongodb_instance.go b/alicloud/resource_alicloud_mongodb_instance.go index b878c32e664f..6df8480e4113 100644 --- a/alicloud/resource_alicloud_mongodb_instance.go +++ b/alicloud/resource_alicloud_mongodb_instance.go @@ -188,6 +188,10 @@ func resourceAliCloudMongoDBInstance() *schema.Resource { Optional: true, Computed: true, }, + "backup_retention_policy_on_cluster_deletion": { + Type: schema.TypeInt, + Optional: true, + }, "enable_backup_log": { Type: schema.TypeInt, Optional: true, @@ -570,6 +574,7 @@ func resourceAliCloudMongoDBInstanceRead(d *schema.ResourceData, meta interface{ } d.Set("backup_retention_period", formatInt(backupPolicy["BackupRetentionPeriod"])) + d.Set("backup_retention_policy_on_cluster_deletion", formatInt(backupPolicy["BackupRetentionPolicyOnClusterDeletion"])) d.Set("enable_backup_log", formatInt(backupPolicy["EnableBackupLog"])) d.Set("log_backup_retention_period", formatInt(backupPolicy["LogBackupRetentionPeriod"])) d.Set("snapshot_backup_type", backupPolicy["SnapshotBackupType"]) @@ -1055,7 +1060,7 @@ func resourceAliCloudMongoDBInstanceUpdate(d *schema.ResourceData, meta interfac } } - if d.HasChange("backup_time") || d.HasChange("backup_period") || d.HasChange("backup_retention_period") || d.HasChange("enable_backup_log") || d.HasChange("log_backup_retention_period") || d.HasChange("snapshot_backup_type") || d.HasChange("backup_interval") { + if d.HasChange("backup_time") || d.HasChange("backup_period") || d.HasChange("backup_retention_period") || d.HasChange("backup_retention_policy_on_cluster_deletion") || d.HasChange("enable_backup_log") || d.HasChange("log_backup_retention_period") || d.HasChange("snapshot_backup_type") || d.HasChange("backup_interval") { if err := ddsService.ModifyMongoDBBackupPolicy(d); err != nil { return WrapError(err) } @@ -1063,6 +1068,7 @@ func resourceAliCloudMongoDBInstanceUpdate(d *schema.ResourceData, meta interfac d.SetPartial("backup_time") d.SetPartial("backup_period") d.SetPartial("backup_retention_period") + d.SetPartial("backup_retention_policy_on_cluster_deletion") d.SetPartial("enable_backup_log") d.SetPartial("log_backup_retention_period") d.SetPartial("snapshot_backup_type") diff --git a/alicloud/resource_alicloud_mongodb_instance_test.go b/alicloud/resource_alicloud_mongodb_instance_test.go index 6cc44a24b6c4..6a19d89f78b5 100644 --- a/alicloud/resource_alicloud_mongodb_instance_test.go +++ b/alicloud/resource_alicloud_mongodb_instance_test.go @@ -547,6 +547,16 @@ func TestAccAliCloudMongoDBInstance_basic1(t *testing.T) { }), ), }, + { + Config: testAccConfig(map[string]interface{}{ + "backup_retention_policy_on_cluster_deletion": "1", + }), + Check: resource.ComposeTestCheckFunc( + testAccCheck(map[string]string{ + "backup_retention_policy_on_cluster_deletion": "1", + }), + ), + }, { Config: testAccConfig(map[string]interface{}{ "log_backup_retention_period": "100", @@ -731,21 +741,22 @@ func TestAccAliCloudMongoDBInstance_basic1_twin(t *testing.T) { "security_ip_list": []string{"10.168.1.12"}, //"kms_encrypted_password": "", //"kms_encryption_context": "", - "encrypted": "true", - "cloud_disk_encryption_key": "${alicloud_kms_key.default.id}", - "replication_factor": "3", - "readonly_replicas": "2", - "resource_group_id": "${data.alicloud_resource_manager_resource_groups.default.ids.1}", - "backup_time": "11:00Z-12:00Z", - "backup_period": []string{"Monday", "Tuesday", "Wednesday"}, - "backup_retention_period": "7", - "enable_backup_log": "1", - "log_backup_retention_period": "120", - "snapshot_backup_type": "Flash", - "backup_interval": "15", - "ssl_action": "Open", - "maintain_start_time": "00:00Z", - "maintain_end_time": "03:00Z", + "encrypted": "true", + "cloud_disk_encryption_key": "${alicloud_kms_key.default.id}", + "replication_factor": "3", + "readonly_replicas": "2", + "resource_group_id": "${data.alicloud_resource_manager_resource_groups.default.ids.1}", + "backup_time": "11:00Z-12:00Z", + "backup_period": []string{"Monday", "Tuesday", "Wednesday"}, + "backup_retention_period": "7", + "backup_retention_policy_on_cluster_deletion": "1", + "enable_backup_log": "1", + "log_backup_retention_period": "120", + "snapshot_backup_type": "Flash", + "backup_interval": "15", + "ssl_action": "Open", + "maintain_start_time": "00:00Z", + "maintain_end_time": "03:00Z", "parameters": []interface{}{ map[string]interface{}{ "name": "operationProfiling.slowOpThresholdMs", @@ -759,41 +770,42 @@ func TestAccAliCloudMongoDBInstance_basic1_twin(t *testing.T) { }), Check: resource.ComposeTestCheckFunc( testAccCheck(map[string]string{ - "engine_version": "4.4", - "db_instance_class": "mdb.shard.2x.xlarge.d", - "db_instance_storage": "80", - "storage_engine": "WiredTiger", - "storage_type": "cloud_auto", - "provisioned_iops": "2000", - "vpc_id": CHECKSET, - "vswitch_id": CHECKSET, - "zone_id": CHECKSET, - "secondary_zone_id": CHECKSET, - "hidden_zone_id": CHECKSET, - "security_group_id": CHECKSET, - "network_type": "VPC", - "name": name, - "instance_charge_type": "PostPaid", - "security_ip_list.#": "1", - "encrypted": "true", - "cloud_disk_encryption_key": CHECKSET, - "replication_factor": "3", - "readonly_replicas": "2", - "resource_group_id": CHECKSET, - "backup_time": "11:00Z-12:00Z", - "backup_period.#": "3", - "backup_retention_period": "7", - "enable_backup_log": "1", - "log_backup_retention_period": "120", - "snapshot_backup_type": "Flash", - "backup_interval": "15", - "ssl_status": "Open", - "maintain_start_time": "00:00Z", - "maintain_end_time": "03:00Z", - "parameters.#": "1", - "tags.%": "2", - "tags.Created": "TF", - "tags.For": "acceptance test", + "engine_version": "4.4", + "db_instance_class": "mdb.shard.2x.xlarge.d", + "db_instance_storage": "80", + "storage_engine": "WiredTiger", + "storage_type": "cloud_auto", + "provisioned_iops": "2000", + "vpc_id": CHECKSET, + "vswitch_id": CHECKSET, + "zone_id": CHECKSET, + "secondary_zone_id": CHECKSET, + "hidden_zone_id": CHECKSET, + "security_group_id": CHECKSET, + "network_type": "VPC", + "name": name, + "instance_charge_type": "PostPaid", + "security_ip_list.#": "1", + "encrypted": "true", + "cloud_disk_encryption_key": CHECKSET, + "replication_factor": "3", + "readonly_replicas": "2", + "resource_group_id": CHECKSET, + "backup_time": "11:00Z-12:00Z", + "backup_period.#": "3", + "backup_retention_period": "7", + "backup_retention_policy_on_cluster_deletion": "1", + "enable_backup_log": "1", + "log_backup_retention_period": "120", + "snapshot_backup_type": "Flash", + "backup_interval": "15", + "ssl_status": "Open", + "maintain_start_time": "00:00Z", + "maintain_end_time": "03:00Z", + "parameters.#": "1", + "tags.%": "2", + "tags.Created": "TF", + "tags.For": "acceptance test", }), ), }, diff --git a/alicloud/resource_alicloud_mongodb_sharding_instance.go b/alicloud/resource_alicloud_mongodb_sharding_instance.go index 0a340ca0c364..40955b53ed7e 100644 --- a/alicloud/resource_alicloud_mongodb_sharding_instance.go +++ b/alicloud/resource_alicloud_mongodb_sharding_instance.go @@ -151,6 +151,10 @@ func resourceAliCloudMongoDBShardingInstance() *schema.Resource { Computed: true, Elem: &schema.Schema{Type: schema.TypeString}, }, + "backup_retention_policy_on_cluster_deletion": { + Type: schema.TypeInt, + Optional: true, + }, "tde_status": { Type: schema.TypeString, Optional: true, @@ -529,6 +533,7 @@ func resourceAliCloudMongoDBShardingInstanceRead(d *schema.ResourceData, meta in d.Set("backup_time", backupPolicy["PreferredBackupTime"]) d.Set("backup_period", strings.Split(backupPolicy["PreferredBackupPeriod"].(string), ",")) d.Set("retention_period", formatInt(backupPolicy["BackupRetentionPeriod"])) + d.Set("backup_retention_policy_on_cluster_deletion", formatInt(backupPolicy["BackupRetentionPolicyOnClusterDeletion"])) tdeInfo, err := ddsService.DescribeMongoDBShardingTDEInfo(d.Id()) if err != nil { @@ -980,13 +985,14 @@ func resourceAliCloudMongoDBShardingInstanceUpdate(d *schema.ResourceData, meta d.SetPartial("resource_group_id") } - if d.HasChange("backup_time") || d.HasChange("backup_period") { + if d.HasChange("backup_time") || d.HasChange("backup_period") || d.HasChange("backup_retention_policy_on_cluster_deletion") { if err := ddsService.ModifyMongoDBBackupPolicy(d); err != nil { return WrapError(err) } d.SetPartial("backup_time") d.SetPartial("backup_period") + d.SetPartial("backup_retention_policy_on_cluster_deletion") } if d.HasChange("tde_status") { diff --git a/alicloud/resource_alicloud_mongodb_sharding_instance_test.go b/alicloud/resource_alicloud_mongodb_sharding_instance_test.go index 7fc118685096..8807fd7a3c43 100644 --- a/alicloud/resource_alicloud_mongodb_sharding_instance_test.go +++ b/alicloud/resource_alicloud_mongodb_sharding_instance_test.go @@ -588,6 +588,16 @@ func TestAccAliCloudMongoDBShardingInstance_basic1(t *testing.T) { }), ), }, + { + Config: testAccConfig(map[string]interface{}{ + "backup_retention_policy_on_cluster_deletion": "1", + }), + Check: resource.ComposeTestCheckFunc( + testAccCheck(map[string]string{ + "backup_retention_policy_on_cluster_deletion": "1", + }), + ), + }, { Config: testAccConfig(map[string]interface{}{ "tags": map[string]string{ @@ -699,6 +709,7 @@ func TestAccAliCloudMongoDBShardingInstance_basic1_twin(t *testing.T) { "resource_group_id": "${data.alicloud_resource_manager_resource_groups.default.ids.1}", "backup_time": "11:00Z-12:00Z", "backup_period": []string{"Monday", "Tuesday", "Wednesday"}, + "backup_retention_policy_on_cluster_deletion": "1", "mongo_list": []map[string]interface{}{ { "node_class": "mdb.shard.8x.large.d", @@ -748,6 +759,7 @@ func TestAccAliCloudMongoDBShardingInstance_basic1_twin(t *testing.T) { "resource_group_id": CHECKSET, "backup_time": "11:00Z-12:00Z", "backup_period.#": "3", + "backup_retention_policy_on_cluster_deletion": "1", "mongo_list.#": "2", "shard_list.#": "2", "config_server_list.#": "1", diff --git a/alicloud/service_alicloud_mongodb.go b/alicloud/service_alicloud_mongodb.go index 395e4f5a49b5..ee949e74a47d 100644 --- a/alicloud/service_alicloud_mongodb.go +++ b/alicloud/service_alicloud_mongodb.go @@ -731,6 +731,10 @@ func (s *MongoDBService) ModifyMongoDBBackupPolicy(d *schema.ResourceData) error request["BackupRetentionPeriod"] = v } + if v, ok := d.GetOkExists("backup_retention_policy_on_cluster_deletion"); ok { + request["BackupRetentionPolicyOnClusterDeletion"] = v + } + if v, ok := d.GetOkExists("enable_backup_log"); ok { request["EnableBackupLog"] = v } diff --git a/website/docs/r/mongodb_instance.html.markdown b/website/docs/r/mongodb_instance.html.markdown index 19faceb8aec3..4c823b49610c 100644 --- a/website/docs/r/mongodb_instance.html.markdown +++ b/website/docs/r/mongodb_instance.html.markdown @@ -112,6 +112,10 @@ The following arguments are supported: * `backup_time` - (Optional, Available since v1.42.0) MongoDB instance backup time. It is required when `backup_period` was existed. In the format of HH:mmZ- HH:mmZ. Time setting interval is one hour. If not set, the system will return a default, like "23:00Z-24:00Z". * `backup_period` - (Optional, List, Available since v1.42.0) MongoDB Instance backup period. It is required when `backup_time` was existed. Valid values: [Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday]. Default to [Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday]. * `backup_retention_period` - (Optional, Int, Available since v1.213.1) The retention period of full backups. +* `backup_retention_policy_on_cluster_deletion` - (Optional, Int, Available since v1.235.0) The backup retention policy configured for the instance. Valid values: + - `0`: All backup sets are immediately deleted when the instance is released. + - `1 `: Automatic backup is performed when the instance is released and the backup set is retained for a long period of time. + - `2 `: Automatic backup is performed when the instance is released and all backup sets are retained for a long period of time. * `enable_backup_log` - (Optional, Int, Available since v1.230.1) Specifies whether to enable the log backup feature. Valid values: - `0`: The log backup feature is disabled. - `1 `: The log backup feature is enabled. diff --git a/website/docs/r/mongodb_sharding_instance.html.markdown b/website/docs/r/mongodb_sharding_instance.html.markdown index 62f74081d0ab..1989ab9d4dde 100644 --- a/website/docs/r/mongodb_sharding_instance.html.markdown +++ b/website/docs/r/mongodb_sharding_instance.html.markdown @@ -109,6 +109,10 @@ The following arguments are supported: * `auto_renew` - (Optional, Bool, Available since v1.141.0) Auto renew for prepaid. Default value: `false`. Valid values: `true`, `false`. * `backup_time` - (Optional, Available since v1.42.0) Sharding Instance backup time. It is required when `backup_period` was existed. In the format of HH:mmZ- HH:mmZ. Time setting interval is one hour. If not set, the system will return a default, like "23:00Z-24:00Z". * `backup_period` - (Optional, List, Available since v1.42.0) MongoDB Instance backup period. It is required when `backup_time` was existed. Valid values: [Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday]. Default to [Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday] +* `backup_retention_policy_on_cluster_deletion` - (Optional, Int, Available since v1.235.0) The backup retention policy configured for the instance. Valid values: + - `0`: All backup sets are immediately deleted when the instance is released. + - `1 `: Automatic backup is performed when the instance is released and the backup set is retained for a long period of time. + - `2 `: Automatic backup is performed when the instance is released and all backup sets are retained for a long period of time. * `tde_status` - (Optional, Available since v1.76.0) The TDE(Transparent Data Encryption) status. It can be updated from version 1.160.0. * `mongo_list` - (Required, Set) The Mongo nodes of the instance. The mongo-node count can be purchased is in range of [2, 32]. See [`mongo_list`](#mongo_list) below. * `shard_list` - (Required, Set) The Shard nodes of the instance. The shard-node count can be purchased is in range of [2, 32]. See [`shard_list`](#shard_list) below.