Skip to content

Commit 242d83b

Browse files
shavikrasNagaRajuPasunuri
authored andcommitted
Added - OpenSearch API update for Major version upgrade
1 parent f969478 commit 242d83b

File tree

4 files changed

+257
-2
lines changed

4 files changed

+257
-2
lines changed

examples/opensearch/opensearch_cluster/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ variable "opensearch_cluster_opendashboard_node_host_ocpu_count" {
106106
}
107107

108108
variable "opensearch_cluster_software_version" {
109-
default = "2.11.0"
109+
default = "2.15.0"
110110
}
111111

112112
variable "opensearch_cluster_state" {

internal/integrationtest/opensearch_opensearch_cluster_test.go

Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,91 @@ var (
260260
"ping_schedule": acctest.Representation{RepType: acctest.Optional, Update: `30s`},
261261
}
262262

263+
OpensearchOpensearchClusterUpgradeBeforeRepresentation = map[string]interface{}{
264+
"maintenance_details": acctest.RepresentationGroup{RepType: acctest.Optional, Group: OpensearchOpensearchClusterMaintenanceDetailsRepresentation},
265+
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
266+
"data_node_count": acctest.Representation{RepType: acctest.Required, Create: `1`},
267+
"data_node_host_memory_gb": acctest.Representation{RepType: acctest.Required, Create: `20`},
268+
"data_node_host_ocpu_count": acctest.Representation{RepType: acctest.Required, Create: `2`},
269+
"data_node_host_type": acctest.Representation{RepType: acctest.Required, Create: `FLEX`},
270+
"data_node_storage_gb": acctest.Representation{RepType: acctest.Required, Create: `50`},
271+
"display_name": acctest.Representation{RepType: acctest.Required, Create: `tf_provider_cluster_updated`, Update: `tf_provider_cluster_updated`},
272+
"master_node_count": acctest.Representation{RepType: acctest.Required, Create: `1`},
273+
"master_node_host_memory_gb": acctest.Representation{RepType: acctest.Required, Create: `20`},
274+
"master_node_host_ocpu_count": acctest.Representation{RepType: acctest.Required, Create: `1`},
275+
"master_node_host_type": acctest.Representation{RepType: acctest.Required, Create: `FLEX`},
276+
"opendashboard_node_count": acctest.Representation{RepType: acctest.Required, Create: `1`},
277+
"opendashboard_node_host_memory_gb": acctest.Representation{RepType: acctest.Required, Create: `10`},
278+
"opendashboard_node_host_ocpu_count": acctest.Representation{RepType: acctest.Required, Create: `2`},
279+
"software_version": acctest.Representation{RepType: acctest.Required, Create: `1.2.4`},
280+
"subnet_compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
281+
"subnet_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_core_subnet.test_subnet.id}`},
282+
"vcn_compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
283+
"vcn_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_core_vcn.test_vcn.id}`},
284+
"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"}},
285+
"security_mode": acctest.Representation{RepType: acctest.Optional, Create: `DISABLED`},
286+
"lifecycle": acctest.RepresentationGroup{RepType: acctest.Required, Group: ignoreOpenSearchSystemTagsChangesRep},
287+
}
288+
289+
OpensearchOpensearchClusterUpgradeAfterRepresentation = map[string]interface{}{
290+
"maintenance_details": acctest.RepresentationGroup{RepType: acctest.Optional, Group: OpensearchOpensearchClusterMaintenanceDetailsRepresentation},
291+
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
292+
"data_node_count": acctest.Representation{RepType: acctest.Required, Create: `1`},
293+
"data_node_host_memory_gb": acctest.Representation{RepType: acctest.Required, Create: `20`},
294+
"upgrade_major_version_trigger": acctest.Representation{RepType: acctest.Optional, Create: `0`, Update: `1`},
295+
"data_node_host_ocpu_count": acctest.Representation{RepType: acctest.Required, Create: `2`},
296+
"data_node_host_type": acctest.Representation{RepType: acctest.Required, Create: `FLEX`},
297+
"data_node_storage_gb": acctest.Representation{RepType: acctest.Required, Create: `50`},
298+
"display_name": acctest.Representation{RepType: acctest.Required, Create: `tf_provider_cluster_updated`, Update: `tf_provider_cluster_updated`},
299+
"master_node_count": acctest.Representation{RepType: acctest.Required, Create: `1`},
300+
"master_node_host_memory_gb": acctest.Representation{RepType: acctest.Required, Create: `20`},
301+
"master_node_host_ocpu_count": acctest.Representation{RepType: acctest.Required, Create: `1`},
302+
"master_node_host_type": acctest.Representation{RepType: acctest.Required, Create: `FLEX`},
303+
"opendashboard_node_count": acctest.Representation{RepType: acctest.Required, Create: `1`},
304+
"opendashboard_node_host_memory_gb": acctest.Representation{RepType: acctest.Required, Create: `10`},
305+
"opendashboard_node_host_ocpu_count": acctest.Representation{RepType: acctest.Required, Create: `2`},
306+
"software_version": acctest.Representation{RepType: acctest.Required, Create: `2.15.0`, Update: `2.15.0`},
307+
"subnet_compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
308+
"subnet_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_core_subnet.test_subnet.id}`},
309+
"vcn_compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
310+
"vcn_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_core_vcn.test_vcn.id}`},
311+
"freeform_tags": acctest.Representation{RepType: acctest.Optional, Update: map[string]string{"Department": "Accounting"}},
312+
"security_mode": acctest.Representation{RepType: acctest.Optional, Create: `DISABLED`},
313+
"lifecycle": acctest.RepresentationGroup{RepType: acctest.Required, Group: ignoreOpenSearchSystemTagsChangesRep},
314+
}
315+
316+
OpensearchOpensearchClusterRepresentationRemoveCCS = map[string]interface{}{
317+
"maintenance_details": acctest.RepresentationGroup{RepType: acctest.Optional, Group: OpensearchOpensearchClusterMaintenanceDetailsRepresentation},
318+
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
319+
"data_node_count": acctest.Representation{RepType: acctest.Required, Create: `1`},
320+
"data_node_host_memory_gb": acctest.Representation{RepType: acctest.Required, Create: `20`},
321+
"data_node_host_ocpu_count": acctest.Representation{RepType: acctest.Required, Create: `2`},
322+
"data_node_host_type": acctest.Representation{RepType: acctest.Required, Create: `FLEX`},
323+
"data_node_storage_gb": acctest.Representation{RepType: acctest.Required, Create: `50`},
324+
"display_name": acctest.Representation{RepType: acctest.Required, Create: `tf_provider_cluster_updated`, Update: `tf_provider_cluster_updated`},
325+
"master_node_count": acctest.Representation{RepType: acctest.Required, Create: `1`},
326+
"master_node_host_memory_gb": acctest.Representation{RepType: acctest.Required, Create: `20`},
327+
"master_node_host_ocpu_count": acctest.Representation{RepType: acctest.Required, Create: `1`},
328+
"master_node_host_type": acctest.Representation{RepType: acctest.Required, Create: `FLEX`},
329+
"opendashboard_node_count": acctest.Representation{RepType: acctest.Required, Create: `1`},
330+
"opendashboard_node_host_memory_gb": acctest.Representation{RepType: acctest.Required, Create: `10`},
331+
"opendashboard_node_host_ocpu_count": acctest.Representation{RepType: acctest.Required, Create: `2`},
332+
"software_version": acctest.Representation{RepType: acctest.Required, Create: `2.11.0`},
333+
"subnet_compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
334+
"subnet_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_core_subnet.test_subnet.id}`},
335+
"vcn_compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
336+
"vcn_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_core_vcn.test_vcn.id}`},
337+
"freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"bar-key": "value"}},
338+
"system_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"sys-namespace.tag-key": "value"}},
339+
"security_mode": acctest.Representation{RepType: acctest.Optional, Create: `DISABLED`},
340+
"lifecycle": acctest.RepresentationGroup{RepType: acctest.Required, Group: ignoreOpenSearchSystemTagsChangesRep},
341+
}
342+
343+
OpensearchOpensearchClusterResourceDependencies4 = acctest.GenerateResourceFromRepresentationMap("oci_core_subnet", "test_subnet", acctest.Required, acctest.Create, CoreSubnetRepresentation) +
344+
acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Required, acctest.Create, CoreVcnRepresentation) +
345+
acctest.GenerateResourceFromRepresentationMap("oci_identity_user", "test_user", acctest.Required, acctest.Create, IdentityUserRepresentation) +
346+
acctest.GenerateResourceFromRepresentationMap("oci_opensearch_opensearch_cluster", "test_opensearch_cluster_inbound", acctest.Optional, acctest.Update, OpensearchOpensearchClusterRepresentationRemoveCCS)
347+
263348
OpensearchOpensearchClusterResourceDependenciesForCCS = acctest.GenerateResourceFromRepresentationMap("oci_core_subnet", "test_subnet", acctest.Required, acctest.Create, CoreSubnetRepresentation) +
264349
acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Required, acctest.Create, CoreVcnRepresentation) +
265350
acctest.GenerateResourceFromRepresentationMap("oci_identity_user", "test_user", acctest.Required, acctest.Create, IdentityUserRepresentation) +
@@ -425,6 +510,109 @@ func TestOpensearchOpensearchClusterResource_CCS(t *testing.T) {
425510
},
426511
),
427512
},
513+
{
514+
Config: config + compartmentIdVariableStr + OpensearchOpensearchClusterResourceDependencies4,
515+
},
516+
})
517+
}
518+
519+
func TestOpensearchOpensearchClusterResource_upgrade(t *testing.T) {
520+
httpreplay.SetScenario("TestOpensearchOpensearchClusterResource_upgrade")
521+
defer httpreplay.SaveScenario()
522+
config := acctest.ProviderTestConfig()
523+
compartmentId := utils.GetEnvSettingWithBlankDefault("compartment_ocid")
524+
compartmentIdVariableStr := fmt.Sprintf("variable \"compartment_id\" { default = \"%s\" }\n", compartmentId)
525+
resourceName := "oci_opensearch_opensearch_cluster.test_opensearch_cluster"
526+
var resId, resId2 string
527+
// 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.
528+
acctest.SaveConfigContent(config+compartmentIdVariableStr+OpensearchOpensearchClusterResourceDependencies+
529+
acctest.GenerateResourceFromRepresentationMap("oci_opensearch_opensearch_cluster", "test_opensearch_cluster", acctest.Optional, acctest.Create, OpensearchOpensearchClusterUpgradeBeforeRepresentation), "opensearch", "opensearchCluster", t)
530+
acctest.ResourceTest(t, testAccCheckOpensearchOpensearchClusterDestroy, []resource.TestStep{
531+
// verify Create
532+
{
533+
Config: config + compartmentIdVariableStr + OpensearchOpensearchClusterResourceDependencies +
534+
acctest.GenerateResourceFromRepresentationMap("oci_opensearch_opensearch_cluster", "test_opensearch_cluster", acctest.Optional, acctest.Create, OpensearchOpensearchClusterUpgradeBeforeRepresentation),
535+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
536+
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
537+
resource.TestCheckResourceAttr(resourceName, "data_node_count", "1"),
538+
resource.TestCheckResourceAttr(resourceName, "data_node_host_memory_gb", "20"),
539+
resource.TestCheckResourceAttr(resourceName, "data_node_host_ocpu_count", "2"),
540+
resource.TestCheckResourceAttr(resourceName, "data_node_host_type", "FLEX"),
541+
resource.TestCheckResourceAttr(resourceName, "data_node_storage_gb", "50"),
542+
resource.TestCheckResourceAttr(resourceName, "display_name", "tf_provider_cluster_updated"),
543+
resource.TestCheckResourceAttr(resourceName, "master_node_count", "1"),
544+
resource.TestCheckResourceAttr(resourceName, "master_node_host_memory_gb", "20"),
545+
resource.TestCheckResourceAttr(resourceName, "master_node_host_ocpu_count", "1"),
546+
resource.TestCheckResourceAttr(resourceName, "master_node_host_type", "FLEX"),
547+
resource.TestCheckResourceAttrSet(resourceName, "opendashboard_fqdn"),
548+
resource.TestCheckResourceAttr(resourceName, "opendashboard_node_count", "1"),
549+
resource.TestCheckResourceAttr(resourceName, "opendashboard_node_host_memory_gb", "10"),
550+
resource.TestCheckResourceAttr(resourceName, "opendashboard_node_host_ocpu_count", "2"),
551+
resource.TestCheckResourceAttrSet(resourceName, "opendashboard_private_ip"),
552+
resource.TestCheckResourceAttrSet(resourceName, "opensearch_fqdn"),
553+
resource.TestCheckResourceAttrSet(resourceName, "opensearch_private_ip"),
554+
resource.TestCheckResourceAttr(resourceName, "software_version", "1.2.4"),
555+
resource.TestCheckResourceAttrSet(resourceName, "state"),
556+
resource.TestCheckResourceAttrSet(resourceName, "subnet_compartment_id"),
557+
resource.TestCheckResourceAttrSet(resourceName, "subnet_id"),
558+
resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "0"),
559+
resource.TestCheckResourceAttr(resourceName, "system_tags.%", "0"),
560+
resource.TestCheckResourceAttrSet(resourceName, "time_created"),
561+
resource.TestCheckResourceAttrSet(resourceName, "total_storage_gb"),
562+
resource.TestCheckResourceAttrSet(resourceName, "vcn_compartment_id"),
563+
resource.TestCheckResourceAttrSet(resourceName, "vcn_id"),
564+
func(s *terraform.State) (err error) {
565+
resId, err = acctest.FromInstanceState(s, resourceName, "id")
566+
return err
567+
},
568+
),
569+
},
570+
// verify major version upgrade
571+
{
572+
Config: func() string {
573+
configStr := config + compartmentIdVariableStr + OpensearchOpensearchClusterResourceDependencies +
574+
acctest.GenerateResourceFromRepresentationMap("oci_opensearch_opensearch_cluster", "test_opensearch_cluster", acctest.Optional, acctest.Update, OpensearchOpensearchClusterUpgradeAfterRepresentation)
575+
return configStr
576+
}(),
577+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
578+
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
579+
resource.TestCheckResourceAttr(resourceName, "data_node_count", "1"),
580+
resource.TestCheckResourceAttr(resourceName, "data_node_host_memory_gb", "20"),
581+
resource.TestCheckResourceAttr(resourceName, "data_node_host_ocpu_count", "2"),
582+
resource.TestCheckResourceAttr(resourceName, "data_node_host_type", "FLEX"),
583+
resource.TestCheckResourceAttr(resourceName, "data_node_storage_gb", "50"),
584+
resource.TestCheckResourceAttr(resourceName, "display_name", "tf_provider_cluster_updated"),
585+
resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"),
586+
resource.TestCheckResourceAttrSet(resourceName, "id"),
587+
resource.TestCheckResourceAttr(resourceName, "master_node_count", "1"),
588+
resource.TestCheckResourceAttr(resourceName, "master_node_host_memory_gb", "20"),
589+
resource.TestCheckResourceAttr(resourceName, "master_node_host_ocpu_count", "1"),
590+
resource.TestCheckResourceAttr(resourceName, "master_node_host_type", "FLEX"),
591+
resource.TestCheckResourceAttrSet(resourceName, "opendashboard_fqdn"),
592+
resource.TestCheckResourceAttr(resourceName, "opendashboard_node_count", "1"),
593+
resource.TestCheckResourceAttr(resourceName, "opendashboard_node_host_memory_gb", "10"),
594+
resource.TestCheckResourceAttr(resourceName, "opendashboard_node_host_ocpu_count", "2"),
595+
resource.TestCheckResourceAttrSet(resourceName, "opendashboard_private_ip"),
596+
resource.TestCheckResourceAttrSet(resourceName, "opensearch_fqdn"),
597+
resource.TestCheckResourceAttrSet(resourceName, "opensearch_private_ip"),
598+
resource.TestCheckResourceAttr(resourceName, "software_version", "2.15.0"),
599+
resource.TestCheckResourceAttrSet(resourceName, "state"),
600+
resource.TestCheckResourceAttrSet(resourceName, "subnet_compartment_id"),
601+
resource.TestCheckResourceAttrSet(resourceName, "subnet_id"),
602+
resource.TestCheckResourceAttr(resourceName, "system_tags.%", "0"),
603+
resource.TestCheckResourceAttrSet(resourceName, "time_created"),
604+
resource.TestCheckResourceAttrSet(resourceName, "total_storage_gb"),
605+
resource.TestCheckResourceAttrSet(resourceName, "vcn_compartment_id"),
606+
resource.TestCheckResourceAttrSet(resourceName, "vcn_id"),
607+
func(s *terraform.State) (err error) {
608+
resId2, err = acctest.FromInstanceState(s, resourceName, "id")
609+
if resId != resId2 {
610+
return fmt.Errorf("Resource recreated when it was supposed to be updated.")
611+
}
612+
return err
613+
},
614+
),
615+
},
428616
})
429617
}
430618

0 commit comments

Comments
 (0)