From 29d7d4a7e0688e42e2bf264eb756661a32a773fc Mon Sep 17 00:00:00 2001 From: Sean Conroy Date: Fri, 18 Jul 2025 11:30:45 +0100 Subject: [PATCH 1/3] Resolve issue #443 --- .../service_lan_vpn_interface_ethernet.yaml | 1 + ...ort_management_vpn_interface_ethernet.yaml | 1 + ...vice_lan_vpn_interface_ethernet_feature.go | 34 +++++++++---------- ...port_wan_vpn_interface_ethernet_feature.go | 34 +++++++++---------- 4 files changed, 36 insertions(+), 34 deletions(-) diff --git a/gen/definitions/profile_parcels/service_lan_vpn_interface_ethernet.yaml b/gen/definitions/profile_parcels/service_lan_vpn_interface_ethernet.yaml index 9aa4b1b40..5969d0bac 100644 --- a/gen/definitions/profile_parcels/service_lan_vpn_interface_ethernet.yaml +++ b/gen/definitions/profile_parcels/service_lan_vpn_interface_ethernet.yaml @@ -1,4 +1,5 @@ --- +# Manual resource - Modals toBody is manually configured to support sub interfaces. name: Service LAN VPN Interface Ethernet rest_endpoint: /v1/feature-profile/sdwan/service/%v/lan/vpn/%s/interface/ethernet minimum_version: 20.12.0 diff --git a/gen/definitions/profile_parcels/transport_management_vpn_interface_ethernet.yaml b/gen/definitions/profile_parcels/transport_management_vpn_interface_ethernet.yaml index 20cdadd13..78361d502 100644 --- a/gen/definitions/profile_parcels/transport_management_vpn_interface_ethernet.yaml +++ b/gen/definitions/profile_parcels/transport_management_vpn_interface_ethernet.yaml @@ -1,4 +1,5 @@ --- +# Manual resource - Modals toBody is manually configured to support sub interfaces. name: Transport Management VPN Interface Ethernet rest_endpoint: /v1/feature-profile/sdwan/transport/%v/management/vpn/%s/interface/ethernet minimum_version: 20.12.0 diff --git a/internal/provider/model_sdwan_service_lan_vpn_interface_ethernet_feature.go b/internal/provider/model_sdwan_service_lan_vpn_interface_ethernet_feature.go index 2c065af65..a62cc764e 100644 --- a/internal/provider/model_sdwan_service_lan_vpn_interface_ethernet_feature.go +++ b/internal/provider/model_sdwan_service_lan_vpn_interface_ethernet_feature.go @@ -23,6 +23,7 @@ import ( "fmt" "net/url" "strconv" + "strings" "github.com/CiscoDevNet/terraform-provider-sdwan/internal/provider/helpers" "github.com/hashicorp/terraform-plugin-framework/types" @@ -232,7 +233,6 @@ func (data ServiceLANVPNInterfaceEthernet) getPath() string { // End of section. //template:end getPath -// Section below is generated&owned by "gen/generator.go". //template:begin toBody func (data ServiceLANVPNInterfaceEthernet) toBody(ctx context.Context) string { body := "" body, _ = sjson.Set(body, "name", data.Name.ValueString()) @@ -1137,20 +1137,22 @@ func (data ServiceLANVPNInterfaceEthernet) toBody(ctx context.Context) string { } } - if !data.InterfaceMtuVariable.IsNull() { - if true { - body, _ = sjson.Set(body, path+"advanced.intrfMtu.optionType", "variable") - body, _ = sjson.Set(body, path+"advanced.intrfMtu.value", data.InterfaceMtuVariable.ValueString()) - } - } else if data.InterfaceMtu.IsNull() { - if true { - body, _ = sjson.Set(body, path+"advanced.intrfMtu.optionType", "default") - body, _ = sjson.Set(body, path+"advanced.intrfMtu.value", 1500) - } - } else { - if true { - body, _ = sjson.Set(body, path+"advanced.intrfMtu.optionType", "global") - body, _ = sjson.Set(body, path+"advanced.intrfMtu.value", data.InterfaceMtu.ValueInt64()) + if !data.InterfaceName.IsNull() && strings.Contains(data.InterfaceName.ValueString(), ".") { + if !data.InterfaceMtuVariable.IsNull() { + if true { + body, _ = sjson.Set(body, path+"advanced.intrfMtu.optionType", "variable") + body, _ = sjson.Set(body, path+"advanced.intrfMtu.value", data.InterfaceMtuVariable.ValueString()) + } + } else if data.InterfaceMtu.IsNull() { + if true { + body, _ = sjson.Set(body, path+"advanced.intrfMtu.optionType", "default") + body, _ = sjson.Set(body, path+"advanced.intrfMtu.value", 1500) + } + } else { + if true { + body, _ = sjson.Set(body, path+"advanced.intrfMtu.optionType", "global") + body, _ = sjson.Set(body, path+"advanced.intrfMtu.value", data.InterfaceMtu.ValueInt64()) + } } } @@ -1326,8 +1328,6 @@ func (data ServiceLANVPNInterfaceEthernet) toBody(ctx context.Context) string { return body } -// End of section. //template:end toBody - // Section below is generated&owned by "gen/generator.go". //template:begin fromBody func (data *ServiceLANVPNInterfaceEthernet) fromBody(ctx context.Context, res gjson.Result) { data.Name = types.StringValue(res.Get("payload.name").String()) diff --git a/internal/provider/model_sdwan_transport_wan_vpn_interface_ethernet_feature.go b/internal/provider/model_sdwan_transport_wan_vpn_interface_ethernet_feature.go index 820bde268..39ca95e99 100644 --- a/internal/provider/model_sdwan_transport_wan_vpn_interface_ethernet_feature.go +++ b/internal/provider/model_sdwan_transport_wan_vpn_interface_ethernet_feature.go @@ -22,6 +22,7 @@ import ( "context" "fmt" "net/url" + "strings" "github.com/CiscoDevNet/terraform-provider-sdwan/internal/provider/helpers" "github.com/hashicorp/terraform-plugin-framework/types" @@ -298,7 +299,6 @@ func (data TransportWANVPNInterfaceEthernet) getPath() string { // End of section. //template:end getPath -// Section below is generated&owned by "gen/generator.go". //template:begin toBody func (data TransportWANVPNInterfaceEthernet) toBody(ctx context.Context) string { body := "" body, _ = sjson.Set(body, "name", data.Name.ValueString()) @@ -1785,20 +1785,22 @@ func (data TransportWANVPNInterfaceEthernet) toBody(ctx context.Context) string } } - if !data.InterfaceMtuVariable.IsNull() { - if true { - body, _ = sjson.Set(body, path+"advanced.intrfMtu.optionType", "variable") - body, _ = sjson.Set(body, path+"advanced.intrfMtu.value", data.InterfaceMtuVariable.ValueString()) - } - } else if data.InterfaceMtu.IsNull() { - if true { - body, _ = sjson.Set(body, path+"advanced.intrfMtu.optionType", "default") - body, _ = sjson.Set(body, path+"advanced.intrfMtu.value", 1500) - } - } else { - if true { - body, _ = sjson.Set(body, path+"advanced.intrfMtu.optionType", "global") - body, _ = sjson.Set(body, path+"advanced.intrfMtu.value", data.InterfaceMtu.ValueInt64()) + if !data.InterfaceName.IsNull() && !strings.Contains(data.InterfaceName.ValueString(), ".") { + if !data.InterfaceMtuVariable.IsNull() { + if true { + body, _ = sjson.Set(body, path+"advanced.intrfMtu.optionType", "variable") + body, _ = sjson.Set(body, path+"advanced.intrfMtu.value", data.InterfaceMtuVariable.ValueString()) + } + } else if data.InterfaceMtu.IsNull() { + if true { + body, _ = sjson.Set(body, path+"advanced.intrfMtu.optionType", "default") + body, _ = sjson.Set(body, path+"advanced.intrfMtu.value", 1500) + } + } else { + if true { + body, _ = sjson.Set(body, path+"advanced.intrfMtu.optionType", "global") + body, _ = sjson.Set(body, path+"advanced.intrfMtu.value", data.InterfaceMtu.ValueInt64()) + } } } @@ -1991,8 +1993,6 @@ func (data TransportWANVPNInterfaceEthernet) toBody(ctx context.Context) string return body } -// End of section. //template:end toBody - // Section below is generated&owned by "gen/generator.go". //template:begin fromBody func (data *TransportWANVPNInterfaceEthernet) fromBody(ctx context.Context, res gjson.Result) { data.Name = types.StringValue(res.Get("payload.name").String()) From ddba8e9dca7fca52a84c915e8048737da4e72b23 Mon Sep 17 00:00:00 2001 From: Sean Conroy Date: Wed, 23 Jul 2025 13:53:05 +0100 Subject: [PATCH 2/3] Update definition --- .../transport_management_vpn_interface_ethernet.yaml | 1 - .../profile_parcels/transport_wan_vpn_interface_ethernet.yaml | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/gen/definitions/profile_parcels/transport_management_vpn_interface_ethernet.yaml b/gen/definitions/profile_parcels/transport_management_vpn_interface_ethernet.yaml index 78361d502..20cdadd13 100644 --- a/gen/definitions/profile_parcels/transport_management_vpn_interface_ethernet.yaml +++ b/gen/definitions/profile_parcels/transport_management_vpn_interface_ethernet.yaml @@ -1,5 +1,4 @@ --- -# Manual resource - Modals toBody is manually configured to support sub interfaces. name: Transport Management VPN Interface Ethernet rest_endpoint: /v1/feature-profile/sdwan/transport/%v/management/vpn/%s/interface/ethernet minimum_version: 20.12.0 diff --git a/gen/definitions/profile_parcels/transport_wan_vpn_interface_ethernet.yaml b/gen/definitions/profile_parcels/transport_wan_vpn_interface_ethernet.yaml index a9c94ff78..73583762a 100644 --- a/gen/definitions/profile_parcels/transport_wan_vpn_interface_ethernet.yaml +++ b/gen/definitions/profile_parcels/transport_wan_vpn_interface_ethernet.yaml @@ -1,4 +1,5 @@ --- +# Manual resource - Modals toBody is manually configured to support sub interfaces. name: Transport WAN VPN Interface Ethernet rest_endpoint: /v1/feature-profile/sdwan/transport/%v/wan/vpn/%s/interface/ethernet minimum_version: 20.12.0 From 76939c176434d3a28d381826c703daff56b369c7 Mon Sep 17 00:00:00 2001 From: Sean Conroy Date: Wed, 23 Jul 2025 14:54:04 +0100 Subject: [PATCH 3/3] Update to show errors --- ...vice_lan_vpn_interface_ethernet_feature.go | 30 +++++++++---------- ...port_wan_vpn_interface_ethernet_feature.go | 30 +++++++++---------- 2 files changed, 28 insertions(+), 32 deletions(-) diff --git a/internal/provider/model_sdwan_service_lan_vpn_interface_ethernet_feature.go b/internal/provider/model_sdwan_service_lan_vpn_interface_ethernet_feature.go index a62cc764e..a1516c883 100644 --- a/internal/provider/model_sdwan_service_lan_vpn_interface_ethernet_feature.go +++ b/internal/provider/model_sdwan_service_lan_vpn_interface_ethernet_feature.go @@ -1137,22 +1137,20 @@ func (data ServiceLANVPNInterfaceEthernet) toBody(ctx context.Context) string { } } - if !data.InterfaceName.IsNull() && strings.Contains(data.InterfaceName.ValueString(), ".") { - if !data.InterfaceMtuVariable.IsNull() { - if true { - body, _ = sjson.Set(body, path+"advanced.intrfMtu.optionType", "variable") - body, _ = sjson.Set(body, path+"advanced.intrfMtu.value", data.InterfaceMtuVariable.ValueString()) - } - } else if data.InterfaceMtu.IsNull() { - if true { - body, _ = sjson.Set(body, path+"advanced.intrfMtu.optionType", "default") - body, _ = sjson.Set(body, path+"advanced.intrfMtu.value", 1500) - } - } else { - if true { - body, _ = sjson.Set(body, path+"advanced.intrfMtu.optionType", "global") - body, _ = sjson.Set(body, path+"advanced.intrfMtu.value", data.InterfaceMtu.ValueInt64()) - } + if !data.InterfaceMtuVariable.IsNull() { + if true { + body, _ = sjson.Set(body, path+"advanced.intrfMtu.optionType", "variable") + body, _ = sjson.Set(body, path+"advanced.intrfMtu.value", data.InterfaceMtuVariable.ValueString()) + } + } else if data.InterfaceMtu.IsNull() { + if !strings.Contains(data.InterfaceName.ValueString(), ".") { + body, _ = sjson.Set(body, path+"advanced.intrfMtu.optionType", "default") + body, _ = sjson.Set(body, path+"advanced.intrfMtu.value", 1500) + } + } else { + if true { + body, _ = sjson.Set(body, path+"advanced.intrfMtu.optionType", "global") + body, _ = sjson.Set(body, path+"advanced.intrfMtu.value", data.InterfaceMtu.ValueInt64()) } } diff --git a/internal/provider/model_sdwan_transport_wan_vpn_interface_ethernet_feature.go b/internal/provider/model_sdwan_transport_wan_vpn_interface_ethernet_feature.go index 39ca95e99..e1f0652be 100644 --- a/internal/provider/model_sdwan_transport_wan_vpn_interface_ethernet_feature.go +++ b/internal/provider/model_sdwan_transport_wan_vpn_interface_ethernet_feature.go @@ -1785,22 +1785,20 @@ func (data TransportWANVPNInterfaceEthernet) toBody(ctx context.Context) string } } - if !data.InterfaceName.IsNull() && !strings.Contains(data.InterfaceName.ValueString(), ".") { - if !data.InterfaceMtuVariable.IsNull() { - if true { - body, _ = sjson.Set(body, path+"advanced.intrfMtu.optionType", "variable") - body, _ = sjson.Set(body, path+"advanced.intrfMtu.value", data.InterfaceMtuVariable.ValueString()) - } - } else if data.InterfaceMtu.IsNull() { - if true { - body, _ = sjson.Set(body, path+"advanced.intrfMtu.optionType", "default") - body, _ = sjson.Set(body, path+"advanced.intrfMtu.value", 1500) - } - } else { - if true { - body, _ = sjson.Set(body, path+"advanced.intrfMtu.optionType", "global") - body, _ = sjson.Set(body, path+"advanced.intrfMtu.value", data.InterfaceMtu.ValueInt64()) - } + if !data.InterfaceMtuVariable.IsNull() { + if true { + body, _ = sjson.Set(body, path+"advanced.intrfMtu.optionType", "variable") + body, _ = sjson.Set(body, path+"advanced.intrfMtu.value", data.InterfaceMtuVariable.ValueString()) + } + } else if data.InterfaceMtu.IsNull() { + if !strings.Contains(data.InterfaceName.ValueString(), ".") { + body, _ = sjson.Set(body, path+"advanced.intrfMtu.optionType", "default") + body, _ = sjson.Set(body, path+"advanced.intrfMtu.value", 1500) + } + } else { + if true { + body, _ = sjson.Set(body, path+"advanced.intrfMtu.optionType", "global") + body, _ = sjson.Set(body, path+"advanced.intrfMtu.value", data.InterfaceMtu.ValueInt64()) } }