44package vault
55
66import (
7+ "context"
78 "fmt"
89 "log"
910
11+ "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
1012 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1113
1214 "github.com/hashicorp/terraform-provider-vault/internal/consts"
1315 "github.com/hashicorp/terraform-provider-vault/internal/provider"
1416)
1517
16- const identityGroupAliasPath = "/identity/group-alias"
18+ const (
19+ identityGroupAliasPath = "/identity/group-alias"
20+ identityGroupAliasIDPath = identityGroupAliasPath + "/id"
21+ )
1722
1823func identityGroupAliasResource () * schema.Resource {
1924 return & schema.Resource {
20- Create : identityGroupAliasCreate ,
21- Update : identityGroupAliasUpdate ,
22- Read : provider .ReadWrapper (identityGroupAliasRead ),
23- Delete : identityGroupAliasDelete ,
24- Exists : identityGroupAliasExists ,
25+ CreateContext : identityGroupAliasCreate ,
26+ UpdateContext : identityGroupAliasUpdate ,
27+ ReadContext : provider .ReadContextWrapper (identityGroupAliasRead ),
28+ DeleteContext : identityGroupAliasDelete ,
2529 Importer : & schema.ResourceImporter {
2630 State : schema .ImportStatePassthrough ,
2731 },
@@ -48,10 +52,14 @@ func identityGroupAliasResource() *schema.Resource {
4852 }
4953}
5054
51- func identityGroupAliasCreate (d * schema.ResourceData , meta interface {}) error {
55+ func identityGroupAliasCreate (ctx context.Context , d * schema.ResourceData , meta interface {}) diag.Diagnostics {
56+ lock , unlock := getEntityLockFuncs (d , identityGroupAliasIDPath )
57+ lock ()
58+ defer unlock ()
59+
5260 client , e := provider .GetClient (d , meta )
5361 if e != nil {
54- return e
62+ return diag . FromErr ( e )
5563 }
5664
5765 name := d .Get ("name" ).(string )
@@ -66,30 +74,34 @@ func identityGroupAliasCreate(d *schema.ResourceData, meta interface{}) error {
6674 "canonical_id" : canonicalID ,
6775 }
6876
69- resp , err := client .Logical ().Write ( path , data )
77+ resp , err := client .Logical ().WriteWithContext ( ctx , path , data )
7078 if err != nil {
71- return fmt .Errorf ("error writing IdentityGroupAlias to %q: %s" , name , err )
79+ return diag . FromErr ( fmt .Errorf ("error writing IdentityGroupAlias to %q: %s" , name , err ) )
7280 }
7381 log .Printf ("[DEBUG] Wrote IdentityGroupAlias %q" , name )
7482 d .SetId (resp .Data ["id" ].(string ))
7583
76- return identityGroupAliasRead (d , meta )
84+ return identityGroupAliasRead (ctx , d , meta )
7785}
7886
79- func identityGroupAliasUpdate (d * schema.ResourceData , meta interface {}) error {
87+ func identityGroupAliasUpdate (ctx context.Context , d * schema.ResourceData , meta interface {}) diag.Diagnostics {
88+ lock , unlock := getEntityLockFuncs (d , identityGroupAliasIDPath )
89+ lock ()
90+ defer unlock ()
91+
8092 client , e := provider .GetClient (d , meta )
8193 if e != nil {
82- return e
94+ return diag . FromErr ( e )
8395 }
8496
8597 id := d .Id ()
8698
8799 log .Printf ("[DEBUG] Updating IdentityGroupAlias %q" , id )
88- path := identityGroupAliasIDPath (id )
100+ path := getIdentityGroupAliasIDPath (id )
89101
90- resp , err := client .Logical ().Read ( path )
102+ resp , err := client .Logical ().ReadWithContext ( ctx , path )
91103 if err != nil {
92- return fmt .Errorf ("error updating IdentityGroupAlias %q: %s" , id , err )
104+ return diag . FromErr ( fmt .Errorf ("error updating IdentityGroupAlias %q: %s" , id , err ) )
93105 }
94106
95107 data := map [string ]interface {}{
@@ -108,30 +120,30 @@ func identityGroupAliasUpdate(d *schema.ResourceData, meta interface{}) error {
108120 data ["canonical_id" ] = canonicalID
109121 }
110122
111- _ , err = client .Logical ().Write ( path , data )
123+ _ , err = client .Logical ().WriteWithContext ( ctx , path , data )
112124
113125 if err != nil {
114- return fmt .Errorf ("error updating IdentityGroupAlias %q: %s" , id , err )
126+ return diag . FromErr ( fmt .Errorf ("error updating IdentityGroupAlias %q: %s" , id , err ) )
115127 }
116128 log .Printf ("[DEBUG] Updated IdentityGroupAlias %q" , id )
117129
118- return identityGroupAliasRead (d , meta )
130+ return identityGroupAliasRead (ctx , d , meta )
119131}
120132
121- func identityGroupAliasRead (d * schema.ResourceData , meta interface {}) error {
133+ func identityGroupAliasRead (ctx context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
122134 client , e := provider .GetClient (d , meta )
123135 if e != nil {
124- return e
136+ return diag . FromErr ( e )
125137 }
126138
127139 id := d .Id ()
128140
129- path := identityGroupAliasIDPath (id )
141+ path := getIdentityGroupAliasIDPath (id )
130142
131143 log .Printf ("[DEBUG] Reading IdentityGroupAlias %s from %q" , id , path )
132- resp , err := client .Logical ().Read ( path )
144+ resp , err := client .Logical ().ReadWithContext ( ctx , path )
133145 if err != nil {
134- return fmt .Errorf ("error reading IdentityGroupAlias %q: %s" , id , err )
146+ return diag . FromErr ( fmt .Errorf ("error reading IdentityGroupAlias %q: %s" , id , err ) )
135147 }
136148 log .Printf ("[DEBUG] Read IdentityGroupAlias %s" , id )
137149 if resp == nil {
@@ -143,63 +155,40 @@ func identityGroupAliasRead(d *schema.ResourceData, meta interface{}) error {
143155 d .SetId (resp .Data ["id" ].(string ))
144156 for _ , k := range []string {"name" , consts .FieldMountAccessor , "canonical_id" } {
145157 if err := d .Set (k , resp .Data [k ]); err != nil {
146- return fmt .Errorf ("error setting state key \" %s\" on IdentityGroupAlias %q: %s" , k , id , err )
158+ return diag . FromErr ( fmt .Errorf ("error setting state key \" %s\" on IdentityGroupAlias %q: %s" , k , id , err ) )
147159 }
148160 }
149161 return nil
150162}
151163
152- func identityGroupAliasDelete (d * schema.ResourceData , meta interface {}) error {
164+ func identityGroupAliasDelete (ctx context.Context , d * schema.ResourceData , meta interface {}) diag.Diagnostics {
165+ lock , unlock := getEntityLockFuncs (d , identityGroupAliasIDPath )
166+ lock ()
167+ defer unlock ()
168+
153169 client , e := provider .GetClient (d , meta )
154170 if e != nil {
155- return e
171+ return diag . FromErr ( e )
156172 }
157173
158174 id := d .Id ()
159175
160- path := identityGroupAliasIDPath (id )
176+ path := getIdentityGroupAliasIDPath (id )
161177
162178 log .Printf ("[DEBUG] Deleting IdentityGroupAlias %q" , id )
163- _ , err := client .Logical ().Delete ( path )
179+ _ , err := client .Logical ().DeleteWithContext ( ctx , path )
164180 if err != nil {
165- return fmt .Errorf ("error IdentityGroupAlias %q" , id )
181+ return diag . FromErr ( fmt .Errorf ("error IdentityGroupAlias %q" , id ) )
166182 }
167183 log .Printf ("[DEBUG] Deleted IdentityGroupAlias %q" , id )
168184
169185 return nil
170186}
171187
172- func identityGroupAliasExists (d * schema.ResourceData , meta interface {}) (bool , error ) {
173- client , e := provider .GetClient (d , meta )
174- if e != nil {
175- return false , e
176- }
177-
178- id := d .Id ()
179-
180- path := identityGroupAliasIDPath (id )
181- key := id
182-
183- // use the name if no ID is set
184- if len (id ) == 0 {
185- key = d .Get ("name" ).(string )
186- path = identityGroupAliasNamePath (key )
187- }
188-
189- log .Printf ("[DEBUG] Checking if IdentityGroupAlias %q exists" , key )
190- resp , err := client .Logical ().Read (path )
191- if err != nil {
192- return true , fmt .Errorf ("error checking if IdentityGroupAlias %q exists: %s" , key , err )
193- }
194- log .Printf ("[DEBUG] Checked if IdentityGroupAlias %q exists" , key )
195-
196- return resp != nil , nil
197- }
198-
199188func identityGroupAliasNamePath (name string ) string {
200189 return fmt .Sprintf ("%s/name/%s" , identityGroupAliasPath , name )
201190}
202191
203- func identityGroupAliasIDPath (id string ) string {
204- return fmt .Sprintf ("%s/id/ %s" , identityGroupAliasPath , id )
192+ func getIdentityGroupAliasIDPath (id string ) string {
193+ return fmt .Sprintf ("%s/%s" , identityGroupAliasIDPath , id )
205194}
0 commit comments