From 9f8012ae66d774c07ada8fb0d2b664c793cdd03b Mon Sep 17 00:00:00 2001 From: Benjamin Bennett Date: Tue, 12 Apr 2022 11:35:32 +0100 Subject: [PATCH] Replace usage of Create field with CreateContext in resource_password and resource_string (#230) --- internal/provider/resource_password.go | 8 ++++---- internal/provider/resource_string.go | 2 +- internal/provider/string.go | 17 ++++++++++------- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/internal/provider/resource_password.go b/internal/provider/resource_password.go index 8a81c538..3c107005 100644 --- a/internal/provider/resource_password.go +++ b/internal/provider/resource_password.go @@ -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), }, diff --git a/internal/provider/resource_string.go b/internal/provider/resource_string.go index 749ed846..df132d5b 100644 --- a/internal/provider/resource_string.go +++ b/internal/provider/resource_string.go @@ -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, diff --git a/internal/provider/string.go b/internal/provider/string.go index 8ab2e686..480819bc 100644 --- a/internal/provider/string.go +++ b/internal/provider/string.go @@ -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" ) @@ -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) @@ -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]