Skip to content

Commit

Permalink
use context methods for creating,reading,updating mounts
Browse files Browse the repository at this point in the history
  • Loading branch information
vinay-gopalan committed Sep 27, 2024
1 parent 0d1e5f1 commit 5a86039
Show file tree
Hide file tree
Showing 13 changed files with 93 additions and 101 deletions.
4 changes: 2 additions & 2 deletions vault/resource_ad_secret_backend.go
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ func createConfigResource(ctx context.Context, d *schema.ResourceData, meta inte

log.Printf("[DEBUG] Mounting AD backend at %q", backend)

if err := createMount(d, meta, client, backend, consts.MountTypeAD); err != nil {
if err := createMount(ctx, d, meta, client, backend, consts.MountTypeAD); err != nil {
return diag.FromErr(err)
}

Expand Down Expand Up @@ -343,7 +343,7 @@ func readConfigResource(ctx context.Context, d *schema.ResourceData, meta interf

d.Set("backend", d.Id())

if err := readMount(d, meta, true); err != nil {
if err := readMount(ctx, d, meta, true); err != nil {
return diag.FromErr(err)
}

Expand Down
6 changes: 3 additions & 3 deletions vault/resource_aws_secret_backend.go
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ func awsSecretBackendCreate(ctx context.Context, d *schema.ResourceData, meta in
d.Partial(true)
log.Printf("[DEBUG] Mounting AWS backend at %q", path)

if err := createMount(d, meta, client, path, consts.MountTypeAWS); err != nil {
if err := createMount(ctx, d, meta, client, path, consts.MountTypeAWS); err != nil {
return diag.FromErr(err)
}

Expand Down Expand Up @@ -301,7 +301,7 @@ func awsSecretBackendRead(ctx context.Context, d *schema.ResourceData, meta inte
return diag.FromErr(err)
}

if err := readMount(d, meta, true); err != nil {
if err := readMount(ctx, d, meta, true); err != nil {
return diag.FromErr(err)
}

Expand All @@ -323,7 +323,7 @@ func awsSecretBackendUpdate(ctx context.Context, d *schema.ResourceData, meta in
if err != nil {
return diag.FromErr(err)
}
if err := updateMount(d, meta, true); err != nil {
if err := updateMount(ctx, d, meta, true); err != nil {
return diag.FromErr(err)
}
if d.HasChanges(consts.FieldAccessKey, consts.FieldSecretKey, consts.FieldRegion, consts.FieldIAMEndpoint, consts.FieldSTSEndpoint, consts.FieldIdentityTokenTTL, consts.FieldIdentityTokenAudience, consts.FieldRoleArn) {
Expand Down
25 changes: 3 additions & 22 deletions vault/resource_azure_secret_backend.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ import (
"github.com/hashicorp/terraform-provider-vault/internal/consts"
"github.com/hashicorp/terraform-provider-vault/internal/provider"
"github.com/hashicorp/terraform-provider-vault/util"
"github.com/hashicorp/terraform-provider-vault/util/mountutil"
)

func azureSecretBackendResource() *schema.Resource {
Expand Down Expand Up @@ -129,7 +128,7 @@ func azureSecretBackendCreate(ctx context.Context, d *schema.ResourceData, meta
d.Partial(true)
log.Printf("[DEBUG] Mounting Azure backend at %q", path)

if err := createMount(d, meta, client, path, consts.MountTypeAzure); err != nil {
if err := createMount(ctx, d, meta, client, path, consts.MountTypeAzure); err != nil {
return diag.FromErr(err)
}

Expand All @@ -155,20 +154,6 @@ func azureSecretBackendRead(ctx context.Context, d *schema.ResourceData, meta in

path := d.Id()

log.Printf("[DEBUG] Reading Azure backend mount %q from Vault", path)

mount, err := mountutil.GetMount(ctx, client, path)
if err != nil {
if mountutil.IsMountNotFoundError(err) {
log.Printf("[WARN] Mount %q not found, removing from state.", path)
d.SetId("")
return nil
}
return diag.FromErr(err)
}

log.Printf("[DEBUG] Read Azure backend mount %q from Vault", path)

log.Printf("[DEBUG] Read Azure secret Backend config %s", path)
resp, err := client.Logical().ReadWithContext(ctx, azureSecretBackendPath(path))
if err != nil {
Expand Down Expand Up @@ -206,10 +191,6 @@ func azureSecretBackendRead(ctx context.Context, d *schema.ResourceData, meta in
return diag.FromErr(err)
}

if err := d.Set(consts.FieldDescription, mount.Description); err != nil {
return diag.FromErr(err)
}

useAPIVer117Ent := provider.IsAPISupported(meta, provider.VaultVersion117) && provider.IsEnterpriseSupported(meta)
if useAPIVer117Ent {
if err := d.Set(consts.FieldIdentityTokenAudience, resp.Data[consts.FieldIdentityTokenAudience]); err != nil {
Expand All @@ -220,7 +201,7 @@ func azureSecretBackendRead(ctx context.Context, d *schema.ResourceData, meta in
}
}

if err := readMount(d, meta, true); err != nil {
if err := readMount(ctx, d, meta, true); err != nil {
return diag.FromErr(err)
}

Expand All @@ -240,7 +221,7 @@ func azureSecretBackendUpdate(ctx context.Context, d *schema.ResourceData, meta
return diag.FromErr(err)
}

if err := updateMount(d, meta, true); err != nil {
if err := updateMount(ctx, d, meta, true); err != nil {
return diag.FromErr(err)
}

Expand Down
6 changes: 3 additions & 3 deletions vault/resource_consul_secret_backend.go
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ func consulSecretBackendCreate(ctx context.Context, d *schema.ResourceData, meta

log.Printf("[DEBUG] Mounting Consul backend at %q", path)

if err := createMount(d, meta, client, path, consts.MountTypeConsul); err != nil {
if err := createMount(ctx, d, meta, client, path, consts.MountTypeConsul); err != nil {
return diag.FromErr(err)
}

Expand Down Expand Up @@ -203,7 +203,7 @@ func consulSecretBackendRead(ctx context.Context, d *schema.ResourceData, meta i
if err := d.Set("path", path); err != nil {
return diag.FromErr(err)
}
if err := readMount(d, meta, true); err != nil {
if err := readMount(ctx, d, meta, true); err != nil {
return diag.FromErr(err)
}

Expand Down Expand Up @@ -231,7 +231,7 @@ func consulSecretBackendUpdate(ctx context.Context, d *schema.ResourceData, meta
return diag.FromErr(err)
}

if err := updateMount(d, meta, true); err != nil {
if err := updateMount(ctx, d, meta, true); err != nil {
return diag.FromErr(err)
}

Expand Down
47 changes: 24 additions & 23 deletions vault/resource_database_secrets_mount.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ package vault
import (
"context"
"fmt"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"log"
"sync"

Expand Down Expand Up @@ -107,13 +108,13 @@ func databaseSecretsMountCustomizeDiff(ctx context.Context, d *schema.ResourceDi

func databaseSecretsMountResource() *schema.Resource {
return &schema.Resource{
Create: databaseSecretsMountCreateOrUpdate,
Read: provider.ReadWrapper(databaseSecretsMountRead),
Update: databaseSecretsMountCreateOrUpdate,
Delete: databaseSecretsMountDelete,
CreateContext: databaseSecretsMountCreateOrUpdate,
ReadContext: provider.ReadContextWrapper(databaseSecretsMountRead),
UpdateContext: databaseSecretsMountCreateOrUpdate,
DeleteContext: databaseSecretsMountDelete,
CustomizeDiff: databaseSecretsMountCustomizeDiff,
Importer: &schema.ResourceImporter{
State: schema.ImportStatePassthrough,
StateContext: schema.ImportStatePassthroughContext,
},
Schema: getDatabaseSecretsMountSchema(),
}
Expand Down Expand Up @@ -214,20 +215,20 @@ func setCommonDatabaseSchema(s schemaMap) schemaMap {
return s
}

func databaseSecretsMountCreateOrUpdate(d *schema.ResourceData, meta interface{}) error {
func databaseSecretsMountCreateOrUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
client, e := provider.GetClient(d, meta)
if e != nil {
return e
return diag.FromErr(e)
}

var root string
if d.IsNewResource() {
root = d.Get("path").(string)
if err := createMount(d, meta, client, root, consts.MountTypeDatabase); err != nil {
return err
if err := createMount(ctx, d, meta, client, root, consts.MountTypeDatabase); err != nil {
return diag.FromErr(err)
}
} else {
if err := mountUpdate(d, meta); err != nil {
if err := mountUpdate(ctx, d, meta); err != nil {
return err
}
root = d.Id()
Expand All @@ -243,19 +244,19 @@ func databaseSecretsMountCreateOrUpdate(d *schema.ResourceData, meta interface{}
name := d.Get(prefix + "name").(string)
path := databaseSecretBackendConnectionPath(root, name)
if _, ok := seen[name]; ok {
return fmt.Errorf("duplicate name %q for engine %#v", name, engine)
return diag.Errorf("duplicate name %q for engine %#v", name, engine)
}
seen[name] = true
if err := writeDatabaseSecretConfig(d, client, engine, i, true, path, meta); err != nil {
return err
return diag.FromErr(err)
}
count++
}
}
}

if err := databaseSecretsMountRead(d, meta); err != nil {
return err
if diagErr := databaseSecretsMountRead(ctx, d, meta); diagErr != nil {
return diagErr
}

action := "Created"
Expand All @@ -267,14 +268,14 @@ func databaseSecretsMountCreateOrUpdate(d *schema.ResourceData, meta interface{}
return nil
}

func databaseSecretsMountRead(d *schema.ResourceData, meta interface{}) error {
func databaseSecretsMountRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
client, e := provider.GetClient(d, meta)
if e != nil {
return e
return diag.FromErr(e)
}

if err := readMount(d, meta, true); err != nil {
return err
if e := readMount(ctx, d, meta, true); e != nil {
return diag.FromErr(e)
}

root := d.Id()
Expand All @@ -286,7 +287,7 @@ func databaseSecretsMountRead(d *schema.ResourceData, meta interface{}) error {

resp, err := client.Logical().List(root + "/config")
if err != nil {
return err
return diag.FromErr(err)
}

if resp == nil {
Expand All @@ -297,22 +298,22 @@ func databaseSecretsMountRead(d *schema.ResourceData, meta interface{}) error {
if v, ok := resp.Data["keys"]; ok {
for _, v := range v.([]interface{}) {
if err := readDBEngineConfig(d, client, store, v.(string), meta); err != nil {
return err
return diag.FromErr(err)
}
}

for k, v := range store.Result() {
if err := d.Set(k, v); err != nil {
return err
return diag.FromErr(err)
}
}
}

return nil
}

func databaseSecretsMountDelete(d *schema.ResourceData, meta interface{}) error {
return mountDelete(d, meta)
func databaseSecretsMountDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
return mountDelete(ctx, d, meta)
}

func readDBEngineConfig(d *schema.ResourceData, client *api.Client, store *dbConfigStore, name string, meta interface{}) error {
Expand Down
6 changes: 3 additions & 3 deletions vault/resource_gcp_secret_backend.go
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ func gcpSecretBackendCreate(ctx context.Context, d *schema.ResourceData, meta in
d.Partial(true)
log.Printf("[DEBUG] Mounting GCP backend at %q", path)

if err := createMount(d, meta, client, path, consts.MountTypeGCP); err != nil {
if err := createMount(ctx, d, meta, client, path, consts.MountTypeGCP); err != nil {
return diag.FromErr(err)
}

Expand Down Expand Up @@ -188,7 +188,7 @@ func gcpSecretBackendRead(ctx context.Context, d *schema.ResourceData, meta inte
return diag.FromErr(err)
}

if err := readMount(d, meta, true); err != nil {
if err := readMount(ctx, d, meta, true); err != nil {
return diag.FromErr(err)
}

Expand Down Expand Up @@ -231,7 +231,7 @@ func gcpSecretBackendUpdate(ctx context.Context, d *schema.ResourceData, meta in
return diag.FromErr(err)
}

if err := updateMount(d, meta, true); err != nil {
if err := updateMount(ctx, d, meta, true); err != nil {
return diag.FromErr(err)
}

Expand Down
6 changes: 3 additions & 3 deletions vault/resource_kmip_secret_backend.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ func kmipSecretBackendCreate(ctx context.Context, d *schema.ResourceData, meta i
path := d.Get("path").(string)

log.Printf("[DEBUG] Mounting KMIP backend at %q", path)
if err := createMount(d, meta, client, path, consts.MountTypeKMIP); err != nil {
if err := createMount(ctx, d, meta, client, path, consts.MountTypeKMIP); err != nil {
return diag.FromErr(err)
}

Expand All @@ -156,7 +156,7 @@ func kmipSecretBackendUpdate(ctx context.Context, d *schema.ResourceData, meta i

log.Printf("[DEBUG] Updating mount %s in Vault", path)

if err := updateMount(d, meta, true); err != nil {
if err := updateMount(ctx, d, meta, true); err != nil {
return diag.FromErr(err)
}

Expand Down Expand Up @@ -216,7 +216,7 @@ func kmipSecretBackendRead(ctx context.Context, d *schema.ResourceData, meta int
return diag.FromErr(err)
}

if err := readMount(d, meta, true); err != nil {
if err := readMount(ctx, d, meta, true); err != nil {
return diag.FromErr(err)
}

Expand Down
8 changes: 4 additions & 4 deletions vault/resource_kubernetes_secret_backend.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,11 +71,11 @@ func kubernetesSecretBackendCreateUpdate(ctx context.Context, d *schema.Resource
var path string
if d.IsNewResource() {
path = d.Get(consts.FieldPath).(string)
if err := createMount(d, meta, client, path, consts.MountTypeKubernetes); err != nil {
if err := createMount(ctx, d, meta, client, path, consts.MountTypeKubernetes); err != nil {
return diag.FromErr(err)
}
} else {
if err := updateMount(d, meta, true); err != nil {
if err := updateMount(ctx, d, meta, true); err != nil {
return diag.FromErr(err)
}
path = d.Id()
Expand Down Expand Up @@ -108,7 +108,7 @@ func kubernetesSecretBackendCreateUpdate(ctx context.Context, d *schema.Resource
return kubernetesSecretBackendRead(ctx, d, meta)
}

func kubernetesSecretBackendRead(_ context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
func kubernetesSecretBackendRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
client, err := provider.GetClient(d, meta)
if err != nil {
return diag.FromErr(err)
Expand Down Expand Up @@ -140,7 +140,7 @@ func kubernetesSecretBackendRead(_ context.Context, d *schema.ResourceData, meta
}
}

if err := readMount(d, meta, true); err != nil {
if err := readMount(ctx, d, meta, true); err != nil {
return diag.FromErr(err)
}

Expand Down
6 changes: 3 additions & 3 deletions vault/resource_ldap_secret_backend.go
Original file line number Diff line number Diff line change
Expand Up @@ -142,11 +142,11 @@ func createUpdateLDAPConfigResource(ctx context.Context, d *schema.ResourceData,
path := d.Get(consts.FieldPath).(string)
log.Printf("[DEBUG] Mounting LDAP mount at %q", path)
if d.IsNewResource() {
if err := createMount(d, meta, client, path, consts.MountTypeLDAP); err != nil {
if err := createMount(ctx, d, meta, client, path, consts.MountTypeLDAP); err != nil {
return diag.FromErr(err)
}
} else {
if err := updateMount(d, meta, true); err != nil {
if err := updateMount(ctx, d, meta, true); err != nil {
return diag.FromErr(err)
}
}
Expand Down Expand Up @@ -256,7 +256,7 @@ func readLDAPConfigResource(ctx context.Context, d *schema.ResourceData, meta in
}
}

if err := readMount(d, meta, true); err != nil {
if err := readMount(ctx, d, meta, true); err != nil {
return diag.FromErr(err)
}

Expand Down
Loading

0 comments on commit 5a86039

Please sign in to comment.