From 4232b3e743c572e2dbcebe4e2c874214214124e9 Mon Sep 17 00:00:00 2001 From: Sean Conroy Date: Wed, 23 Jul 2025 16:21:49 +0100 Subject: [PATCH] Resolve issue #433 --- ...port_wan_vpn_interface_ethernet_feature.md | 96 ++++++------ .../transport_wan_vpn_interface_ethernet.yaml | 99 +++++++++++- ...port_wan_vpn_interface_ethernet_feature.go | 142 +++++++++--------- ...port_wan_vpn_interface_ethernet_feature.go | 96 ++++++------ 4 files changed, 263 insertions(+), 170 deletions(-) diff --git a/docs/resources/transport_wan_vpn_interface_ethernet_feature.md b/docs/resources/transport_wan_vpn_interface_ethernet_feature.md index 940ca4721..19302a68b 100644 --- a/docs/resources/transport_wan_vpn_interface_ethernet_feature.md +++ b/docs/resources/transport_wan_vpn_interface_ethernet_feature.md @@ -263,9 +263,9 @@ resource "sdwan_transport_wan_vpn_interface_ethernet_feature" "example" { - Default value: `1` - `nat_udp_timeout_variable` (String) Variable name - `new_static_nats` (Attributes List) static NAT (see [below for nested schema](#nestedatt--new_static_nats)) -- `per_tunnel_qos` (Boolean) Per-tunnel Qos +- `per_tunnel_qos` (Boolean) Per-tunnel Qos, Attribute conditional on `tunnel_interface` being equal to `true` - Default value: `false` -- `per_tunnel_qos_variable` (String) Variable name +- `per_tunnel_qos_variable` (String) Variable name, Attribute conditional on `tunnel_interface` being equal to `true` - `qos_adaptive` (Boolean) Adaptive QoS - Default value: `false` - `qos_adaptive_bandwidth_downstream` (Boolean) Shaping Rate Downstream @@ -312,10 +312,10 @@ resource "sdwan_transport_wan_vpn_interface_ethernet_feature" "example" { - `tloc_extension_variable` (String) Variable name - `tracker` (String) Enable tracker for this interface - `tracker_variable` (String) Variable name -- `tunnel_bandwidth_percent` (Number) Tunnels Bandwidth Percent +- `tunnel_bandwidth_percent` (Number) Tunnels Bandwidth Percent, Attribute conditional on `tunnel_interface` being equal to `true` - Range: `1`-`100` - Default value: `50` -- `tunnel_bandwidth_percent_variable` (String) Variable name +- `tunnel_bandwidth_percent_variable` (String) Variable name, Attribute conditional on `tunnel_interface` being equal to `true` - `tunnel_interface` (Boolean) Tunnel Interface on/off - Default value: `false` - `tunnel_interface_allow_all` (Boolean) Allow all traffic. Overrides all other allow-service options if allow-service all is set @@ -357,76 +357,76 @@ resource "sdwan_transport_wan_vpn_interface_ethernet_feature" "example" { - `tunnel_interface_allow_stun` (Boolean) Allow/Deny STUN - Default value: `false` - `tunnel_interface_allow_stun_variable` (String) Variable name -- `tunnel_interface_bind_loopback_tunnel` (String) Bind loopback tunnel interface to a physical interface -- `tunnel_interface_bind_loopback_tunnel_variable` (String) Variable name -- `tunnel_interface_border` (Boolean) Set TLOC as border TLOC +- `tunnel_interface_bind_loopback_tunnel` (String) Bind loopback tunnel interface to a physical interface, Attribute conditional on `tunnel_interface` being equal to `true` +- `tunnel_interface_bind_loopback_tunnel_variable` (String) Variable name, Attribute conditional on `tunnel_interface` being equal to `true` +- `tunnel_interface_border` (Boolean) Set TLOC as border TLOC, Attribute conditional on `tunnel_interface` being equal to `true` - Default value: `false` -- `tunnel_interface_border_variable` (String) Variable name -- `tunnel_interface_carrier` (String) Set carrier for TLOC +- `tunnel_interface_border_variable` (String) Variable name, Attribute conditional on `tunnel_interface` being equal to `true` +- `tunnel_interface_carrier` (String) Set carrier for TLOC, Attribute conditional on `tunnel_interface` being equal to `true` - Choices: `default`, `carrier1`, `carrier2`, `carrier3`, `carrier4`, `carrier5`, `carrier6`, `carrier7`, `carrier8` - Default value: `default` -- `tunnel_interface_carrier_variable` (String) Variable name -- `tunnel_interface_clear_dont_fragment` (Boolean) Enable clear dont fragment (Currently Only SDWAN Tunnel Interface) +- `tunnel_interface_carrier_variable` (String) Variable name, Attribute conditional on `tunnel_interface` being equal to `true` +- `tunnel_interface_clear_dont_fragment` (Boolean) Enable clear dont fragment (Currently Only SDWAN Tunnel Interface), Attribute conditional on `tunnel_interface` being equal to `true` - Default value: `false` -- `tunnel_interface_clear_dont_fragment_variable` (String) Variable name -- `tunnel_interface_color` (String) Set color for TLOC +- `tunnel_interface_clear_dont_fragment_variable` (String) Variable name, Attribute conditional on `tunnel_interface` being equal to `true` +- `tunnel_interface_color` (String) Set color for TLOC, Attribute conditional on `tunnel_interface` being equal to `true` - Choices: `default`, `mpls`, `metro-ethernet`, `biz-internet`, `public-internet`, `lte`, `3g`, `red`, `green`, `blue`, `gold`, `silver`, `bronze`, `custom1`, `custom2`, `custom3`, `private1`, `private2`, `private3`, `private4`, `private5`, `private6` - Default value: `mpls` -- `tunnel_interface_color_restrict` (Boolean) Restrict this TLOC behavior +- `tunnel_interface_color_restrict` (Boolean) Restrict this TLOC behavior, Attribute conditional on `tunnel_interface` being equal to `true` - Default value: `false` -- `tunnel_interface_color_restrict_variable` (String) Variable name -- `tunnel_interface_color_variable` (String) Variable name -- `tunnel_interface_cts_sgt_propagation` (Boolean) CTS SGT Propagation configuration +- `tunnel_interface_color_restrict_variable` (String) Variable name, Attribute conditional on `tunnel_interface` being equal to `true` +- `tunnel_interface_color_variable` (String) Variable name, Attribute conditional on `tunnel_interface` being equal to `true` +- `tunnel_interface_cts_sgt_propagation` (Boolean) CTS SGT Propagation configuration, Attribute conditional on `tunnel_interface` being equal to `true` - Default value: `false` -- `tunnel_interface_cts_sgt_propagation_variable` (String) Variable name +- `tunnel_interface_cts_sgt_propagation_variable` (String) Variable name, Attribute conditional on `tunnel_interface` being equal to `true` - `tunnel_interface_encapsulations` (Attributes List) Encapsulation for TLOC (see [below for nested schema](#nestedatt--tunnel_interface_encapsulations)) -- `tunnel_interface_exclude_controller_group_list` (Set of Number) Exclude the following controller groups defined in this list. -- `tunnel_interface_exclude_controller_group_list_variable` (String) Variable name -- `tunnel_interface_gre_tunnel_destination_ip` (String) GRE tunnel destination IP -- `tunnel_interface_gre_tunnel_destination_ip_variable` (String) Variable name -- `tunnel_interface_groups` (Number) List of groups +- `tunnel_interface_exclude_controller_group_list` (Set of Number) Exclude the following controller groups defined in this list., Attribute conditional on `tunnel_interface` being equal to `true` +- `tunnel_interface_exclude_controller_group_list_variable` (String) Variable name, Attribute conditional on `tunnel_interface` being equal to `true` +- `tunnel_interface_gre_tunnel_destination_ip` (String) GRE tunnel destination IP, Attribute conditional on `tunnel_interface` being equal to `true` +- `tunnel_interface_gre_tunnel_destination_ip_variable` (String) Variable name, Attribute conditional on `tunnel_interface` being equal to `true` +- `tunnel_interface_groups` (Number) List of groups, Attribute conditional on `tunnel_interface` being equal to `true` - Range: `1`-`4294967295` -- `tunnel_interface_groups_variable` (String) Variable name -- `tunnel_interface_hello_interval` (Number) Set time period of control hello packets <100..600000> milli seconds +- `tunnel_interface_groups_variable` (String) Variable name, Attribute conditional on `tunnel_interface` being equal to `true` +- `tunnel_interface_hello_interval` (Number) Set time period of control hello packets <100..600000> milli seconds, Attribute conditional on `tunnel_interface` being equal to `true` - Range: `100`-`600000` - Default value: `1000` -- `tunnel_interface_hello_interval_variable` (String) Variable name -- `tunnel_interface_hello_tolerance` (Number) Set tolerance of control hello packets <12..6000> seconds +- `tunnel_interface_hello_interval_variable` (String) Variable name, Attribute conditional on `tunnel_interface` being equal to `true` +- `tunnel_interface_hello_tolerance` (Number) Set tolerance of control hello packets <12..6000> seconds, Attribute conditional on `tunnel_interface` being equal to `true` - Range: `12`-`6000` - Default value: `12` -- `tunnel_interface_hello_tolerance_variable` (String) Variable name -- `tunnel_interface_last_resort_circuit` (Boolean) Set TLOC as last resort +- `tunnel_interface_hello_tolerance_variable` (String) Variable name, Attribute conditional on `tunnel_interface` being equal to `true` +- `tunnel_interface_last_resort_circuit` (Boolean) Set TLOC as last resort, Attribute conditional on `tunnel_interface` being equal to `true` - Default value: `false` -- `tunnel_interface_last_resort_circuit_variable` (String) Variable name -- `tunnel_interface_low_bandwidth_link` (Boolean) Set the interface as a low-bandwidth circuit +- `tunnel_interface_last_resort_circuit_variable` (String) Variable name, Attribute conditional on `tunnel_interface` being equal to `true` +- `tunnel_interface_low_bandwidth_link` (Boolean) Set the interface as a low-bandwidth circuit, Attribute conditional on `tunnel_interface` being equal to `true` - Default value: `false` -- `tunnel_interface_low_bandwidth_link_variable` (String) Variable name -- `tunnel_interface_max_control_connections` (Number) Maximum Control Connections +- `tunnel_interface_low_bandwidth_link_variable` (String) Variable name, Attribute conditional on `tunnel_interface` being equal to `true` +- `tunnel_interface_max_control_connections` (Number) Maximum Control Connections, Attribute conditional on `tunnel_interface` being equal to `true` - Range: `0`-`100` -- `tunnel_interface_max_control_connections_variable` (String) Variable name -- `tunnel_interface_nat_refresh_interval` (Number) Set time period of nat refresh packets <1...60> seconds +- `tunnel_interface_max_control_connections_variable` (String) Variable name, Attribute conditional on `tunnel_interface` being equal to `true` +- `tunnel_interface_nat_refresh_interval` (Number) Set time period of nat refresh packets <1...60> seconds, Attribute conditional on `tunnel_interface` being equal to `true` - Range: `1`-`60` - Default value: `5` -- `tunnel_interface_nat_refresh_interval_variable` (String) Variable name -- `tunnel_interface_network_broadcast` (Boolean) Accept and respond to network-prefix-directed broadcasts +- `tunnel_interface_nat_refresh_interval_variable` (String) Variable name, Attribute conditional on `tunnel_interface` being equal to `true` +- `tunnel_interface_network_broadcast` (Boolean) Accept and respond to network-prefix-directed broadcasts, Attribute conditional on `tunnel_interface` being equal to `true` - Default value: `false` -- `tunnel_interface_network_broadcast_variable` (String) Variable name -- `tunnel_interface_port_hop` (Boolean) Disallow port hopping on the tunnel interface +- `tunnel_interface_network_broadcast_variable` (String) Variable name, Attribute conditional on `tunnel_interface` being equal to `true` +- `tunnel_interface_port_hop` (Boolean) Disallow port hopping on the tunnel interface, Attribute conditional on `tunnel_interface` being equal to `true` - Default value: `true` -- `tunnel_interface_port_hop_variable` (String) Variable name -- `tunnel_interface_tunnel_tcp_mss` (Number) Tunnel TCP MSS on SYN packets, in bytes +- `tunnel_interface_port_hop_variable` (String) Variable name, Attribute conditional on `tunnel_interface` being equal to `true` +- `tunnel_interface_tunnel_tcp_mss` (Number) Tunnel TCP MSS on SYN packets, in bytes, Attribute conditional on `tunnel_interface` being equal to `true` - Range: `500`-`1460` -- `tunnel_interface_tunnel_tcp_mss_variable` (String) Variable name -- `tunnel_interface_vbond_as_stun_server` (Boolean) Put this wan interface in STUN mode only +- `tunnel_interface_tunnel_tcp_mss_variable` (String) Variable name, Attribute conditional on `tunnel_interface` being equal to `true` +- `tunnel_interface_vbond_as_stun_server` (Boolean) Put this wan interface in STUN mode only, Attribute conditional on `tunnel_interface` being equal to `true` - Default value: `false` -- `tunnel_interface_vbond_as_stun_server_variable` (String) Variable name -- `tunnel_interface_vmanage_connection_preference` (Number) Set interface preference for control connection to vManage <0..8> +- `tunnel_interface_vbond_as_stun_server_variable` (String) Variable name, Attribute conditional on `tunnel_interface` being equal to `true` +- `tunnel_interface_vmanage_connection_preference` (Number) Set interface preference for control connection to vManage <0..8>, Attribute conditional on `tunnel_interface` being equal to `true` - Range: `0`-`8` - Default value: `5` -- `tunnel_interface_vmanage_connection_preference_variable` (String) Variable name -- `tunnel_qos_mode` (String) Set tunnel QoS mode +- `tunnel_interface_vmanage_connection_preference_variable` (String) Variable name, Attribute conditional on `tunnel_interface` being equal to `true` +- `tunnel_qos_mode` (String) Set tunnel QoS mode, Attribute conditional on `tunnel_interface` being equal to `true` - Choices: `hub`, `spoke` -- `tunnel_qos_mode_variable` (String) Variable name +- `tunnel_qos_mode_variable` (String) Variable name, Attribute conditional on `tunnel_interface` being equal to `true` - `xconnect` (String) Extend remote TLOC over a GRE tunnel to a local WAN interface - `xconnect_variable` (String) Variable name 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..f5275ddf2 100644 --- a/gen/definitions/profile_parcels/transport_wan_vpn_interface_ethernet.yaml +++ b/gen/definitions/profile_parcels/transport_wan_vpn_interface_ethernet.yaml @@ -144,115 +144,208 @@ attributes: example: true - model_name: perTunnelQos data_path: [tunnel] + conditional_attribute: + name: tunnelInterface + value: true + type: Bool example: true - model_name: mode tf_name: tunnel_qos_mode data_path: [tunnel] + conditional_attribute: + name: tunnelInterface + value: true + type: Bool example: hub - model_name: bandwidthPercent tf_name: tunnel_bandwidth_percent data_path: [tunnel] - # conditional_attribute: - # name: tunnel_qos_mode - # value: hub + conditional_attribute: + name: tunnelInterface + value: true + type: Bool example: 82 - model_name: bind tf_name: tunnel_interface_bind_loopback_tunnel data_path: [tunnel] + conditional_attribute: + name: tunnelInterface + value: true + type: Bool example: example - model_name: carrier tf_name: tunnel_interface_carrier exclude_ignore: true data_path: [tunnel] + conditional_attribute: + name: tunnelInterface + value: true + type: Bool example: default - model_name: color tf_name: tunnel_interface_color exclude_ignore: true data_path: [tunnel] + conditional_attribute: + name: tunnelInterface + value: true + type: Bool example: default - model_name: helloInterval tf_name: tunnel_interface_hello_interval exclude_ignore: true data_path: [tunnel] + conditional_attribute: + name: tunnelInterface + value: true + type: Bool example: 1000 - model_name: helloTolerance tf_name: tunnel_interface_hello_tolerance exclude_ignore: true data_path: [tunnel] + conditional_attribute: + name: tunnelInterface + value: true + type: Bool example: 12 - model_name: lastResortCircuit tf_name: tunnel_interface_last_resort_circuit exclude_ignore: true data_path: [tunnel] + conditional_attribute: + name: tunnelInterface + value: true + type: Bool example: false - model_name: tlocExtensionGreTo tf_name: tunnel_interface_gre_tunnel_destination_ip data_path: [tunnel] + conditional_attribute: + name: tunnelInterface + value: true + type: Bool example: 1.2.3.4 - model_name: restrict tf_name: tunnel_interface_color_restrict data_path: [tunnel] + conditional_attribute: + name: tunnelInterface + value: true + type: Bool example: true - model_name: group tf_name: tunnel_interface_groups data_path: [tunnel] + conditional_attribute: + name: tunnelInterface + value: true + type: Bool example: 42949672 - model_name: border tf_name: tunnel_interface_border exclude_ignore: true data_path: [tunnel] + conditional_attribute: + name: tunnelInterface + value: true + type: Bool example: false - model_name: maxControlConnections tf_name: tunnel_interface_max_control_connections exclude_ignore: true data_path: [tunnel] + conditional_attribute: + name: tunnelInterface + value: true + type: Bool example: 62 - model_name: natRefreshInterval tf_name: tunnel_interface_nat_refresh_interval exclude_ignore: true data_path: [tunnel] + conditional_attribute: + name: tunnelInterface + value: true + type: Bool example: 5 - model_name: vBondAsStunServer tf_name: tunnel_interface_vbond_as_stun_server exclude_ignore: true data_path: [tunnel] + conditional_attribute: + name: tunnelInterface + value: true + type: Bool example: false - model_name: excludeControllerGroupList tf_name: tunnel_interface_exclude_controller_group_list exclude_ignore: true data_path: [tunnel] + conditional_attribute: + name: tunnelInterface + value: true + type: Bool example: 2 - model_name: vManageConnectionPreference tf_name: tunnel_interface_vmanage_connection_preference exclude_ignore: true data_path: [tunnel] + conditional_attribute: + name: tunnelInterface + value: true + type: Bool example: 8 - model_name: portHop tf_name: tunnel_interface_port_hop data_path: [tunnel] + conditional_attribute: + name: tunnelInterface + value: true + type: Bool example: true - model_name: lowBandwidthLink tf_name: tunnel_interface_low_bandwidth_link exclude_ignore: true data_path: [tunnel] + conditional_attribute: + name: tunnelInterface + value: true + type: Bool example: false - model_name: tunnelTcpMss tf_name: tunnel_interface_tunnel_tcp_mss exclude_ignore: true data_path: [tunnel] + conditional_attribute: + name: tunnelInterface + value: true + type: Bool example: 1460 - model_name: clearDontFragment tf_name: tunnel_interface_clear_dont_fragment exclude_ignore: true data_path: [tunnel] + conditional_attribute: + name: tunnelInterface + value: true + type: Bool example: false - model_name: ctsSgtPropagation tf_name: tunnel_interface_cts_sgt_propagation data_path: [tunnel] + conditional_attribute: + name: tunnelInterface + value: true + type: Bool example: false - model_name: networkBroadcast tf_name: tunnel_interface_network_broadcast data_path: [tunnel] + conditional_attribute: + name: tunnelInterface + value: true + type: Bool example: false - model_name: all tf_name: tunnel_interface_allow_all 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..fb8d40859 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 @@ -612,284 +612,284 @@ func (data TransportWANVPNInterfaceEthernet) toBody(ctx context.Context) string } if !data.PerTunnelQosVariable.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.perTunnelQos.optionType", "variable") body, _ = sjson.Set(body, path+"tunnel.perTunnelQos.value", data.PerTunnelQosVariable.ValueString()) } } else if data.PerTunnelQos.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.perTunnelQos.optionType", "default") body, _ = sjson.Set(body, path+"tunnel.perTunnelQos.value", false) } } else { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.perTunnelQos.optionType", "global") body, _ = sjson.Set(body, path+"tunnel.perTunnelQos.value", data.PerTunnelQos.ValueBool()) } } if !data.TunnelQosModeVariable.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.mode.optionType", "variable") body, _ = sjson.Set(body, path+"tunnel.mode.value", data.TunnelQosModeVariable.ValueString()) } } else if !data.TunnelQosMode.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.mode.optionType", "global") body, _ = sjson.Set(body, path+"tunnel.mode.value", data.TunnelQosMode.ValueString()) } } if !data.TunnelBandwidthPercentVariable.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.bandwidthPercent.optionType", "variable") body, _ = sjson.Set(body, path+"tunnel.bandwidthPercent.value", data.TunnelBandwidthPercentVariable.ValueString()) } } else if data.TunnelBandwidthPercent.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.bandwidthPercent.optionType", "default") body, _ = sjson.Set(body, path+"tunnel.bandwidthPercent.value", 50) } } else { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.bandwidthPercent.optionType", "global") body, _ = sjson.Set(body, path+"tunnel.bandwidthPercent.value", data.TunnelBandwidthPercent.ValueInt64()) } } if !data.TunnelInterfaceBindLoopbackTunnelVariable.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.bind.optionType", "variable") body, _ = sjson.Set(body, path+"tunnel.bind.value", data.TunnelInterfaceBindLoopbackTunnelVariable.ValueString()) } } else if data.TunnelInterfaceBindLoopbackTunnel.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.bind.optionType", "default") } } else { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.bind.optionType", "global") body, _ = sjson.Set(body, path+"tunnel.bind.value", data.TunnelInterfaceBindLoopbackTunnel.ValueString()) } } if !data.TunnelInterfaceCarrierVariable.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.carrier.optionType", "variable") body, _ = sjson.Set(body, path+"tunnel.carrier.value", data.TunnelInterfaceCarrierVariable.ValueString()) } } else if data.TunnelInterfaceCarrier.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.carrier.optionType", "default") body, _ = sjson.Set(body, path+"tunnel.carrier.value", "default") } } else { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.carrier.optionType", "global") body, _ = sjson.Set(body, path+"tunnel.carrier.value", data.TunnelInterfaceCarrier.ValueString()) } } if !data.TunnelInterfaceColorVariable.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.color.optionType", "variable") body, _ = sjson.Set(body, path+"tunnel.color.value", data.TunnelInterfaceColorVariable.ValueString()) } } else if data.TunnelInterfaceColor.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.color.optionType", "default") body, _ = sjson.Set(body, path+"tunnel.color.value", "mpls") } } else { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.color.optionType", "global") body, _ = sjson.Set(body, path+"tunnel.color.value", data.TunnelInterfaceColor.ValueString()) } } if !data.TunnelInterfaceHelloIntervalVariable.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.helloInterval.optionType", "variable") body, _ = sjson.Set(body, path+"tunnel.helloInterval.value", data.TunnelInterfaceHelloIntervalVariable.ValueString()) } } else if data.TunnelInterfaceHelloInterval.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.helloInterval.optionType", "default") body, _ = sjson.Set(body, path+"tunnel.helloInterval.value", 1000) } } else { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.helloInterval.optionType", "global") body, _ = sjson.Set(body, path+"tunnel.helloInterval.value", data.TunnelInterfaceHelloInterval.ValueInt64()) } } if !data.TunnelInterfaceHelloToleranceVariable.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.helloTolerance.optionType", "variable") body, _ = sjson.Set(body, path+"tunnel.helloTolerance.value", data.TunnelInterfaceHelloToleranceVariable.ValueString()) } } else if data.TunnelInterfaceHelloTolerance.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.helloTolerance.optionType", "default") body, _ = sjson.Set(body, path+"tunnel.helloTolerance.value", 12) } } else { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.helloTolerance.optionType", "global") body, _ = sjson.Set(body, path+"tunnel.helloTolerance.value", data.TunnelInterfaceHelloTolerance.ValueInt64()) } } if !data.TunnelInterfaceLastResortCircuitVariable.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.lastResortCircuit.optionType", "variable") body, _ = sjson.Set(body, path+"tunnel.lastResortCircuit.value", data.TunnelInterfaceLastResortCircuitVariable.ValueString()) } } else if data.TunnelInterfaceLastResortCircuit.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.lastResortCircuit.optionType", "default") body, _ = sjson.Set(body, path+"tunnel.lastResortCircuit.value", false) } } else { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.lastResortCircuit.optionType", "global") body, _ = sjson.Set(body, path+"tunnel.lastResortCircuit.value", data.TunnelInterfaceLastResortCircuit.ValueBool()) } } if !data.TunnelInterfaceGreTunnelDestinationIpVariable.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.tlocExtensionGreTo.optionType", "variable") body, _ = sjson.Set(body, path+"tunnel.tlocExtensionGreTo.value", data.TunnelInterfaceGreTunnelDestinationIpVariable.ValueString()) } } else if data.TunnelInterfaceGreTunnelDestinationIp.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.tlocExtensionGreTo.optionType", "default") } } else { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.tlocExtensionGreTo.optionType", "global") body, _ = sjson.Set(body, path+"tunnel.tlocExtensionGreTo.value", data.TunnelInterfaceGreTunnelDestinationIp.ValueString()) } } if !data.TunnelInterfaceColorRestrictVariable.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.restrict.optionType", "variable") body, _ = sjson.Set(body, path+"tunnel.restrict.value", data.TunnelInterfaceColorRestrictVariable.ValueString()) } } else if data.TunnelInterfaceColorRestrict.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.restrict.optionType", "default") body, _ = sjson.Set(body, path+"tunnel.restrict.value", false) } } else { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.restrict.optionType", "global") body, _ = sjson.Set(body, path+"tunnel.restrict.value", data.TunnelInterfaceColorRestrict.ValueBool()) } } if !data.TunnelInterfaceGroupsVariable.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.group.optionType", "variable") body, _ = sjson.Set(body, path+"tunnel.group.value", data.TunnelInterfaceGroupsVariable.ValueString()) } } else if data.TunnelInterfaceGroups.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.group.optionType", "default") } } else { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.group.optionType", "global") body, _ = sjson.Set(body, path+"tunnel.group.value", data.TunnelInterfaceGroups.ValueInt64()) } } if !data.TunnelInterfaceBorderVariable.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.border.optionType", "variable") body, _ = sjson.Set(body, path+"tunnel.border.value", data.TunnelInterfaceBorderVariable.ValueString()) } } else if data.TunnelInterfaceBorder.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.border.optionType", "default") body, _ = sjson.Set(body, path+"tunnel.border.value", false) } } else { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.border.optionType", "global") body, _ = sjson.Set(body, path+"tunnel.border.value", data.TunnelInterfaceBorder.ValueBool()) } } if !data.TunnelInterfaceMaxControlConnectionsVariable.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.maxControlConnections.optionType", "variable") body, _ = sjson.Set(body, path+"tunnel.maxControlConnections.value", data.TunnelInterfaceMaxControlConnectionsVariable.ValueString()) } } else if data.TunnelInterfaceMaxControlConnections.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.maxControlConnections.optionType", "default") } } else { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.maxControlConnections.optionType", "global") body, _ = sjson.Set(body, path+"tunnel.maxControlConnections.value", data.TunnelInterfaceMaxControlConnections.ValueInt64()) } } if !data.TunnelInterfaceNatRefreshIntervalVariable.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.natRefreshInterval.optionType", "variable") body, _ = sjson.Set(body, path+"tunnel.natRefreshInterval.value", data.TunnelInterfaceNatRefreshIntervalVariable.ValueString()) } } else if data.TunnelInterfaceNatRefreshInterval.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.natRefreshInterval.optionType", "default") body, _ = sjson.Set(body, path+"tunnel.natRefreshInterval.value", 5) } } else { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.natRefreshInterval.optionType", "global") body, _ = sjson.Set(body, path+"tunnel.natRefreshInterval.value", data.TunnelInterfaceNatRefreshInterval.ValueInt64()) } } if !data.TunnelInterfaceVbondAsStunServerVariable.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.vBondAsStunServer.optionType", "variable") body, _ = sjson.Set(body, path+"tunnel.vBondAsStunServer.value", data.TunnelInterfaceVbondAsStunServerVariable.ValueString()) } } else if data.TunnelInterfaceVbondAsStunServer.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.vBondAsStunServer.optionType", "default") body, _ = sjson.Set(body, path+"tunnel.vBondAsStunServer.value", false) } } else { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.vBondAsStunServer.optionType", "global") body, _ = sjson.Set(body, path+"tunnel.vBondAsStunServer.value", data.TunnelInterfaceVbondAsStunServer.ValueBool()) } } if !data.TunnelInterfaceExcludeControllerGroupListVariable.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.excludeControllerGroupList.optionType", "variable") body, _ = sjson.Set(body, path+"tunnel.excludeControllerGroupList.value", data.TunnelInterfaceExcludeControllerGroupListVariable.ValueString()) } } else if data.TunnelInterfaceExcludeControllerGroupList.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.excludeControllerGroupList.optionType", "default") } } else { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.excludeControllerGroupList.optionType", "global") var values []int64 data.TunnelInterfaceExcludeControllerGroupList.ElementsAs(ctx, &values, false) @@ -898,119 +898,119 @@ func (data TransportWANVPNInterfaceEthernet) toBody(ctx context.Context) string } if !data.TunnelInterfaceVmanageConnectionPreferenceVariable.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.vManageConnectionPreference.optionType", "variable") body, _ = sjson.Set(body, path+"tunnel.vManageConnectionPreference.value", data.TunnelInterfaceVmanageConnectionPreferenceVariable.ValueString()) } } else if data.TunnelInterfaceVmanageConnectionPreference.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.vManageConnectionPreference.optionType", "default") body, _ = sjson.Set(body, path+"tunnel.vManageConnectionPreference.value", 5) } } else { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.vManageConnectionPreference.optionType", "global") body, _ = sjson.Set(body, path+"tunnel.vManageConnectionPreference.value", data.TunnelInterfaceVmanageConnectionPreference.ValueInt64()) } } if !data.TunnelInterfacePortHopVariable.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.portHop.optionType", "variable") body, _ = sjson.Set(body, path+"tunnel.portHop.value", data.TunnelInterfacePortHopVariable.ValueString()) } } else if data.TunnelInterfacePortHop.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.portHop.optionType", "default") body, _ = sjson.Set(body, path+"tunnel.portHop.value", true) } } else { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.portHop.optionType", "global") body, _ = sjson.Set(body, path+"tunnel.portHop.value", data.TunnelInterfacePortHop.ValueBool()) } } if !data.TunnelInterfaceLowBandwidthLinkVariable.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.lowBandwidthLink.optionType", "variable") body, _ = sjson.Set(body, path+"tunnel.lowBandwidthLink.value", data.TunnelInterfaceLowBandwidthLinkVariable.ValueString()) } } else if data.TunnelInterfaceLowBandwidthLink.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.lowBandwidthLink.optionType", "default") body, _ = sjson.Set(body, path+"tunnel.lowBandwidthLink.value", false) } } else { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.lowBandwidthLink.optionType", "global") body, _ = sjson.Set(body, path+"tunnel.lowBandwidthLink.value", data.TunnelInterfaceLowBandwidthLink.ValueBool()) } } if !data.TunnelInterfaceTunnelTcpMssVariable.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.tunnelTcpMss.optionType", "variable") body, _ = sjson.Set(body, path+"tunnel.tunnelTcpMss.value", data.TunnelInterfaceTunnelTcpMssVariable.ValueString()) } } else if data.TunnelInterfaceTunnelTcpMss.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.tunnelTcpMss.optionType", "default") } } else { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.tunnelTcpMss.optionType", "global") body, _ = sjson.Set(body, path+"tunnel.tunnelTcpMss.value", data.TunnelInterfaceTunnelTcpMss.ValueInt64()) } } if !data.TunnelInterfaceClearDontFragmentVariable.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.clearDontFragment.optionType", "variable") body, _ = sjson.Set(body, path+"tunnel.clearDontFragment.value", data.TunnelInterfaceClearDontFragmentVariable.ValueString()) } } else if data.TunnelInterfaceClearDontFragment.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.clearDontFragment.optionType", "default") body, _ = sjson.Set(body, path+"tunnel.clearDontFragment.value", false) } } else { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.clearDontFragment.optionType", "global") body, _ = sjson.Set(body, path+"tunnel.clearDontFragment.value", data.TunnelInterfaceClearDontFragment.ValueBool()) } } if !data.TunnelInterfaceCtsSgtPropagationVariable.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.ctsSgtPropagation.optionType", "variable") body, _ = sjson.Set(body, path+"tunnel.ctsSgtPropagation.value", data.TunnelInterfaceCtsSgtPropagationVariable.ValueString()) } } else if data.TunnelInterfaceCtsSgtPropagation.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.ctsSgtPropagation.optionType", "default") body, _ = sjson.Set(body, path+"tunnel.ctsSgtPropagation.value", false) } } else { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.ctsSgtPropagation.optionType", "global") body, _ = sjson.Set(body, path+"tunnel.ctsSgtPropagation.value", data.TunnelInterfaceCtsSgtPropagation.ValueBool()) } } if !data.TunnelInterfaceNetworkBroadcastVariable.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.networkBroadcast.optionType", "variable") body, _ = sjson.Set(body, path+"tunnel.networkBroadcast.value", data.TunnelInterfaceNetworkBroadcastVariable.ValueString()) } } else if data.TunnelInterfaceNetworkBroadcast.IsNull() { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.networkBroadcast.optionType", "default") body, _ = sjson.Set(body, path+"tunnel.networkBroadcast.value", false) } } else { - if true { + if true && data.TunnelInterface.ValueBool() == true { body, _ = sjson.Set(body, path+"tunnel.networkBroadcast.optionType", "global") body, _ = sjson.Set(body, path+"tunnel.networkBroadcast.value", data.TunnelInterfaceNetworkBroadcast.ValueBool()) } diff --git a/internal/provider/resource_sdwan_transport_wan_vpn_interface_ethernet_feature.go b/internal/provider/resource_sdwan_transport_wan_vpn_interface_ethernet_feature.go index 2ec226fc2..fac8aad0e 100644 --- a/internal/provider/resource_sdwan_transport_wan_vpn_interface_ethernet_feature.go +++ b/internal/provider/resource_sdwan_transport_wan_vpn_interface_ethernet_feature.go @@ -317,226 +317,226 @@ func (r *TransportWANVPNInterfaceEthernetProfileParcelResource) Schema(ctx conte Optional: true, }, "per_tunnel_qos": schema.BoolAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Per-tunnel Qos").AddDefaultValueDescription("false").String, + MarkdownDescription: helpers.NewAttributeDescription("Per-tunnel Qos, Attribute conditional on `tunnel_interface` being equal to `true`").AddDefaultValueDescription("false").String, Optional: true, }, "per_tunnel_qos_variable": schema.StringAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Variable name").String, + MarkdownDescription: helpers.NewAttributeDescription("Variable name, Attribute conditional on `tunnel_interface` being equal to `true`").String, Optional: true, }, "tunnel_qos_mode": schema.StringAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Set tunnel QoS mode").AddStringEnumDescription("hub", "spoke").String, + MarkdownDescription: helpers.NewAttributeDescription("Set tunnel QoS mode, Attribute conditional on `tunnel_interface` being equal to `true`").AddStringEnumDescription("hub", "spoke").String, Optional: true, Validators: []validator.String{ stringvalidator.OneOf("hub", "spoke"), }, }, "tunnel_qos_mode_variable": schema.StringAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Variable name").String, + MarkdownDescription: helpers.NewAttributeDescription("Variable name, Attribute conditional on `tunnel_interface` being equal to `true`").String, Optional: true, }, "tunnel_bandwidth_percent": schema.Int64Attribute{ - MarkdownDescription: helpers.NewAttributeDescription("Tunnels Bandwidth Percent").AddIntegerRangeDescription(1, 100).AddDefaultValueDescription("50").String, + MarkdownDescription: helpers.NewAttributeDescription("Tunnels Bandwidth Percent, Attribute conditional on `tunnel_interface` being equal to `true`").AddIntegerRangeDescription(1, 100).AddDefaultValueDescription("50").String, Optional: true, Validators: []validator.Int64{ int64validator.Between(1, 100), }, }, "tunnel_bandwidth_percent_variable": schema.StringAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Variable name").String, + MarkdownDescription: helpers.NewAttributeDescription("Variable name, Attribute conditional on `tunnel_interface` being equal to `true`").String, Optional: true, }, "tunnel_interface_bind_loopback_tunnel": schema.StringAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Bind loopback tunnel interface to a physical interface").String, + MarkdownDescription: helpers.NewAttributeDescription("Bind loopback tunnel interface to a physical interface, Attribute conditional on `tunnel_interface` being equal to `true`").String, Optional: true, Validators: []validator.String{ stringvalidator.LengthBetween(1, 32), }, }, "tunnel_interface_bind_loopback_tunnel_variable": schema.StringAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Variable name").String, + MarkdownDescription: helpers.NewAttributeDescription("Variable name, Attribute conditional on `tunnel_interface` being equal to `true`").String, Optional: true, }, "tunnel_interface_carrier": schema.StringAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Set carrier for TLOC").AddStringEnumDescription("default", "carrier1", "carrier2", "carrier3", "carrier4", "carrier5", "carrier6", "carrier7", "carrier8").AddDefaultValueDescription("default").String, + MarkdownDescription: helpers.NewAttributeDescription("Set carrier for TLOC, Attribute conditional on `tunnel_interface` being equal to `true`").AddStringEnumDescription("default", "carrier1", "carrier2", "carrier3", "carrier4", "carrier5", "carrier6", "carrier7", "carrier8").AddDefaultValueDescription("default").String, Optional: true, Validators: []validator.String{ stringvalidator.OneOf("default", "carrier1", "carrier2", "carrier3", "carrier4", "carrier5", "carrier6", "carrier7", "carrier8"), }, }, "tunnel_interface_carrier_variable": schema.StringAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Variable name").String, + MarkdownDescription: helpers.NewAttributeDescription("Variable name, Attribute conditional on `tunnel_interface` being equal to `true`").String, Optional: true, }, "tunnel_interface_color": schema.StringAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Set color for TLOC").AddStringEnumDescription("default", "mpls", "metro-ethernet", "biz-internet", "public-internet", "lte", "3g", "red", "green", "blue", "gold", "silver", "bronze", "custom1", "custom2", "custom3", "private1", "private2", "private3", "private4", "private5", "private6").AddDefaultValueDescription("mpls").String, + MarkdownDescription: helpers.NewAttributeDescription("Set color for TLOC, Attribute conditional on `tunnel_interface` being equal to `true`").AddStringEnumDescription("default", "mpls", "metro-ethernet", "biz-internet", "public-internet", "lte", "3g", "red", "green", "blue", "gold", "silver", "bronze", "custom1", "custom2", "custom3", "private1", "private2", "private3", "private4", "private5", "private6").AddDefaultValueDescription("mpls").String, Optional: true, Validators: []validator.String{ stringvalidator.OneOf("default", "mpls", "metro-ethernet", "biz-internet", "public-internet", "lte", "3g", "red", "green", "blue", "gold", "silver", "bronze", "custom1", "custom2", "custom3", "private1", "private2", "private3", "private4", "private5", "private6"), }, }, "tunnel_interface_color_variable": schema.StringAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Variable name").String, + MarkdownDescription: helpers.NewAttributeDescription("Variable name, Attribute conditional on `tunnel_interface` being equal to `true`").String, Optional: true, }, "tunnel_interface_hello_interval": schema.Int64Attribute{ - MarkdownDescription: helpers.NewAttributeDescription("Set time period of control hello packets <100..600000> milli seconds").AddIntegerRangeDescription(100, 600000).AddDefaultValueDescription("1000").String, + MarkdownDescription: helpers.NewAttributeDescription("Set time period of control hello packets <100..600000> milli seconds, Attribute conditional on `tunnel_interface` being equal to `true`").AddIntegerRangeDescription(100, 600000).AddDefaultValueDescription("1000").String, Optional: true, Validators: []validator.Int64{ int64validator.Between(100, 600000), }, }, "tunnel_interface_hello_interval_variable": schema.StringAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Variable name").String, + MarkdownDescription: helpers.NewAttributeDescription("Variable name, Attribute conditional on `tunnel_interface` being equal to `true`").String, Optional: true, }, "tunnel_interface_hello_tolerance": schema.Int64Attribute{ - MarkdownDescription: helpers.NewAttributeDescription("Set tolerance of control hello packets <12..6000> seconds").AddIntegerRangeDescription(12, 6000).AddDefaultValueDescription("12").String, + MarkdownDescription: helpers.NewAttributeDescription("Set tolerance of control hello packets <12..6000> seconds, Attribute conditional on `tunnel_interface` being equal to `true`").AddIntegerRangeDescription(12, 6000).AddDefaultValueDescription("12").String, Optional: true, Validators: []validator.Int64{ int64validator.Between(12, 6000), }, }, "tunnel_interface_hello_tolerance_variable": schema.StringAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Variable name").String, + MarkdownDescription: helpers.NewAttributeDescription("Variable name, Attribute conditional on `tunnel_interface` being equal to `true`").String, Optional: true, }, "tunnel_interface_last_resort_circuit": schema.BoolAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Set TLOC as last resort").AddDefaultValueDescription("false").String, + MarkdownDescription: helpers.NewAttributeDescription("Set TLOC as last resort, Attribute conditional on `tunnel_interface` being equal to `true`").AddDefaultValueDescription("false").String, Optional: true, }, "tunnel_interface_last_resort_circuit_variable": schema.StringAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Variable name").String, + MarkdownDescription: helpers.NewAttributeDescription("Variable name, Attribute conditional on `tunnel_interface` being equal to `true`").String, Optional: true, }, "tunnel_interface_gre_tunnel_destination_ip": schema.StringAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("GRE tunnel destination IP").String, + MarkdownDescription: helpers.NewAttributeDescription("GRE tunnel destination IP, Attribute conditional on `tunnel_interface` being equal to `true`").String, Optional: true, }, "tunnel_interface_gre_tunnel_destination_ip_variable": schema.StringAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Variable name").String, + MarkdownDescription: helpers.NewAttributeDescription("Variable name, Attribute conditional on `tunnel_interface` being equal to `true`").String, Optional: true, }, "tunnel_interface_color_restrict": schema.BoolAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Restrict this TLOC behavior").AddDefaultValueDescription("false").String, + MarkdownDescription: helpers.NewAttributeDescription("Restrict this TLOC behavior, Attribute conditional on `tunnel_interface` being equal to `true`").AddDefaultValueDescription("false").String, Optional: true, }, "tunnel_interface_color_restrict_variable": schema.StringAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Variable name").String, + MarkdownDescription: helpers.NewAttributeDescription("Variable name, Attribute conditional on `tunnel_interface` being equal to `true`").String, Optional: true, }, "tunnel_interface_groups": schema.Int64Attribute{ - MarkdownDescription: helpers.NewAttributeDescription("List of groups").AddIntegerRangeDescription(1, 4294967295).String, + MarkdownDescription: helpers.NewAttributeDescription("List of groups, Attribute conditional on `tunnel_interface` being equal to `true`").AddIntegerRangeDescription(1, 4294967295).String, Optional: true, Validators: []validator.Int64{ int64validator.Between(1, 4294967295), }, }, "tunnel_interface_groups_variable": schema.StringAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Variable name").String, + MarkdownDescription: helpers.NewAttributeDescription("Variable name, Attribute conditional on `tunnel_interface` being equal to `true`").String, Optional: true, }, "tunnel_interface_border": schema.BoolAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Set TLOC as border TLOC").AddDefaultValueDescription("false").String, + MarkdownDescription: helpers.NewAttributeDescription("Set TLOC as border TLOC, Attribute conditional on `tunnel_interface` being equal to `true`").AddDefaultValueDescription("false").String, Optional: true, }, "tunnel_interface_border_variable": schema.StringAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Variable name").String, + MarkdownDescription: helpers.NewAttributeDescription("Variable name, Attribute conditional on `tunnel_interface` being equal to `true`").String, Optional: true, }, "tunnel_interface_max_control_connections": schema.Int64Attribute{ - MarkdownDescription: helpers.NewAttributeDescription("Maximum Control Connections").AddIntegerRangeDescription(0, 100).String, + MarkdownDescription: helpers.NewAttributeDescription("Maximum Control Connections, Attribute conditional on `tunnel_interface` being equal to `true`").AddIntegerRangeDescription(0, 100).String, Optional: true, }, "tunnel_interface_max_control_connections_variable": schema.StringAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Variable name").String, + MarkdownDescription: helpers.NewAttributeDescription("Variable name, Attribute conditional on `tunnel_interface` being equal to `true`").String, Optional: true, }, "tunnel_interface_nat_refresh_interval": schema.Int64Attribute{ - MarkdownDescription: helpers.NewAttributeDescription("Set time period of nat refresh packets <1...60> seconds").AddIntegerRangeDescription(1, 60).AddDefaultValueDescription("5").String, + MarkdownDescription: helpers.NewAttributeDescription("Set time period of nat refresh packets <1...60> seconds, Attribute conditional on `tunnel_interface` being equal to `true`").AddIntegerRangeDescription(1, 60).AddDefaultValueDescription("5").String, Optional: true, Validators: []validator.Int64{ int64validator.Between(1, 60), }, }, "tunnel_interface_nat_refresh_interval_variable": schema.StringAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Variable name").String, + MarkdownDescription: helpers.NewAttributeDescription("Variable name, Attribute conditional on `tunnel_interface` being equal to `true`").String, Optional: true, }, "tunnel_interface_vbond_as_stun_server": schema.BoolAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Put this wan interface in STUN mode only").AddDefaultValueDescription("false").String, + MarkdownDescription: helpers.NewAttributeDescription("Put this wan interface in STUN mode only, Attribute conditional on `tunnel_interface` being equal to `true`").AddDefaultValueDescription("false").String, Optional: true, }, "tunnel_interface_vbond_as_stun_server_variable": schema.StringAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Variable name").String, + MarkdownDescription: helpers.NewAttributeDescription("Variable name, Attribute conditional on `tunnel_interface` being equal to `true`").String, Optional: true, }, "tunnel_interface_exclude_controller_group_list": schema.SetAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Exclude the following controller groups defined in this list.").String, + MarkdownDescription: helpers.NewAttributeDescription("Exclude the following controller groups defined in this list., Attribute conditional on `tunnel_interface` being equal to `true`").String, ElementType: types.Int64Type, Optional: true, }, "tunnel_interface_exclude_controller_group_list_variable": schema.StringAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Variable name").String, + MarkdownDescription: helpers.NewAttributeDescription("Variable name, Attribute conditional on `tunnel_interface` being equal to `true`").String, Optional: true, }, "tunnel_interface_vmanage_connection_preference": schema.Int64Attribute{ - MarkdownDescription: helpers.NewAttributeDescription("Set interface preference for control connection to vManage <0..8>").AddIntegerRangeDescription(0, 8).AddDefaultValueDescription("5").String, + MarkdownDescription: helpers.NewAttributeDescription("Set interface preference for control connection to vManage <0..8>, Attribute conditional on `tunnel_interface` being equal to `true`").AddIntegerRangeDescription(0, 8).AddDefaultValueDescription("5").String, Optional: true, }, "tunnel_interface_vmanage_connection_preference_variable": schema.StringAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Variable name").String, + MarkdownDescription: helpers.NewAttributeDescription("Variable name, Attribute conditional on `tunnel_interface` being equal to `true`").String, Optional: true, }, "tunnel_interface_port_hop": schema.BoolAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Disallow port hopping on the tunnel interface").AddDefaultValueDescription("true").String, + MarkdownDescription: helpers.NewAttributeDescription("Disallow port hopping on the tunnel interface, Attribute conditional on `tunnel_interface` being equal to `true`").AddDefaultValueDescription("true").String, Optional: true, }, "tunnel_interface_port_hop_variable": schema.StringAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Variable name").String, + MarkdownDescription: helpers.NewAttributeDescription("Variable name, Attribute conditional on `tunnel_interface` being equal to `true`").String, Optional: true, }, "tunnel_interface_low_bandwidth_link": schema.BoolAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Set the interface as a low-bandwidth circuit").AddDefaultValueDescription("false").String, + MarkdownDescription: helpers.NewAttributeDescription("Set the interface as a low-bandwidth circuit, Attribute conditional on `tunnel_interface` being equal to `true`").AddDefaultValueDescription("false").String, Optional: true, }, "tunnel_interface_low_bandwidth_link_variable": schema.StringAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Variable name").String, + MarkdownDescription: helpers.NewAttributeDescription("Variable name, Attribute conditional on `tunnel_interface` being equal to `true`").String, Optional: true, }, "tunnel_interface_tunnel_tcp_mss": schema.Int64Attribute{ - MarkdownDescription: helpers.NewAttributeDescription("Tunnel TCP MSS on SYN packets, in bytes").AddIntegerRangeDescription(500, 1460).String, + MarkdownDescription: helpers.NewAttributeDescription("Tunnel TCP MSS on SYN packets, in bytes, Attribute conditional on `tunnel_interface` being equal to `true`").AddIntegerRangeDescription(500, 1460).String, Optional: true, Validators: []validator.Int64{ int64validator.Between(500, 1460), }, }, "tunnel_interface_tunnel_tcp_mss_variable": schema.StringAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Variable name").String, + MarkdownDescription: helpers.NewAttributeDescription("Variable name, Attribute conditional on `tunnel_interface` being equal to `true`").String, Optional: true, }, "tunnel_interface_clear_dont_fragment": schema.BoolAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Enable clear dont fragment (Currently Only SDWAN Tunnel Interface)").AddDefaultValueDescription("false").String, + MarkdownDescription: helpers.NewAttributeDescription("Enable clear dont fragment (Currently Only SDWAN Tunnel Interface), Attribute conditional on `tunnel_interface` being equal to `true`").AddDefaultValueDescription("false").String, Optional: true, }, "tunnel_interface_clear_dont_fragment_variable": schema.StringAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Variable name").String, + MarkdownDescription: helpers.NewAttributeDescription("Variable name, Attribute conditional on `tunnel_interface` being equal to `true`").String, Optional: true, }, "tunnel_interface_cts_sgt_propagation": schema.BoolAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("CTS SGT Propagation configuration").AddDefaultValueDescription("false").String, + MarkdownDescription: helpers.NewAttributeDescription("CTS SGT Propagation configuration, Attribute conditional on `tunnel_interface` being equal to `true`").AddDefaultValueDescription("false").String, Optional: true, }, "tunnel_interface_cts_sgt_propagation_variable": schema.StringAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Variable name").String, + MarkdownDescription: helpers.NewAttributeDescription("Variable name, Attribute conditional on `tunnel_interface` being equal to `true`").String, Optional: true, }, "tunnel_interface_network_broadcast": schema.BoolAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Accept and respond to network-prefix-directed broadcasts").AddDefaultValueDescription("false").String, + MarkdownDescription: helpers.NewAttributeDescription("Accept and respond to network-prefix-directed broadcasts, Attribute conditional on `tunnel_interface` being equal to `true`").AddDefaultValueDescription("false").String, Optional: true, }, "tunnel_interface_network_broadcast_variable": schema.StringAttribute{ - MarkdownDescription: helpers.NewAttributeDescription("Variable name").String, + MarkdownDescription: helpers.NewAttributeDescription("Variable name, Attribute conditional on `tunnel_interface` being equal to `true`").String, Optional: true, }, "tunnel_interface_allow_all": schema.BoolAttribute{