@@ -892,6 +892,35 @@ data "oci_kms_keys" "test_keys_dependency_RSA" {
892892 "subnet_id" : acctest.Representation {RepType : acctest .Required , Create : `${oci_core_subnet.test_subnet.id}` },
893893 "state" : acctest.Representation {RepType : acctest .Optional , Create : `STOPPED` , Update : `RUNNING` },
894894 }
895+ instanceUpdateShapeAndCapacityReservation = map [string ]interface {}{
896+ "availability_domain" : acctest.Representation {RepType : acctest .Required , Create : `${data.oci_identity_availability_domains.test_availability_domains.availability_domains.0.name}` },
897+ "compartment_id" : acctest.Representation {RepType : acctest .Required , Create : `${var.compartment_id}` },
898+ "shape" : acctest.Representation {RepType : acctest .Required , Create : `VM.Standard2.1` , Update : `VM.Standard2.2` },
899+ "capacity_reservation_id" : acctest.Representation {RepType : acctest .Required , Create : `${oci_core_compute_capacity_reservation.before_test_compute_capacity_reservation.id}` , Update : `${oci_core_compute_capacity_reservation.after_test_compute_capacity_reservation.id}` },
900+ "create_vnic_details" : acctest.RepresentationGroup {RepType : acctest .Required , Group : CoreInstanceCreateVnicDetailsRepresentation },
901+ "display_name" : acctest.Representation {RepType : acctest .Required , Create : `displayName` },
902+ "source_details" : acctest.RepresentationGroup {RepType : acctest .Required , Group : CoreInstanceSourceDetailsRepresentation },
903+ }
904+ createCapacityReservationForInstanceBeforeUpdate = map [string ]interface {}{
905+ "availability_domain" : acctest.Representation {RepType : acctest .Required , Create : `${data.oci_identity_availability_domains.test_availability_domains.availability_domains.0.name}` },
906+ "compartment_id" : acctest.Representation {RepType : acctest .Required , Create : `${var.compartment_id}` },
907+ "instance_reservation_configs" : acctest.RepresentationGroup {RepType : acctest .Required , Group : setCapacityReservationShapeBeforeUpdate },
908+ "is_default_reservation" : acctest.Representation {RepType : acctest .Required , Create : `false` },
909+ }
910+ setCapacityReservationShapeBeforeUpdate = map [string ]interface {}{
911+ "instance_shape" : acctest.Representation {RepType : acctest .Required , Create : `VM.Standard2.1` },
912+ "reserved_count" : acctest.Representation {RepType : acctest .Required , Create : `1` },
913+ }
914+ createCapacityReservationForInstanceAfterUpdate = map [string ]interface {}{
915+ "availability_domain" : acctest.Representation {RepType : acctest .Required , Create : `${data.oci_identity_availability_domains.test_availability_domains.availability_domains.0.name}` },
916+ "compartment_id" : acctest.Representation {RepType : acctest .Required , Create : `${var.compartment_id}` },
917+ "instance_reservation_configs" : acctest.RepresentationGroup {RepType : acctest .Required , Group : setCapacityReservationShapeAfterUpdate },
918+ "is_default_reservation" : acctest.Representation {RepType : acctest .Required , Create : `false` },
919+ }
920+ setCapacityReservationShapeAfterUpdate = map [string ]interface {}{
921+ "instance_shape" : acctest.Representation {RepType : acctest .Required , Create : `VM.Standard2.2` },
922+ "reserved_count" : acctest.Representation {RepType : acctest .Required , Create : `1` },
923+ }
895924)
896925
897926// issue-routing-tag: core/computeSharedOwnershipVmAndBm
@@ -1879,6 +1908,73 @@ func TestCoreInstanceResource_updateBootVolumeKmsKey(t *testing.T) {
18791908 })
18801909}
18811910
1911+ func TestCoreInstanceResource_updateShapeAndCapacityReservation (t * testing.T ) {
1912+ httpreplay .SetScenario ("TestCoreInstanceResource_updateShapeAndCapacityReservation" )
1913+ defer httpreplay .SaveScenario ()
1914+
1915+ compartmentId := utils .GetEnvSettingWithBlankDefault ("compartment_ocid" )
1916+ compartmentIdVariableStr := fmt .Sprintf ("variable \" compartment_id\" { default = \" %s\" }\n " , compartmentId )
1917+
1918+ resourceName := "oci_core_instance.test_instance"
1919+
1920+ capacityReservationConfig :=
1921+ utils .OciImageIdsVariable +
1922+ acctest .GenerateResourceFromRepresentationMap ("oci_core_network_security_group" , "test_network_security_group" , acctest .Required , acctest .Create , CoreNetworkSecurityGroupRepresentation ) +
1923+ acctest .GenerateResourceFromRepresentationMap ("oci_core_subnet" , "test_subnet" , acctest .Required , acctest .Create , acctest .RepresentationCopyWithNewProperties (CoreSubnetRepresentation , map [string ]interface {}{
1924+ "dns_label" : acctest.Representation {RepType : acctest .Required , Create : `dnslabel` },
1925+ })) +
1926+ acctest .GenerateResourceFromRepresentationMap ("oci_core_vcn" , "test_vcn" , acctest .Required , acctest .Create , acctest .RepresentationCopyWithNewProperties (CoreVcnRepresentation , map [string ]interface {}{
1927+ "dns_label" : acctest.Representation {RepType : acctest .Required , Create : `dnslabel` },
1928+ })) +
1929+ acctest .GenerateResourceFromRepresentationMap ("oci_core_vlan" , "test_vlan" , acctest .Required , acctest .Create ,
1930+ acctest .GetUpdatedRepresentationCopy ("cidr_block" , acctest.Representation {RepType : acctest .Required , Create : `10.0.1.0/30` }, CoreVlanRepresentation )) +
1931+ AvailabilityDomainConfig +
1932+ DefinedTagsDependencies +
1933+ CoreKeyResourceDependencyConfig +
1934+ acctest .ProviderTestConfig () + compartmentIdVariableStr +
1935+ acctest .GenerateResourceFromRepresentationMap ("oci_core_compute_capacity_reservation" , "before_test_compute_capacity_reservation" , acctest .Required , acctest .Create , createCapacityReservationForInstanceBeforeUpdate ) +
1936+ acctest .GenerateResourceFromRepresentationMap ("oci_core_compute_capacity_reservation" , "after_test_compute_capacity_reservation" , acctest .Required , acctest .Create , createCapacityReservationForInstanceAfterUpdate )
1937+
1938+ var resId , resId2 string
1939+ instanceCreationConfig := capacityReservationConfig +
1940+ acctest .GenerateResourceFromRepresentationMap ("oci_core_instance" , "test_instance" , acctest .Required , acctest .Create ,
1941+ instanceUpdateShapeAndCapacityReservation )
1942+ // Save TF content to Create resource with optional properties.
1943+ acctest .SaveConfigContent (instanceCreationConfig , "core" , "instance" , t )
1944+
1945+ acctest .ResourceTest (t , testAccCheckCoreInstanceDestroy , []resource.TestStep {
1946+ // verify Create
1947+ {
1948+ Config : instanceCreationConfig ,
1949+ Check : acctest .ComposeAggregateTestCheckFuncWrapper (
1950+ resource .TestCheckResourceAttr (resourceName , "shape" , "VM.Standard2.1" ),
1951+
1952+ func (s * terraform.State ) (err error ) {
1953+ resId , err = acctest .FromInstanceState (s , resourceName , "id" )
1954+ return err
1955+ },
1956+ ),
1957+ },
1958+ // verify update to add kms key id in source details
1959+ {
1960+ Config : capacityReservationConfig +
1961+ acctest .GenerateResourceFromRepresentationMap ("oci_core_instance" , "test_instance" , acctest .Required , acctest .Update ,
1962+ instanceUpdateShapeAndCapacityReservation ),
1963+ Check : acctest .ComposeAggregateTestCheckFuncWrapper (
1964+ resource .TestCheckResourceAttr (resourceName , "shape" , "VM.Standard2.2" ),
1965+
1966+ func (s * terraform.State ) (err error ) {
1967+ resId2 , err = acctest .FromInstanceState (s , resourceName , "id" )
1968+ if resId != resId2 {
1969+ return fmt .Errorf ("resource recreated when it was supposed to be updated" )
1970+ }
1971+ return err
1972+ },
1973+ ),
1974+ },
1975+ })
1976+ }
1977+
18821978// this test uses a hard coded cluster placement group due to Platform team will not implement
18831979// Terraform provider for MVP stage
18841980func TestCoreInstanceResource_clusterPlacementGroup (t * testing.T ) {
0 commit comments