@@ -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