@@ -26,6 +26,19 @@ import (
2626)
2727
2828var (
29+ ContainerengineNativeVCNMigrationClusterRepresentation = map [string ]interface {}{
30+ "compartment_id" : acctest.Representation {RepType : acctest .Required , Create : `${var.compartment_id}` },
31+ "kubernetes_version" : acctest.Representation {RepType : acctest .Required , Create : `${data.oci_containerengine_cluster_option.test_cluster_option.kubernetes_versions[length(data.oci_containerengine_cluster_option.test_cluster_option.kubernetes_versions)-1]}` },
32+ "name" : acctest.Representation {RepType : acctest .Required , Create : `test_cluster` },
33+ "vcn_id" : acctest.Representation {RepType : acctest .Required , Create : `${oci_core_vcn.test_vcn.id}` },
34+ "endpoint_config" : acctest.RepresentationGroup {RepType : acctest .Optional , Group : ContainerengineNativeVCNMIgrationClusterEndpointConfigRepresentation },
35+ }
36+
37+ ContainerengineNativeVCNMIgrationClusterEndpointConfigRepresentation = map [string ]interface {}{
38+ "nsg_ids" : acctest.Representation {RepType : acctest .Optional , Create : []string {`${oci_core_network_security_group.test_network_security_group.id}` }, Update : []string {}},
39+ "subnet_id" : acctest.Representation {RepType : acctest .Required , Create : `${oci_core_subnet.test_subnet.id}` , Update : `${oci_core_subnet.test_subnet2.id}` },
40+ }
41+
2942 ContainerengineClusterRequiredOnlyResource = ContainerengineClusterResourceDependencies +
3043 acctest .GenerateResourceFromRepresentationMap ("oci_containerengine_cluster" , "test_cluster" , acctest .Required , acctest .Create , ContainerengineClusterRepresentation )
3144
96109 acctest .GenerateDataSourceFromRepresentationMap ("oci_containerengine_cluster_option" , "test_cluster_option" , acctest .Required , acctest .Create , ContainerengineContainerengineClusterOptionSingularDataSourceRepresentation ) +
97110 acctest .GenerateResourceFromRepresentationMap ("oci_core_network_security_group" , "test_network_security_group" , acctest .Required , acctest .Create , CoreNetworkSecurityGroupRepresentation ) +
98111 acctest .GenerateResourceFromRepresentationMap ("oci_core_subnet" , "test_subnet" , acctest .Required , acctest .Create , CoreSubnetRepresentation ) +
112+ acctest .GenerateResourceFromRepresentationMap ("oci_core_subnet" , "test_subnet2" , acctest .Required , acctest .Create , acctest .RepresentationCopyWithNewProperties (CoreSubnetRepresentation , map [string ]interface {}{"cidr_block" : acctest.Representation {RepType : acctest .Required , Create : `10.0.22.0/24` }})) +
99113 acctest .GenerateResourceFromRepresentationMap ("oci_core_vcn" , "test_vcn" , acctest .Required , acctest .Create , acctest .RepresentationCopyWithNewProperties (CoreVcnRepresentation , map [string ]interface {}{
100114 "dns_label" : acctest.Representation {RepType : acctest .Required , Create : `dnslabel` },
101115 })) +
@@ -410,3 +424,114 @@ func ContainerengineClusterSweepResponseFetchOperation(client *tf_client.OracleC
410424 })
411425 return err
412426}
427+
428+ // issue-routing-tag: containerengine/default
429+ func TestContainerengineNativeVcnMigration_test (t * testing.T ) {
430+ httpreplay .SetScenario ("TestContainerengineNativeVcnMigration_test" )
431+ defer httpreplay .SaveScenario ()
432+
433+ config := acctest .ProviderTestConfig ()
434+
435+ compartmentId := utils .GetEnvSettingWithBlankDefault ("compartment_ocid" )
436+ compartmentIdVariableStr := fmt .Sprintf ("variable \" compartment_id\" { default = \" %s\" }\n " , compartmentId )
437+
438+ resourceName := "oci_containerengine_cluster.test_cluster"
439+ singularDatasourceName := "data.oci_containerengine_migrate_to_native_vcn_status.test_migrate_to_native_vcn_status"
440+
441+ var resId , resId2 string
442+
443+ acctest .SaveConfigContent ("" , "" , "" , t )
444+
445+ acctest .ResourceTest (t , nil , []resource.TestStep {
446+ // Create V1h Cluster
447+ {
448+ Config : config + compartmentIdVariableStr + ContainerengineClusterResourceDependencies +
449+ acctest .GenerateResourceFromRepresentationMap ("oci_containerengine_cluster" , "test_cluster" , acctest .Required , acctest .Create , ContainerengineNativeVCNMigrationClusterRepresentation ),
450+ Check : acctest .ComposeAggregateTestCheckFuncWrapper (
451+ resource .TestCheckResourceAttr (resourceName , "compartment_id" , compartmentId ),
452+ resource .TestCheckResourceAttrSet (resourceName , "kubernetes_version" ),
453+ resource .TestCheckResourceAttr (resourceName , "name" , "test_cluster" ),
454+ resource .TestCheckResourceAttrSet (resourceName , "vcn_id" ),
455+
456+ func (s * terraform.State ) (err error ) {
457+ resId , err = acctest .FromInstanceState (s , resourceName , "id" )
458+ return err
459+ },
460+ ),
461+ },
462+ // verify V1h Cluster migrates to V2
463+ {
464+ Config : config + compartmentIdVariableStr + ContainerengineClusterResourceDependencies +
465+ acctest .GenerateResourceFromRepresentationMap ("oci_containerengine_cluster" , "test_cluster" , acctest .Optional , acctest .Update , ContainerengineNativeVCNMigrationClusterRepresentation ),
466+ Check : acctest .ComposeAggregateTestCheckFuncWrapper (
467+ resource .TestCheckResourceAttr (resourceName , "compartment_id" , compartmentId ),
468+ resource .TestCheckResourceAttr (resourceName , "endpoint_config.#" , "1" ),
469+ resource .TestCheckResourceAttr (resourceName , "endpoint_config.0.is_public_ip_enabled" , "false" ),
470+ resource .TestCheckResourceAttrSet (resourceName , "endpoint_config.0.subnet_id" ),
471+ resource .TestCheckResourceAttrSet (resourceName , "kubernetes_version" ),
472+ resource .TestCheckResourceAttrSet (resourceName , "vcn_id" ),
473+
474+ func (s * terraform.State ) (err error ) {
475+ resId2 , err = acctest .FromInstanceState (s , resourceName , "id" )
476+ if resId != resId2 {
477+ return fmt .Errorf ("Resource recreated when it was supposed to be updated." )
478+ }
479+ return err
480+ },
481+ ),
482+ },
483+ // verify singular datasource
484+ {
485+ Config : config + compartmentIdVariableStr + ContainerengineClusterResourceDependencies + acctest .GenerateResourceFromRepresentationMap ("oci_containerengine_cluster" , "test_cluster" , acctest .Optional , acctest .Update , ContainerengineNativeVCNMigrationClusterRepresentation ) + acctest .GenerateDataSourceFromRepresentationMap (
486+ "oci_containerengine_migrate_to_native_vcn_status" , "test_migrate_to_native_vcn_status" ,
487+ acctest .Optional , acctest .Create , ContainerengineContainerengineMigrateToNativeVcnStatuSingularDataSourceRepresentation ),
488+ Check : acctest .ComposeAggregateTestCheckFuncWrapper (
489+ resource .TestCheckResourceAttrSet (singularDatasourceName , "cluster_id" ),
490+ resource .TestCheckResourceAttrSet (singularDatasourceName , "state" ),
491+ resource .TestCheckResourceAttrSet (singularDatasourceName , "time_decommission_scheduled" ),
492+ ),
493+ },
494+ // delete before next Create
495+ {
496+ Config : config + compartmentIdVariableStr + ContainerengineClusterResourceDependencies ,
497+ },
498+ // create v2 cluster
499+ {
500+ Config : config + compartmentIdVariableStr + ContainerengineClusterResourceDependencies +
501+ acctest .GenerateResourceFromRepresentationMap ("oci_containerengine_cluster" , "test_cluster" , acctest .Optional , acctest .Create , ContainerengineNativeVCNMigrationClusterRepresentation ),
502+ Check : acctest .ComposeAggregateTestCheckFuncWrapper (
503+ resource .TestCheckResourceAttr (resourceName , "compartment_id" , compartmentId ),
504+ resource .TestCheckResourceAttrSet (resourceName , "kubernetes_version" ),
505+ resource .TestCheckResourceAttr (resourceName , "name" , "test_cluster" ),
506+ resource .TestCheckResourceAttrSet (resourceName , "vcn_id" ),
507+ resource .TestCheckResourceAttr (resourceName , "endpoint_config.#" , "1" ),
508+ resource .TestCheckResourceAttr (resourceName , "endpoint_config.0.nsg_ids.#" , "1" ),
509+ resource .TestCheckResourceAttrSet (resourceName , "endpoint_config.0.subnet_id" ),
510+ func (s * terraform.State ) (err error ) {
511+ resId , err = acctest .FromInstanceState (s , resourceName , "id" )
512+ return err
513+ },
514+ ),
515+ },
516+ //verify recreation when changing endpointconfig.subnetId
517+ {
518+ Config : config + compartmentIdVariableStr + ContainerengineClusterResourceDependencies +
519+ acctest .GenerateResourceFromRepresentationMap ("oci_containerengine_cluster" , "test_cluster" , acctest .Optional , acctest .Update , ContainerengineNativeVCNMigrationClusterRepresentation ),
520+ Check : acctest .ComposeAggregateTestCheckFuncWrapper (
521+ resource .TestCheckResourceAttr (resourceName , "compartment_id" , compartmentId ),
522+ resource .TestCheckResourceAttr (resourceName , "endpoint_config.#" , "1" ),
523+ resource .TestCheckResourceAttr (resourceName , "endpoint_config.0.is_public_ip_enabled" , "false" ),
524+ resource .TestCheckResourceAttrSet (resourceName , "endpoint_config.0.subnet_id" ),
525+ resource .TestCheckResourceAttrSet (resourceName , "kubernetes_version" ),
526+ resource .TestCheckResourceAttrSet (resourceName , "vcn_id" ),
527+ func (s * terraform.State ) (err error ) {
528+ resId2 , err = acctest .FromInstanceState (s , resourceName , "id" )
529+ if resId == resId2 {
530+ return fmt .Errorf ("resource is supposed to be recreated when endpoint_config.subnet_id updated" )
531+ }
532+ return err
533+ },
534+ ),
535+ },
536+ })
537+ }
0 commit comments