Skip to content

Commit c9cf145

Browse files
rashik-bhasinjotruon
authored andcommitted
Added - Support for MySQL Database Service Deletion Policy on Db Systems
1 parent 475613e commit c9cf145

16 files changed

+236
-17
lines changed

examples/mysql/main.tf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,15 @@ resource "oci_mysql_mysql_db_system" "test_mysql_db_system" {
9494
source_type = "BACKUP"
9595
}
9696

97+
#Optional
9798
crash_recovery = "ENABLED"
99+
100+
#Optional
101+
deletion_policy {
102+
automatic_backup_retention = "DELETE"
103+
final_backup = "SKIP_FINAL_BACKUP"
104+
is_delete_protected = "false"
105+
}
98106
}
99107

100108
data "oci_mysql_mysql_configurations" "test_mysql_configurations" {

internal/integrationtest/mysql_heat_wave_cluster_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ var (
4141
"availability_domain": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_identity_availability_domains.test_availability_domains.availability_domains.0.name}`},
4242
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
4343
"configuration_id": acctest.Representation{RepType: acctest.Optional, Create: `${var.MysqlConfigurationOCID[var.region]}`},
44-
"shape_name": acctest.Representation{RepType: acctest.Required, Create: `MySQL.HeatWave.VM.Standard.E3`},
44+
"shape_name": acctest.Representation{RepType: acctest.Required, Create: `MySQL.VM.Standard.E3.1.8GB`},
4545
"subnet_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_core_subnet.test_subnet.id}`},
4646
"backup_policy": acctest.RepresentationGroup{RepType: acctest.Optional, Group: mysqlDbSystemBackupPolicyRepresentation},
4747
"data_storage_size_in_gb": acctest.Representation{RepType: acctest.Required, Create: `50`},
@@ -60,7 +60,7 @@ var (
6060
heatWaveClusterRepresentation = map[string]interface{}{
6161
"db_system_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_mysql_mysql_db_system.test_mysql_db_system.id}`},
6262
"cluster_size": acctest.Representation{RepType: acctest.Required, Create: `2`, Update: `3`},
63-
"shape_name": acctest.Representation{RepType: acctest.Required, Create: `MySQL.HeatWave.VM.Standard.E3`},
63+
"shape_name": acctest.Representation{RepType: acctest.Required, Create: `MySQL.VM.Standard.E3.1.8GB`},
6464
"state": acctest.Representation{RepType: acctest.Optional, Create: `INACTIVE`, Update: `ACTIVE`}, // testing stop & start actions
6565
}
6666

@@ -114,7 +114,7 @@ func TestMysqlHeatWaveClusterResource_basic(t *testing.T) {
114114
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
115115
resource.TestCheckResourceAttr(resourceName, "cluster_nodes.#", "2"),
116116
resource.TestCheckResourceAttr(resourceName, "cluster_size", "2"),
117-
resource.TestCheckResourceAttr(resourceName, "shape_name", "MySQL.HeatWave.VM.Standard.E3"),
117+
resource.TestCheckResourceAttr(resourceName, "shape_name", "MySQL.VM.Standard.E3.1.8GB"),
118118
resource.TestCheckResourceAttr(resourceName, "state", "INACTIVE"),
119119

120120
resource.TestCheckResourceAttrSet(resourceName, "db_system_id"),
@@ -140,7 +140,7 @@ func TestMysqlHeatWaveClusterResource_basic(t *testing.T) {
140140
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
141141
resource.TestCheckResourceAttr(resourceName, "cluster_nodes.#", "3"),
142142
resource.TestCheckResourceAttr(resourceName, "cluster_size", "3"),
143-
resource.TestCheckResourceAttr(resourceName, "shape_name", "MySQL.HeatWave.VM.Standard.E3"),
143+
resource.TestCheckResourceAttr(resourceName, "shape_name", "MySQL.VM.Standard.E3.1.8GB"),
144144
resource.TestCheckResourceAttr(resourceName, "state", "ACTIVE"),
145145

146146
resource.TestCheckResourceAttrSet(resourceName, "db_system_id"),
@@ -167,7 +167,7 @@ func TestMysqlHeatWaveClusterResource_basic(t *testing.T) {
167167

168168
resource.TestCheckResourceAttr(singularDatasourceName, "cluster_nodes.#", "3"),
169169
resource.TestCheckResourceAttr(singularDatasourceName, "cluster_size", "3"),
170-
resource.TestCheckResourceAttr(singularDatasourceName, "shape_name", "MySQL.HeatWave.VM.Standard.E3"),
170+
resource.TestCheckResourceAttr(singularDatasourceName, "shape_name", "MySQL.VM.Standard.E3.1.8GB"),
171171
resource.TestCheckResourceAttr(singularDatasourceName, "state", "ACTIVE"),
172172
resource.TestCheckResourceAttrSet(singularDatasourceName, "time_created"),
173173
resource.TestCheckResourceAttrSet(singularDatasourceName, "time_updated"),

internal/integrationtest/mysql_mysql_configuration_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ var (
3030
mysqlConfigurationDataSourceRepresentation = map[string]interface{}{
3131
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
3232
"configuration_id": acctest.Representation{RepType: acctest.Optional, Create: `${var.MysqlConfigurationOCID[var.region]}`},
33-
"display_name": acctest.Representation{RepType: acctest.Optional, Create: `VM.Standard.E2.2.Built-in`},
34-
"shape_name": acctest.Representation{RepType: acctest.Optional, Create: `VM.Standard.E2.2`},
33+
"display_name": acctest.Representation{RepType: acctest.Optional, Create: `MySQL.VM.Standard.E3.1.8GB.Standalone`},
34+
"shape_name": acctest.Representation{RepType: acctest.Optional, Create: `MySQL.VM.Standard.E3.1.8GB`},
3535
"state": acctest.Representation{RepType: acctest.Optional, Create: `ACTIVE`},
3636
"type": acctest.Representation{RepType: acctest.Optional, Create: []string{`DEFAULT`}},
3737
}
@@ -79,8 +79,8 @@ func TestMysqlMysqlConfigurationResource_basic(t *testing.T) {
7979
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
8080
resource.TestCheckResourceAttrSet(singularDatasourceName, "configuration_id"),
8181

82-
resource.TestCheckResourceAttr(singularDatasourceName, "description", "Default Standalone configuration for the VM.Standard.E2.2 MySQL Shape"),
83-
resource.TestCheckResourceAttr(singularDatasourceName, "display_name", "VM.Standard.E2.2.Standalone"),
82+
resource.TestCheckResourceAttr(singularDatasourceName, "description", "Default Standalone configuration for the MySQL.VM.Standard.E3.1.8GB MySQL Shape"),
83+
resource.TestCheckResourceAttr(singularDatasourceName, "display_name", "MySQL.VM.Standard.E3.1.8GB.Standalone"),
8484
resource.TestCheckResourceAttrSet(singularDatasourceName, "id"),
8585
resource.TestCheckResourceAttrSet(singularDatasourceName, "state"),
8686
resource.TestCheckResourceAttrSet(singularDatasourceName, "time_created"),
@@ -100,7 +100,7 @@ func TestMysqlMysqlConfigurationResource_basic(t *testing.T) {
100100
resource.TestCheckResourceAttr(singularDatasourceName, "variables.0.group_replication_consistency", "BEFORE_ON_PRIMARY_FAILOVER"),
101101
resource.TestCheckResourceAttr(singularDatasourceName, "variables.0.information_schema_stats_expiry", "0"),
102102
resource.TestCheckResourceAttr(singularDatasourceName, "variables.0.innodb_buffer_pool_instances", "4"),
103-
resource.TestCheckResourceAttr(singularDatasourceName, "variables.0.innodb_buffer_pool_size", "10200547328"),
103+
resource.TestCheckResourceAttr(singularDatasourceName, "variables.0.innodb_buffer_pool_size", "2147483648"),
104104
resource.TestCheckResourceAttr(singularDatasourceName, "variables.0.innodb_ft_enable_stopword", "false"),
105105
resource.TestCheckResourceAttr(singularDatasourceName, "variables.0.innodb_ft_max_token_size", "0"),
106106
resource.TestCheckResourceAttr(singularDatasourceName, "variables.0.innodb_ft_min_token_size", "0"),
@@ -112,7 +112,7 @@ func TestMysqlMysqlConfigurationResource_basic(t *testing.T) {
112112
resource.TestCheckResourceAttr(singularDatasourceName, "variables.0.innodb_max_purge_lag_delay", "300000"),
113113
resource.TestCheckResourceAttr(singularDatasourceName, "variables.0.local_infile", "true"),
114114
resource.TestCheckResourceAttr(singularDatasourceName, "variables.0.mandatory_roles", "public"),
115-
resource.TestCheckResourceAttr(singularDatasourceName, "variables.0.max_connections", "1000"),
115+
resource.TestCheckResourceAttr(singularDatasourceName, "variables.0.max_connections", "500"),
116116
resource.TestCheckResourceAttr(singularDatasourceName, "variables.0.max_execution_time", "0"),
117117
resource.TestCheckResourceAttr(singularDatasourceName, "variables.0.max_prepared_stmt_count", "0"),
118118
resource.TestCheckResourceAttr(singularDatasourceName, "variables.0.mysql_firewall_mode", "false"),

internal/integrationtest/mysql_mysql_db_system_test.go

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,13 @@ var (
5656
"availability_domain": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_identity_availability_domains.test_availability_domains.availability_domains.0.name}`},
5757
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
5858
"configuration_id": acctest.Representation{RepType: acctest.Optional, Create: `${var.MysqlConfigurationOCID[var.region]}`},
59-
"shape_name": acctest.Representation{RepType: acctest.Required, Create: `VM.Standard.E2.2`},
59+
"shape_name": acctest.Representation{RepType: acctest.Required, Create: `MySQL.VM.Standard.E3.1.8GB`},
6060
"subnet_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_core_subnet.test_subnet.id}`},
6161
"backup_policy": acctest.RepresentationGroup{RepType: acctest.Optional, Group: mysqlDbSystemBackupPolicyRepresentation},
6262
"crash_recovery": acctest.Representation{RepType: acctest.Optional, Create: `ENABLED`},
6363
"data_storage_size_in_gb": acctest.Representation{RepType: acctest.Required, Create: `50`},
6464
"defined_tags": acctest.Representation{RepType: acctest.Optional, Create: `${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "value")}`, Update: `${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "updatedValue")}`},
65+
"deletion_policy": acctest.RepresentationGroup{RepType: acctest.Optional, Group: mysqlDbSystemDeletionPolicyRepresentation},
6566
"description": acctest.Representation{RepType: acctest.Optional, Create: `MySQL Database Service`, Update: `description2`},
6667
"display_name": acctest.Representation{RepType: acctest.Optional, Create: `DBSystem001`, Update: `displayName2`},
6768
"fault_domain": acctest.Representation{RepType: acctest.Optional, Create: `FAULT-DOMAIN-1`},
@@ -95,6 +96,15 @@ var (
9596
"window_start_time": acctest.Representation{RepType: acctest.Optional, Create: `01:00-00:00`},
9697
}
9798

99+
mysqlDbSystemDeletionPolicyRepresentation = map[string]interface{}{
100+
// Don't update these as setting the deletion policy to true or backup retention to retain will leave resources
101+
// that can't be removed.
102+
"automatic_backup_retention": acctest.Representation{RepType: acctest.Optional, Create: `DELETE`, Update: `RETAIN`},
103+
"final_backup": acctest.Representation{RepType: acctest.Optional, Create: `SKIP_FINAL_BACKUP`, Update: `REQUIRE_FINAL_BACKUP`},
104+
//"is_delete_protected": acctest.Representation{RepType: acctest.Optional, Create: `false`, Update: `true`},
105+
"is_delete_protected": acctest.Representation{RepType: acctest.Optional, Create: `false`},
106+
}
107+
98108
mysqlDbSystemMaintenanceRepresentation = map[string]interface{}{
99109
"window_start_time": acctest.Representation{RepType: acctest.Required, Create: `sun 01:00`},
100110
}
@@ -169,6 +179,10 @@ func TestMysqlMysqlDbSystemResource_basic(t *testing.T) {
169179
resource.TestCheckResourceAttrSet(resourceName, "configuration_id"),
170180
resource.TestCheckResourceAttr(resourceName, "crash_recovery", "ENABLED"),
171181
resource.TestCheckResourceAttr(resourceName, "data_storage_size_in_gb", "50"),
182+
resource.TestCheckResourceAttr(resourceName, "deletion_policy.#", "1"),
183+
resource.TestCheckResourceAttr(resourceName, "deletion_policy.0.automatic_backup_retention", "DELETE"),
184+
resource.TestCheckResourceAttr(resourceName, "deletion_policy.0.final_backup", "SKIP_FINAL_BACKUP"),
185+
resource.TestCheckResourceAttr(resourceName, "deletion_policy.0.is_delete_protected", "false"),
172186
resource.TestCheckResourceAttr(resourceName, "description", "MySQL Database Service"),
173187
resource.TestCheckResourceAttr(resourceName, "display_name", "DBSystem001"),
174188
resource.TestCheckResourceAttr(resourceName, "fault_domain", "FAULT-DOMAIN-1"),
@@ -219,6 +233,10 @@ func TestMysqlMysqlDbSystemResource_basic(t *testing.T) {
219233
resource.TestCheckResourceAttrSet(resourceName, "configuration_id"),
220234
resource.TestCheckResourceAttr(resourceName, "crash_recovery", "ENABLED"),
221235
resource.TestCheckResourceAttr(resourceName, "data_storage_size_in_gb", "50"),
236+
resource.TestCheckResourceAttr(resourceName, "deletion_policy.#", "1"),
237+
resource.TestCheckResourceAttr(resourceName, "deletion_policy.0.automatic_backup_retention", "RETAIN"),
238+
resource.TestCheckResourceAttr(resourceName, "deletion_policy.0.final_backup", "REQUIRE_FINAL_BACKUP"),
239+
resource.TestCheckResourceAttr(resourceName, "deletion_policy.0.is_delete_protected", "false"),
222240
resource.TestCheckResourceAttr(resourceName, "description", "description2"),
223241
resource.TestCheckResourceAttr(resourceName, "display_name", "displayName2"),
224242
resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"),
@@ -271,6 +289,10 @@ func TestMysqlMysqlDbSystemResource_basic(t *testing.T) {
271289
resource.TestCheckResourceAttr(datasourceName, "db_systems.0.compartment_id", compartmentId),
272290
resource.TestCheckResourceAttr(datasourceName, "db_systems.0.crash_recovery", "ENABLED"),
273291
resource.TestCheckResourceAttr(datasourceName, "db_systems.0.current_placement.#", "1"),
292+
resource.TestCheckResourceAttr(datasourceName, "db_systems.0.deletion_policy.#", "1"),
293+
resource.TestCheckResourceAttr(datasourceName, "db_systems.0.deletion_policy.0.automatic_backup_retention", "RETAIN"),
294+
resource.TestCheckResourceAttr(datasourceName, "db_systems.0.deletion_policy.0.final_backup", "REQUIRE_FINAL_BACKUP"),
295+
resource.TestCheckResourceAttr(datasourceName, "db_systems.0.deletion_policy.0.is_delete_protected", "false"),
274296
resource.TestCheckResourceAttr(datasourceName, "db_systems.0.description", "description2"),
275297
resource.TestCheckResourceAttr(datasourceName, "db_systems.0.display_name", "displayName2"),
276298
resource.TestCheckResourceAttr(datasourceName, "db_systems.0.endpoints.#", "1"),
@@ -308,6 +330,10 @@ func TestMysqlMysqlDbSystemResource_basic(t *testing.T) {
308330
resource.TestCheckResourceAttr(singularDatasourceName, "crash_recovery", "ENABLED"),
309331
resource.TestCheckResourceAttr(singularDatasourceName, "current_placement.#", "1"),
310332
resource.TestCheckResourceAttr(singularDatasourceName, "data_storage_size_in_gb", "50"),
333+
resource.TestCheckResourceAttr(singularDatasourceName, "deletion_policy.#", "1"),
334+
resource.TestCheckResourceAttr(singularDatasourceName, "deletion_policy.0.automatic_backup_retention", "RETAIN"),
335+
resource.TestCheckResourceAttr(singularDatasourceName, "deletion_policy.0.final_backup", "REQUIRE_FINAL_BACKUP"),
336+
resource.TestCheckResourceAttr(singularDatasourceName, "deletion_policy.0.is_delete_protected", "false"),
311337
resource.TestCheckResourceAttr(singularDatasourceName, "description", "description2"),
312338
resource.TestCheckResourceAttr(singularDatasourceName, "display_name", "displayName2"),
313339
resource.TestCheckResourceAttr(singularDatasourceName, "endpoints.#", "1"),

internal/integrationtest/mysql_shape_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ var (
1919
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
2020
"availability_domain": acctest.Representation{RepType: acctest.Optional, Create: `${data.oci_identity_availability_domains.test_availability_domains.availability_domains.0.name}`},
2121
"is_supported_for": acctest.Representation{RepType: acctest.Optional, Create: []string{`DBSYSTEM`}},
22-
"name": acctest.Representation{RepType: acctest.Optional, Create: `VM.Standard.E2.2`},
22+
"name": acctest.Representation{RepType: acctest.Optional, Create: `MySQL.VM.Standard.E3.1.8GB`},
2323
}
2424

2525
MySQLShapeResourceConfig = AvailabilityDomainConfig
@@ -63,7 +63,7 @@ func TestMysqlShapeResource_basic(t *testing.T) {
6363
resource.TestCheckResourceAttrSet(datasourceName, "availability_domain"),
6464
resource.TestCheckResourceAttr(datasourceName, "compartment_id", compartmentId),
6565
resource.TestCheckResourceAttr(datasourceName, "is_supported_for.#", "1"),
66-
resource.TestCheckResourceAttr(datasourceName, "name", "VM.Standard.E2.2"),
66+
resource.TestCheckResourceAttr(datasourceName, "name", "MySQL.VM.Standard.E3.1.8GB"),
6767

6868
resource.TestCheckResourceAttrSet(datasourceName, "shapes.#"),
6969
resource.TestCheckResourceAttrSet(datasourceName, "shapes.0.cpu_core_count"),

internal/service/mysql/mysql_mysql_backup_resource.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,31 @@ func MysqlMysqlBackupResource() *schema.Resource {
161161
Computed: true,
162162
Elem: schema.TypeString,
163163
},
164+
"deletion_policy": {
165+
Type: schema.TypeList,
166+
Computed: true,
167+
Elem: &schema.Resource{
168+
Schema: map[string]*schema.Schema{
169+
// Required
170+
171+
// Optional
172+
173+
// Computed
174+
"automatic_backup_retention": {
175+
Type: schema.TypeString,
176+
Computed: true,
177+
},
178+
"final_backup": {
179+
Type: schema.TypeString,
180+
Computed: true,
181+
},
182+
"is_delete_protected": {
183+
Type: schema.TypeBool,
184+
Computed: true,
185+
},
186+
},
187+
},
188+
},
164189
"description": {
165190
Type: schema.TypeString,
166191
Computed: true,
@@ -674,6 +699,10 @@ func DbSystemSnapshotToMap(obj *oci_mysql.DbSystemSnapshot) map[string]interface
674699
result["defined_tags"] = tfresource.DefinedTagsToMap(obj.DefinedTags)
675700
}
676701

702+
if obj.DeletionPolicy != nil {
703+
result["deletion_policy"] = []interface{}{DeletionPolicyDetailsToMap(obj.DeletionPolicy)}
704+
}
705+
677706
if obj.Description != nil {
678707
result["description"] = string(*obj.Description)
679708
}

internal/service/mysql/mysql_mysql_db_system_data_source.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,12 @@ func (s *MysqlMysqlDbSystemDataSourceCrud) SetData() error {
112112
s.D.Set("defined_tags", tfresource.DefinedTagsToMap(s.Res.DefinedTags))
113113
}
114114

115+
if s.Res.DeletionPolicy != nil {
116+
s.D.Set("deletion_policy", []interface{}{DeletionPolicyDetailsToMap(s.Res.DeletionPolicy)})
117+
} else {
118+
s.D.Set("deletion_policy", nil)
119+
}
120+
115121
if s.Res.Description != nil {
116122
s.D.Set("description", *s.Res.Description)
117123
}

0 commit comments

Comments
 (0)