Skip to content

Commit

Permalink
Replace usage of Create field with CreateContext in resource_password…
Browse files Browse the repository at this point in the history
… and resource_string (#230)
  • Loading branch information
bendbennett committed Apr 12, 2022
1 parent 79d154b commit 9f8012a
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 12 deletions.
8 changes: 4 additions & 4 deletions internal/provider/resource_password.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ func resourcePassword() *schema.Resource {
"data handling in the [Terraform documentation](https://www.terraform.io/docs/language/state/sensitive-data.html).\n" +
"\n" +
"This resource *does* use a cryptographic random number generator.",
Create: createStringFunc(true),
Read: readNil,
Delete: schema.RemoveFromState,
Schema: stringSchemaV1(true),
CreateContext: createStringFunc(true),
Read: readNil,
Delete: schema.RemoveFromState,
Schema: stringSchemaV1(true),
Importer: &schema.ResourceImporter{
StateContext: importStringFunc(true),
},
Expand Down
2 changes: 1 addition & 1 deletion internal/provider/resource_string.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ func resourceString() *schema.Resource {
"Historically this resource's intended usage has been ambiguous as the original example used " +
"it in a password. For backwards compatibility it will continue to exist. For unique ids please " +
"use [random_id](id.html), for sensitive random values please use [random_password](password.html).",
Create: createStringFunc(false),
CreateContext: createStringFunc(false),
Read: readNil,
Delete: schema.RemoveFromState,
MigrateState: resourceRandomStringMigrateState,
Expand Down
17 changes: 10 additions & 7 deletions internal/provider/string.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ package provider
import (
"context"
"crypto/rand"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"math/big"
"sort"

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

Expand Down Expand Up @@ -123,12 +123,15 @@ func stringSchemaV1(sensitive bool) map[string]*schema.Schema {
}
}

func createStringFunc(sensitive bool) func(d *schema.ResourceData, meta interface{}) error {
return func(d *schema.ResourceData, meta interface{}) error {
func createStringFunc(sensitive bool) func(_ context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
return func(_ context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
const numChars = "0123456789"
const lowerChars = "abcdefghijklmnopqrstuvwxyz"
const upperChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
var specialChars = "!@#$%&*()-_=+[]{}<>:?"
var (
specialChars = "!@#$%&*()-_=+[]{}<>:?"
diags diag.Diagnostics
)

length := d.Get("length").(int)
upper := d.Get("upper").(bool)
Expand Down Expand Up @@ -169,18 +172,18 @@ func createStringFunc(sensitive bool) func(d *schema.ResourceData, meta interfac
for k, v := range minMapping {
s, err := generateRandomBytes(&k, v)
if err != nil {
return errwrap.Wrapf("error generating random bytes: {{err}}", err)
return append(diags, diag.Errorf("error generating random bytes: %s", err)...)
}
result = append(result, s...)
}
s, err := generateRandomBytes(&chars, length-len(result))
if err != nil {
return errwrap.Wrapf("error generating random bytes: {{err}}", err)
return append(diags, diag.Errorf("error generating random bytes: %s", err)...)
}
result = append(result, s...)
order := make([]byte, len(result))
if _, err := rand.Read(order); err != nil {
return errwrap.Wrapf("error generating random bytes: {{err}}", err)
return append(diags, diag.Errorf("error generating random bytes: %s", err)...)
}
sort.Slice(result, func(i, j int) bool {
return order[i] < order[j]
Expand Down

0 comments on commit 9f8012a

Please sign in to comment.