Skip to content

Commit 5fd8f0f

Browse files
Terraform Team AutomationMonica Joshi
authored andcommitted
Added - Support for Functionality enhancements to support in-place DbSystem updates
1 parent be35c91 commit 5fd8f0f

21 files changed

+596
-110
lines changed

examples/psql/main.tf

Lines changed: 50 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,33 @@ resource "oci_psql_db_system" "test_db_system" {
7373
system_type = "OCI_OPTIMIZED_STORAGE"
7474
}
7575

76+
resource "oci_psql_db_system" "test_flexdb_system" {
77+
#Required
78+
db_version = "14"
79+
display_name = "tf-flex-test-dbSystem"
80+
network_details {
81+
subnet_id = oci_core_subnet.test_subnet.id
82+
}
83+
shape = "PostgreSQL.VM.Standard.E4.Flex"
84+
storage_details {
85+
is_regionally_durable = true
86+
system_type = "OCI_OPTIMIZED_STORAGE"
87+
}
88+
credentials {
89+
username = "adminUser"
90+
password_details {
91+
password_type = "PLAIN_TEXT"
92+
password = "BEstrO0ng_#11"
93+
}
94+
}
95+
compartment_id = var.compartment_ocid
96+
instance_count = "1"
97+
instance_ocpu_count = "2"
98+
instance_memory_size_in_gbs = "10"
99+
system_type = "OCI_OPTIMIZED_STORAGE"
100+
config_id = oci_psql_configuration.test_flexible_configuration.id
101+
}
102+
76103
# Creating a dbSystem configuration
77104
resource "oci_psql_configuration" "test_configuration" {
78105
#Required
@@ -86,14 +113,34 @@ resource "oci_psql_configuration" "test_configuration" {
86113
}
87114
db_version = "14"
88115
display_name = "terraform test configuration"
89-
instance_memory_size_in_gbs = "64"
90-
instance_ocpu_count = "4"
91116

92117
#Optional
118+
instance_memory_size_in_gbs = "64"
119+
instance_ocpu_count = "4"
93120
description = "test configuration created by terraform"
94121
}
95122

123+
# Creating a dbSystem configuration
124+
resource "oci_psql_configuration" "test_flexible_configuration" {
125+
#Required
126+
compartment_id = var.compartment_ocid
127+
shape = "VM.Standard.E4.Flex"
128+
db_configuration_overrides {
129+
items {
130+
config_key = "effective_io_concurrency"
131+
overriden_config_value = "1"
132+
}
133+
}
134+
db_version = "14"
135+
display_name = "terraform test flex configuration"
136+
#Optional
137+
instance_memory_size_in_gbs = "0"
138+
instance_ocpu_count = "0"
139+
is_flexible = true
140+
description = "test configuration created by terraform"
141+
}
142+
96143
data "oci_psql_configurations" "test_configurations" {
97144
compartment_id = var.compartment_ocid
98145

99-
}
146+
}

internal/integrationtest/psql_configuration_test.go

Lines changed: 61 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import (
1010
"testing"
1111
"time"
1212

13+
"github.com/oracle/terraform-provider-oci/internal/resourcediscovery"
14+
1315
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
1416
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1517
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
@@ -19,7 +21,6 @@ import (
1921
"github.com/oracle/terraform-provider-oci/httpreplay"
2022
"github.com/oracle/terraform-provider-oci/internal/acctest"
2123
tf_client "github.com/oracle/terraform-provider-oci/internal/client"
22-
"github.com/oracle/terraform-provider-oci/internal/resourcediscovery"
2324
"github.com/oracle/terraform-provider-oci/internal/tfresource"
2425
"github.com/oracle/terraform-provider-oci/internal/utils"
2526
)
@@ -38,7 +39,7 @@ var (
3839
PsqlConfigurationDataSourceRepresentation = map[string]interface{}{
3940
"compartment_id": acctest.Representation{RepType: acctest.Optional, Create: `${var.compartment_id}`},
4041
"db_version": acctest.Representation{RepType: acctest.Optional, Create: `14`},
41-
"shape": acctest.Representation{RepType: acctest.Optional, Create: `VM.Standard.E4.Flex.4.64GB`},
42+
"shape": acctest.Representation{RepType: acctest.Optional, Create: `VM.Standard.E4.Flex`},
4243
"state": acctest.Representation{RepType: acctest.Optional, Create: `ACTIVE`},
4344
"filter": acctest.RepresentationGroup{RepType: acctest.Required, Group: PsqlConfigurationDataSourceFilterRepresentation},
4445
}
@@ -58,15 +59,34 @@ var (
5859
}
5960

6061
PsqlConfigurationRepresentation = map[string]interface{}{
61-
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
62-
"db_configuration_overrides": acctest.RepresentationGroup{RepType: acctest.Required, Group: PsqlConfigurationDbConfigurationOverridesRepresentation},
62+
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
63+
"db_configuration_overrides": acctest.RepresentationGroup{RepType: acctest.Required, Group: PsqlConfigurationDbConfigurationOverridesRepresentation},
64+
6365
"db_version": acctest.Representation{RepType: acctest.Required, Create: `14`},
6466
"display_name": acctest.Representation{RepType: acctest.Required, Create: `terraform-test-config`, Update: `terraform-test-config-2`},
6567
"instance_memory_size_in_gbs": acctest.Representation{RepType: acctest.Required, Create: `64`},
6668
"instance_ocpu_count": acctest.Representation{RepType: acctest.Required, Create: `4`},
6769
"shape": acctest.Representation{RepType: acctest.Required, Create: `VM.Standard.E4.Flex`},
6870
"defined_tags": acctest.Representation{RepType: acctest.Optional, Create: `${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "value")}`},
6971
"description": acctest.Representation{RepType: acctest.Optional, Create: `description1`, Update: `description2`},
72+
"is_flexible": acctest.Representation{RepType: acctest.Optional, Create: `false`},
73+
"freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"bar-key": "value"}, Update: map[string]string{"Department": "Accounting"}},
74+
"system_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"sys-namespace.tag-key": "value"}},
75+
"lifecycle": acctest.RepresentationGroup{RepType: acctest.Required, Group: ignoreChangesRep},
76+
}
77+
78+
PsqlFlexConfigurationRepresentation = map[string]interface{}{
79+
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
80+
"db_configuration_overrides": acctest.RepresentationGroup{RepType: acctest.Required, Group: PsqlConfigurationDbConfigurationOverridesRepresentation},
81+
82+
"db_version": acctest.Representation{RepType: acctest.Required, Create: `14`},
83+
"display_name": acctest.Representation{RepType: acctest.Required, Create: `terraform-test-config-flex`, Update: `terraform-test-config-flex-2`},
84+
"instance_memory_size_in_gbs": acctest.Representation{RepType: acctest.Optional, Create: `0`},
85+
"instance_ocpu_count": acctest.Representation{RepType: acctest.Optional, Create: `0`},
86+
"shape": acctest.Representation{RepType: acctest.Required, Create: `VM.Standard.E4.Flex`},
87+
"defined_tags": acctest.Representation{RepType: acctest.Optional, Create: `${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "value")}`},
88+
"description": acctest.Representation{RepType: acctest.Optional, Create: `description1`, Update: `description2`},
89+
"is_flexible": acctest.Representation{RepType: acctest.Optional, Create: `true`},
7090
"freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"bar-key": "value"}, Update: map[string]string{"Department": "Accounting"}},
7191
"system_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"sys-namespace.tag-key": "value"}},
7292
"lifecycle": acctest.RepresentationGroup{RepType: acctest.Required, Group: ignoreChangesRep},
@@ -107,9 +127,37 @@ func TestPsqlConfigurationResource_basic(t *testing.T) {
107127
var resId, resId2 string
108128
// Save TF content to Create resource with optional properties. This has to be exactly the same as the config part in the "create with optionals" step in the test.
109129
acctest.SaveConfigContent(config+compartmentIdVariableStr+PsqlConfigurationResourceDependencies+
110-
acctest.GenerateResourceFromRepresentationMap("oci_psql_configuration", "test_configuration", acctest.Optional, acctest.Create, PsqlConfigurationRepresentation), "psql", "configuration", t)
130+
acctest.GenerateResourceFromRepresentationMap("oci_psql_configuration", "test_configuration", acctest.Required, acctest.Create, PsqlConfigurationRepresentation), "psql", "configuration", t)
111131

112132
acctest.ResourceTest(t, testAccCheckPsqlConfigurationDestroy, []resource.TestStep{
133+
// verify flex create
134+
{
135+
Config: config + compartmentIdVariableStr + PsqlConfigurationResourceDependencies +
136+
acctest.GenerateResourceFromRepresentationMap("oci_psql_configuration", "test_configuration", acctest.Optional, acctest.Create, PsqlFlexConfigurationRepresentation),
137+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
138+
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
139+
resource.TestCheckResourceAttr(resourceName, "db_configuration_overrides.#", "1"),
140+
resource.TestCheckResourceAttr(resourceName, "db_configuration_overrides.0.items.#", "1"),
141+
resource.TestCheckResourceAttr(resourceName, "db_configuration_overrides.0.items.0.config_key", "effective_io_concurrency"),
142+
resource.TestCheckResourceAttr(resourceName, "db_configuration_overrides.0.items.0.overriden_config_value", "1"),
143+
resource.TestCheckResourceAttr(resourceName, "db_version", "14"),
144+
resource.TestCheckResourceAttr(resourceName, "display_name", "terraform-test-config-flex"),
145+
resource.TestCheckResourceAttr(resourceName, "instance_memory_size_in_gbs", "0"),
146+
resource.TestCheckResourceAttr(resourceName, "instance_ocpu_count", "0"),
147+
resource.TestCheckResourceAttr(resourceName, "shape", "VM.Standard.E4.Flex"),
148+
149+
func(s *terraform.State) (err error) {
150+
fmt.Println("Testcase for flex shape")
151+
resId, err = acctest.FromInstanceState(s, resourceName, "id")
152+
return err
153+
},
154+
),
155+
},
156+
157+
{
158+
Config: config + compartmentIdVariableStr + PsqlConfigurationResourceDependencies,
159+
},
160+
113161
// verify Create
114162
{
115163
Config: config + compartmentIdVariableStr + PsqlConfigurationResourceDependencies +
@@ -155,6 +203,7 @@ func TestPsqlConfigurationResource_basic(t *testing.T) {
155203
resource.TestCheckResourceAttrSet(resourceName, "id"),
156204
resource.TestCheckResourceAttr(resourceName, "instance_memory_size_in_gbs", "64"),
157205
resource.TestCheckResourceAttr(resourceName, "instance_ocpu_count", "4"),
206+
resource.TestCheckResourceAttr(resourceName, "is_flexible", "false"),
158207
resource.TestCheckResourceAttr(resourceName, "shape", "VM.Standard.E4.Flex"),
159208
resource.TestCheckResourceAttrSet(resourceName, "state"),
160209
resource.TestCheckResourceAttr(resourceName, "system_tags.%", "0"),
@@ -171,6 +220,7 @@ func TestPsqlConfigurationResource_basic(t *testing.T) {
171220
},
172221
),
173222
},
223+
174224
// verify Update to the compartment (the compartment will be switched back in the next step)
175225
{
176226
Config: config + compartmentIdVariableStr + compartmentIdUVariableStr + PsqlConfigurationResourceDependencies +
@@ -192,6 +242,7 @@ func TestPsqlConfigurationResource_basic(t *testing.T) {
192242
resource.TestCheckResourceAttrSet(resourceName, "id"),
193243
resource.TestCheckResourceAttr(resourceName, "instance_memory_size_in_gbs", "64"),
194244
resource.TestCheckResourceAttr(resourceName, "instance_ocpu_count", "4"),
245+
resource.TestCheckResourceAttr(resourceName, "is_flexible", "false"),
195246
resource.TestCheckResourceAttr(resourceName, "shape", "VM.Standard.E4.Flex"),
196247
resource.TestCheckResourceAttrSet(resourceName, "state"),
197248
resource.TestCheckResourceAttr(resourceName, "system_tags.%", "0"),
@@ -225,6 +276,7 @@ func TestPsqlConfigurationResource_basic(t *testing.T) {
225276
resource.TestCheckResourceAttrSet(resourceName, "id"),
226277
resource.TestCheckResourceAttr(resourceName, "instance_memory_size_in_gbs", "64"),
227278
resource.TestCheckResourceAttr(resourceName, "instance_ocpu_count", "4"),
279+
resource.TestCheckResourceAttr(resourceName, "is_flexible", "false"),
228280
resource.TestCheckResourceAttr(resourceName, "shape", "VM.Standard.E4.Flex"),
229281
resource.TestCheckResourceAttrSet(resourceName, "state"),
230282
resource.TestCheckResourceAttr(resourceName, "system_tags.%", "0"),
@@ -248,7 +300,7 @@ func TestPsqlConfigurationResource_basic(t *testing.T) {
248300
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
249301
resource.TestCheckResourceAttr(datasourceName, "compartment_id", compartmentId),
250302
resource.TestCheckResourceAttr(datasourceName, "db_version", "14"),
251-
resource.TestCheckResourceAttr(datasourceName, "shape", "VM.Standard.E4.Flex.4.64GB"),
303+
resource.TestCheckResourceAttr(datasourceName, "shape", "VM.Standard.E4.Flex"),
252304
resource.TestCheckResourceAttr(datasourceName, "state", "ACTIVE"),
253305

254306
resource.TestCheckResourceAttrSet(datasourceName, "configuration_collection.0.items.0.id"),
@@ -304,6 +356,7 @@ func TestPsqlConfigurationResource_basic(t *testing.T) {
304356
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
305357
resource.TestCheckResourceAttrSet(singularDatasourceName, "configuration_id"),
306358
resource.TestCheckResourceAttr(singularDatasourceName, "compartment_id", compartmentId),
359+
resource.TestCheckResourceAttrSet(singularDatasourceName, "config_type"),
307360
resource.TestCheckResourceAttr(singularDatasourceName, "configuration_details.#", "1"),
308361
resource.TestCheckResourceAttr(singularDatasourceName, "db_version", "14"),
309362
resource.TestCheckResourceAttr(singularDatasourceName, "description", "description2"),
@@ -312,6 +365,8 @@ func TestPsqlConfigurationResource_basic(t *testing.T) {
312365
resource.TestCheckResourceAttrSet(singularDatasourceName, "id"),
313366
resource.TestCheckResourceAttr(singularDatasourceName, "instance_memory_size_in_gbs", "64"),
314367
resource.TestCheckResourceAttr(singularDatasourceName, "instance_ocpu_count", "4"),
368+
resource.TestCheckResourceAttr(singularDatasourceName, "instance_ocpu_count", "4"),
369+
resource.TestCheckResourceAttr(singularDatasourceName, "is_flexible", "false"),
315370
resource.TestCheckResourceAttr(singularDatasourceName, "shape", "VM.Standard.E4.Flex.4.64GB"),
316371
resource.TestCheckResourceAttrSet(singularDatasourceName, "state"),
317372
resource.TestCheckResourceAttr(singularDatasourceName, "system_tags.%", "0"),

0 commit comments

Comments
 (0)