Skip to content

Commit 85636af

Browse files
sivaram-govindasamyMaxrovr
authored andcommitted
Added - Support for Design/Implement CPU architecture agnostic configurations
1 parent a15334b commit 85636af

16 files changed

+208
-30
lines changed

examples/psql/main.tf

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,8 @@ resource "oci_psql_db_system" "test_flexdb_system" {
135135
}
136136
}
137137

138-
# Creating a dbSystem configuration
139-
resource "oci_psql_configuration" "test_configuration" {
138+
# Creating a dbSystem flex configuration
139+
resource "oci_psql_configuration" "test_fixed_configuration" {
140140
#Required
141141
compartment_id = var.compartment_ocid
142142
shape = "VM.Standard.E4.Flex"
@@ -147,15 +147,14 @@ resource "oci_psql_configuration" "test_configuration" {
147147
}
148148
}
149149
db_version = "14"
150-
display_name = "terraform test configuration"
151-
152-
#Optional
150+
display_name = "terraform test configuration"
153151
instance_memory_size_in_gbs = "64"
154152
instance_ocpu_count = "4"
155-
description = "test configuration created by terraform"
153+
is_flexible=false
154+
description = "test fixed configuration created by terraform"
156155
}
157156

158-
# Creating a dbSystem configuration
157+
# Creating a dbSystem flex configuration
159158
resource "oci_psql_configuration" "test_flexible_configuration" {
160159
#Required
161160
compartment_id = var.compartment_ocid
@@ -168,11 +167,33 @@ resource "oci_psql_configuration" "test_flexible_configuration" {
168167
}
169168
db_version = "14"
170169
display_name = "terraform test flex configuration"
170+
171+
#Optional
172+
instance_memory_size_in_gbs = "0"
173+
instance_ocpu_count = "0"
174+
is_flexible = true
175+
description = "test flexible configuration created by terraform"
176+
}
177+
178+
# Creating a dbSystem flex configuration with multiple compatible shapes
179+
resource "oci_psql_configuration" "test_flexible_multiple_comp_configuration" {
180+
#Required
181+
compartment_id = var.compartment_ocid
182+
compatible_shapes = ["VM.Standard.E5.Flex", "VM.Standard.E4.Flex"]
183+
db_configuration_overrides {
184+
items {
185+
config_key = "effective_io_concurrency"
186+
overriden_config_value = "1"
187+
}
188+
}
189+
db_version = "15"
190+
display_name = "terraform test fixed configuration"
191+
171192
#Optional
172193
instance_memory_size_in_gbs = "0"
173194
instance_ocpu_count = "0"
174195
is_flexible = true
175-
description = "test configuration created by terraform"
196+
description = "test flexible configuration with multiple compatible shapes created by terraform"
176197
}
177198

178199
data "oci_psql_configurations" "test_configurations" {

internal/integrationtest/psql_configuration_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,7 @@ func TestPsqlConfigurationResource_basic(t *testing.T) {
193193
acctest.GenerateResourceFromRepresentationMap("oci_psql_configuration", "test_configuration", acctest.Optional, acctest.Create, PsqlConfigurationRepresentation),
194194
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
195195
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
196+
resource.TestCheckResourceAttr(resourceName, "compatible_shapes.#", "1"),
196197
resource.TestCheckResourceAttr(resourceName, "configuration_details.#", "1"),
197198
resource.TestCheckResourceAttr(resourceName, "db_configuration_overrides.#", "1"),
198199
resource.TestCheckResourceAttr(resourceName, "db_configuration_overrides.0.items.#", "1"),
@@ -232,6 +233,7 @@ func TestPsqlConfigurationResource_basic(t *testing.T) {
232233
})),
233234
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
234235
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentIdU),
236+
resource.TestCheckResourceAttr(resourceName, "compatible_shapes.#", "1"),
235237
resource.TestCheckResourceAttr(resourceName, "configuration_details.#", "1"),
236238
resource.TestCheckResourceAttr(resourceName, "db_configuration_overrides.#", "1"),
237239
resource.TestCheckResourceAttr(resourceName, "db_configuration_overrides.0.items.#", "1"),
@@ -266,6 +268,7 @@ func TestPsqlConfigurationResource_basic(t *testing.T) {
266268
acctest.GenerateResourceFromRepresentationMap("oci_psql_configuration", "test_configuration", acctest.Optional, acctest.Update, PsqlConfigurationRepresentation),
267269
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
268270
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
271+
resource.TestCheckResourceAttr(resourceName, "compatible_shapes.#", "1"),
269272
resource.TestCheckResourceAttr(resourceName, "configuration_details.#", "1"),
270273
resource.TestCheckResourceAttr(resourceName, "db_configuration_overrides.#", "1"),
271274
resource.TestCheckResourceAttr(resourceName, "db_configuration_overrides.0.items.#", "1"),
@@ -362,6 +365,7 @@ func TestPsqlConfigurationResource_basic(t *testing.T) {
362365
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
363366
resource.TestCheckResourceAttrSet(singularDatasourceName, "configuration_id"),
364367
resource.TestCheckResourceAttr(singularDatasourceName, "compartment_id", compartmentId),
368+
resource.TestCheckResourceAttr(singularDatasourceName, "compatible_shapes.#", "1"),
365369
resource.TestCheckResourceAttrSet(singularDatasourceName, "config_type"),
366370
resource.TestCheckResourceAttr(singularDatasourceName, "configuration_details.#", "1"),
367371
resource.TestCheckResourceAttr(singularDatasourceName, "db_version", "14"),
@@ -491,6 +495,8 @@ func getPsqlConfigurationIds(compartment string) ([]string, error) {
491495
id := *configuration.Id
492496
resourceIds = append(resourceIds, id)
493497
acctest.AddResourceIdToSweeperResourceIdMap(compartmentId, "ConfigurationId", id)
498+
acctest.SweeperDefaultResourceId[*configuration.DefaultConfigId] = true
499+
494500
}
495501
return resourceIds, nil
496502
}

internal/integrationtest/psql_default_configuration_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ func TestPsqlDefaultConfigurationResource_basic(t *testing.T) {
118118
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
119119
resource.TestCheckResourceAttrSet(singularDatasourceName, "default_configuration_id"),
120120

121+
resource.TestCheckResourceAttr(singularDatasourceName, "compatible_shapes.#", "1"),
121122
resource.TestCheckResourceAttr(singularDatasourceName, "configuration_details.#", "1"),
122123
resource.TestCheckResourceAttrSet(singularDatasourceName, "db_version"),
123124
resource.TestCheckResourceAttrSet(singularDatasourceName, "description"),

internal/service/psql/psql_configuration_data_source.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ func (s *PsqlConfigurationDataSourceCrud) SetData() error {
7070
s.D.Set("compartment_id", *s.Res.CompartmentId)
7171
}
7272

73+
s.D.Set("compatible_shapes", s.Res.CompatibleShapes)
74+
7375
s.D.Set("config_type", s.Res.ConfigType)
7476

7577
if s.Res.ConfigurationDetails != nil {
@@ -82,6 +84,10 @@ func (s *PsqlConfigurationDataSourceCrud) SetData() error {
8284
s.D.Set("db_version", *s.Res.DbVersion)
8385
}
8486

87+
if s.Res.DefaultConfigId != nil {
88+
s.D.Set("default_config_id", *s.Res.DefaultConfigId)
89+
}
90+
8591
if s.Res.DefinedTags != nil {
8692
s.D.Set("defined_tags", tfresource.DefinedTagsToMap(s.Res.DefinedTags))
8793
}

internal/service/psql/psql_configuration_resource.go

Lines changed: 58 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,17 @@ func PsqlConfigurationResource() *schema.Resource {
8080
Type: schema.TypeString,
8181
Required: true,
8282
},
83-
"shape": {
84-
Type: schema.TypeString,
85-
Required: true,
86-
ForceNew: true,
87-
},
8883

8984
// Optional
85+
"compatible_shapes": {
86+
Type: schema.TypeList,
87+
Optional: true,
88+
Computed: true,
89+
Elem: &schema.Schema{
90+
Type: schema.TypeString,
91+
},
92+
ConflictsWith: []string{"shape"},
93+
},
9094
"defined_tags": {
9195
Type: schema.TypeMap,
9296
Optional: true,
@@ -123,6 +127,13 @@ func PsqlConfigurationResource() *schema.Resource {
123127
Computed: true,
124128
ForceNew: true,
125129
},
130+
"shape": {
131+
Type: schema.TypeString,
132+
Optional: true,
133+
Computed: true,
134+
ForceNew: true,
135+
ConflictsWith: []string{"compatible_shapes"},
136+
},
126137
"system_tags": {
127138
Type: schema.TypeMap,
128139
Optional: true,
@@ -194,6 +205,10 @@ func PsqlConfigurationResource() *schema.Resource {
194205
},
195206
},
196207
},
208+
"default_config_id": {
209+
Type: schema.TypeString,
210+
Computed: true,
211+
},
197212
"lifecycle_details": {
198213
Type: schema.TypeString,
199214
Computed: true,
@@ -284,6 +299,19 @@ func (s *PsqlConfigurationResourceCrud) Create() error {
284299
request.CompartmentId = &tmp
285300
}
286301

302+
if compatibleShapes, ok := s.D.GetOkExists("compatible_shapes"); ok {
303+
interfaces := compatibleShapes.([]interface{})
304+
tmp := make([]string, len(interfaces))
305+
for i := range interfaces {
306+
if interfaces[i] != nil {
307+
tmp[i] = interfaces[i].(string)
308+
}
309+
}
310+
if len(tmp) != 0 || s.D.HasChange("compatible_shapes") {
311+
request.CompatibleShapes = tmp
312+
}
313+
}
314+
287315
if dbConfigurationOverrides, ok := s.D.GetOkExists("db_configuration_overrides"); ok {
288316
if tmpList := dbConfigurationOverrides.([]interface{}); len(tmpList) > 0 {
289317
fieldKeyFormat := fmt.Sprintf("%s.%d.%%s", "db_configuration_overrides", 0)
@@ -390,6 +418,19 @@ func (s *PsqlConfigurationResourceCrud) Update() error {
390418
}
391419
request := oci_psql.UpdateConfigurationRequest{}
392420

421+
if compatibleShapes, ok := s.D.GetOkExists("compatible_shapes"); ok {
422+
interfaces := compatibleShapes.([]interface{})
423+
tmp := make([]string, len(interfaces))
424+
for i := range interfaces {
425+
if interfaces[i] != nil {
426+
tmp[i] = interfaces[i].(string)
427+
}
428+
}
429+
if len(tmp) != 0 || s.D.HasChange("compatible_shapes") {
430+
request.CompatibleShapes = tmp
431+
}
432+
}
433+
393434
tmp := s.D.Id()
394435
request.ConfigurationId = &tmp
395436

@@ -443,6 +484,8 @@ func (s *PsqlConfigurationResourceCrud) SetData() error {
443484
s.D.Set("compartment_id", *s.Res.CompartmentId)
444485
}
445486

487+
s.D.Set("compatible_shapes", s.Res.CompatibleShapes)
488+
446489
s.D.Set("config_type", s.Res.ConfigType)
447490

448491
if s.Res.ConfigurationDetails != nil {
@@ -455,6 +498,10 @@ func (s *PsqlConfigurationResourceCrud) SetData() error {
455498
s.D.Set("db_version", *s.Res.DbVersion)
456499
}
457500

501+
if s.Res.DefaultConfigId != nil {
502+
s.D.Set("default_config_id", *s.Res.DefaultConfigId)
503+
}
504+
458505
if s.Res.DefinedTags != nil {
459506
s.D.Set("defined_tags", tfresource.DefinedTagsToMap(s.Res.DefinedTags))
460507
}
@@ -590,10 +637,16 @@ func ConfigurationSummaryToMap(obj oci_psql.ConfigurationSummary) map[string]int
590637
result["compartment_id"] = string(*obj.CompartmentId)
591638
}
592639

640+
result["compatible_shapes"] = obj.CompatibleShapes
641+
593642
if obj.DbVersion != nil {
594643
result["db_version"] = string(*obj.DbVersion)
595644
}
596645

646+
if obj.DefaultConfigId != nil {
647+
result["default_config_id"] = string(*obj.DefaultConfigId)
648+
}
649+
597650
if obj.DefinedTags != nil {
598651
result["defined_tags"] = tfresource.DefinedTagsToMap(obj.DefinedTags)
599652
}

internal/service/psql/psql_configurations_data_source.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,18 @@ func PsqlConfigurationsDataSource() *schema.Resource {
3838
Type: schema.TypeString,
3939
Optional: true,
4040
},
41+
"instance_memory_size_in_gbs": {
42+
Type: schema.TypeInt,
43+
Optional: true,
44+
},
45+
"instance_ocpu_count": {
46+
Type: schema.TypeInt,
47+
Optional: true,
48+
},
4149
"shape": {
4250
Type: schema.TypeString,
4351
Optional: true,
52+
Computed: true,
4453
},
4554
"state": {
4655
Type: schema.TypeString,
@@ -109,6 +118,16 @@ func (s *PsqlConfigurationsDataSourceCrud) Get() error {
109118
request.DisplayName = &tmp
110119
}
111120

121+
if instanceMemorySizeInGBs, ok := s.D.GetOkExists("instance_memory_size_in_gbs"); ok {
122+
tmp := instanceMemorySizeInGBs.(int)
123+
request.InstanceMemorySizeInGBs = &tmp
124+
}
125+
126+
if instanceOcpuCount, ok := s.D.GetOkExists("instance_ocpu_count"); ok {
127+
tmp := instanceOcpuCount.(int)
128+
request.InstanceOcpuCount = &tmp
129+
}
130+
112131
if shape, ok := s.D.GetOkExists("shape"); ok {
113132
tmp := shape.(string)
114133
request.Shape = &tmp

internal/service/psql/psql_default_configuration_data_source.go

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,15 @@ func PsqlDefaultConfigurationDataSource() *schema.Resource {
2222
Required: true,
2323
},
2424
// Computed
25+
"compatible_shapes": {
26+
Type: schema.TypeList,
27+
Optional: true,
28+
Computed: true,
29+
Elem: &schema.Schema{
30+
Type: schema.TypeString,
31+
},
32+
ConflictsWith: []string{"shape"},
33+
},
2534
"configuration_details": {
2635
Type: schema.TypeList,
2736
Computed: true,
@@ -105,8 +114,10 @@ func PsqlDefaultConfigurationDataSource() *schema.Resource {
105114
Computed: true,
106115
},
107116
"shape": {
108-
Type: schema.TypeString,
109-
Computed: true,
117+
Type: schema.TypeString,
118+
Optional: true,
119+
Computed: true,
120+
ConflictsWith: []string{"compatible_shapes"},
110121
},
111122
"state": {
112123
Type: schema.TypeString,
@@ -164,6 +175,8 @@ func (s *PsqlDefaultConfigurationDataSourceCrud) SetData() error {
164175

165176
s.D.SetId(*s.Res.Id)
166177

178+
s.D.Set("compatible_shapes", s.Res.CompatibleShapes)
179+
167180
if s.Res.ConfigurationDetails != nil {
168181
s.D.Set("configuration_details", []interface{}{DefaultConfigurationDetailsToMap(s.Res.ConfigurationDetails)})
169182
} else {

internal/service/psql/psql_default_configurations_data_source.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,18 @@ func PsqlDefaultConfigurationsDataSource() *schema.Resource {
3030
Type: schema.TypeString,
3131
Optional: true,
3232
},
33+
"instance_memory_size_in_gbs": {
34+
Type: schema.TypeInt,
35+
Optional: true,
36+
},
37+
"instance_ocpu_count": {
38+
Type: schema.TypeInt,
39+
Optional: true,
40+
},
3341
"shape": {
3442
Type: schema.TypeString,
3543
Optional: true,
44+
Computed: true,
3645
},
3746
"state": {
3847
Type: schema.TypeString,
@@ -53,6 +62,14 @@ func PsqlDefaultConfigurationsDataSource() *schema.Resource {
5362
// Optional
5463

5564
// Computed
65+
"compatible_shapes": {
66+
Type: schema.TypeList,
67+
Optional: true,
68+
Computed: true,
69+
Elem: &schema.Schema{
70+
Type: schema.TypeString,
71+
},
72+
},
5673
"configuration_details": {
5774
Type: schema.TypeList,
5875
Computed: true,
@@ -197,6 +214,16 @@ func (s *PsqlDefaultConfigurationsDataSourceCrud) Get() error {
197214
request.DisplayName = &tmp
198215
}
199216

217+
if instanceMemorySizeInGBs, ok := s.D.GetOkExists("instance_memory_size_in_gbs"); ok {
218+
tmp := instanceMemorySizeInGBs.(int)
219+
request.InstanceMemorySizeInGBs = &tmp
220+
}
221+
222+
if instanceOcpuCount, ok := s.D.GetOkExists("instance_ocpu_count"); ok {
223+
tmp := instanceOcpuCount.(int)
224+
request.InstanceOcpuCount = &tmp
225+
}
226+
200227
if shape, ok := s.D.GetOkExists("shape"); ok {
201228
tmp := shape.(string)
202229
request.Shape = &tmp
@@ -306,6 +333,8 @@ func DefaultConfigurationDetailsToMap(obj *oci_psql.DefaultConfigurationDetails)
306333
func DefaultConfigurationSummaryToMap(obj oci_psql.DefaultConfigurationSummary) map[string]interface{} {
307334
result := map[string]interface{}{}
308335

336+
result["compatible_shapes"] = obj.CompatibleShapes
337+
309338
if obj.DbVersion != nil {
310339
result["db_version"] = string(*obj.DbVersion)
311340
}

0 commit comments

Comments
 (0)