Skip to content

Commit

Permalink
Update Data Source Reads (#204)
Browse files Browse the repository at this point in the history
* use ReadContext in the schema.Resource struct

* use context parameter instead of context.Background() in data source reads
  • Loading branch information
afady authored Jan 20, 2022
1 parent f1b09a4 commit 53ae2fe
Show file tree
Hide file tree
Showing 24 changed files with 229 additions and 246 deletions.
12 changes: 6 additions & 6 deletions vultr/data_source_vultr_account.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@ package vultr

import (
"context"
"fmt"
"math"

"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)

func dataSourceVultrAccount() *schema.Resource {
return &schema.Resource{
Read: dataSourceVultrAccountRead,
ReadContext: dataSourceVultrAccountRead,
Schema: map[string]*schema.Schema{
"name": {
Type: schema.TypeString,
Expand Down Expand Up @@ -45,13 +45,13 @@ func dataSourceVultrAccount() *schema.Resource {
}
}

func dataSourceVultrAccountRead(d *schema.ResourceData, meta interface{}) error {
func dataSourceVultrAccountRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
client := meta.(*Client).govultrClient()

account, err := client.Account.Get(context.Background())
account, err := client.Account.Get(ctx)

if err != nil {
return fmt.Errorf("error getting account info: %v", err)
return diag.Errorf("error getting account info: %v", err)
}

d.SetId("account")
Expand All @@ -62,7 +62,7 @@ func dataSourceVultrAccountRead(d *schema.ResourceData, meta interface{}) error
d.Set("last_payment_date", account.LastPaymentDate)
d.Set("last_payment_amount", math.Round(float64(account.LastPaymentAmount)*100)/100)
if err := d.Set("acl", account.ACL); err != nil {
return fmt.Errorf("error setting `acls`: %#v", err)
return diag.Errorf("error setting `acls`: %#v", err)
}
return nil
}
19 changes: 9 additions & 10 deletions vultr/data_source_vultr_application.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,16 @@ package vultr

import (
"context"
"errors"
"fmt"
"strconv"

"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/vultr/govultr/v2"
)

func dataSourceVultrApplication() *schema.Resource {
return &schema.Resource{
Read: dataSourceVultrApplicationRead,
ReadContext: dataSourceVultrApplicationRead,
Schema: map[string]*schema.Schema{
"filter": dataSourceFiltersSchema(),
"deploy_name": {
Expand Down Expand Up @@ -43,31 +42,31 @@ func dataSourceVultrApplication() *schema.Resource {
}
}

func dataSourceVultrApplicationRead(d *schema.ResourceData, meta interface{}) error {
func dataSourceVultrApplicationRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
client := meta.(*Client).govultrClient()

filters, filtersOk := d.GetOk("filter")

if !filtersOk {
return fmt.Errorf("issue with filter: %v", filtersOk)
return diag.Errorf("issue with filter: %v", filtersOk)
}

appList := []govultr.Application{}
f := buildVultrDataSourceFilter(filters.(*schema.Set))
options := &govultr.ListOptions{}

for {
apps, meta, err := client.Application.List(context.Background(), options)
apps, meta, err := client.Application.List(ctx, options)
if err != nil {
return fmt.Errorf("error getting applications: %v", err)
return diag.Errorf("error getting applications: %v", err)
}

for _, a := range apps {
// we need convert the a struct INTO a map so we can easily manipulate the data here
sm, err := structToMap(a)

if err != nil {
return err
return diag.FromErr(err)
}

if filterLoop(f, sm) {
Expand All @@ -83,11 +82,11 @@ func dataSourceVultrApplicationRead(d *schema.ResourceData, meta interface{}) er
}
}
if len(appList) > 1 {
return fmt.Errorf("your search returned too many results : %d. Please refine your search to be more specific", len(appList))
return diag.Errorf("your search returned too many results : %d. Please refine your search to be more specific", len(appList))
}

if len(appList) < 1 {
return errors.New("no results were found")
return diag.Errorf("no results were found")
}
d.SetId(strconv.Itoa(appList[0].ID))
d.Set("deploy_name", appList[0].DeployName)
Expand Down
21 changes: 10 additions & 11 deletions vultr/data_source_vultr_bare_metal_plan.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,15 @@ package vultr

import (
"context"
"errors"
"fmt"

"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/vultr/govultr/v2"
)

func dataSourceVultrBareMetalPlan() *schema.Resource {
return &schema.Resource{
Read: dataSourceVultrBareMetalPlanRead,
ReadContext: dataSourceVultrBareMetalPlanRead,
Schema: map[string]*schema.Schema{
"filter": dataSourceFiltersSchema(),
"cpu_count": {
Expand Down Expand Up @@ -61,31 +60,31 @@ func dataSourceVultrBareMetalPlan() *schema.Resource {
}
}

func dataSourceVultrBareMetalPlanRead(d *schema.ResourceData, meta interface{}) error {
func dataSourceVultrBareMetalPlanRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
client := meta.(*Client).govultrClient()

filters, filtersOk := d.GetOk("filter")

if !filtersOk {
return fmt.Errorf("issue with filter: %v", filtersOk)
return diag.Errorf("issue with filter: %v", filtersOk)
}

var planList []govultr.BareMetalPlan
f := buildVultrDataSourceFilter(filters.(*schema.Set))
options := &govultr.ListOptions{}
for {
plans, meta, err := client.Plan.ListBareMetal(context.Background(), options)
plans, meta, err := client.Plan.ListBareMetal(ctx, options)

if err != nil {
return fmt.Errorf("Error getting bare metal plans: %v", err)
return diag.Errorf("Error getting bare metal plans: %v", err)
}

for _, a := range plans {
// we need convert the a struct INTO a map so we can easily manipulate the data here
sm, err := structToMap(a)

if err != nil {
return err
return diag.FromErr(err)
}

if filterLoop(f, sm) {
Expand All @@ -101,11 +100,11 @@ func dataSourceVultrBareMetalPlanRead(d *schema.ResourceData, meta interface{})
}
}
if len(planList) > 1 {
return errors.New("your search returned too many results. Please refine your search to be more specific")
return diag.Errorf("your search returned too many results. Please refine your search to be more specific")
}

if len(planList) < 1 {
return errors.New("no results were found")
return diag.Errorf("no results were found")
}

d.SetId(planList[0].ID)
Expand All @@ -120,7 +119,7 @@ func dataSourceVultrBareMetalPlanRead(d *schema.ResourceData, meta interface{})
d.Set("disk_count", planList[0].DiskCount)

if err := d.Set("locations", planList[0].Locations); err != nil {
return fmt.Errorf("error setting `locations`: %#v", err)
return diag.Errorf("error setting `locations`: %#v", err)
}

return nil
Expand Down
19 changes: 9 additions & 10 deletions vultr/data_source_vultr_bare_metal_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,15 @@ package vultr

import (
"context"
"errors"
"fmt"

"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/vultr/govultr/v2"
)

func dataSourceVultrBareMetalServer() *schema.Resource {
return &schema.Resource{
Read: dataSourceVultrBareMetalServerRead,
ReadContext: dataSourceVultrBareMetalServerRead,
Schema: map[string]*schema.Schema{
"filter": dataSourceFiltersSchema(),
"os": {
Expand Down Expand Up @@ -103,31 +102,31 @@ func dataSourceVultrBareMetalServer() *schema.Resource {
}
}

func dataSourceVultrBareMetalServerRead(d *schema.ResourceData, meta interface{}) error {
func dataSourceVultrBareMetalServerRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
client := meta.(*Client).govultrClient()

filters, filtersOk := d.GetOk("filter")

if !filtersOk {
return fmt.Errorf("issue with filter: %v", filtersOk)
return diag.Errorf("issue with filter: %v", filtersOk)
}

serverList := []govultr.BareMetalServer{}
f := buildVultrDataSourceFilter(filters.(*schema.Set))
options := &govultr.ListOptions{}

for {
servers, meta, err := client.BareMetalServer.List(context.Background(), options)
servers, meta, err := client.BareMetalServer.List(ctx, options)
if err != nil {
return fmt.Errorf("error getting bare metal servers: %v", err)
return diag.Errorf("error getting bare metal servers: %v", err)
}

for _, s := range servers {
// we need convert the a struct INTO a map so we can easily manipulate the data here
sm, err := structToMap(s)

if err != nil {
return err
return diag.FromErr(err)
}

if filterLoop(f, sm) {
Expand All @@ -143,11 +142,11 @@ func dataSourceVultrBareMetalServerRead(d *schema.ResourceData, meta interface{}
}
}
if len(serverList) > 1 {
return errors.New("your search returned too many results. Please refine your search to be more specific")
return diag.Errorf("your search returned too many results. Please refine your search to be more specific")
}

if len(serverList) < 1 {
return errors.New("no results were found")
return diag.Errorf("no results were found")
}

d.SetId(serverList[0].ID)
Expand Down
19 changes: 9 additions & 10 deletions vultr/data_source_vultr_block_storage.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,15 @@ package vultr

import (
"context"
"errors"
"fmt"

"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/vultr/govultr/v2"
)

func dataSourceVultrBlockStorage() *schema.Resource {
return &schema.Resource{
Read: dataSourceVultrBlockStorageRead,
ReadContext: dataSourceVultrBlockStorageRead,
Schema: map[string]*schema.Schema{
"filter": dataSourceFiltersSchema(),
"date_created": {
Expand Down Expand Up @@ -50,29 +49,29 @@ func dataSourceVultrBlockStorage() *schema.Resource {
}
}

func dataSourceVultrBlockStorageRead(d *schema.ResourceData, meta interface{}) error {
func dataSourceVultrBlockStorageRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
client := meta.(*Client).govultrClient()

filters, filtersOk := d.GetOk("filter")

if !filtersOk {
return fmt.Errorf("issue with filter: %v", filtersOk)
return diag.Errorf("issue with filter: %v", filtersOk)
}

var blockList []govultr.BlockStorage
f := buildVultrDataSourceFilter(filters.(*schema.Set))
options := &govultr.ListOptions{}
for {
block, meta, err := client.BlockStorage.List(context.Background(), options)
block, meta, err := client.BlockStorage.List(ctx, options)
if err != nil {
return fmt.Errorf("error getting block storages: %v", err)
return diag.Errorf("error getting block storages: %v", err)
}

for _, b := range block {
sm, err := structToMap(b)

if err != nil {
return err
return diag.FromErr(err)
}

if filterLoop(f, sm) {
Expand All @@ -88,11 +87,11 @@ func dataSourceVultrBlockStorageRead(d *schema.ResourceData, meta interface{}) e
}
}
if len(blockList) > 1 {
return errors.New("your search returned too many results. Please refine your search to be more specific")
return diag.Errorf("your search returned too many results. Please refine your search to be more specific")
}

if len(blockList) < 1 {
return errors.New("no results were found")
return diag.Errorf("no results were found")
}

d.SetId(blockList[0].ID)
Expand Down
10 changes: 5 additions & 5 deletions vultr/data_source_vultr_dns_domain.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@ package vultr

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"
)

func dataSourceVultrDNSDomain() *schema.Resource {
return &schema.Resource{
Read: dataSourceVultrDNSDomainRead,
ReadContext: dataSourceVultrDNSDomainRead,
Schema: map[string]*schema.Schema{
"domain": {
Type: schema.TypeString,
Expand All @@ -30,12 +30,12 @@ func dataSourceVultrDNSDomain() *schema.Resource {
}
}

func dataSourceVultrDNSDomainRead(d *schema.ResourceData, meta interface{}) error {
func dataSourceVultrDNSDomainRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
client := meta.(*Client).govultrClient()

domain, err := client.Domain.Get(context.Background(), d.Get("domain").(string))
domain, err := client.Domain.Get(ctx, d.Get("domain").(string))
if err != nil {
return fmt.Errorf("error getting dns domains: %v", err)
return diag.Errorf("error getting dns domains: %v", err)
}

d.SetId(domain.Domain)
Expand Down
Loading

0 comments on commit 53ae2fe

Please sign in to comment.