Fix import/read for networks

This commit is contained in:
Paul Tyng
2019-12-28 19:49:09 -05:00
parent ee793c03ee
commit f050b19c87
2 changed files with 37 additions and 16 deletions

View File

@@ -2,8 +2,10 @@ package provider
import (
"fmt"
"strconv"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/helper/validation"
"github.com/paultyng/terraform-provider-unifi/unifi"
)
@@ -24,10 +26,10 @@ func resourceNetwork() *schema.Resource {
Required: true,
},
"purpose": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
//"corporate", "guest", "vlan-only"
Type: schema.TypeString,
Required: true,
ForceNew: true,
ValidateFunc: validation.StringInSlice([]string{"corporate", "guest", "vlan-only"}, false),
},
"vlan_id": {
Type: schema.TypeInt,
@@ -67,6 +69,8 @@ func resourceNetwork() *schema.Resource {
func resourceNetworkCreate(d *schema.ResourceData, meta interface{}) error {
c := meta.(*client)
vlan := d.Get("vlan_id").(int)
req := &unifi.Network{
Name: d.Get("name").(string),
Purpose: d.Get("purpose").(string),
@@ -78,8 +82,9 @@ func resourceNetworkCreate(d *schema.ResourceData, meta interface{}) error {
DHCPDEnabled: d.Get("dhcp_enabled").(bool),
DHCPDLeaseTime: d.Get("dhcp_lease").(int),
VLANEnabled: vlan != 0,
Enabled: true,
VLANEnabled: true,
IPV6InterfaceType: "none",
// IPV6InterfaceType string `json:"ipv6_interface_type"` // "none"
// IPV6PDStart string `json:"ipv6_pd_start"` // "::2"
@@ -93,6 +98,29 @@ func resourceNetworkCreate(d *schema.ResourceData, meta interface{}) error {
d.SetId(resp.ID)
return resourceNetworkSetResourceData(resp, d)
}
func resourceNetworkSetResourceData(resp *unifi.Network, d *schema.ResourceData) error {
var err error
vlan := 0
if resp.VLANEnabled {
vlan, err = strconv.Atoi(resp.VLAN)
if err != nil {
return err
}
}
d.Set("name", resp.Name)
d.Set("purpose", resp.Purpose)
d.Set("vlan_id", vlan)
d.Set("subnet", resp.IPSubnet)
d.Set("network_group", resp.NetworkGroup)
d.Set("dhcp_start", resp.DHCPDStart)
d.Set("dhcp_stop", resp.DHCPDStop)
d.Set("dhcp_enabled", resp.DHCPDEnabled)
d.Set("dhcp_lease", resp.DHCPDLeaseTime)
return nil
}
@@ -101,7 +129,7 @@ func resourceNetworkRead(d *schema.ResourceData, meta interface{}) error {
id := d.Id()
_, err := c.c.GetNetwork(c.site, id)
resp, err := c.c.GetNetwork(c.site, id)
if _, ok := err.(*unifi.NotFoundError); ok {
d.SetId("")
return nil
@@ -110,7 +138,7 @@ func resourceNetworkRead(d *schema.ResourceData, meta interface{}) error {
return err
}
return nil
return resourceNetworkSetResourceData(resp, d)
}
func resourceNetworkUpdate(d *schema.ResourceData, meta interface{}) error {

View File

@@ -6,17 +6,10 @@ import (
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
)
func networkImportStep() resource.TestStep {
return importStep("unifi_network.test",
"dhcp_enabled", "dhcp_lease", "dhcp_start", "dhcp_stop", "name",
"network_group", "purpose", "subnet", "vlan_id",
)
}
func TestAccNetwork_basic(t *testing.T) {
resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { preCheck(t) },
Providers: providers,
PreCheck: func() { preCheck(t) },
// TODO: CheckDestroy: ,
Steps: []resource.TestStep{
{
@@ -25,7 +18,7 @@ func TestAccNetwork_basic(t *testing.T) {
// testCheckNetworkExists(t, "name"),
),
},
networkImportStep(),
importStep("unifi_network.test"),
},
})
}