Skip to content

Commit caa17ba

Browse files
Terraform Team AutomationMaxrovr
authored andcommitted
Added - Support for OpenSearch Resize Terraform update
1 parent 9a5e9a5 commit caa17ba

File tree

6 files changed

+343
-49
lines changed

6 files changed

+343
-49
lines changed

examples/opensearch/opensearch_cluster/main.tf

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,30 @@
11
// Copyright (c) 2017, 2023, Oracle and/or its affiliates. All rights reserved.
22
// Licensed under the Mozilla Public License v2.0
33

4-
variable "tenancy_ocid" {}
5-
variable "user_ocid" {}
6-
variable "fingerprint" {}
7-
variable "private_key_path" {}
8-
variable "region" {}
9-
variable "compartment_id" {}
4+
variable "tenancy_ocid" {
5+
type = string
6+
default = "ocid1.tenancy.oc1..aaaaaaaajoua5f4hwv5dtcwq43hhk7d55m4uxqfg4pwj5uipmjcqpht4upgq"
7+
}
8+
variable "user_ocid" {
9+
type = string
10+
default = "TODO"
11+
}
12+
variable "fingerprint" {
13+
type = string
14+
default = "TODO"
15+
}
16+
variable "private_key_path" {
17+
type = string
18+
default = "TODO"
19+
}
20+
variable "region" {
21+
type = string
22+
default = "us-ashburn-1"
23+
}
24+
variable "compartment_id" {
25+
type = string
26+
default = "ocid1.compartment.oc1..aaaaaaaayxkbos7zkio4jk7sawovt7phmz3plakrsvfyxcseewtbqbgvzrxq"
27+
}
1028

1129
resource "oci_core_vcn" "test_vcn" {
1230
cidr_block = "10.0.0.0/16"
@@ -64,7 +82,7 @@ variable "opensearch_cluster_master_node_host_bare_metal_shape" {
6482
}
6583

6684
variable "opensearch_cluster_master_node_host_memory_gb" {
67-
default = 16
85+
default = 20
6886
}
6987

7088
variable "opensearch_cluster_master_node_host_ocpu_count" {

internal/integrationtest/opensearch_opensearch_cluster_test.go

Lines changed: 151 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ var (
5757
"data_node_storage_gb": acctest.Representation{RepType: acctest.Required, Create: `50`},
5858
"display_name": acctest.Representation{RepType: acctest.Required, Create: `tf_provider_cluster_updated`, Update: `tf_provider_cluster_updated`},
5959
"master_node_count": acctest.Representation{RepType: acctest.Required, Create: `1`},
60-
"master_node_host_memory_gb": acctest.Representation{RepType: acctest.Required, Create: `16`},
60+
"master_node_host_memory_gb": acctest.Representation{RepType: acctest.Required, Create: `20`},
6161
"master_node_host_ocpu_count": acctest.Representation{RepType: acctest.Required, Create: `1`},
6262
"master_node_host_type": acctest.Representation{RepType: acctest.Required, Create: `FLEX`},
6363
"opendashboard_node_count": acctest.Representation{RepType: acctest.Required, Create: `1`},
@@ -84,7 +84,7 @@ var (
8484
"data_node_storage_gb": acctest.Representation{RepType: acctest.Required, Create: `50`},
8585
"display_name": acctest.Representation{RepType: acctest.Required, Create: `tf_provider_cluster_updated`, Update: `tf_provider_cluster_updated`},
8686
"master_node_count": acctest.Representation{RepType: acctest.Required, Create: `1`},
87-
"master_node_host_memory_gb": acctest.Representation{RepType: acctest.Required, Create: `16`},
87+
"master_node_host_memory_gb": acctest.Representation{RepType: acctest.Required, Create: `20`},
8888
"master_node_host_ocpu_count": acctest.Representation{RepType: acctest.Required, Create: `1`},
8989
"master_node_host_type": acctest.Representation{RepType: acctest.Required, Create: `FLEX`},
9090
"opendashboard_node_count": acctest.Representation{RepType: acctest.Required, Create: `1`},
@@ -104,6 +104,60 @@ var (
104104
"lifecycle": acctest.RepresentationGroup{RepType: acctest.Required, Group: ignoreOpenSearchSystemTagsChangesRep},
105105
}
106106

107+
OpensearchOpensearchClusterHorizontalResizeRepresentation = map[string]interface{}{
108+
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
109+
"data_node_count": acctest.Representation{RepType: acctest.Required, Create: `1`, Update: `2`},
110+
"data_node_host_memory_gb": acctest.Representation{RepType: acctest.Required, Create: `20`},
111+
"data_node_host_ocpu_count": acctest.Representation{RepType: acctest.Required, Create: `2`},
112+
"data_node_host_type": acctest.Representation{RepType: acctest.Required, Create: `FLEX`},
113+
"data_node_storage_gb": acctest.Representation{RepType: acctest.Required, Create: `50`},
114+
"display_name": acctest.Representation{RepType: acctest.Required, Create: `tf_provider_cluster_updated`, Update: `tf_provider_cluster_updated`},
115+
"master_node_count": acctest.Representation{RepType: acctest.Required, Create: `1`},
116+
"master_node_host_memory_gb": acctest.Representation{RepType: acctest.Required, Create: `20`},
117+
"master_node_host_ocpu_count": acctest.Representation{RepType: acctest.Required, Create: `1`},
118+
"master_node_host_type": acctest.Representation{RepType: acctest.Required, Create: `FLEX`},
119+
"opendashboard_node_count": acctest.Representation{RepType: acctest.Required, Create: `1`},
120+
"opendashboard_node_host_memory_gb": acctest.Representation{RepType: acctest.Required, Create: `10`},
121+
"opendashboard_node_host_ocpu_count": acctest.Representation{RepType: acctest.Required, Create: `2`},
122+
"software_version": acctest.Representation{RepType: acctest.Required, Create: `1.2.4`, Update: `1.2.4`},
123+
"subnet_compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
124+
"subnet_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_core_subnet.test_subnet.id}`},
125+
"vcn_compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
126+
"vcn_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_core_vcn.test_vcn.id}`},
127+
"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")}`},
128+
"freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"bar-key": "value"}, Update: map[string]string{"Department": "Accounting"}},
129+
"system_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"sys-namespace.tag-key": "value"}, Update: map[string]string{"sys-namespace.tag-key": "updatedValue"}},
130+
"security_mode": acctest.Representation{RepType: acctest.Optional, Create: `DISABLED`},
131+
"lifecycle": acctest.RepresentationGroup{RepType: acctest.Required, Group: ignoreOpenSearchSystemTagsChangesRep},
132+
}
133+
134+
OpensearchOpensearchClusterVerticalResizeRepresentation = map[string]interface{}{
135+
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
136+
"data_node_count": acctest.Representation{RepType: acctest.Required, Create: `1`, Update: `2`},
137+
"data_node_host_memory_gb": acctest.Representation{RepType: acctest.Required, Create: `20`, Update: `40`},
138+
"data_node_host_ocpu_count": acctest.Representation{RepType: acctest.Required, Create: `2`, Update: `4`},
139+
"data_node_host_type": acctest.Representation{RepType: acctest.Required, Create: `FLEX`},
140+
"data_node_storage_gb": acctest.Representation{RepType: acctest.Required, Create: `50`},
141+
"display_name": acctest.Representation{RepType: acctest.Required, Create: `tf_provider_cluster_updated`, Update: `tf_provider_cluster_updated`},
142+
"master_node_count": acctest.Representation{RepType: acctest.Required, Create: `1`},
143+
"master_node_host_memory_gb": acctest.Representation{RepType: acctest.Required, Create: `20`},
144+
"master_node_host_ocpu_count": acctest.Representation{RepType: acctest.Required, Create: `1`},
145+
"master_node_host_type": acctest.Representation{RepType: acctest.Required, Create: `FLEX`},
146+
"opendashboard_node_count": acctest.Representation{RepType: acctest.Required, Create: `1`},
147+
"opendashboard_node_host_memory_gb": acctest.Representation{RepType: acctest.Required, Create: `10`},
148+
"opendashboard_node_host_ocpu_count": acctest.Representation{RepType: acctest.Required, Create: `2`},
149+
"software_version": acctest.Representation{RepType: acctest.Required, Create: `1.2.4`, Update: `1.2.4`},
150+
"subnet_compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
151+
"subnet_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_core_subnet.test_subnet.id}`},
152+
"vcn_compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
153+
"vcn_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_core_vcn.test_vcn.id}`},
154+
"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")}`},
155+
"freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"bar-key": "value"}, Update: map[string]string{"Department": "Accounting"}},
156+
"system_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"sys-namespace.tag-key": "value"}, Update: map[string]string{"sys-namespace.tag-key": "updatedValue"}},
157+
"security_mode": acctest.Representation{RepType: acctest.Optional, Create: `DISABLED`},
158+
"lifecycle": acctest.RepresentationGroup{RepType: acctest.Required, Group: ignoreOpenSearchSystemTagsChangesRep},
159+
}
160+
107161
ignoreOpenSearchSystemTagsChangesRep = map[string]interface{}{
108162
"ignore_changes": acctest.Representation{RepType: acctest.Required, Create: []string{`system_tags`, `defined_tags`}},
109163
}
@@ -127,7 +181,7 @@ func TestOpensearchOpensearchClusterResource_basic(t *testing.T) {
127181
datasourceName := "data.oci_opensearch_opensearch_clusters.test_opensearch_clusters"
128182
singularDatasourceName := "data.oci_opensearch_opensearch_cluster.test_opensearch_cluster"
129183

130-
var resId, resId2 string
184+
var resId, resId2, resId3 string
131185
// 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.
132186
acctest.SaveConfigContent(config+compartmentIdVariableStr+OpensearchOpensearchClusterResourceDependencies+
133187
acctest.GenerateResourceFromRepresentationMap("oci_opensearch_opensearch_cluster", "test_opensearch_cluster", acctest.Optional, acctest.Create, OpensearchOpensearchClusterRepresentation), "opensearch", "opensearchCluster", t)
@@ -146,7 +200,7 @@ func TestOpensearchOpensearchClusterResource_basic(t *testing.T) {
146200
resource.TestCheckResourceAttr(resourceName, "data_node_storage_gb", "50"),
147201
resource.TestCheckResourceAttr(resourceName, "display_name", "tf_provider_cluster_updated"),
148202
resource.TestCheckResourceAttr(resourceName, "master_node_count", "1"),
149-
resource.TestCheckResourceAttr(resourceName, "master_node_host_memory_gb", "16"),
203+
resource.TestCheckResourceAttr(resourceName, "master_node_host_memory_gb", "20"),
150204
resource.TestCheckResourceAttr(resourceName, "master_node_host_ocpu_count", "1"),
151205
resource.TestCheckResourceAttr(resourceName, "master_node_host_type", "FLEX"),
152206
resource.TestCheckResourceAttr(resourceName, "opendashboard_node_count", "1"),
@@ -164,7 +218,97 @@ func TestOpensearchOpensearchClusterResource_basic(t *testing.T) {
164218
},
165219
),
166220
},
221+
// verify horizontal resize
222+
{
223+
Config: config + compartmentIdVariableStr + OpensearchOpensearchClusterResourceDependencies +
224+
acctest.GenerateResourceFromRepresentationMap("oci_opensearch_opensearch_cluster", "test_opensearch_cluster", acctest.Optional, acctest.Update, OpensearchOpensearchClusterHorizontalResizeRepresentation),
225+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
226+
227+
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
228+
resource.TestCheckResourceAttr(resourceName, "data_node_count", "2"),
229+
resource.TestCheckResourceAttr(resourceName, "data_node_host_memory_gb", "20"),
230+
resource.TestCheckResourceAttr(resourceName, "data_node_host_ocpu_count", "2"),
231+
resource.TestCheckResourceAttr(resourceName, "data_node_host_type", "FLEX"),
232+
resource.TestCheckResourceAttr(resourceName, "data_node_storage_gb", "50"),
233+
resource.TestCheckResourceAttr(resourceName, "display_name", "tf_provider_cluster_updated"),
234+
resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"),
235+
resource.TestCheckResourceAttrSet(resourceName, "id"),
236+
resource.TestCheckResourceAttr(resourceName, "master_node_count", "1"),
237+
resource.TestCheckResourceAttr(resourceName, "master_node_host_memory_gb", "20"),
238+
resource.TestCheckResourceAttr(resourceName, "master_node_host_ocpu_count", "1"),
239+
resource.TestCheckResourceAttr(resourceName, "master_node_host_type", "FLEX"),
240+
resource.TestCheckResourceAttrSet(resourceName, "opendashboard_fqdn"),
241+
resource.TestCheckResourceAttr(resourceName, "opendashboard_node_count", "1"),
242+
resource.TestCheckResourceAttr(resourceName, "opendashboard_node_host_memory_gb", "10"),
243+
resource.TestCheckResourceAttr(resourceName, "opendashboard_node_host_ocpu_count", "2"),
244+
resource.TestCheckResourceAttrSet(resourceName, "opendashboard_private_ip"),
245+
resource.TestCheckResourceAttrSet(resourceName, "opensearch_fqdn"),
246+
resource.TestCheckResourceAttrSet(resourceName, "opensearch_private_ip"),
247+
resource.TestCheckResourceAttr(resourceName, "software_version", "1.2.4"),
248+
resource.TestCheckResourceAttrSet(resourceName, "state"),
249+
resource.TestCheckResourceAttrSet(resourceName, "subnet_compartment_id"),
250+
resource.TestCheckResourceAttrSet(resourceName, "subnet_id"),
251+
resource.TestCheckResourceAttr(resourceName, "system_tags.%", "0"),
252+
resource.TestCheckResourceAttrSet(resourceName, "time_created"),
253+
resource.TestCheckResourceAttrSet(resourceName, "total_storage_gb"),
254+
resource.TestCheckResourceAttrSet(resourceName, "vcn_compartment_id"),
255+
resource.TestCheckResourceAttrSet(resourceName, "vcn_id"),
256+
257+
func(s *terraform.State) (err error) {
258+
resId2, err = acctest.FromInstanceState(s, resourceName, "id")
259+
if resId != resId2 {
260+
return fmt.Errorf("Resource recreated when it was supposed to be updated.")
261+
}
262+
return err
263+
},
264+
),
265+
},
167266

267+
// verify vertical resize
268+
{
269+
Config: config + compartmentIdVariableStr + OpensearchOpensearchClusterResourceDependencies +
270+
acctest.GenerateResourceFromRepresentationMap("oci_opensearch_opensearch_cluster", "test_opensearch_cluster", acctest.Optional, acctest.Update, OpensearchOpensearchClusterVerticalResizeRepresentation),
271+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
272+
273+
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
274+
resource.TestCheckResourceAttr(resourceName, "data_node_count", "2"),
275+
resource.TestCheckResourceAttr(resourceName, "data_node_host_memory_gb", "40"),
276+
resource.TestCheckResourceAttr(resourceName, "data_node_host_ocpu_count", "4"),
277+
resource.TestCheckResourceAttr(resourceName, "data_node_host_type", "FLEX"),
278+
resource.TestCheckResourceAttr(resourceName, "data_node_storage_gb", "50"),
279+
resource.TestCheckResourceAttr(resourceName, "display_name", "tf_provider_cluster_updated"),
280+
resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"),
281+
resource.TestCheckResourceAttrSet(resourceName, "id"),
282+
resource.TestCheckResourceAttr(resourceName, "master_node_count", "1"),
283+
resource.TestCheckResourceAttr(resourceName, "master_node_host_memory_gb", "20"),
284+
resource.TestCheckResourceAttr(resourceName, "master_node_host_ocpu_count", "1"),
285+
resource.TestCheckResourceAttr(resourceName, "master_node_host_type", "FLEX"),
286+
resource.TestCheckResourceAttrSet(resourceName, "opendashboard_fqdn"),
287+
resource.TestCheckResourceAttr(resourceName, "opendashboard_node_count", "1"),
288+
resource.TestCheckResourceAttr(resourceName, "opendashboard_node_host_memory_gb", "10"),
289+
resource.TestCheckResourceAttr(resourceName, "opendashboard_node_host_ocpu_count", "2"),
290+
resource.TestCheckResourceAttrSet(resourceName, "opendashboard_private_ip"),
291+
resource.TestCheckResourceAttrSet(resourceName, "opensearch_fqdn"),
292+
resource.TestCheckResourceAttrSet(resourceName, "opensearch_private_ip"),
293+
resource.TestCheckResourceAttr(resourceName, "software_version", "1.2.4"),
294+
resource.TestCheckResourceAttrSet(resourceName, "state"),
295+
resource.TestCheckResourceAttrSet(resourceName, "subnet_compartment_id"),
296+
resource.TestCheckResourceAttrSet(resourceName, "subnet_id"),
297+
resource.TestCheckResourceAttr(resourceName, "system_tags.%", "0"),
298+
resource.TestCheckResourceAttrSet(resourceName, "time_created"),
299+
resource.TestCheckResourceAttrSet(resourceName, "total_storage_gb"),
300+
resource.TestCheckResourceAttrSet(resourceName, "vcn_compartment_id"),
301+
resource.TestCheckResourceAttrSet(resourceName, "vcn_id"),
302+
303+
func(s *terraform.State) (err error) {
304+
resId3, err = acctest.FromInstanceState(s, resourceName, "id")
305+
if resId2 != resId3 {
306+
return fmt.Errorf("Resource recreated when it was supposed to be updated.")
307+
}
308+
return err
309+
},
310+
),
311+
},
168312
// delete before next Create
169313
{
170314
Config: config + compartmentIdVariableStr + OpensearchOpensearchClusterResourceDependencies,
@@ -184,7 +328,7 @@ func TestOpensearchOpensearchClusterResource_basic(t *testing.T) {
184328
resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"),
185329
resource.TestCheckResourceAttrSet(resourceName, "id"),
186330
resource.TestCheckResourceAttr(resourceName, "master_node_count", "1"),
187-
resource.TestCheckResourceAttr(resourceName, "master_node_host_memory_gb", "16"),
331+
resource.TestCheckResourceAttr(resourceName, "master_node_host_memory_gb", "20"),
188332
resource.TestCheckResourceAttr(resourceName, "master_node_host_ocpu_count", "1"),
189333
resource.TestCheckResourceAttr(resourceName, "master_node_host_type", "FLEX"),
190334
resource.TestCheckResourceAttrSet(resourceName, "opendashboard_fqdn"),
@@ -232,7 +376,7 @@ func TestOpensearchOpensearchClusterResource_basic(t *testing.T) {
232376
resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"),
233377
resource.TestCheckResourceAttrSet(resourceName, "id"),
234378
resource.TestCheckResourceAttr(resourceName, "master_node_count", "1"),
235-
resource.TestCheckResourceAttr(resourceName, "master_node_host_memory_gb", "16"),
379+
resource.TestCheckResourceAttr(resourceName, "master_node_host_memory_gb", "20"),
236380
resource.TestCheckResourceAttr(resourceName, "master_node_host_ocpu_count", "1"),
237381
resource.TestCheckResourceAttr(resourceName, "master_node_host_type", "FLEX"),
238382
resource.TestCheckResourceAttrSet(resourceName, "opendashboard_fqdn"),
@@ -297,7 +441,7 @@ func TestOpensearchOpensearchClusterResource_basic(t *testing.T) {
297441
resource.TestCheckResourceAttr(singularDatasourceName, "freeform_tags.%", "1"),
298442
resource.TestCheckResourceAttrSet(singularDatasourceName, "id"),
299443
resource.TestCheckResourceAttr(singularDatasourceName, "master_node_count", "1"),
300-
resource.TestCheckResourceAttr(singularDatasourceName, "master_node_host_memory_gb", "16"),
444+
resource.TestCheckResourceAttr(singularDatasourceName, "master_node_host_memory_gb", "20"),
301445
resource.TestCheckResourceAttr(singularDatasourceName, "master_node_host_ocpu_count", "1"),
302446
resource.TestCheckResourceAttr(singularDatasourceName, "master_node_host_type", "FLEX"),
303447
resource.TestCheckResourceAttrSet(singularDatasourceName, "opendashboard_fqdn"),

0 commit comments

Comments
 (0)