move from deprecated CRUD functions to context aware CRUD

This commit is contained in:
Michael Wiesenbauer
2021-08-01 00:29:02 +02:00
committed by Paul Tyng
parent 0dc4ce824b
commit 4c36a8af1b
21 changed files with 324 additions and 311 deletions

1
go.sum
View File

@@ -518,6 +518,7 @@ golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79 h1:RX8C8PRZc2hTIod4ds8ij+/4RQX3AqhYj3uOHmyaz4E=
golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=

View File

@@ -2,7 +2,7 @@ package provider
import (
"context"
"fmt"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
@@ -11,7 +11,7 @@ func dataAPGroup() *schema.Resource {
return &schema.Resource{
Description: "`unifi_ap_group` data source can be used to retrieve the ID for an AP group by name.",
Read: dataAPGroupRead,
ReadContext: dataAPGroupRead,
Schema: map[string]*schema.Schema{
"id": {
@@ -34,11 +34,11 @@ func dataAPGroup() *schema.Resource {
}
}
func dataAPGroupRead(d *schema.ResourceData, meta interface{}) error {
func dataAPGroupRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
if v := c.ControllerVersion(); !v.GreaterThanOrEqual(controllerV6) {
return fmt.Errorf("AP groups are not supported on controller version %q", v)
return diag.Errorf("AP groups are not supported on controller version %q", v)
}
name := d.Get("name").(string)
@@ -49,7 +49,7 @@ func dataAPGroupRead(d *schema.ResourceData, meta interface{}) error {
groups, err := c.c.ListAPGroup(context.TODO(), site)
if err != nil {
return err
return diag.FromErr(err)
}
for _, g := range groups {
if (name == "" && g.HiddenID == "default") || g.Name == name {
@@ -59,5 +59,5 @@ func dataAPGroupRead(d *schema.ResourceData, meta interface{}) error {
}
}
return fmt.Errorf("AP group not found with name %s", name)
return diag.Errorf("AP group not found with name %s", name)
}

View File

@@ -2,7 +2,7 @@ package provider
import (
"context"
"fmt"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
@@ -11,7 +11,7 @@ func dataPortProfile() *schema.Resource {
return &schema.Resource{
Description: "`unifi_port_profile` data source can be used to retrieve the ID for a port profile by name.",
Read: dataPortProfileRead,
ReadContext: dataPortProfileRead,
Schema: map[string]*schema.Schema{
"id": {
@@ -35,7 +35,7 @@ func dataPortProfile() *schema.Resource {
}
}
func dataPortProfileRead(d *schema.ResourceData, meta interface{}) error {
func dataPortProfileRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
name := d.Get("name").(string)
@@ -44,9 +44,9 @@ func dataPortProfileRead(d *schema.ResourceData, meta interface{}) error {
site = c.site
}
groups, err := c.c.ListPortProfile(context.TODO(), site)
groups, err := c.c.ListPortProfile(ctx, site)
if err != nil {
return err
return diag.FromErr(err)
}
for _, g := range groups {
if g.Name == name {
@@ -58,5 +58,5 @@ func dataPortProfileRead(d *schema.ResourceData, meta interface{}) error {
}
}
return fmt.Errorf("port profile not found with name %s", name)
return diag.Errorf("port profile not found with name %s", name)
}

View File

@@ -2,7 +2,7 @@ package provider
import (
"context"
"fmt"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
@@ -11,7 +11,7 @@ func dataRADIUSProfile() *schema.Resource {
return &schema.Resource{
Description: "`unifi_radius_profile` data source can be used to retrieve the ID for a RADIUS profile by name.",
Read: dataRADIUSProfileRead,
ReadContext: dataRADIUSProfileRead,
Schema: map[string]*schema.Schema{
"id": {
@@ -35,7 +35,7 @@ func dataRADIUSProfile() *schema.Resource {
}
}
func dataRADIUSProfileRead(d *schema.ResourceData, meta interface{}) error {
func dataRADIUSProfileRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
name := d.Get("name").(string)
@@ -44,9 +44,9 @@ func dataRADIUSProfileRead(d *schema.ResourceData, meta interface{}) error {
site = c.site
}
profiles, err := c.c.ListRADIUSProfile(context.TODO(), site)
profiles, err := c.c.ListRADIUSProfile(ctx, site)
if err != nil {
return err
return diag.FromErr(err)
}
for _, g := range profiles {
if g.Name == name {
@@ -56,5 +56,5 @@ func dataRADIUSProfileRead(d *schema.ResourceData, meta interface{}) error {
}
}
return fmt.Errorf("RADIUS profile not found with name %s", name)
return diag.Errorf("RADIUS profile not found with name %s", name)
}

View File

@@ -2,7 +2,7 @@ package provider
import (
"context"
"fmt"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
@@ -11,7 +11,7 @@ func dataUserGroup() *schema.Resource {
return &schema.Resource{
Description: "`unifi_user_group` data source can be used to retrieve the ID for a user group by name.",
Read: dataUserGroupRead,
ReadContext: dataUserGroupRead,
Schema: map[string]*schema.Schema{
"id": {
@@ -44,7 +44,7 @@ func dataUserGroup() *schema.Resource {
}
}
func dataUserGroupRead(d *schema.ResourceData, meta interface{}) error {
func dataUserGroupRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
name := d.Get("name").(string)
@@ -53,9 +53,9 @@ func dataUserGroupRead(d *schema.ResourceData, meta interface{}) error {
site = c.site
}
groups, err := c.c.ListUserGroup(context.TODO(), site)
groups, err := c.c.ListUserGroup(ctx, site)
if err != nil {
return err
return diag.FromErr(err)
}
for _, g := range groups {
if g.Name == name {
@@ -69,5 +69,5 @@ func dataUserGroupRead(d *schema.ResourceData, meta interface{}) error {
}
}
return fmt.Errorf("user group not found with name %s", name)
return diag.Errorf("user group not found with name %s", name)
}

View File

@@ -2,7 +2,7 @@ package provider
import (
"context"
"fmt"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
@@ -14,7 +14,7 @@ func dataWLANGroup() *schema.Resource {
DeprecationMessage: "WLAN groups are deprecated in controller version 6 and greater.",
Read: dataWLANGroupRead,
ReadContext: dataWLANGroupRead,
Schema: map[string]*schema.Schema{
"id": {
@@ -38,11 +38,11 @@ func dataWLANGroup() *schema.Resource {
}
}
func dataWLANGroupRead(d *schema.ResourceData, meta interface{}) error {
func dataWLANGroupRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
if v := c.ControllerVersion(); !v.LessThan(controllerV6) {
return fmt.Errorf("WLAN groups are not supported on controller version %q", v)
return diag.Errorf("WLAN groups are not supported on controller version %q", v)
}
name := d.Get("name").(string)
@@ -52,9 +52,9 @@ func dataWLANGroupRead(d *schema.ResourceData, meta interface{}) error {
site = c.site
}
groups, err := c.c.ListWLANGroup(context.TODO(), site)
groups, err := c.c.ListWLANGroup(ctx, site)
if err != nil {
return err
return diag.FromErr(err)
}
for _, g := range groups {
if g.Name == name {
@@ -64,5 +64,5 @@ func dataWLANGroupRead(d *schema.ResourceData, meta interface{}) error {
}
}
return fmt.Errorf("WLAN group not found with name %s", name)
return diag.Errorf("WLAN group not found with name %s", name)
}

View File

@@ -1,12 +1,13 @@
package provider
import (
"context"
"strings"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
func importSiteAndID(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
func importSiteAndID(ctx context.Context, d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
if id := d.Id(); strings.Contains(id, ":") {
importParts := strings.SplitN(id, ":", 2)
d.SetId(importParts[1])

View File

@@ -3,6 +3,7 @@ package provider
import (
"context"
"fmt"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"strings"
"github.com/hashicorp/go-version"
@@ -98,13 +99,13 @@ func New(version string) func() *schema.Provider {
},
}
p.ConfigureFunc = configure(version, p)
p.ConfigureContextFunc = configure(version, p)
return p
}
}
func configure(version string, p *schema.Provider) schema.ConfigureFunc {
return func(d *schema.ResourceData) (interface{}, error) {
func configure(version string, p *schema.Provider) schema.ConfigureContextFunc {
return func(ctx context.Context, d *schema.ResourceData) (interface{}, diag.Diagnostics) {
user := d.Get("username").(string)
pass := d.Get("password").(string)
baseURL := d.Get("api_url").(string)

View File

@@ -18,9 +18,9 @@ func resourceDevice() *schema.Resource {
"Terraform, the create operation instead will simply start managing the device specified by MAC address. " +
"It's safer to start this process with an explicit import of the device.",
Create: resourceDeviceCreate,
Read: resourceDeviceRead,
Update: resourceDeviceUpdate,
CreateContext: resourceDeviceCreate,
ReadContext: resourceDeviceRead,
UpdateContext: resourceDeviceUpdate,
DeleteContext: resourceDeviceDelete,
Importer: &schema.ResourceImporter{
StateContext: resourceDeviceImport,
@@ -134,7 +134,7 @@ func resourceDeviceImport(ctx context.Context, d *schema.ResourceData, meta inte
return []*schema.ResourceData{d}, nil
}
func resourceDeviceCreate(d *schema.ResourceData, meta interface{}) error {
func resourceDeviceCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
site := d.Get("site").(string)
@@ -144,13 +144,13 @@ func resourceDeviceCreate(d *schema.ResourceData, meta interface{}) error {
mac := d.Get("mac").(string)
if mac == "" {
return fmt.Errorf("no MAC address specified, please import the device using terraform import")
return diag.Errorf("no MAC address specified, please import the device using terraform import")
}
mac = cleanMAC(mac)
devices, err := c.c.ListDevice(context.TODO(), site)
devices, err := c.c.ListDevice(ctx, site)
if err != nil {
return fmt.Errorf("unable to list devices: %w", err)
return diag.Errorf("unable to list devices: %w", err)
}
var found *unifi.Device
@@ -161,7 +161,7 @@ func resourceDeviceCreate(d *schema.ResourceData, meta interface{}) error {
}
}
if found == nil {
return fmt.Errorf("device not found using mac %q", mac)
return diag.Errorf("device not found using mac %q", mac)
}
d.SetId(found.ID)
@@ -169,7 +169,7 @@ func resourceDeviceCreate(d *schema.ResourceData, meta interface{}) error {
return resourceDeviceSetResourceData(found, d, site)
}
func resourceDeviceUpdate(d *schema.ResourceData, meta interface{}) error {
func resourceDeviceUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
site := d.Get("site").(string)
@@ -179,15 +179,15 @@ func resourceDeviceUpdate(d *schema.ResourceData, meta interface{}) error {
req, err := resourceDeviceGetResourceData(d)
if err != nil {
return err
return diag.FromErr(err)
}
req.ID = d.Id()
req.SiteID = site
resp, err := c.c.UpdateDevice(context.TODO(), site, req)
resp, err := c.c.UpdateDevice(ctx, site, req)
if err != nil {
return err
return diag.FromErr(err)
}
return resourceDeviceSetResourceData(resp, d, site)
@@ -202,7 +202,7 @@ func resourceDeviceDelete(_ context.Context, d *schema.ResourceData, meta interf
}
}
func resourceDeviceRead(d *schema.ResourceData, meta interface{}) error {
func resourceDeviceRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
id := d.Id()
@@ -212,22 +212,22 @@ func resourceDeviceRead(d *schema.ResourceData, meta interface{}) error {
site = c.site
}
resp, err := c.c.GetDevice(context.TODO(), site, id)
resp, err := c.c.GetDevice(ctx, site, id)
if _, ok := err.(*unifi.NotFoundError); ok {
d.SetId("")
return nil
}
if err != nil {
return err
return diag.FromErr(err)
}
return resourceDeviceSetResourceData(resp, d, site)
}
func resourceDeviceSetResourceData(resp *unifi.Device, d *schema.ResourceData, site string) error {
func resourceDeviceSetResourceData(resp *unifi.Device, d *schema.ResourceData, site string) diag.Diagnostics {
portOverrides, err := setFromPortOverrides(resp.PortOverrides)
if err != nil {
return err
return diag.FromErr(err)
}
d.Set("site", site)

View File

@@ -2,6 +2,7 @@ package provider
import (
"context"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/paultyng/go-unifi/unifi"
@@ -11,12 +12,12 @@ func resourceDynamicDNS() *schema.Resource {
return &schema.Resource{
Description: "`unifi_dynamic_dns` manages dynamic DNS settings for different providers.",
Create: resourceDynamicDNSCreate,
Read: resourceDynamicDNSRead,
Update: resourceDynamicDNSUpdate,
Delete: resourceDynamicDNSDelete,
CreateContext: resourceDynamicDNSCreate,
ReadContext: resourceDynamicDNSRead,
UpdateContext: resourceDynamicDNSUpdate,
DeleteContext: resourceDynamicDNSDelete,
Importer: &schema.ResourceImporter{
State: importSiteAndID,
StateContext: importSiteAndID,
},
Schema: map[string]*schema.Schema{
@@ -72,12 +73,12 @@ func resourceDynamicDNS() *schema.Resource {
}
}
func resourceDynamicDNSCreate(d *schema.ResourceData, meta interface{}) error {
func resourceDynamicDNSCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
req, err := resourceDynamicDNSGetResourceData(d)
if err != nil {
return err
return diag.FromErr(err)
}
site := d.Get("site").(string)
@@ -85,9 +86,9 @@ func resourceDynamicDNSCreate(d *schema.ResourceData, meta interface{}) error {
site = c.site
}
resp, err := c.c.CreateDynamicDNS(context.TODO(), site, req)
resp, err := c.c.CreateDynamicDNS(ctx, site, req)
if err != nil {
return err
return diag.FromErr(err)
}
d.SetId(resp.ID)
@@ -110,7 +111,7 @@ func resourceDynamicDNSGetResourceData(d *schema.ResourceData) (*unifi.DynamicDN
return r, nil
}
func resourceDynamicDNSSetResourceData(resp *unifi.DynamicDNS, d *schema.ResourceData, site string) error {
func resourceDynamicDNSSetResourceData(resp *unifi.DynamicDNS, d *schema.ResourceData, site string) diag.Diagnostics {
d.Set("interface", resp.Interface)
d.Set("service", resp.Service)
@@ -123,7 +124,7 @@ func resourceDynamicDNSSetResourceData(resp *unifi.DynamicDNS, d *schema.Resourc
return nil
}
func resourceDynamicDNSRead(d *schema.ResourceData, meta interface{}) error {
func resourceDynamicDNSRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
id := d.Id()
@@ -133,24 +134,24 @@ func resourceDynamicDNSRead(d *schema.ResourceData, meta interface{}) error {
site = c.site
}
resp, err := c.c.GetDynamicDNS(context.TODO(), site, id)
resp, err := c.c.GetDynamicDNS(ctx, site, id)
if _, ok := err.(*unifi.NotFoundError); ok {
d.SetId("")
return nil
}
if err != nil {
return err
return diag.FromErr(err)
}
return resourceDynamicDNSSetResourceData(resp, d, site)
}
func resourceDynamicDNSUpdate(d *schema.ResourceData, meta interface{}) error {
func resourceDynamicDNSUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
req, err := resourceDynamicDNSGetResourceData(d)
if err != nil {
return err
return diag.FromErr(err)
}
req.ID = d.Id()
@@ -161,15 +162,15 @@ func resourceDynamicDNSUpdate(d *schema.ResourceData, meta interface{}) error {
}
req.SiteID = site
resp, err := c.c.UpdateDynamicDNS(context.TODO(), site, req)
resp, err := c.c.UpdateDynamicDNS(ctx, site, req)
if err != nil {
return err
return diag.FromErr(err)
}
return resourceDynamicDNSSetResourceData(resp, d, site)
}
func resourceDynamicDNSDelete(d *schema.ResourceData, meta interface{}) error {
func resourceDynamicDNSDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
id := d.Id()
@@ -178,9 +179,9 @@ func resourceDynamicDNSDelete(d *schema.ResourceData, meta interface{}) error {
if site == "" {
site = c.site
}
err := c.c.DeleteDynamicDNS(context.TODO(), site, id)
err := c.c.DeleteDynamicDNS(ctx, site, id)
if _, ok := err.(*unifi.NotFoundError); ok {
return nil
}
return err
return diag.FromErr(err)
}

View File

@@ -3,7 +3,7 @@ package provider
import (
"context"
"errors"
"fmt"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
@@ -14,12 +14,12 @@ func resourceFirewallGroup() *schema.Resource {
return &schema.Resource{
Description: "`unifi_firewall_group` manages groups of addresses or ports for use in firewall rules (`unifi_firewall_rule`).",
Create: resourceFirewallGroupCreate,
Read: resourceFirewallGroupRead,
Update: resourceFirewallGroupUpdate,
Delete: resourceFirewallGroupDelete,
CreateContext: resourceFirewallGroupCreate,
ReadContext: resourceFirewallGroupRead,
UpdateContext: resourceFirewallGroupUpdate,
DeleteContext: resourceFirewallGroupDelete,
Importer: &schema.ResourceImporter{
State: importSiteAndID,
StateContext: importSiteAndID,
},
Schema: map[string]*schema.Schema{
@@ -56,12 +56,12 @@ func resourceFirewallGroup() *schema.Resource {
}
}
func resourceFirewallGroupCreate(d *schema.ResourceData, meta interface{}) error {
func resourceFirewallGroupCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
req, err := resourceFirewallGroupGetResourceData(d)
if err != nil {
return err
return diag.FromErr(err)
}
site := d.Get("site").(string)
@@ -69,14 +69,14 @@ func resourceFirewallGroupCreate(d *schema.ResourceData, meta interface{}) error
site = c.site
}
resp, err := c.c.CreateFirewallGroup(context.TODO(), site, req)
resp, err := c.c.CreateFirewallGroup(ctx, site, req)
if err != nil {
var apiErr *unifi.APIError
if errors.As(err, &apiErr) && apiErr.Message == "api.err.FirewallGroupExisted" {
return fmt.Errorf("firewall groups must have unique names: %w", err)
return diag.Errorf("firewall groups must have unique names: %w", err)
}
return err
return diag.FromErr(err)
}
d.SetId(resp.ID)
@@ -97,7 +97,7 @@ func resourceFirewallGroupGetResourceData(d *schema.ResourceData) (*unifi.Firewa
}, nil
}
func resourceFirewallGroupSetResourceData(resp *unifi.FirewallGroup, d *schema.ResourceData, site string) error {
func resourceFirewallGroupSetResourceData(resp *unifi.FirewallGroup, d *schema.ResourceData, site string) diag.Diagnostics {
d.Set("site", site)
d.Set("name", resp.Name)
d.Set("type", resp.GroupType)
@@ -106,7 +106,7 @@ func resourceFirewallGroupSetResourceData(resp *unifi.FirewallGroup, d *schema.R
return nil
}
func resourceFirewallGroupRead(d *schema.ResourceData, meta interface{}) error {
func resourceFirewallGroupRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
id := d.Id()
@@ -116,24 +116,24 @@ func resourceFirewallGroupRead(d *schema.ResourceData, meta interface{}) error {
site = c.site
}
resp, err := c.c.GetFirewallGroup(context.TODO(), site, id)
resp, err := c.c.GetFirewallGroup(ctx, site, id)
if _, ok := err.(*unifi.NotFoundError); ok {
d.SetId("")
return nil
}
if err != nil {
return err
return diag.FromErr(err)
}
return resourceFirewallGroupSetResourceData(resp, d, site)
}
func resourceFirewallGroupUpdate(d *schema.ResourceData, meta interface{}) error {
func resourceFirewallGroupUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
req, err := resourceFirewallGroupGetResourceData(d)
if err != nil {
return err
return diag.FromErr(err)
}
req.ID = d.Id()
@@ -144,15 +144,15 @@ func resourceFirewallGroupUpdate(d *schema.ResourceData, meta interface{}) error
}
req.SiteID = site
resp, err := c.c.UpdateFirewallGroup(context.TODO(), site, req)
resp, err := c.c.UpdateFirewallGroup(ctx, site, req)
if err != nil {
return err
return diag.FromErr(err)
}
return resourceFirewallGroupSetResourceData(resp, d, site)
}
func resourceFirewallGroupDelete(d *schema.ResourceData, meta interface{}) error {
func resourceFirewallGroupDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
id := d.Id()
@@ -162,9 +162,9 @@ func resourceFirewallGroupDelete(d *schema.ResourceData, meta interface{}) error
site = c.site
}
err := c.c.DeleteFirewallGroup(context.TODO(), site, id)
err := c.c.DeleteFirewallGroup(ctx, site, id)
if _, ok := err.(*unifi.NotFoundError); ok {
return nil
}
return err
return diag.FromErr(err)
}

View File

@@ -3,7 +3,7 @@ package provider
import (
"context"
"errors"
"fmt"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"regexp"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
@@ -17,12 +17,12 @@ func resourceFirewallRule() *schema.Resource {
return &schema.Resource{
Description: "`unifi_firewall_rule` manages an individual firewall rule on the gateway.",
Create: resourceFirewallRuleCreate,
Read: resourceFirewallRuleRead,
Update: resourceFirewallRuleUpdate,
Delete: resourceFirewallRuleDelete,
CreateContext: resourceFirewallRuleCreate,
ReadContext: resourceFirewallRuleRead,
UpdateContext: resourceFirewallRuleUpdate,
DeleteContext: resourceFirewallRuleDelete,
Importer: &schema.ResourceImporter{
State: importSiteAndID,
StateContext: importSiteAndID,
},
Schema: map[string]*schema.Schema{
@@ -173,12 +173,12 @@ func resourceFirewallRule() *schema.Resource {
}
}
func resourceFirewallRuleCreate(d *schema.ResourceData, meta interface{}) error {
func resourceFirewallRuleCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
req, err := resourceFirewallRuleGetResourceData(d)
if err != nil {
return err
return diag.FromErr(err)
}
site := d.Get("site").(string)
@@ -186,14 +186,14 @@ func resourceFirewallRuleCreate(d *schema.ResourceData, meta interface{}) error
site = c.site
}
resp, err := c.c.CreateFirewallRule(context.TODO(), site, req)
resp, err := c.c.CreateFirewallRule(ctx, site, req)
if err != nil {
var apiErr *unifi.APIError
if errors.As(err, &apiErr) && apiErr.Message == "api.err.FirewallGroupTypeExists" {
return fmt.Errorf("firewall rule groups must be of different group types (ie. a port group and address group): %w", err)
return diag.Errorf("firewall rule groups must be of different group types (ie. a port group and address group): %w", err)
}
return err
return diag.FromErr(err)
}
d.SetId(resp.ID)
@@ -241,7 +241,7 @@ func resourceFirewallRuleGetResourceData(d *schema.ResourceData) (*unifi.Firewal
}, nil
}
func resourceFirewallRuleSetResourceData(resp *unifi.FirewallRule, d *schema.ResourceData, site string) error {
func resourceFirewallRuleSetResourceData(resp *unifi.FirewallRule, d *schema.ResourceData, site string) diag.Diagnostics {
d.Set("site", site)
d.Set("name", resp.Name)
d.Set("action", resp.Action)
@@ -273,7 +273,7 @@ func resourceFirewallRuleSetResourceData(resp *unifi.FirewallRule, d *schema.Res
return nil
}
func resourceFirewallRuleRead(d *schema.ResourceData, meta interface{}) error {
func resourceFirewallRuleRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
id := d.Id()
@@ -283,24 +283,24 @@ func resourceFirewallRuleRead(d *schema.ResourceData, meta interface{}) error {
site = c.site
}
resp, err := c.c.GetFirewallRule(context.TODO(), site, id)
resp, err := c.c.GetFirewallRule(ctx, site, id)
if _, ok := err.(*unifi.NotFoundError); ok {
d.SetId("")
return nil
}
if err != nil {
return err
return diag.FromErr(err)
}
return resourceFirewallRuleSetResourceData(resp, d, site)
}
func resourceFirewallRuleUpdate(d *schema.ResourceData, meta interface{}) error {
func resourceFirewallRuleUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
req, err := resourceFirewallRuleGetResourceData(d)
if err != nil {
return err
return diag.FromErr(err)
}
req.ID = d.Id()
@@ -311,15 +311,15 @@ func resourceFirewallRuleUpdate(d *schema.ResourceData, meta interface{}) error
}
req.SiteID = site
resp, err := c.c.UpdateFirewallRule(context.TODO(), site, req)
resp, err := c.c.UpdateFirewallRule(ctx, site, req)
if err != nil {
return err
return diag.FromErr(err)
}
return resourceFirewallRuleSetResourceData(resp, d, site)
}
func resourceFirewallRuleDelete(d *schema.ResourceData, meta interface{}) error {
func resourceFirewallRuleDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
id := d.Id()
@@ -328,9 +328,9 @@ func resourceFirewallRuleDelete(d *schema.ResourceData, meta interface{}) error
if site == "" {
site = c.site
}
err := c.c.DeleteFirewallRule(context.TODO(), site, id)
err := c.c.DeleteFirewallRule(ctx, site, id)
if _, ok := err.(*unifi.NotFoundError); ok {
return nil
}
return err
return diag.FromErr(err)
}

View File

@@ -3,6 +3,7 @@ package provider
import (
"context"
"fmt"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"regexp"
"strings"
@@ -29,12 +30,12 @@ func resourceNetwork() *schema.Resource {
return &schema.Resource{
Description: "`unifi_network` manages WAN/LAN/VLAN networks.",
Create: resourceNetworkCreate,
Read: resourceNetworkRead,
Update: resourceNetworkUpdate,
Delete: resourceNetworkDelete,
CreateContext: resourceNetworkCreate,
ReadContext: resourceNetworkRead,
UpdateContext: resourceNetworkUpdate,
DeleteContext: resourceNetworkDelete,
Importer: &schema.ResourceImporter{
State: importNetwork,
StateContext: importNetwork,
},
Schema: map[string]*schema.Schema{
@@ -232,12 +233,12 @@ func resourceNetwork() *schema.Resource {
}
}
func resourceNetworkCreate(d *schema.ResourceData, meta interface{}) error {
func resourceNetworkCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
req, err := resourceNetworkGetResourceData(d)
if err != nil {
return err
return diag.FromErr(err)
}
site := d.Get("site").(string)
@@ -245,9 +246,9 @@ func resourceNetworkCreate(d *schema.ResourceData, meta interface{}) error {
site = c.site
}
resp, err := c.c.CreateNetwork(context.TODO(), site, req)
resp, err := c.c.CreateNetwork(ctx, site, req)
if err != nil {
return err
return diag.FromErr(err)
}
d.SetId(resp.ID)
@@ -316,9 +317,9 @@ func resourceNetworkGetResourceData(d *schema.ResourceData) (*unifi.Network, err
}, nil
}
func resourceNetworkSetResourceData(resp *unifi.Network, d *schema.ResourceData, site string) error {
func resourceNetworkSetResourceData(resp *unifi.Network, d *schema.ResourceData, site string) diag.Diagnostics {
wanType := ""
wanDNS := []string{}
var wanDNS []string
wanIP := ""
wanNetmask := ""
wanGateway := ""
@@ -357,7 +358,7 @@ func resourceNetworkSetResourceData(resp *unifi.Network, d *schema.ResourceData,
dhcpLease = 86400
}
dhcpDNS := []string{}
var dhcpDNS []string
if resp.DHCPDDNSEnabled {
for _, dns := range []string{
resp.DHCPDDNS1,
@@ -406,7 +407,7 @@ func resourceNetworkSetResourceData(resp *unifi.Network, d *schema.ResourceData,
return nil
}
func resourceNetworkRead(d *schema.ResourceData, meta interface{}) error {
func resourceNetworkRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
id := d.Id()
@@ -416,24 +417,24 @@ func resourceNetworkRead(d *schema.ResourceData, meta interface{}) error {
site = c.site
}
resp, err := c.c.GetNetwork(context.TODO(), site, id)
resp, err := c.c.GetNetwork(ctx, site, id)
if _, ok := err.(*unifi.NotFoundError); ok {
d.SetId("")
return nil
}
if err != nil {
return err
return diag.FromErr(err)
}
return resourceNetworkSetResourceData(resp, d, site)
}
func resourceNetworkUpdate(d *schema.ResourceData, meta interface{}) error {
func resourceNetworkUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
req, err := resourceNetworkGetResourceData(d)
if err != nil {
return err
return diag.FromErr(err)
}
req.ID = d.Id()
@@ -443,15 +444,15 @@ func resourceNetworkUpdate(d *schema.ResourceData, meta interface{}) error {
}
req.SiteID = site
resp, err := c.c.UpdateNetwork(context.TODO(), site, req)
resp, err := c.c.UpdateNetwork(ctx, site, req)
if err != nil {
return err
return diag.FromErr(err)
}
return resourceNetworkSetResourceData(resp, d, site)
}
func resourceNetworkDelete(d *schema.ResourceData, meta interface{}) error {
func resourceNetworkDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
name := d.Get("name").(string)
@@ -461,14 +462,14 @@ func resourceNetworkDelete(d *schema.ResourceData, meta interface{}) error {
}
id := d.Id()
err := c.c.DeleteNetwork(context.TODO(), site, id, name)
err := c.c.DeleteNetwork(ctx, site, id, name)
if _, ok := err.(*unifi.NotFoundError); ok {
return nil
}
return err
return diag.FromErr(err)
}
func importNetwork(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
func importNetwork(ctx context.Context, d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
c := meta.(*client)
id := d.Id()
site := d.Get("site").(string)
@@ -485,7 +486,7 @@ func importNetwork(d *schema.ResourceData, meta interface{}) ([]*schema.Resource
if strings.HasPrefix(id, "name=") {
targetName := strings.TrimPrefix(id, "name=")
var err error
if id, err = getNetworkIDByName(c.c, targetName, site); err != nil {
if id, err = getNetworkIDByName(ctx, c.c, targetName, site); err != nil {
return nil, err
}
}
@@ -500,14 +501,14 @@ func importNetwork(d *schema.ResourceData, meta interface{}) ([]*schema.Resource
return []*schema.ResourceData{d}, nil
}
func getNetworkIDByName(client unifiClient, networkName, site string) (string, error) {
networks, err := client.ListNetwork(context.TODO(), site)
func getNetworkIDByName(ctx context.Context, client unifiClient, networkName, site string) (string, error) {
networks, err := client.ListNetwork(ctx, site)
if err != nil {
return "", err
}
idMatchingName := ""
allNames := []string{}
var allNames []string
for _, network := range networks {
allNames = append(allNames, network.Name)
if network.Name != networkName {

View File

@@ -2,6 +2,7 @@ package provider
import (
"context"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
@@ -12,12 +13,12 @@ func resourcePortForward() *schema.Resource {
return &schema.Resource{
Description: "`unifi_port_forward` manages a port forwarding rule on the gateway.",
Create: resourcePortForwardCreate,
Read: resourcePortForwardRead,
Update: resourcePortForwardUpdate,
Delete: resourcePortForwardDelete,
CreateContext: resourcePortForwardCreate,
ReadContext: resourcePortForwardRead,
UpdateContext: resourcePortForwardUpdate,
DeleteContext: resourcePortForwardDelete,
Importer: &schema.ResourceImporter{
State: importSiteAndID,
StateContext: importSiteAndID,
},
Schema: map[string]*schema.Schema{
@@ -98,21 +99,21 @@ func resourcePortForward() *schema.Resource {
}
}
func resourcePortForwardCreate(d *schema.ResourceData, meta interface{}) error {
func resourcePortForwardCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
req, err := resourcePortForwardGetResourceData(d)
if err != nil {
return err
return diag.FromErr(err)
}
site := d.Get("site").(string)
if site == "" {
site = c.site
}
resp, err := c.c.CreatePortForward(context.TODO(), site, req)
resp, err := c.c.CreatePortForward(ctx, site, req)
if err != nil {
return err
return diag.FromErr(err)
}
d.SetId(resp.ID)
@@ -134,7 +135,7 @@ func resourcePortForwardGetResourceData(d *schema.ResourceData) (*unifi.PortForw
}, nil
}
func resourcePortForwardSetResourceData(resp *unifi.PortForward, d *schema.ResourceData, site string) error {
func resourcePortForwardSetResourceData(resp *unifi.PortForward, d *schema.ResourceData, site string) diag.Diagnostics {
d.Set("site", site)
d.Set("dst_port", resp.DstPort)
d.Set("enabled", resp.Enabled)
@@ -149,7 +150,7 @@ func resourcePortForwardSetResourceData(resp *unifi.PortForward, d *schema.Resou
return nil
}
func resourcePortForwardRead(d *schema.ResourceData, meta interface{}) error {
func resourcePortForwardRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
id := d.Id()
@@ -158,24 +159,24 @@ func resourcePortForwardRead(d *schema.ResourceData, meta interface{}) error {
if site == "" {
site = c.site
}
resp, err := c.c.GetPortForward(context.TODO(), site, id)
resp, err := c.c.GetPortForward(ctx, site, id)
if _, ok := err.(*unifi.NotFoundError); ok {
d.SetId("")
return nil
}
if err != nil {
return err
return diag.FromErr(err)
}
return resourcePortForwardSetResourceData(resp, d, site)
}
func resourcePortForwardUpdate(d *schema.ResourceData, meta interface{}) error {
func resourcePortForwardUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
req, err := resourcePortForwardGetResourceData(d)
if err != nil {
return err
return diag.FromErr(err)
}
req.ID = d.Id()
@@ -186,15 +187,15 @@ func resourcePortForwardUpdate(d *schema.ResourceData, meta interface{}) error {
}
req.SiteID = site
resp, err := c.c.UpdatePortForward(context.TODO(), site, req)
resp, err := c.c.UpdatePortForward(ctx, site, req)
if err != nil {
return err
return diag.FromErr(err)
}
return resourcePortForwardSetResourceData(resp, d, site)
}
func resourcePortForwardDelete(d *schema.ResourceData, meta interface{}) error {
func resourcePortForwardDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
id := d.Id()
@@ -204,6 +205,6 @@ func resourcePortForwardDelete(d *schema.ResourceData, meta interface{}) error {
site = c.site
}
err := c.c.DeletePortForward(context.TODO(), site, id)
return err
err := c.c.DeletePortForward(ctx, site, id)
return diag.FromErr(err)
}

View File

@@ -2,6 +2,7 @@ package provider
import (
"context"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
@@ -12,12 +13,12 @@ func resourcePortProfile() *schema.Resource {
return &schema.Resource{
Description: "`unifi_port_profile` manages a port profile for use on network switches.",
Create: resourcePortProfileCreate,
Read: resourcePortProfileRead,
Update: resourcePortProfileUpdate,
Delete: resourcePortProfileDelete,
CreateContext: resourcePortProfileCreate,
ReadContext: resourcePortProfileRead,
UpdateContext: resourcePortProfileUpdate,
DeleteContext: resourcePortProfileDelete,
Importer: &schema.ResourceImporter{
State: importSiteAndID,
StateContext: importSiteAndID,
},
Schema: map[string]*schema.Schema{
@@ -248,21 +249,21 @@ func resourcePortProfile() *schema.Resource {
}
}
func resourcePortProfileCreate(d *schema.ResourceData, meta interface{}) error {
func resourcePortProfileCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
req, err := resourcePortProfileGetResourceData(d)
if err != nil {
return err
return diag.FromErr(err)
}
site := d.Get("site").(string)
if site == "" {
site = c.site
}
resp, err := c.c.CreatePortProfile(context.TODO(), site, req)
resp, err := c.c.CreatePortProfile(ctx, site, req)
if err != nil {
return err
return diag.FromErr(err)
}
d.SetId(resp.ID)
@@ -319,7 +320,7 @@ func resourcePortProfileGetResourceData(d *schema.ResourceData) (*unifi.PortProf
}, nil
}
func resourcePortProfileSetResourceData(resp *unifi.PortProfile, d *schema.ResourceData, site string) error {
func resourcePortProfileSetResourceData(resp *unifi.PortProfile, d *schema.ResourceData, site string) diag.Diagnostics {
d.Set("site", site)
d.Set("autoneg", resp.Autoneg)
d.Set("dot1x_ctrl", resp.Dot1XCtrl)
@@ -359,7 +360,7 @@ func resourcePortProfileSetResourceData(resp *unifi.PortProfile, d *schema.Resou
return nil
}
func resourcePortProfileRead(d *schema.ResourceData, meta interface{}) error {
func resourcePortProfileRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
id := d.Id()
@@ -368,24 +369,24 @@ func resourcePortProfileRead(d *schema.ResourceData, meta interface{}) error {
if site == "" {
site = c.site
}
resp, err := c.c.GetPortProfile(context.TODO(), site, id)
resp, err := c.c.GetPortProfile(ctx, site, id)
if _, ok := err.(*unifi.NotFoundError); ok {
d.SetId("")
return nil
}
if err != nil {
return err
return diag.FromErr(err)
}
return resourcePortProfileSetResourceData(resp, d, site)
}
func resourcePortProfileUpdate(d *schema.ResourceData, meta interface{}) error {
func resourcePortProfileUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
req, err := resourcePortProfileGetResourceData(d)
if err != nil {
return err
return diag.FromErr(err)
}
req.ID = d.Id()
@@ -396,15 +397,15 @@ func resourcePortProfileUpdate(d *schema.ResourceData, meta interface{}) error {
}
req.SiteID = site
resp, err := c.c.UpdatePortProfile(context.TODO(), site, req)
resp, err := c.c.UpdatePortProfile(ctx, site, req)
if err != nil {
return err
return diag.FromErr(err)
}
return resourcePortProfileSetResourceData(resp, d, site)
}
func resourcePortProfileDelete(d *schema.ResourceData, meta interface{}) error {
func resourcePortProfileDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
id := d.Id()
@@ -414,6 +415,6 @@ func resourcePortProfileDelete(d *schema.ResourceData, meta interface{}) error {
site = c.site
}
err := c.c.DeletePortProfile(context.TODO(), site, id)
return err
err := c.c.DeletePortProfile(ctx, site, id)
return diag.FromErr(err)
}

View File

@@ -3,6 +3,7 @@ package provider
import (
"context"
"fmt"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/paultyng/go-unifi/unifi"
@@ -12,12 +13,12 @@ func resourceSettingMgmt() *schema.Resource {
return &schema.Resource{
Description: "`unifi_setting_mgmt` manages settings for a unifi site.",
Create: resourceSettingMgmtCreate,
Read: resourceSettingMgmtRead,
Update: resourceSettingMgmtUpdate,
Delete: resourceSettingMgmtDelete,
CreateContext: resourceSettingMgmtCreate,
ReadContext: resourceSettingMgmtRead,
UpdateContext: resourceSettingMgmtUpdate,
DeleteContext: resourceSettingMgmtDelete,
Importer: &schema.ResourceImporter{
State: importSiteAndID,
StateContext: importSiteAndID,
},
Schema: map[string]*schema.Schema{
@@ -135,12 +136,12 @@ func resourceSettingMgmtGetResourceData(d *schema.ResourceData, meta interface{}
}, nil
}
func resourceSettingMgmtCreate(d *schema.ResourceData, meta interface{}) error {
func resourceSettingMgmtCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
req, err := resourceSettingMgmtGetResourceData(d, meta)
if err != nil {
return err
return diag.FromErr(err)
}
site := d.Get("site").(string)
@@ -148,9 +149,9 @@ func resourceSettingMgmtCreate(d *schema.ResourceData, meta interface{}) error {
site = c.site
}
resp, err := c.c.UpdateSettingMgmt(context.TODO(), site, req)
resp, err := c.c.UpdateSettingMgmt(ctx, site, req)
if err != nil {
return err
return diag.FromErr(err)
}
d.SetId(resp.ID)
@@ -158,10 +159,10 @@ func resourceSettingMgmtCreate(d *schema.ResourceData, meta interface{}) error {
return resourceSettingMgmtSetResourceData(resp, d, meta, site)
}
func resourceSettingMgmtSetResourceData(resp *unifi.SettingMgmt, d *schema.ResourceData, meta interface{}, site string) error {
func resourceSettingMgmtSetResourceData(resp *unifi.SettingMgmt, d *schema.ResourceData, meta interface{}, site string) diag.Diagnostics {
sshKeys, err := setFromSshKeys(resp.XSshKeys)
if err != nil {
return err
return diag.FromErr(err)
}
d.Set("site", site)
@@ -171,7 +172,7 @@ func resourceSettingMgmtSetResourceData(resp *unifi.SettingMgmt, d *schema.Resou
return nil
}
func resourceSettingMgmtRead(d *schema.ResourceData, meta interface{}) error {
func resourceSettingMgmtRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
site := d.Get("site").(string)
@@ -179,24 +180,24 @@ func resourceSettingMgmtRead(d *schema.ResourceData, meta interface{}) error {
site = c.site
}
resp, err := c.c.GetSettingMgmt(context.TODO(), site)
resp, err := c.c.GetSettingMgmt(ctx, site)
if _, ok := err.(*unifi.NotFoundError); ok {
d.SetId("")
return nil
}
if err != nil {
return err
return diag.FromErr(err)
}
return resourceSettingMgmtSetResourceData(resp, d, meta, site)
}
func resourceSettingMgmtUpdate(d *schema.ResourceData, meta interface{}) error {
func resourceSettingMgmtUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
req, err := resourceSettingMgmtGetResourceData(d, meta)
if err != nil {
return err
return diag.FromErr(err)
}
req.ID = d.Id()
@@ -205,14 +206,14 @@ func resourceSettingMgmtUpdate(d *schema.ResourceData, meta interface{}) error {
site = c.site
}
resp, err := c.c.UpdateSettingMgmt(context.TODO(), site, req)
resp, err := c.c.UpdateSettingMgmt(ctx, site, req)
if err != nil {
return err
return diag.FromErr(err)
}
return resourceSettingMgmtSetResourceData(resp, d, meta, site)
}
func resourceSettingMgmtDelete(d *schema.ResourceData, meta interface{}) error {
func resourceSettingMgmtDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
return nil
}

View File

@@ -4,6 +4,7 @@ import (
"context"
"errors"
"fmt"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/paultyng/go-unifi/unifi"
@@ -13,10 +14,10 @@ func resourceSite() *schema.Resource {
return &schema.Resource{
Description: "`unifi_site` manages Unifi sites",
Create: resourceSiteCreate,
Read: resourceSiteRead,
Update: resourceSiteUpdate,
Delete: resourceSiteDelete,
CreateContext: resourceSiteCreate,
ReadContext: resourceSiteRead,
UpdateContext: resourceSiteUpdate,
DeleteContext: resourceSiteDelete,
Importer: &schema.ResourceImporter{
StateContext: resourceSiteImport,
},
@@ -72,14 +73,14 @@ func resourceSiteImport(ctx context.Context, d *schema.ResourceData, meta interf
return nil, fmt.Errorf("unable to find site %q on controller", id)
}
func resourceSiteCreate(d *schema.ResourceData, meta interface{}) error {
func resourceSiteCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
description := d.Get("description").(string)
resp, err := c.c.CreateSite(context.TODO(), description)
resp, err := c.c.CreateSite(ctx, description)
if err != nil {
return err
return diag.FromErr(err)
}
site := resp[0]
@@ -88,30 +89,30 @@ func resourceSiteCreate(d *schema.ResourceData, meta interface{}) error {
return resourceSiteSetResourceData(&site, d)
}
func resourceSiteSetResourceData(resp *unifi.Site, d *schema.ResourceData) error {
func resourceSiteSetResourceData(resp *unifi.Site, d *schema.ResourceData) diag.Diagnostics {
d.Set("name", resp.Name)
d.Set("description", resp.Description)
return nil
}
func resourceSiteRead(d *schema.ResourceData, meta interface{}) error {
func resourceSiteRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
id := d.Id()
site, err := c.c.GetSite(context.TODO(), id)
site, err := c.c.GetSite(ctx, id)
if _, ok := err.(*unifi.NotFoundError); ok {
d.SetId("")
return nil
}
if err != nil {
return err
return diag.FromErr(err)
}
return resourceSiteSetResourceData(site, d)
}
func resourceSiteUpdate(d *schema.ResourceData, meta interface{}) error {
func resourceSiteUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
site := &unifi.Site{
@@ -120,17 +121,17 @@ func resourceSiteUpdate(d *schema.ResourceData, meta interface{}) error {
Description: d.Get("description").(string),
}
resp, err := c.c.UpdateSite(context.TODO(), site.Name, site.Description)
resp, err := c.c.UpdateSite(ctx, site.Name, site.Description)
if err != nil {
return err
return diag.FromErr(err)
}
return resourceSiteSetResourceData(&resp[0], d)
}
func resourceSiteDelete(d *schema.ResourceData, meta interface{}) error {
func resourceSiteDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
id := d.Id()
_, err := c.c.DeleteSite(context.TODO(), id)
return err
_, err := c.c.DeleteSite(ctx, id)
return diag.FromErr(err)
}

View File

@@ -3,6 +3,7 @@ package provider
import (
"context"
"fmt"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
@@ -13,12 +14,12 @@ func resourceStaticRoute() *schema.Resource {
return &schema.Resource{
Description: "`unifi_static_route` manages a static route.",
Create: resourceStaticRouteCreate,
Read: resourceStaticRouteRead,
Update: resourceStaticRouteUpdate,
Delete: resourceStaticRouteDelete,
CreateContext: resourceStaticRouteCreate,
ReadContext: resourceStaticRouteRead,
UpdateContext: resourceStaticRouteUpdate,
DeleteContext: resourceStaticRouteDelete,
Importer: &schema.ResourceImporter{
State: importSiteAndID,
StateContext: importSiteAndID,
},
Schema: map[string]*schema.Schema{
@@ -74,12 +75,12 @@ func resourceStaticRoute() *schema.Resource {
}
}
func resourceStaticRouteCreate(d *schema.ResourceData, meta interface{}) error {
func resourceStaticRouteCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
req, err := resourceStaticRouteGetResourceData(d)
if err != nil {
return err
return diag.FromErr(err)
}
site := d.Get("site").(string)
@@ -87,9 +88,9 @@ func resourceStaticRouteCreate(d *schema.ResourceData, meta interface{}) error {
site = c.site
}
resp, err := c.c.CreateRouting(context.TODO(), site, req)
resp, err := c.c.CreateRouting(ctx, site, req)
if err != nil {
return err
return diag.FromErr(err)
}
d.SetId(resp.ID)
@@ -123,7 +124,7 @@ func resourceStaticRouteGetResourceData(d *schema.ResourceData) (*unifi.Routing,
return r, nil
}
func resourceStaticRouteSetResourceData(resp *unifi.Routing, d *schema.ResourceData, site string) error {
func resourceStaticRouteSetResourceData(resp *unifi.Routing, d *schema.ResourceData, site string) diag.Diagnostics {
d.Set("site", site)
d.Set("name", resp.Name)
d.Set("network", cidrZeroBased(resp.StaticRouteNetwork))
@@ -143,13 +144,13 @@ func resourceStaticRouteSetResourceData(resp *unifi.Routing, d *schema.ResourceD
case "blackhole":
// no additional attributes
default:
return fmt.Errorf("unexpected static route type: %q", t)
return diag.Errorf("unexpected static route type: %q", t)
}
return nil
}
func resourceStaticRouteRead(d *schema.ResourceData, meta interface{}) error {
func resourceStaticRouteRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
id := d.Id()
@@ -159,24 +160,24 @@ func resourceStaticRouteRead(d *schema.ResourceData, meta interface{}) error {
site = c.site
}
resp, err := c.c.GetRouting(context.TODO(), site, id)
resp, err := c.c.GetRouting(ctx, site, id)
if _, ok := err.(*unifi.NotFoundError); ok {
d.SetId("")
return nil
}
if err != nil {
return err
return diag.FromErr(err)
}
return resourceStaticRouteSetResourceData(resp, d, site)
}
func resourceStaticRouteUpdate(d *schema.ResourceData, meta interface{}) error {
func resourceStaticRouteUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
req, err := resourceStaticRouteGetResourceData(d)
if err != nil {
return err
return diag.FromErr(err)
}
req.ID = d.Id()
@@ -187,15 +188,15 @@ func resourceStaticRouteUpdate(d *schema.ResourceData, meta interface{}) error {
}
req.SiteID = site
resp, err := c.c.UpdateRouting(context.TODO(), site, req)
resp, err := c.c.UpdateRouting(ctx, site, req)
if err != nil {
return err
return diag.FromErr(err)
}
return resourceStaticRouteSetResourceData(resp, d, site)
}
func resourceStaticRouteDelete(d *schema.ResourceData, meta interface{}) error {
func resourceStaticRouteDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
id := d.Id()
@@ -204,9 +205,9 @@ func resourceStaticRouteDelete(d *schema.ResourceData, meta interface{}) error {
if site == "" {
site = c.site
}
err := c.c.DeleteRouting(context.TODO(), site, id)
err := c.c.DeleteRouting(ctx, site, id)
if _, ok := err.(*unifi.NotFoundError); ok {
return nil
}
return err
return diag.FromErr(err)
}

View File

@@ -3,6 +3,7 @@ package provider
import (
"context"
"errors"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
@@ -16,12 +17,12 @@ func resourceUser() *schema.Resource {
"Users are created in the controller when observed on the network, so the resource defaults to allowing " +
"itself to just take over management of a MAC address, but this can be turned off.",
Create: resourceUserCreate,
Read: resourceUserRead,
Update: resourceUserUpdate,
Delete: resourceUserDelete,
CreateContext: resourceUserCreate,
ReadContext: resourceUserRead,
UpdateContext: resourceUserUpdate,
DeleteContext: resourceUserDelete,
Importer: &schema.ResourceImporter{
State: importSiteAndID,
StateContext: importSiteAndID,
},
Schema: map[string]*schema.Schema{
@@ -107,12 +108,12 @@ func resourceUser() *schema.Resource {
}
}
func resourceUserCreate(d *schema.ResourceData, meta interface{}) error {
func resourceUserCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
req, err := resourceUserGetResourceData(d)
if err != nil {
return err
return diag.FromErr(err)
}
allowExisting := d.Get("allow_existing").(bool)
@@ -122,35 +123,35 @@ func resourceUserCreate(d *schema.ResourceData, meta interface{}) error {
site = c.site
}
resp, err := c.c.CreateUser(context.TODO(), site, req)
resp, err := c.c.CreateUser(ctx, site, req)
if err != nil {
var apiErr *unifi.APIError
if !errors.As(err, &apiErr) || (apiErr.Message != "api.err.MacUsed" || !allowExisting) {
return err
return diag.FromErr(err)
}
// mac in use, just absorb it
mac := d.Get("mac").(string)
existing, err := c.c.GetUserByMAC(context.TODO(), site, mac)
existing, err := c.c.GetUserByMAC(ctx, site, mac)
if err != nil {
return err
return diag.FromErr(err)
}
req.ID = existing.ID
req.SiteID = existing.SiteID
resp, err = c.c.UpdateUser(context.TODO(), site, req)
resp, err = c.c.UpdateUser(ctx, site, req)
if err != nil {
return err
return diag.FromErr(err)
}
}
d.SetId(resp.ID)
if d.Get("blocked").(bool) {
err := c.c.BlockUserByMAC(context.TODO(), site, d.Get("mac").(string))
err := c.c.BlockUserByMAC(ctx, site, d.Get("mac").(string))
if err != nil {
return err
return diag.FromErr(err)
}
}
@@ -173,7 +174,7 @@ func resourceUserGetResourceData(d *schema.ResourceData) (*unifi.User, error) {
}, nil
}
func resourceUserSetResourceData(resp *unifi.User, d *schema.ResourceData, site string) error {
func resourceUserSetResourceData(resp *unifi.User, d *schema.ResourceData, site string) diag.Diagnostics {
fixedIP := ""
if resp.UseFixedIP {
fixedIP = resp.FixedIP
@@ -194,7 +195,7 @@ func resourceUserSetResourceData(resp *unifi.User, d *schema.ResourceData, site
return nil
}
func resourceUserRead(d *schema.ResourceData, meta interface{}) error {
func resourceUserRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
id := d.Id()
@@ -204,23 +205,23 @@ func resourceUserRead(d *schema.ResourceData, meta interface{}) error {
site = c.site
}
resp, err := c.c.GetUser(context.TODO(), site, id)
resp, err := c.c.GetUser(ctx, site, id)
if _, ok := err.(*unifi.NotFoundError); ok {
d.SetId("")
return nil
}
if err != nil {
return err
return diag.FromErr(err)
}
// for some reason the IP address is only on this endpoint, so issue another request
macResp, err := c.c.GetUserByMAC(context.TODO(), site, resp.MAC)
macResp, err := c.c.GetUserByMAC(ctx, site, resp.MAC)
if _, ok := err.(*unifi.NotFoundError); ok {
d.SetId("")
return nil
}
if err != nil {
return err
return diag.FromErr(err)
}
resp.IP = macResp.IP
@@ -228,7 +229,7 @@ func resourceUserRead(d *schema.ResourceData, meta interface{}) error {
return resourceUserSetResourceData(resp, d, site)
}
func resourceUserUpdate(d *schema.ResourceData, meta interface{}) error {
func resourceUserUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
site := d.Get("site").(string)
@@ -239,35 +240,35 @@ func resourceUserUpdate(d *schema.ResourceData, meta interface{}) error {
if d.HasChange("blocked") {
mac := d.Get("mac").(string)
if d.Get("blocked").(bool) {
err := c.c.BlockUserByMAC(context.TODO(), site, mac)
err := c.c.BlockUserByMAC(ctx, site, mac)
if err != nil {
return err
return diag.FromErr(err)
}
} else {
err := c.c.UnblockUserByMAC(context.TODO(), site, mac)
err := c.c.UnblockUserByMAC(ctx, site, mac)
if err != nil {
return err
return diag.FromErr(err)
}
}
}
req, err := resourceUserGetResourceData(d)
if err != nil {
return err
return diag.FromErr(err)
}
req.ID = d.Id()
req.SiteID = site
resp, err := c.c.UpdateUser(context.TODO(), site, req)
resp, err := c.c.UpdateUser(ctx, site, req)
if err != nil {
return err
return diag.FromErr(err)
}
return resourceUserSetResourceData(resp, d, site)
}
func resourceUserDelete(d *schema.ResourceData, meta interface{}) error {
func resourceUserDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
id := d.Id()
@@ -282,14 +283,14 @@ func resourceUserDelete(d *schema.ResourceData, meta interface{}) error {
}
// lookup MAC instead of trusting state
u, err := c.c.GetUser(context.TODO(), site, id)
u, err := c.c.GetUser(ctx, site, id)
if _, ok := err.(*unifi.NotFoundError); ok {
return nil
}
if err != nil {
return err
return diag.FromErr(err)
}
err = c.c.DeleteUserByMAC(context.TODO(), site, u.MAC)
return err
err = c.c.DeleteUserByMAC(ctx, site, u.MAC)
return diag.FromErr(err)
}

View File

@@ -2,6 +2,7 @@ package provider
import (
"context"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/paultyng/go-unifi/unifi"
@@ -12,12 +13,12 @@ func resourceUserGroup() *schema.Resource {
Description: "`unifi_user_group` manages a user group (called \"client group\" in the UI), which can be used " +
"to limit bandwidth for groups of users.",
Create: resourceUserGroupCreate,
Read: resourceUserGroupRead,
Update: resourceUserGroupUpdate,
Delete: resourceUserGroupDelete,
CreateContext: resourceUserGroupCreate,
ReadContext: resourceUserGroupRead,
UpdateContext: resourceUserGroupUpdate,
DeleteContext: resourceUserGroupDelete,
Importer: &schema.ResourceImporter{
State: importSiteAndID,
StateContext: importSiteAndID,
},
Schema: map[string]*schema.Schema{
@@ -56,12 +57,12 @@ func resourceUserGroup() *schema.Resource {
}
}
func resourceUserGroupCreate(d *schema.ResourceData, meta interface{}) error {
func resourceUserGroupCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
req, err := resourceUserGroupGetResourceData(d)
if err != nil {
return err
return diag.FromErr(err)
}
site := d.Get("site").(string)
@@ -71,7 +72,7 @@ func resourceUserGroupCreate(d *schema.ResourceData, meta interface{}) error {
resp, err := c.c.CreateUserGroup(context.TODO(), site, req)
if err != nil {
return err
return diag.FromErr(err)
}
d.SetId(resp.ID)
@@ -87,7 +88,7 @@ func resourceUserGroupGetResourceData(d *schema.ResourceData) (*unifi.UserGroup,
}, nil
}
func resourceUserGroupSetResourceData(resp *unifi.UserGroup, d *schema.ResourceData) error {
func resourceUserGroupSetResourceData(resp *unifi.UserGroup, d *schema.ResourceData) diag.Diagnostics {
d.Set("name", resp.Name)
d.Set("qos_rate_max_down", resp.QOSRateMaxDown)
d.Set("qos_rate_max_up", resp.QOSRateMaxUp)
@@ -95,7 +96,7 @@ func resourceUserGroupSetResourceData(resp *unifi.UserGroup, d *schema.ResourceD
return nil
}
func resourceUserGroupRead(d *schema.ResourceData, meta interface{}) error {
func resourceUserGroupRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
id := d.Id()
@@ -111,18 +112,18 @@ func resourceUserGroupRead(d *schema.ResourceData, meta interface{}) error {
return nil
}
if err != nil {
return err
return diag.FromErr(err)
}
return resourceUserGroupSetResourceData(resp, d)
}
func resourceUserGroupUpdate(d *schema.ResourceData, meta interface{}) error {
func resourceUserGroupUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
req, err := resourceUserGroupGetResourceData(d)
if err != nil {
return err
return diag.FromErr(err)
}
req.ID = d.Id()
@@ -135,13 +136,13 @@ func resourceUserGroupUpdate(d *schema.ResourceData, meta interface{}) error {
resp, err := c.c.UpdateUserGroup(context.TODO(), site, req)
if err != nil {
return err
return diag.FromErr(err)
}
return resourceUserGroupSetResourceData(resp, d)
}
func resourceUserGroupDelete(d *schema.ResourceData, meta interface{}) error {
func resourceUserGroupDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
id := d.Id()
@@ -154,5 +155,5 @@ func resourceUserGroupDelete(d *schema.ResourceData, meta interface{}) error {
if _, ok := err.(*unifi.NotFoundError); ok {
return nil
}
return err
return diag.FromErr(err)
}

View File

@@ -3,6 +3,7 @@ package provider
import (
"context"
"fmt"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"log"
"strings"
@@ -15,12 +16,12 @@ func resourceWLAN() *schema.Resource {
return &schema.Resource{
Description: "`unifi_wlan` manages a WiFi network / SSID.",
Create: resourceWLANCreate,
Read: resourceWLANRead,
Update: resourceWLANUpdate,
Delete: resourceWLANDelete,
CreateContext: resourceWLANCreate,
ReadContext: resourceWLANRead,
UpdateContext: resourceWLANUpdate,
DeleteContext: resourceWLANDelete,
Importer: &schema.ResourceImporter{
State: importSiteAndID,
StateContext: importSiteAndID,
},
Schema: map[string]*schema.Schema{
@@ -280,12 +281,12 @@ func resourceWLANGetResourceData(d *schema.ResourceData, meta interface{}) (*uni
}, nil
}
func resourceWLANCreate(d *schema.ResourceData, meta interface{}) error {
func resourceWLANCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
req, err := resourceWLANGetResourceData(d, meta)
if err != nil {
return err
return diag.FromErr(err)
}
site := d.Get("site").(string)
@@ -293,9 +294,9 @@ func resourceWLANCreate(d *schema.ResourceData, meta interface{}) error {
site = c.site
}
resp, err := c.c.CreateWLAN(context.TODO(), site, req)
resp, err := c.c.CreateWLAN(ctx, site, req)
if err != nil {
return err
return diag.FromErr(err)
}
d.SetId(resp.ID)
@@ -303,7 +304,7 @@ func resourceWLANCreate(d *schema.ResourceData, meta interface{}) error {
return resourceWLANSetResourceData(resp, d, meta, site)
}
func resourceWLANSetResourceData(resp *unifi.WLAN, d *schema.ResourceData, meta interface{}, site string) error {
func resourceWLANSetResourceData(resp *unifi.WLAN, d *schema.ResourceData, meta interface{}, site string) diag.Diagnostics {
// c := meta.(*client)
vlan := 0
@@ -331,7 +332,7 @@ func resourceWLANSetResourceData(resp *unifi.WLAN, d *schema.ResourceData, meta
log.Printf("[TRACE] API Schedule: %#v", resp.Schedule)
schedule, err := listFromScheduleStrings(resp.Schedule)
if err != nil {
return fmt.Errorf("unable to parse schedule: %w", err)
return diag.Errorf("unable to parse schedule: %w", err)
}
d.Set("site", site)
@@ -363,7 +364,7 @@ func resourceWLANSetResourceData(resp *unifi.WLAN, d *schema.ResourceData, meta
return nil
}
func resourceWLANRead(d *schema.ResourceData, meta interface{}) error {
func resourceWLANRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
id := d.Id()
@@ -372,24 +373,24 @@ func resourceWLANRead(d *schema.ResourceData, meta interface{}) error {
site = c.site
}
resp, err := c.c.GetWLAN(context.TODO(), site, id)
resp, err := c.c.GetWLAN(ctx, site, id)
if _, ok := err.(*unifi.NotFoundError); ok {
d.SetId("")
return nil
}
if err != nil {
return err
return diag.FromErr(err)
}
return resourceWLANSetResourceData(resp, d, meta, site)
}
func resourceWLANUpdate(d *schema.ResourceData, meta interface{}) error {
func resourceWLANUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
req, err := resourceWLANGetResourceData(d, meta)
if err != nil {
return err
return diag.FromErr(err)
}
req.ID = d.Id()
@@ -399,15 +400,15 @@ func resourceWLANUpdate(d *schema.ResourceData, meta interface{}) error {
}
req.SiteID = site
resp, err := c.c.UpdateWLAN(context.TODO(), site, req)
resp, err := c.c.UpdateWLAN(ctx, site, req)
if err != nil {
return err
return diag.FromErr(err)
}
return resourceWLANSetResourceData(resp, d, meta, site)
}
func resourceWLANDelete(d *schema.ResourceData, meta interface{}) error {
func resourceWLANDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
c := meta.(*client)
id := d.Id()
@@ -416,11 +417,11 @@ func resourceWLANDelete(d *schema.ResourceData, meta interface{}) error {
site = c.site
}
err := c.c.DeleteWLAN(context.TODO(), site, id)
err := c.c.DeleteWLAN(ctx, site, id)
if _, ok := err.(*unifi.NotFoundError); ok {
return nil
}
return err
return diag.FromErr(err)
}
func listToScheduleStrings(list []interface{}) ([]string, error) {