Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

nsxt_policy_tier0_inter_vrf_routing bgp_route_leaking in_filter and out_filter #1210

Closed
rvvliet78 opened this issue May 16, 2024 · 2 comments · Fixed by #1211
Closed

nsxt_policy_tier0_inter_vrf_routing bgp_route_leaking in_filter and out_filter #1210

rvvliet78 opened this issue May 16, 2024 · 2 comments · Fixed by #1211
Labels

Comments

@rvvliet78
Copy link

rvvliet78 commented May 16, 2024

Describe the bug

When adding an in_filter to the bgp_route_leaking it isn't getting applied.
However when adding only an out_filter, it gets applied as an in_filter

Reproduction steps

Code
`resource "nsxt_policy_tier0_inter_vrf_routing" "inter-vrf-routing_tenant" {
display_name = "${nsxt_policy_tier0_gateway.vrftenant-tier0.display_name}-inter-vrf-route"
gateway_path = nsxt_policy_tier0_gateway.vrftenant-tier0.path
target_path = data.nsxt_policy_tier0_gateway.parent_tier0_vrf_gateway.path

bgp_route_leaking {
address_family = "IPV4"
in_filter = [nsxt_policy_gateway_route_map.routemap_in.path]
out_filter = [nsxt_policy_gateway_route_map.routemap_out.path]
}
}`

Apply
`Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
~ update in-place

Terraform will perform the following actions:

module.vrf_tenant.nsxt_policy_tier0_inter_vrf_routing.inter-vrf-routing_tenant will be updated in-place
~ resource "nsxt_policy_tier0_inter_vrf_routing" "inter-vrf-routing_tenant" {
id = "da3e067a-7152-4794-84cb-53c21cafc277"
# (6 unchanged attributes hidden)

  ~ bgp_route_leaking {
      ~ in_filter      = [
          + "/infra/tier-0s/84f40d06-72a2-44c2-adb6-913fd11def9c/route-maps/3f0de474-ee94-460c-9b14-e7375db56561",
        ]
      ~ out_filter     = [
          + "/infra/tier-0s/84f40d06-72a2-44c2-adb6-913fd11def9c/route-maps/19153ec6-dbd0-4c70-8e45-fcc1f2e754c8",
        ]
        # (1 unchanged attribute hidden)
    }
}

Plan: 0 to add, 1 to change, 0 to destroy.
module.vrf_tenant.nsxt_policy_tier0_inter_vrf_routing.inter-vrf-routing_tenant: Modifying... [id=da3e067a-7152-4794-84cb-53c21cafc277]
module.vrf_tenant.nsxt_policy_tier0_inter_vrf_routing.inter-vrf-routing_tenant: Modifications complete after 0s [id=da3e067a-7152-4794-84cb-53c21cafc277]`

Please note the ID of the "out_filter" : 19153ec6-dbd0-4c70-8e45-fcc1f2e754c8

Result:
{ "results": [ { "target_path": "/infra/tier-0s/b4d6feca-a512-4e49-a4d4-e7e6a2a2236b", "bgp_route_leaking": [ { "address_family": "IPV4", "in_filter": [ "/infra/tier-0s/84f40d06-72a2-44c2-adb6-913fd11def9c/route-maps/19153ec6-dbd0-4c70-8e45-fcc1f2e754c8" ] } ], "resource_type": "PolicyInterVrfRoutingConfig", "id": "da3e067a-7152-4794-84cb-53c21cafc277", "display_name": "t04-tst-0006-tstaz2-t0vrf-inter-vrf-route", "tags": [], "path": "/infra/tier-0s/84f40d06-72a2-44c2-adb6-913fd11def9c/inter-vrf-routing/da3e067a-7152-4794-84cb-53c21cafc277", "relative_path": "da3e067a-7152-4794-84cb-53c21cafc277", "parent_path": "/infra/tier-0s/84f40d06-72a2-44c2-adb6-913fd11def9c", "remote_path": "", "unique_id": "89f9f734-e863-43e0-93bf-0555102d516c", "realization_id": "89f9f734-e863-43e0-93bf-0555102d516c", "owner_id": "09a5c149-d345-45cb-9134-54219c6560a0", "marked_for_delete": false, "overridden": false, "_create_time": 1715850082008, "_create_user": "********", "_last_modified_time": 1715859997772, "_last_modified_user": "******", "_system_owned": false, "_protection": "NOT_PROTECTED", "_revision": 14 } ], "result_count": 1, "sort_by": "display_name", "sort_ascending": true }

Expected behavior

"bgp_route_leaking": [ { "address_family": "IPV4", "in_filter": ["/infra/tier-0s/84f40d06-72a2-44c2-adb6-913fd11def9c/route-maps/3f0de474-ee94-460c-9b14-e7375db56561"] "out_filter": [ "/infra/tier-0s/84f40d06-72a2-44c2-adb6-913fd11def9c/route-maps/19153ec6-dbd0-4c70-8e45-fcc1f2e754c8" ] } ],

Additional context

I've tested this agains nsx 4.1.1.0.0.22224312 and provider version: "3.6.1"

@rvvliet78 rvvliet78 added the bug label May 16, 2024
@rvvliet78
Copy link
Author

I'm not very familiar with updating code, but it seems that the error is on line 165 of file https://github.com/vmware/terraform-provider-nsxt/blob/master/nsxt/resource_nsxt_policy_tier0_inter_vrf_routing.go

Where it states: inFilter = interface2StringList(brlMap["out_filter"].([]interface{}))
This should be
outFilter = interface2StringList(brlMap["out_filter"].([]interface{}))

if bpgRouteLeakingList != nil { for _, brl := range bpgRouteLeakingList.([]interface{}) { brlMap := brl.(map[string]interface{}) addressFamily := brlMap["address_family"].(string) var inFilter []string if brlMap["in_filter"] != nil { inFilter = interface2StringList(brlMap["in_filter"].([]interface{})) } var outFilter []string if brlMap["out_filter"] != nil { inFilter = interface2StringList(brlMap["out_filter"].([]interface{})) } bgpRouteLeaking = append(bgpRouteLeaking, model.BgpRouteLeaking{ AddressFamily: &addressFamily, InFilter: inFilter, OutFilter: outFilter, })

@ksamoray
Copy link
Collaborator

I'm not very familiar with updating code, but it seems that the error is on line 165 of file https://github.com/vmware/terraform-provider-nsxt/blob/master/nsxt/resource_nsxt_policy_tier0_inter_vrf_routing.go

Where it states: inFilter = interface2StringList(brlMap["out_filter"].([]interface{})) This should be outFilter = interface2StringList(brlMap["out_filter"].([]interface{}))

if bpgRouteLeakingList != nil { for _, brl := range bpgRouteLeakingList.([]interface{}) { brlMap := brl.(map[string]interface{}) addressFamily := brlMap["address_family"].(string) var inFilter []string if brlMap["in_filter"] != nil { inFilter = interface2StringList(brlMap["in_filter"].([]interface{})) } var outFilter []string if brlMap["out_filter"] != nil { inFilter = interface2StringList(brlMap["out_filter"].([]interface{})) } bgpRouteLeaking = append(bgpRouteLeaking, model.BgpRouteLeaking{ AddressFamily: &addressFamily, InFilter: inFilter, OutFilter: outFilter, })

Seems like you nailed the issue, I can update the code. Thanks for reporting and looking into!

ksamoray added a commit to ksamoray/terraform-provider-nsxt that referenced this issue May 16, 2024
The code assigns the values into the wrong variable and therefore
changes aren't applied correctly.

Fixes: vmware#1210
ksamoray added a commit to ksamoray/terraform-provider-nsxt that referenced this issue May 16, 2024
The code assigns the values into the wrong variable and therefore
changes aren't applied correctly.

Fixes: vmware#1210
Signed-off-by: Kobi Samoray <kobi.samoray@broadcom.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants