From f8c5d0333f3f265bec36981babe0cae06e9274fa Mon Sep 17 00:00:00 2001 From: Ujjwal Kumar Date: Tue, 25 Jun 2024 13:43:20 +0530 Subject: [PATCH 1/4] Added an empty check on protocol_state_filtering_mode in bare metal servers --- ibm/service/vpc/resource_ibm_is_bare_metal_server.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ibm/service/vpc/resource_ibm_is_bare_metal_server.go b/ibm/service/vpc/resource_ibm_is_bare_metal_server.go index f6b6607f33..e2ee02e18b 100644 --- a/ibm/service/vpc/resource_ibm_is_bare_metal_server.go +++ b/ibm/service/vpc/resource_ibm_is_bare_metal_server.go @@ -4220,7 +4220,10 @@ func resourceIBMIsBareMetalServerMapToVirtualNetworkInterfacePrototypeAttachment model.EnableInfrastructureNat = core.BoolPtr(modelMap["enable_infrastructure_nat"].(bool)) } if pStateFilteringInt, ok := modelMap["protocol_state_filtering_mode"]; ok { - model.ProtocolStateFilteringMode = core.StringPtr(pStateFilteringInt.(string)) + protocolStateFilteringMode := pStateFilteringInt.(string) + if protocolStateFilteringMode != "" { + model.ProtocolStateFilteringMode = core.StringPtr(protocolStateFilteringMode) + } } if modelMap["ips"] != nil && modelMap["ips"].(*schema.Set).Len() > 0 { ips := []vpcv1.VirtualNetworkInterfaceIPPrototypeIntf{} From 7df574caeab2f43c7e8c58873db6f32ffb21a02f Mon Sep 17 00:00:00 2001 From: Deepak Selvakumar <77007253+deepaksibm@users.noreply.github.com> Date: Tue, 25 Jun 2024 15:19:40 +0530 Subject: [PATCH 2/4] Added empty checks for psf in all resources Added empty checks for psf in all resources Test enhancements --- ...bm_is_bare_metal_server_network_attachment.go | 6 ++++-- ibm/service/vpc/resource_ibm_is_instance.go | 6 ++++-- ...esource_ibm_is_instance_network_attachment.go | 6 ++++-- .../vpc/resource_ibm_is_instance_template.go | 6 ++++-- .../resource_ibm_is_instance_template_test.go | 16 +++++++++++----- .../vpc/resource_ibm_is_share_mount_target.go | 6 ++++-- 6 files changed, 31 insertions(+), 15 deletions(-) diff --git a/ibm/service/vpc/resource_ibm_is_bare_metal_server_network_attachment.go b/ibm/service/vpc/resource_ibm_is_bare_metal_server_network_attachment.go index 7d37c7a7c1..f0084c0aac 100644 --- a/ibm/service/vpc/resource_ibm_is_bare_metal_server_network_attachment.go +++ b/ibm/service/vpc/resource_ibm_is_bare_metal_server_network_attachment.go @@ -1092,8 +1092,10 @@ func resourceIBMIsBareMetalServerNetworkAttachmentMapToBareMetalServerNetworkAtt if modelMap["name"] != nil && modelMap["name"].(string) != "" { model.Name = core.StringPtr(modelMap["name"].(string)) } - if pStateFilteringInt, ok := modelMap["protocol_state_filtering_mode"]; ok { - model.ProtocolStateFilteringMode = core.StringPtr(pStateFilteringInt.(string)) + if pStateFilteringInt, ok := modelMap["protocol_state_filtering_mode"]; ok && modelMap["protocol_state_filtering_mode"] != nil { + if pStateFilteringInt.(string) != "" { + model.ProtocolStateFilteringMode = core.StringPtr(pStateFilteringInt.(string)) + } } if modelMap["primary_ip"] != nil && len(modelMap["primary_ip"].([]interface{})) > 0 { PrimaryIPModel, err := resourceIBMIsBareMetalServerNetworkAttachmentMapToVirtualNetworkInterfacePrimaryIPPrototype(modelMap["primary_ip"].([]interface{})[0].(map[string]interface{})) diff --git a/ibm/service/vpc/resource_ibm_is_instance.go b/ibm/service/vpc/resource_ibm_is_instance.go index 0ebf3f4439..6882324a99 100644 --- a/ibm/service/vpc/resource_ibm_is_instance.go +++ b/ibm/service/vpc/resource_ibm_is_instance.go @@ -6493,8 +6493,10 @@ func resourceIBMIsInstanceMapToVirtualNetworkInterfacePrototypeAttachmentContext if modelMap["name"] != nil && modelMap["name"].(string) != "" { model.Name = core.StringPtr(modelMap["name"].(string)) } - if pStateFilteringInt, ok := modelMap["protocol_state_filtering_mode"]; ok { - model.ProtocolStateFilteringMode = core.StringPtr(pStateFilteringInt.(string)) + if pStateFilteringInt, ok := modelMap["protocol_state_filtering_mode"]; ok && modelMap["protocol_state_filtering_mode"] != nil { + if pStateFilteringInt.(string) != "" { + model.ProtocolStateFilteringMode = core.StringPtr(pStateFilteringInt.(string)) + } } if modelMap["primary_ip"] != nil && len(modelMap["primary_ip"].([]interface{})) > 0 { PrimaryIPModel, err := resourceIBMIsInstanceMapToVirtualNetworkInterfacePrimaryIPReservedIPPrototype(modelMap["primary_ip"].([]interface{})[0].(map[string]interface{})) diff --git a/ibm/service/vpc/resource_ibm_is_instance_network_attachment.go b/ibm/service/vpc/resource_ibm_is_instance_network_attachment.go index c28c258a5e..da1764fd6e 100644 --- a/ibm/service/vpc/resource_ibm_is_instance_network_attachment.go +++ b/ibm/service/vpc/resource_ibm_is_instance_network_attachment.go @@ -732,8 +732,10 @@ func resourceIBMIsInstanceNetworkAttachmentMapToInstanceNetworkAttachmentPrototy if modelMap["name"] != nil && modelMap["name"].(string) != "" { model.Name = core.StringPtr(modelMap["name"].(string)) } - if pStateFilteringInt, ok := modelMap["protocol_state_filtering_mode"]; ok { - model.ProtocolStateFilteringMode = core.StringPtr(pStateFilteringInt.(string)) + if pStateFilteringInt, ok := modelMap["protocol_state_filtering_mode"]; ok && modelMap["protocol_state_filtering_mode"] != nil { + if pStateFilteringInt.(string) != "" { + model.ProtocolStateFilteringMode = core.StringPtr(pStateFilteringInt.(string)) + } } if modelMap["primary_ip"] != nil && len(modelMap["primary_ip"].([]interface{})) > 0 { PrimaryIPModel, err := resourceIBMIsInstanceNetworkAttachmentMapToVirtualNetworkInterfacePrimaryIPPrototype(modelMap["primary_ip"].([]interface{})[0].(map[string]interface{})) diff --git a/ibm/service/vpc/resource_ibm_is_instance_template.go b/ibm/service/vpc/resource_ibm_is_instance_template.go index f722c741e2..037ec9df05 100644 --- a/ibm/service/vpc/resource_ibm_is_instance_template.go +++ b/ibm/service/vpc/resource_ibm_is_instance_template.go @@ -2813,8 +2813,10 @@ func resourceIBMIsInstanceTemplateMapToVirtualNetworkInterfacePrototypeAttachmen } model.PrimaryIP = PrimaryIPModel } - if pStateFilteringInt, ok := modelMap["protocol_state_filtering_mode"]; ok { - model.ProtocolStateFilteringMode = core.StringPtr(pStateFilteringInt.(string)) + if pStateFilteringInt, ok := modelMap["protocol_state_filtering_mode"]; ok && modelMap["protocol_state_filtering_mode"] != nil { + if pStateFilteringInt.(string) != "" { + model.ProtocolStateFilteringMode = core.StringPtr(pStateFilteringInt.(string)) + } } if modelMap["resource_group"] != nil && modelMap["resource_group"].(string) != "" { resourcegroupid := modelMap["resource_group"].(string) diff --git a/ibm/service/vpc/resource_ibm_is_instance_template_test.go b/ibm/service/vpc/resource_ibm_is_instance_template_test.go index 0fde16a693..4d819dc180 100644 --- a/ibm/service/vpc/resource_ibm_is_instance_template_test.go +++ b/ibm/service/vpc/resource_ibm_is_instance_template_test.go @@ -133,7 +133,7 @@ func TestAccIBMISInstanceTemplate_vni(t *testing.T) { resource.TestCheckResourceAttrSet( "ibm_is_instance_template.instancetemplate1", "primary_network_attachment"), resource.TestCheckResourceAttrSet( - "ibm_is_instance_template.instancetemplate1", "primary_network_attachment.0.virtual_network_interface"), + "ibm_is_instance_template.instancetemplate1", "primary_network_attachment.0.virtual_network_interface.#"), ), }, }, @@ -151,8 +151,8 @@ func TestAccIBMISInstanceTemplate_vniPSFM(t *testing.T) { sshKeyName := fmt.Sprintf("tf-testsshkey%d", randInt) protocolStateFilteringMode := "auto" - pNacName := fmt.Sprintf("tf-testvpc-pNac%d", randInt) - sNacName := fmt.Sprintf("tf-testvpc-sNac%d", randInt) + pNacName := fmt.Sprintf("tf-testvpc-pnac%d", randInt) + sNacName := fmt.Sprintf("tf-testvpc-snac%d", randInt) resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, Providers: acc.TestAccProviders, @@ -166,9 +166,15 @@ func TestAccIBMISInstanceTemplate_vniPSFM(t *testing.T) { resource.TestCheckResourceAttrSet( "ibm_is_instance_template.instancetemplate1", "profile"), resource.TestCheckResourceAttrSet( - "ibm_is_instance_template.instancetemplate1", "primary_network_attachment"), + "ibm_is_instance_template.instancetemplate1", "primary_network_attachment.#"), + resource.TestCheckResourceAttrSet( + "ibm_is_instance_template.instancetemplate1", "primary_network_attachment.0.virtual_network_interface.#"), + resource.TestCheckResourceAttrSet( + "ibm_is_instance_template.instancetemplate1", "primary_network_attachment.0.virtual_network_interface.0.protocol_state_filtering_mode"), + resource.TestCheckResourceAttrSet( + "ibm_is_instance_template.instancetemplate1", "network_attachments.#"), resource.TestCheckResourceAttrSet( - "ibm_is_instance_template.instancetemplate1", "primary_network_attachment.0.virtual_network_interface"), + "ibm_is_instance_template.instancetemplate1", "network_attachments.0.virtual_network_interface.0.protocol_state_filtering_mode"), ), }, }, diff --git a/ibm/service/vpc/resource_ibm_is_share_mount_target.go b/ibm/service/vpc/resource_ibm_is_share_mount_target.go index 136092b20b..92a572ef88 100644 --- a/ibm/service/vpc/resource_ibm_is_share_mount_target.go +++ b/ibm/service/vpc/resource_ibm_is_share_mount_target.go @@ -811,8 +811,10 @@ func ShareMountTargetMapToShareMountTargetPrototype(d *schema.ResourceData, vniM if name != "" { vniPrototype.Name = &name } - if pStateFilteringInt, ok := vniMap["protocol_state_filtering_mode"]; ok { - vniPrototype.ProtocolStateFilteringMode = core.StringPtr(pStateFilteringInt.(string)) + if pStateFilteringInt, ok := vniMap["protocol_state_filtering_mode"]; ok && vniMap["protocol_state_filtering_mode"] != nil { + if pStateFilteringInt.(string) != "" { + vniPrototype.ProtocolStateFilteringMode = core.StringPtr(pStateFilteringInt.(string)) + } } primaryIp, ok := vniMap["primary_ip"] if ok && len(primaryIp.([]interface{})) > 0 { From 84b4e27b169f84d782cb8a68a9e500aa3d8d0c0a Mon Sep 17 00:00:00 2001 From: Deepak Selvakumar <77007253+deepaksibm@users.noreply.github.com> Date: Wed, 26 Jun 2024 15:31:03 +0530 Subject: [PATCH 3/4] rearrange validations --- ibm/service/vpc/resource_ibm_is_bare_metal_server.go | 10 ++++++---- ...urce_ibm_is_bare_metal_server_network_attachment.go | 4 ++-- ibm/service/vpc/resource_ibm_is_instance.go | 4 ++-- .../vpc/resource_ibm_is_instance_network_attachment.go | 4 ++-- ibm/service/vpc/resource_ibm_is_instance_template.go | 4 ++-- 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/ibm/service/vpc/resource_ibm_is_bare_metal_server.go b/ibm/service/vpc/resource_ibm_is_bare_metal_server.go index e2ee02e18b..5bc8c240bf 100644 --- a/ibm/service/vpc/resource_ibm_is_bare_metal_server.go +++ b/ibm/service/vpc/resource_ibm_is_bare_metal_server.go @@ -4219,10 +4219,12 @@ func resourceIBMIsBareMetalServerMapToVirtualNetworkInterfacePrototypeAttachment if _, ok := d.GetOkExists(enablenat); ok && modelMap["enable_infrastructure_nat"] != nil { model.EnableInfrastructureNat = core.BoolPtr(modelMap["enable_infrastructure_nat"].(bool)) } - if pStateFilteringInt, ok := modelMap["protocol_state_filtering_mode"]; ok { - protocolStateFilteringMode := pStateFilteringInt.(string) - if protocolStateFilteringMode != "" { - model.ProtocolStateFilteringMode = core.StringPtr(protocolStateFilteringMode) + if modelMap["protocol_state_filtering_mode"] != nil { + if pStateFilteringInt, ok := modelMap["protocol_state_filtering_mode"]; ok { + protocolStateFilteringMode := pStateFilteringInt.(string) + if protocolStateFilteringMode != "" { + model.ProtocolStateFilteringMode = core.StringPtr(protocolStateFilteringMode) + } } } if modelMap["ips"] != nil && modelMap["ips"].(*schema.Set).Len() > 0 { diff --git a/ibm/service/vpc/resource_ibm_is_bare_metal_server_network_attachment.go b/ibm/service/vpc/resource_ibm_is_bare_metal_server_network_attachment.go index f0084c0aac..a305abe1a1 100644 --- a/ibm/service/vpc/resource_ibm_is_bare_metal_server_network_attachment.go +++ b/ibm/service/vpc/resource_ibm_is_bare_metal_server_network_attachment.go @@ -1092,8 +1092,8 @@ func resourceIBMIsBareMetalServerNetworkAttachmentMapToBareMetalServerNetworkAtt if modelMap["name"] != nil && modelMap["name"].(string) != "" { model.Name = core.StringPtr(modelMap["name"].(string)) } - if pStateFilteringInt, ok := modelMap["protocol_state_filtering_mode"]; ok && modelMap["protocol_state_filtering_mode"] != nil { - if pStateFilteringInt.(string) != "" { + if modelMap["protocol_state_filtering_mode"] != nil { + if pStateFilteringInt, ok := modelMap["protocol_state_filtering_mode"]; ok && pStateFilteringInt.(string) != "" { model.ProtocolStateFilteringMode = core.StringPtr(pStateFilteringInt.(string)) } } diff --git a/ibm/service/vpc/resource_ibm_is_instance.go b/ibm/service/vpc/resource_ibm_is_instance.go index 6882324a99..e716131d17 100644 --- a/ibm/service/vpc/resource_ibm_is_instance.go +++ b/ibm/service/vpc/resource_ibm_is_instance.go @@ -6493,8 +6493,8 @@ func resourceIBMIsInstanceMapToVirtualNetworkInterfacePrototypeAttachmentContext if modelMap["name"] != nil && modelMap["name"].(string) != "" { model.Name = core.StringPtr(modelMap["name"].(string)) } - if pStateFilteringInt, ok := modelMap["protocol_state_filtering_mode"]; ok && modelMap["protocol_state_filtering_mode"] != nil { - if pStateFilteringInt.(string) != "" { + if modelMap["protocol_state_filtering_mode"] != nil { + if pStateFilteringInt, ok := modelMap["protocol_state_filtering_mode"]; ok && pStateFilteringInt.(string) != "" { model.ProtocolStateFilteringMode = core.StringPtr(pStateFilteringInt.(string)) } } diff --git a/ibm/service/vpc/resource_ibm_is_instance_network_attachment.go b/ibm/service/vpc/resource_ibm_is_instance_network_attachment.go index da1764fd6e..5cfdcd1403 100644 --- a/ibm/service/vpc/resource_ibm_is_instance_network_attachment.go +++ b/ibm/service/vpc/resource_ibm_is_instance_network_attachment.go @@ -732,8 +732,8 @@ func resourceIBMIsInstanceNetworkAttachmentMapToInstanceNetworkAttachmentPrototy if modelMap["name"] != nil && modelMap["name"].(string) != "" { model.Name = core.StringPtr(modelMap["name"].(string)) } - if pStateFilteringInt, ok := modelMap["protocol_state_filtering_mode"]; ok && modelMap["protocol_state_filtering_mode"] != nil { - if pStateFilteringInt.(string) != "" { + if modelMap["protocol_state_filtering_mode"] != nil { + if pStateFilteringInt, ok := modelMap["protocol_state_filtering_mode"]; ok && pStateFilteringInt.(string) != "" { model.ProtocolStateFilteringMode = core.StringPtr(pStateFilteringInt.(string)) } } diff --git a/ibm/service/vpc/resource_ibm_is_instance_template.go b/ibm/service/vpc/resource_ibm_is_instance_template.go index 037ec9df05..03ec4a8e51 100644 --- a/ibm/service/vpc/resource_ibm_is_instance_template.go +++ b/ibm/service/vpc/resource_ibm_is_instance_template.go @@ -2813,8 +2813,8 @@ func resourceIBMIsInstanceTemplateMapToVirtualNetworkInterfacePrototypeAttachmen } model.PrimaryIP = PrimaryIPModel } - if pStateFilteringInt, ok := modelMap["protocol_state_filtering_mode"]; ok && modelMap["protocol_state_filtering_mode"] != nil { - if pStateFilteringInt.(string) != "" { + if modelMap["protocol_state_filtering_mode"] != nil { + if pStateFilteringInt, ok := modelMap["protocol_state_filtering_mode"]; ok && pStateFilteringInt.(string) != "" { model.ProtocolStateFilteringMode = core.StringPtr(pStateFilteringInt.(string)) } } From e4b4e117e1c8239ac2927e03d5fe0961434415d4 Mon Sep 17 00:00:00 2001 From: Deepak Selvakumar <77007253+deepaksibm@users.noreply.github.com> Date: Wed, 26 Jun 2024 15:40:35 +0530 Subject: [PATCH 4/4] update vaidaiton in mounttarget --- ibm/service/vpc/resource_ibm_is_share_mount_target.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ibm/service/vpc/resource_ibm_is_share_mount_target.go b/ibm/service/vpc/resource_ibm_is_share_mount_target.go index 92a572ef88..ee7397f0e8 100644 --- a/ibm/service/vpc/resource_ibm_is_share_mount_target.go +++ b/ibm/service/vpc/resource_ibm_is_share_mount_target.go @@ -811,8 +811,8 @@ func ShareMountTargetMapToShareMountTargetPrototype(d *schema.ResourceData, vniM if name != "" { vniPrototype.Name = &name } - if pStateFilteringInt, ok := vniMap["protocol_state_filtering_mode"]; ok && vniMap["protocol_state_filtering_mode"] != nil { - if pStateFilteringInt.(string) != "" { + if vniMap["protocol_state_filtering_mode"] != nil { + if pStateFilteringInt, ok := vniMap["protocol_state_filtering_mode"]; ok && pStateFilteringInt.(string) != "" { vniPrototype.ProtocolStateFilteringMode = core.StringPtr(pStateFilteringInt.(string)) } }