Skip to content

Commit

Permalink
resource/alicloud_mongodb_instance: Added the field backup_retention_…
Browse files Browse the repository at this point in the history
…policy_on_cluster_deletion; resource/alicloud_mongodb_sharding_instance: Added the field backup_retention_policy_on_cluster_deletion
  • Loading branch information
MrWolong authored and ChenHanZhang committed Nov 21, 2024
1 parent 8cb1935 commit 54ca96a
Show file tree
Hide file tree
Showing 7 changed files with 100 additions and 52 deletions.
8 changes: 7 additions & 1 deletion alicloud/resource_alicloud_mongodb_instance.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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"])
Expand Down Expand Up @@ -1055,14 +1060,15 @@ 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)
}

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")
Expand Down
112 changes: 62 additions & 50 deletions alicloud/resource_alicloud_mongodb_instance_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand All @@ -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",
}),
),
},
Expand Down
8 changes: 7 additions & 1 deletion alicloud/resource_alicloud_mongodb_sharding_instance.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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") {
Expand Down
12 changes: 12 additions & 0 deletions alicloud/resource_alicloud_mongodb_sharding_instance_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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{
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand Down
4 changes: 4 additions & 0 deletions alicloud/service_alicloud_mongodb.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down
4 changes: 4 additions & 0 deletions website/docs/r/mongodb_instance.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
4 changes: 4 additions & 0 deletions website/docs/r/mongodb_sharding_instance.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down

0 comments on commit 54ca96a

Please sign in to comment.