Skip to content

Commit

Permalink
update per comments
Browse files Browse the repository at this point in the history
Signed-off-by: ziyeqf <51212351+ziyeqf@users.noreply.github.com>
  • Loading branch information
ziyeqf committed Jun 25, 2023
1 parent e4050fd commit 66664cf
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 116 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -73,27 +73,19 @@ func (r AttachedDataNetworkDataSource) Attributes() map[string]*pluginsdk.Schema
Optional: true,
},

"pinhole_timeouts_in_seconds": {
Type: pluginsdk.TypeList,
"icmp_pinhole_timeout_in_seconds": {
Type: pluginsdk.TypeInt,
Computed: true,
Elem: &pluginsdk.Resource{
Schema: map[string]*pluginsdk.Schema{
"icmp": {
Type: pluginsdk.TypeInt,
Computed: true,
},
},

"tcp": {
Type: pluginsdk.TypeInt,
Computed: true,
},
"tcp_pinhole_timeout_in_seconds": {
Type: pluginsdk.TypeInt,
Computed: true,
},

"udp": {
Type: pluginsdk.TypeInt,
Computed: true,
},
},
},
"udp_pinhole_timeout_in_seconds": {
Type: pluginsdk.TypeInt,
Computed: true,
},

"port_range": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,16 +34,12 @@ type AttachedDataNetworkModel struct {
}

type NaptConfigurationModel struct {
PinholeLimits int64 `tfschema:"pinhole_maximum_number"`
PinholeTimeouts []PinholeTimeoutsModel `tfschema:"pinhole_timeouts_in_seconds"`
PortRange []PortRangeModel `tfschema:"port_range"`
PortReuseHoldTime []PortReuseHoldTimesModel `tfschema:"port_reuse_minimum_hold_time_in_seconds"`
}

type PinholeTimeoutsModel struct {
Icmp int64 `tfschema:"icmp"`
Tcp int64 `tfschema:"tcp"`
Udp int64 `tfschema:"udp"`
PinholeLimits int64 `tfschema:"pinhole_maximum_number"`
IcmpPinholeTimeout int64 `tfschema:"icmp_pinhole_timeout_in_seconds"`
TcpPinholeTimeout int64 `tfschema:"tcp_pinhole_timeout_in_seconds"`
UdpPinholeTimeout int64 `tfschema:"udp_pinhole_timeout_in_seconds"`
PortRange []PortRangeModel `tfschema:"port_range"`
PortReuseHoldTime []PortReuseHoldTimesModel `tfschema:"port_reuse_minimum_hold_time_in_seconds"`
}

type PortRangeModel struct {
Expand Down Expand Up @@ -112,34 +108,25 @@ func (r AttachedDataNetworkResource) Arguments() map[string]*pluginsdk.Schema {
ValidateFunc: validation.IntBetween(1, 65536),
},

"pinhole_timeouts_in_seconds": {
Type: pluginsdk.TypeList,
Optional: true,
MaxItems: 1,
Elem: &pluginsdk.Resource{
Schema: map[string]*pluginsdk.Schema{
"icmp": {
Type: pluginsdk.TypeInt,
Optional: true,
Default: 180,
ValidateFunc: validation.IntBetween(1, 180),
},
"icmp_pinhole_timeout_in_seconds": {
Type: pluginsdk.TypeInt,
Optional: true,
Default: 180,
ValidateFunc: validation.IntBetween(1, 180),
},

"tcp": {
Type: pluginsdk.TypeInt,
Optional: true,
Default: 180,
ValidateFunc: validation.IntBetween(1, 180),
},
"tcp_pinhole_timeout_in_seconds": {
Type: pluginsdk.TypeInt,
Optional: true,
Default: 180,
ValidateFunc: validation.IntBetween(1, 180),
},

"udp": {
Type: pluginsdk.TypeInt,
Optional: true,
Default: 180,
ValidateFunc: validation.IntBetween(1, 180),
},
},
},
"udp_pinhole_timeout_in_seconds": {
Type: pluginsdk.TypeInt,
Optional: true,
Default: 180,
ValidateFunc: validation.IntBetween(1, 180),
},

"port_range": {
Expand Down Expand Up @@ -505,7 +492,11 @@ func expandNaptConfigurationModel(inputList []NaptConfigurationModel) *attachedd

output.Enabled = pointer.To(attacheddatanetwork.NaptEnabledEnabled)

output.PinholeTimeouts = expandPinholeTimeoutsModel(input.PinholeTimeouts)
output.PinholeTimeouts = &attacheddatanetwork.PinholeTimeouts{
Icmp: &input.IcmpPinholeTimeout,
Tcp: &input.TcpPinholeTimeout,
Udp: &input.UdpPinholeTimeout,
}

output.PortRange = expandPortRangeModel(input.PortRange)

Expand All @@ -514,21 +505,6 @@ func expandNaptConfigurationModel(inputList []NaptConfigurationModel) *attachedd
return &output
}

func expandPinholeTimeoutsModel(inputList []PinholeTimeoutsModel) *attacheddatanetwork.PinholeTimeouts {
if len(inputList) == 0 {
return nil
}

input := &inputList[0]
output := attacheddatanetwork.PinholeTimeouts{
Icmp: &input.Icmp,
Tcp: &input.Tcp,
Udp: &input.Udp,
}

return &output
}

func expandPortRangeModel(inputList []PortRangeModel) *attacheddatanetwork.PortRange {
if len(inputList) == 0 {
return nil
Expand Down Expand Up @@ -565,7 +541,11 @@ func flattenNaptConfigurationModel(input *attacheddatanetwork.NaptConfiguration)

output.PinholeLimits = pointer.From(input.PinholeLimits)

output.PinholeTimeouts = flattenPinholeTimeoutsModel(input.PinholeTimeouts)
if input.PinholeTimeouts != nil {
output.IcmpPinholeTimeout = pointer.From(input.PinholeTimeouts.Icmp)
output.TcpPinholeTimeout = pointer.From(input.PinholeTimeouts.Tcp)
output.UdpPinholeTimeout = pointer.From(input.PinholeTimeouts.Udp)
}

output.PortRange = flattenPortRangeModel(input.PortRange)

Expand All @@ -574,21 +554,6 @@ func flattenNaptConfigurationModel(input *attacheddatanetwork.NaptConfiguration)
return []NaptConfigurationModel{output}
}

func flattenPinholeTimeoutsModel(input *attacheddatanetwork.PinholeTimeouts) []PinholeTimeoutsModel {
if input == nil {
return []PinholeTimeoutsModel{}
}
output := PinholeTimeoutsModel{}

output.Icmp = pointer.From(input.Icmp)

output.Tcp = pointer.From(input.Tcp)

output.Udp = pointer.From(input.Udp)

return []PinholeTimeoutsModel{output}
}

func flattenPortRangeModel(input *attacheddatanetwork.PortRange) []PortRangeModel {
if input == nil {
return []PortRangeModel{}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -200,13 +200,10 @@ resource "azurerm_mobile_network_attached_data_network" "test" {
user_plane_access_ipv4_subnet = "10.204.141.0/24"
network_address_port_translation {
pinhole_maximum_number = 65536
pinhole_timeouts_in_seconds {
icmp = 30
tcp = 100
udp = 39
}
pinhole_maximum_number = 65536
icmp_pinhole_timeout_in_seconds = 30
tcp_pinhole_timeout_in_seconds = 100
udp_pinhole_timeout_in_seconds = 39
port_range {
max_port = 49999
Expand Down Expand Up @@ -245,12 +242,11 @@ resource "azurerm_mobile_network_attached_data_network" "test" {
user_plane_access_ipv4_subnet = "10.204.141.0/24"
network_address_port_translation {
pinhole_maximum_number = 65536
pinhole_timeouts_in_seconds {
icmp = 30
tcp = 100
udp = 39
}
pinhole_maximum_number = 65536
icmp_pinhole_timeout_in_seconds = 30
tcp_pinhole_timeout_in_seconds = 100
udp_pinhole_timeout_in_seconds = 39
port_range {
max_port = 49999
min_port = 1024
Expand Down
27 changes: 10 additions & 17 deletions website/docs/r/mobile_network_attached_data_network.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -80,12 +80,11 @@ resource "azurerm_mobile_network_attached_data_network" "example" {
user_plane_access_ipv4_subnet = "10.204.141.0/24"
network_address_port_translation {
pinhole_maximum_number = 65536
pinhole_timeouts_in_seconds {
icmp = 30
tcp = 100
udp = 39
}
pinhole_maximum_number = 65536
icmp_pinhole_timeout_in_seconds = 30
tcp_pinhole_timeout_in_seconds = 100
udp_pinhole_timeout_in_seconds = 39
port_range {
max_port = 49999
min_port = 1024
Expand Down Expand Up @@ -141,21 +140,15 @@ A `network_address_port_translation` block supports the following:

* `pinhole_limits` - (Optional) Maximum number of UDP and TCP pinholes that can be open simultaneously on the core interface. For 5G networks, this is the N6 interface. For 4G networks, this is the SGi interface. Must be between 1 and 65536.

* `pinhole_timeouts_in_seconds` - (Optional) A `pinhole_timeouts_in_seconds` block as defined below.

* `port_range` - (Optional) A `port_range` block as defined below.

* `port_reuse_minimum_hold_time_in_seconds` - (Optional) A `port_reuse_minimum_hold_time_in_seconds` block as defined below.

---
* `icmp_pinhole_timeout_in_seconds` - (Optional) Pinhole timeout for ICMP pinholes in seconds. Must between `1` to `180`, Default to `180`.

A `pinhole_timeouts_in_seconds` block supports the following:
* `tcp_pinhole_timeout_in_seconds` - (Optional) Pinhole timeout for TCP pinholes in seconds. Must between `1` to `180`, Default to `180`.

* `icmp` - (Optional) Pinhole timeout for ICMP pinholes in seconds. Default for ICMP Echo is 60 seconds, as per RFC 5508 section 3.2.
* `udp_pinhole_timeout_in_seconds` - (Optional) Pinhole timeout for UDP pinholes in seconds. Must between `1` to `180`, Default to `180`.

* `tcp` - (Optional) Pinhole timeout for TCP pinholes in seconds. Default for TCP is 2 hours 4 minutes, as per RFC 5382 section 5.
* `port_range` - (Optional) A `port_range` block as defined below.

* `udp` - (Optional) Pinhole timeout for UDP pinholes in seconds. Default for UDP is 5 minutes, as per RFC 4787 section 4.3.
* `port_reuse_minimum_hold_time_in_seconds` - (Optional) A `port_reuse_minimum_hold_time_in_seconds` block as defined below.

---

Expand Down

0 comments on commit 66664cf

Please sign in to comment.