Skip to content

Commit 9610f0f

Browse files
amitvasudevan7Julia3072
authored andcommitted
Add primaryVnicSubnets while updating instancePool placement Configurations
1 parent d1ac550 commit 9610f0f

File tree

2 files changed

+77
-5
lines changed

2 files changed

+77
-5
lines changed

internal/integrationtest/core_instance_pool_test.go

Lines changed: 63 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,14 @@ var (
137137
"secondary_vnic_subnets": acctest.RepresentationGroup{RepType: acctest.Required, Group: CoreInstancePoolPlacementConfigurationsSecondaryVnicSubnetsRepresentationIpv6},
138138
}
139139

140+
CoreIpv6SubnetCidrPairRepresentation = map[string]interface{}{
141+
"ipv6subnet_cidr": acctest.Representation{RepType: acctest.Required, Create: `${substr(oci_core_vcn.test_vcn.ipv6cidr_blocks[0], 0, length(oci_core_vcn.test_vcn.ipv6cidr_blocks[0]) - 2)}${64}`,
142+
Update: `${substr(oci_core_vcn.test_vcn.ipv6cidr_blocks[0], 0, length(oci_core_vcn.test_vcn.ipv6cidr_blocks[0]) - 7)}a4::/${64}`},
143+
}
144+
140145
CoreInstancePoolPlacementConfigurationsPrimaryVnicSubnetsRepresentation = map[string]interface{}{
141-
"subnet_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_core_subnet.test_subnet.id}`},
142-
"ipv6address_ipv6subnet_cidr_pair_details": acctest.RepresentationGroup{RepType: acctest.Optional, Group: CoreIpv6AddressIpv6SubnetCidrPairRepresentation},
146+
"subnet_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_core_subnet.test_subnet.id}`, Update: `${oci_core_subnet.test_subnet2.id}`},
147+
"ipv6address_ipv6subnet_cidr_pair_details": acctest.RepresentationGroup{RepType: acctest.Optional, Group: CoreIpv6SubnetCidrPairRepresentation},
143148
"is_assign_ipv6ip": acctest.Representation{RepType: acctest.Optional, Create: `true`},
144149
}
145150

@@ -155,7 +160,7 @@ var (
155160
}
156161
CoreInstancePoolPlacementConfigurationsSecondaryVnicSubnetsRepresentationIpv6 = map[string]interface{}{
157162
"subnet_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_core_subnet.test_subnet.id}`},
158-
"display_name": acctest.Representation{RepType: acctest.Optional, Create: `backend-servers-pool`, Update: `displayName2`},
163+
"display_name": acctest.Representation{RepType: acctest.Optional, Create: `backend-servers-pool`},
159164
"ipv6address_ipv6subnet_cidr_pair_details": acctest.RepresentationGroup{RepType: acctest.Optional, Group: CoreIpv6AddressIpv6SubnetCidrPairRepresentation},
160165
"is_assign_ipv6ip": acctest.Representation{RepType: acctest.Optional, Create: `true`},
161166
}
@@ -244,6 +249,10 @@ var (
244249
acctest.GenerateResourceFromRepresentationMap("oci_core_instance_configuration", "test_instance_configuration", acctest.Optional, acctest.Create, acctest.GetUpdatedRepresentationCopy("instance_details.launch_details.launch_options", instanceLaunchOptionsRepresentationForInstanceConfiguration, CoreInstancePoolConfigurationPoolRepresentation)) +
245250
acctest.GenerateResourceFromRepresentationMap("oci_core_instance", "test_instance", acctest.Required, acctest.Create, CoreInstanceRepresentation) +
246251
acctest.GenerateResourceFromRepresentationMap("oci_core_subnet", "test_subnet", acctest.Optional, acctest.Create, CoreSubnetRepresentationIpv6) +
252+
acctest.GenerateResourceFromRepresentationMap("oci_core_subnet", "test_subnet2", acctest.Optional, acctest.Create, acctest.RepresentationCopyWithNewProperties(CoreSubnetRepresentationIpv6, map[string]interface{}{
253+
"cidr_block": acctest.Representation{RepType: acctest.Required, Create: `10.0.10.0/24`, Update: "10.0.10.0/16"},
254+
"dns_label": acctest.Representation{RepType: acctest.Optional, Create: `dnslabel2`},
255+
"ipv6cidr_blocks": acctest.Representation{RepType: acctest.Required, Create: []string{`${substr(oci_core_vcn.test_vcn.ipv6cidr_blocks[0], 0, length(oci_core_vcn.test_vcn.ipv6cidr_blocks[0]) - 7)}a4::/${64}`}}})) +
247256
acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Optional, acctest.Create, CoreVcnRepresentationIpv6) +
248257
AvailabilityDomainConfig +
249258
DefinedTagsDependencies +
@@ -793,6 +802,56 @@ func TestCoreInstancePoolResourceIpv6_basic(t *testing.T) {
793802
},
794803
),
795804
},
805+
// verify Update is supported with ipv6 supported primarySubnets and secondarySubnets
806+
{
807+
Config: config + compartmentIdVariableStr + CoreInstancePoolResourceDependenciesIpv6 +
808+
acctest.GenerateResourceFromRepresentationMap("oci_core_instance_pool", "test_instance_pool", acctest.Optional, acctest.Update, CoreInstancePoolRepresentationIPv6WithPrimaryVnicSubnets),
809+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
810+
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
811+
//resource.TestCheckResourceAttr(resourceName, "display_name", "backend-servers-pool"),
812+
resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"),
813+
resource.TestCheckResourceAttrSet(resourceName, "id"),
814+
resource.TestCheckResourceAttrSet(resourceName, "instance_configuration_id"),
815+
resource.TestCheckResourceAttr(resourceName, "load_balancers.#", "1"),
816+
resource.TestCheckResourceAttrSet(resourceName, "load_balancers.0.backend_set_name"),
817+
resource.TestCheckResourceAttrSet(resourceName, "load_balancers.0.id"),
818+
resource.TestCheckResourceAttrSet(resourceName, "load_balancers.0.instance_pool_id"),
819+
resource.TestCheckResourceAttrSet(resourceName, "load_balancers.0.load_balancer_id"),
820+
resource.TestCheckResourceAttr(resourceName, "load_balancers.0.port", "10"),
821+
resource.TestCheckResourceAttrSet(resourceName, "load_balancers.0.state"),
822+
resource.TestCheckResourceAttr(resourceName, "load_balancers.0.vnic_selection", "PrimaryVnic"),
823+
resource.TestCheckResourceAttr(resourceName, "placement_configurations.#", "1"),
824+
resource.TestCheckResourceAttrSet(resourceName, "placement_configurations.0.availability_domain"),
825+
resource.TestCheckResourceAttr(resourceName, "placement_configurations.0.fault_domains.#", "1"),
826+
resource.TestCheckResourceAttr(resourceName, "placement_configurations.0.primary_vnic_subnets.#", "1"),
827+
resource.TestCheckResourceAttrSet(resourceName, "placement_configurations.0.primary_vnic_subnets.0.subnet_id"),
828+
resource.TestCheckResourceAttr(resourceName, "placement_configurations.0.primary_vnic_subnets.0.ipv6address_ipv6subnet_cidr_pair_details.#", "1"),
829+
resource.TestCheckResourceAttrSet(resourceName, "placement_configurations.0.primary_vnic_subnets.0.ipv6address_ipv6subnet_cidr_pair_details.0.ipv6subnet_cidr"),
830+
resource.TestCheckResourceAttr(resourceName, "placement_configurations.0.primary_vnic_subnets.0.is_assign_ipv6ip", "true"),
831+
resource.TestCheckResourceAttr(resourceName, "placement_configurations.0.primary_vnic_subnets.0.ipv6address_ipv6subnet_cidr_pair_details.#", "1"),
832+
resource.TestCheckResourceAttrSet(resourceName, "placement_configurations.0.primary_vnic_subnets.0.ipv6address_ipv6subnet_cidr_pair_details.0.ipv6subnet_cidr"),
833+
resource.TestCheckResourceAttr(resourceName, "placement_configurations.0.secondary_vnic_subnets.#", "1"),
834+
resource.TestCheckResourceAttr(resourceName, "placement_configurations.0.secondary_vnic_subnets.0.display_name", "backend-servers-pool"),
835+
resource.TestCheckResourceAttrSet(resourceName, "placement_configurations.0.secondary_vnic_subnets.0.subnet_id"),
836+
resource.TestCheckResourceAttr(resourceName, "placement_configurations.0.secondary_vnic_subnets.0.ipv6address_ipv6subnet_cidr_pair_details.#", "1"),
837+
resource.TestCheckResourceAttrSet(resourceName, "placement_configurations.0.secondary_vnic_subnets.0.ipv6address_ipv6subnet_cidr_pair_details.0.ipv6subnet_cidr"),
838+
resource.TestCheckResourceAttr(resourceName, "placement_configurations.0.secondary_vnic_subnets.0.is_assign_ipv6ip", "true"),
839+
resource.TestCheckResourceAttr(resourceName, "size", "3"),
840+
resource.TestCheckResourceAttrSet(resourceName, "state"),
841+
resource.TestCheckResourceAttrSet(resourceName, "time_created"),
842+
843+
func(s *terraform.State) (err error) {
844+
resId, err = acctest.FromInstanceState(s, resourceName, "id")
845+
if isEnableExportCompartment, _ := strconv.ParseBool(utils.GetEnvSettingWithDefault("enable_export_compartment", "true")); isEnableExportCompartment {
846+
if errExport := resourcediscovery.TestExportCompartmentWithResourceName(&resId, &compartmentId, resourceName); errExport != nil {
847+
return errExport
848+
}
849+
}
850+
return err
851+
},
852+
),
853+
},
854+
796855
// verify singular datasource
797856
{
798857
Config: config +
@@ -804,7 +863,7 @@ func TestCoreInstancePoolResourceIpv6_basic(t *testing.T) {
804863
resource.TestCheckResourceAttrSet(singularDatasourceName, "instance_pool_id"),
805864

806865
resource.TestCheckResourceAttr(singularDatasourceName, "compartment_id", compartmentId),
807-
resource.TestCheckResourceAttr(singularDatasourceName, "display_name", "backend-servers-pool"),
866+
resource.TestCheckResourceAttr(singularDatasourceName, "display_name", "displayName2"),
808867
resource.TestCheckResourceAttr(singularDatasourceName, "freeform_tags.%", "1"),
809868
resource.TestCheckResourceAttrSet(singularDatasourceName, "id"),
810869
resource.TestCheckResourceAttr(singularDatasourceName, "load_balancers.#", "1"),

internal/service/core/core_instance_pool_resource.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -828,7 +828,20 @@ func (s *CoreInstancePoolResourceCrud) mapToUpdateInstancePoolPlacementConfigura
828828

829829
if primarySubnetId, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "primary_subnet_id")); ok {
830830
tmp := primarySubnetId.(string)
831-
result.PrimarySubnetId = &tmp
831+
if tmp != "" {
832+
result.PrimarySubnetId = &tmp
833+
}
834+
}
835+
836+
if primaryVnicSubnets, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "primary_vnic_subnets")); ok {
837+
if tmpList := primaryVnicSubnets.([]interface{}); len(tmpList) > 0 {
838+
fieldKeyFormatNextLevel := fmt.Sprintf("%s.%d.%%s", fmt.Sprintf(fieldKeyFormat, "primary_vnic_subnets"), 0)
839+
tmp, err := s.mapToInstancePoolPlacementPrimarySubnet(fieldKeyFormatNextLevel)
840+
if err != nil {
841+
return result, fmt.Errorf("unable to convert primary_vnic_subnets, encountered error: %v", err)
842+
}
843+
result.PrimaryVnicSubnets = &tmp
844+
}
832845
}
833846

834847
result.SecondaryVnicSubnets = []oci_core.InstancePoolPlacementSecondaryVnicSubnet{}

0 commit comments

Comments
 (0)