add more fields to network data source
This commit is contained in:
@@ -3,12 +3,12 @@
|
||||
page_title: "unifi_network Data Source - terraform-provider-unifi"
|
||||
subcategory: ""
|
||||
description: |-
|
||||
unifi_network data source can be used to retrieve the ID for a network by name.
|
||||
unifi_network data source can be used to retrieve settings for a network by name.
|
||||
---
|
||||
|
||||
# unifi_network (Data Source)
|
||||
|
||||
`unifi_network` data source can be used to retrieve the ID for a network by name.
|
||||
`unifi_network` data source can be used to retrieve settings for a network by name.
|
||||
|
||||
|
||||
|
||||
@@ -17,14 +17,42 @@ description: |-
|
||||
|
||||
### Required
|
||||
|
||||
- **name** (String) The name of the network to look up.
|
||||
- **name** (String) The name of the network.
|
||||
|
||||
### Optional
|
||||
|
||||
- **site** (String) The name of the site the network is associated with.
|
||||
- **site** (String) The name of the site to associate the network with.
|
||||
|
||||
### Read-Only
|
||||
|
||||
- **id** (String) The ID of this network.
|
||||
- **dhcp_dns** (List of String) Specifies the IPv4 addresses for the DNS server to be returned from the DHCP server. Leave blank to disable this feature.
|
||||
- **dhcp_enabled** (Boolean) Specifies whether DHCP is enabled or not on this network.
|
||||
- **dhcp_lease** (Number) Specifies the lease time for DHCP addresses.
|
||||
- **dhcp_start** (String) The IPv4 address where the DHCP range of addresses starts.
|
||||
- **dhcp_stop** (String) The IPv4 address where the DHCP range of addresses stops.
|
||||
- **dhcpd_boot_enabled** (Boolean) Toggles on the DHCP boot options. Should be set to true when you want to have dhcpd_boot_filename, and dhcpd_boot_server to take effect.
|
||||
- **dhcpd_boot_filename** (String) Specifies the file to PXE boot from on the dhcpd_boot_server.
|
||||
- **dhcpd_boot_server** (String) Specifies the IPv4 address of a TFTP server to network boot from.
|
||||
- **domain_name** (String) The domain name of this network.
|
||||
- **id** (String) The ID of the network.
|
||||
- **igmp_snooping** (Boolean) Specifies whether IGMP snooping is enabled or not.
|
||||
- **ipv6_interface_type** (String) Specifies which type of IPv6 connection to use.
|
||||
- **ipv6_pd_interface** (String) Specifies which WAN interface to use for IPv6 PD.
|
||||
- **ipv6_pd_prefixid** (String) Specifies the IPv6 Prefix ID.
|
||||
- **ipv6_ra_enable** (Boolean) Specifies whether to enable router advertisements or not.
|
||||
- **ipv6_static_subnet** (String) Specifies the static IPv6 subnet when ipv6_interface_type is 'static'.
|
||||
- **network_group** (String) The group of the network.
|
||||
- **purpose** (String) The purpose of the network. One of `corporate`, `guest`, `wan`, or `vlan-only`.
|
||||
- **subnet** (String) The subnet of the network. Must be a valid CIDR address.
|
||||
- **vlan_id** (Number) The VLAN ID of the network.
|
||||
- **wan_dns** (List of String) DNS servers IPs of the WAN.
|
||||
- **wan_egress_qos** (Number) Specifies the WAN egress quality of service.
|
||||
- **wan_gateway** (String) The IPv4 gateway of the WAN.
|
||||
- **wan_ip** (String) The IPv4 address of the WAN.
|
||||
- **wan_netmask** (String) The IPv4 netmask of the WAN.
|
||||
- **wan_networkgroup** (String) Specifies the WAN network group. One of either `WAN`, `WAN2` or `WAN_LTE_FAILOVER`.
|
||||
- **wan_type** (String) Specifies the IPV4 WAN connection type. One of either `disabled`, `static`, `dhcp`, or `pppoe`.
|
||||
- **wan_username** (String) Specifies the IPV4 WAN username.
|
||||
- **x_wan_password** (String) Specifies the IPV4 WAN password.
|
||||
|
||||
|
||||
|
||||
@@ -9,27 +9,178 @@ import (
|
||||
|
||||
func dataNetwork() *schema.Resource {
|
||||
return &schema.Resource{
|
||||
Description: "`unifi_network` data source can be used to retrieve the ID for a network by name.",
|
||||
Description: "`unifi_network` data source can be used to retrieve settings for a network by name.",
|
||||
|
||||
ReadContext: dataNetworkRead,
|
||||
|
||||
Schema: map[string]*schema.Schema{
|
||||
"id": {
|
||||
Description: "The ID of this network.",
|
||||
Type: schema.TypeString,
|
||||
Computed: true,
|
||||
},
|
||||
"site": {
|
||||
Description: "The name of the site the network is associated with.",
|
||||
Description: "The name of the site to associate the network with.",
|
||||
Type: schema.TypeString,
|
||||
Computed: true,
|
||||
Optional: true,
|
||||
},
|
||||
"name": {
|
||||
Description: "The name of the network to look up.",
|
||||
Description: "The name of the network.",
|
||||
Type: schema.TypeString,
|
||||
Required: true,
|
||||
},
|
||||
|
||||
// read-only / computed
|
||||
"id": {
|
||||
Description: "The ID of the network.",
|
||||
Type: schema.TypeString,
|
||||
Computed: true,
|
||||
},
|
||||
"purpose": {
|
||||
Description: "The purpose of the network. One of `corporate`, `guest`, `wan`, or `vlan-only`.",
|
||||
Type: schema.TypeString,
|
||||
Computed: true,
|
||||
},
|
||||
"vlan_id": {
|
||||
Description: "The VLAN ID of the network.",
|
||||
Type: schema.TypeInt,
|
||||
Computed: true,
|
||||
},
|
||||
"subnet": {
|
||||
Description: "The subnet of the network. Must be a valid CIDR address.",
|
||||
Type: schema.TypeString,
|
||||
Computed: true,
|
||||
},
|
||||
"network_group": {
|
||||
Description: "The group of the network.",
|
||||
Type: schema.TypeString,
|
||||
Computed: true,
|
||||
},
|
||||
"dhcp_start": {
|
||||
Description: "The IPv4 address where the DHCP range of addresses starts.",
|
||||
Type: schema.TypeString,
|
||||
Computed: true,
|
||||
},
|
||||
"dhcp_stop": {
|
||||
Description: "The IPv4 address where the DHCP range of addresses stops.",
|
||||
Type: schema.TypeString,
|
||||
Computed: true,
|
||||
},
|
||||
"dhcp_enabled": {
|
||||
Description: "Specifies whether DHCP is enabled or not on this network.",
|
||||
Type: schema.TypeBool,
|
||||
Computed: true,
|
||||
},
|
||||
"dhcp_lease": {
|
||||
Description: "Specifies the lease time for DHCP addresses.",
|
||||
Type: schema.TypeInt,
|
||||
Computed: true,
|
||||
},
|
||||
|
||||
"dhcp_dns": {
|
||||
Description: "Specifies the IPv4 addresses for the DNS server to be returned from the DHCP " +
|
||||
"server. Leave blank to disable this feature.",
|
||||
Type: schema.TypeList,
|
||||
Computed: true,
|
||||
Elem: &schema.Schema{
|
||||
Type: schema.TypeString,
|
||||
},
|
||||
},
|
||||
|
||||
"dhcpd_boot_enabled": {
|
||||
Description: "Toggles on the DHCP boot options. Should be set to true when you want to have dhcpd_boot_filename, and dhcpd_boot_server to take effect.",
|
||||
Type: schema.TypeBool,
|
||||
Computed: true,
|
||||
},
|
||||
"dhcpd_boot_server": {
|
||||
Description: "Specifies the IPv4 address of a TFTP server to network boot from.",
|
||||
Type: schema.TypeString,
|
||||
Computed: true,
|
||||
},
|
||||
"dhcpd_boot_filename": {
|
||||
Description: "Specifies the file to PXE boot from on the dhcpd_boot_server.",
|
||||
Type: schema.TypeString,
|
||||
Computed: true,
|
||||
},
|
||||
"domain_name": {
|
||||
Description: "The domain name of this network.",
|
||||
Type: schema.TypeString,
|
||||
Computed: true,
|
||||
},
|
||||
"igmp_snooping": {
|
||||
Description: "Specifies whether IGMP snooping is enabled or not.",
|
||||
Type: schema.TypeBool,
|
||||
Computed: true,
|
||||
},
|
||||
"ipv6_interface_type": {
|
||||
Description: "Specifies which type of IPv6 connection to use.",
|
||||
Type: schema.TypeString,
|
||||
Computed: true,
|
||||
},
|
||||
"ipv6_static_subnet": {
|
||||
Description: "Specifies the static IPv6 subnet when ipv6_interface_type is 'static'.",
|
||||
Type: schema.TypeString,
|
||||
Computed: true,
|
||||
},
|
||||
"ipv6_pd_interface": {
|
||||
Description: "Specifies which WAN interface to use for IPv6 PD.",
|
||||
Type: schema.TypeString,
|
||||
Computed: true,
|
||||
},
|
||||
"ipv6_pd_prefixid": {
|
||||
Description: "Specifies the IPv6 Prefix ID.",
|
||||
Type: schema.TypeString,
|
||||
Computed: true,
|
||||
},
|
||||
"ipv6_ra_enable": {
|
||||
Description: "Specifies whether to enable router advertisements or not.",
|
||||
Type: schema.TypeBool,
|
||||
Computed: true,
|
||||
},
|
||||
"wan_ip": {
|
||||
Description: "The IPv4 address of the WAN.",
|
||||
Type: schema.TypeString,
|
||||
Computed: true,
|
||||
},
|
||||
"wan_netmask": {
|
||||
Description: "The IPv4 netmask of the WAN.",
|
||||
Type: schema.TypeString,
|
||||
Computed: true,
|
||||
},
|
||||
"wan_gateway": {
|
||||
Description: "The IPv4 gateway of the WAN.",
|
||||
Type: schema.TypeString,
|
||||
Computed: true,
|
||||
},
|
||||
"wan_dns": {
|
||||
Description: "DNS servers IPs of the WAN.",
|
||||
Type: schema.TypeList,
|
||||
Computed: true,
|
||||
Elem: &schema.Schema{
|
||||
Type: schema.TypeString,
|
||||
},
|
||||
},
|
||||
"wan_type": {
|
||||
Description: "Specifies the IPV4 WAN connection type. One of either `disabled`, `static`, `dhcp`, or `pppoe`.",
|
||||
Type: schema.TypeString,
|
||||
Computed: true,
|
||||
},
|
||||
"wan_networkgroup": {
|
||||
Description: "Specifies the WAN network group. One of either `WAN`, `WAN2` or `WAN_LTE_FAILOVER`.",
|
||||
Type: schema.TypeString,
|
||||
Computed: true,
|
||||
},
|
||||
"wan_egress_qos": {
|
||||
Description: "Specifies the WAN egress quality of service.",
|
||||
Type: schema.TypeInt,
|
||||
Computed: true,
|
||||
},
|
||||
"wan_username": {
|
||||
Description: "Specifies the IPV4 WAN username.",
|
||||
Type: schema.TypeString,
|
||||
Computed: true,
|
||||
},
|
||||
"x_wan_password": {
|
||||
Description: "Specifies the IPV4 WAN password.",
|
||||
Type: schema.TypeString,
|
||||
Computed: true,
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -49,9 +200,62 @@ func dataNetworkRead(ctx context.Context, d *schema.ResourceData, meta interface
|
||||
}
|
||||
for _, n := range networks {
|
||||
if n.Name == name {
|
||||
d.SetId(n.ID)
|
||||
dhcpDNS := []string{}
|
||||
for _, dns := range []string{
|
||||
n.DHCPDDNS1,
|
||||
n.DHCPDDNS2,
|
||||
n.DHCPDDNS3,
|
||||
n.DHCPDDNS4,
|
||||
} {
|
||||
if dns == "" {
|
||||
continue
|
||||
}
|
||||
dhcpDNS = append(dhcpDNS, dns)
|
||||
}
|
||||
wanDNS := []string{}
|
||||
for _, dns := range []string{
|
||||
n.WANDNS1,
|
||||
n.WANDNS2,
|
||||
n.WANDNS3,
|
||||
n.WANDNS4,
|
||||
} {
|
||||
if dns == "" {
|
||||
continue
|
||||
}
|
||||
wanDNS = append(wanDNS, dns)
|
||||
}
|
||||
|
||||
d.SetId(n.ID)
|
||||
d.Set("site", site)
|
||||
d.Set("name", n.Name)
|
||||
d.Set("purpose", n.Purpose)
|
||||
d.Set("vlan_id", n.VLAN)
|
||||
d.Set("subnet", cidrZeroBased(n.IPSubnet))
|
||||
d.Set("network_group", n.NetworkGroup)
|
||||
d.Set("dhcp_start", n.DHCPDStart)
|
||||
d.Set("dhcp_stop", n.DHCPDStop)
|
||||
d.Set("dhcp_enabled", n.DHCPDEnabled)
|
||||
d.Set("dhcp_lease", n.DHCPDLeaseTime)
|
||||
d.Set("dhcpd_boot_enabled", n.DHCPDBootEnabled)
|
||||
d.Set("dhcpd_boot_server", n.DHCPDBootServer)
|
||||
d.Set("dhcpd_boot_filename", n.DHCPDBootFilename)
|
||||
d.Set("domain_name", n.DomainName)
|
||||
d.Set("igmp_snooping", n.IGMPSnooping)
|
||||
d.Set("dhcp_dns", dhcpDNS)
|
||||
d.Set("ipv6_interface_type", n.IPV6InterfaceType)
|
||||
d.Set("ipv6_static_subnet", n.IPV6Subnet)
|
||||
d.Set("ipv6_pd_interface", n.IPV6PDInterface)
|
||||
d.Set("ipv6_pd_prefixid", n.IPV6PDPrefixid)
|
||||
d.Set("ipv6_ra_enable", n.IPV6RaEnabled)
|
||||
d.Set("wan_ip", n.WANIP)
|
||||
d.Set("wan_netmask", n.WANNetmask)
|
||||
d.Set("wan_gateway", n.WANGateway)
|
||||
d.Set("wan_type", n.WANType)
|
||||
d.Set("wan_dns", wanDNS)
|
||||
d.Set("wan_networkgroup", n.WANNetworkGroup)
|
||||
d.Set("wan_egress_qos", n.WANEgressQOS)
|
||||
d.Set("wan_username", n.WANUsername)
|
||||
d.Set("x_wan_password", n.XWANPassword)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user