move from deprecated CRUD functions to context aware CRUD
This commit is contained in:
committed by
Paul Tyng
parent
0dc4ce824b
commit
4c36a8af1b
1
go.sum
1
go.sum
@@ -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=
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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])
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user