1
1
package gitlab
2
2
3
3
import (
4
+ "context"
4
5
"fmt"
5
6
"log"
6
7
"strconv"
7
8
"time"
8
9
9
- "github.com/hashicorp/terraform-plugin-sdk/helper/schema"
10
- "github.com/hashicorp/terraform-plugin-sdk/helper/validation"
10
+ "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
11
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
12
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
11
13
gitlab "github.com/xanzy/go-gitlab"
12
14
)
13
15
14
16
func resourceGitlabProjectAccessToken () * schema.Resource {
15
17
// lintignore: XR002 // TODO: Resolve this tfproviderlint issue
16
18
return & schema.Resource {
17
- Create : resourceGitlabProjectAccessTokenCreate ,
18
- Read : resourceGitlabProjectAccessTokenRead ,
19
- Delete : resourceGitlabProjectAccessTokenDelete ,
19
+ CreateContext : resourceGitlabProjectAccessTokenCreate ,
20
+ ReadContext : resourceGitlabProjectAccessTokenRead ,
21
+ DeleteContext : resourceGitlabProjectAccessTokenDelete ,
20
22
21
23
Schema : map [string ]* schema.Schema {
22
24
"project" : {
23
- Type : schema .TypeInt ,
25
+ Type : schema .TypeString ,
24
26
Required : true ,
25
27
ForceNew : true ,
26
28
},
@@ -77,8 +79,9 @@ func resourceGitlabProjectAccessToken() *schema.Resource {
77
79
}
78
80
}
79
81
80
- func resourceGitlabProjectAccessTokenCreate (d * schema.ResourceData , meta interface {}) error {
82
+ func resourceGitlabProjectAccessTokenCreate (ctx context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
81
83
client := meta .(* gitlab.Client )
84
+
82
85
project := d .Get ("project" ).(int )
83
86
options := & gitlab.CreateProjectAccessTokenOptions {
84
87
Name : gitlab .String (d .Get ("name" ).(string )),
@@ -90,16 +93,16 @@ func resourceGitlabProjectAccessTokenCreate(d *schema.ResourceData, meta interfa
90
93
if v , ok := d .GetOk ("expires_at" ); ok {
91
94
parsedExpiresAt , err := time .Parse ("2006-01-02" , v .(string ))
92
95
if err != nil {
93
- return fmt .Errorf ("Invalid expires_at date: %v" , err )
96
+ return diag .Errorf ("Invalid expires_at date: %v" , err )
94
97
}
95
98
parsedExpiresAtISOTime := gitlab .ISOTime (parsedExpiresAt )
96
99
options .ExpiresAt = & parsedExpiresAtISOTime
97
100
log .Printf ("[DEBUG] create gitlab ProjectAccessToken %s with expires_at %s for project ID %d" , * options .Name , * options .ExpiresAt , project )
98
101
}
99
102
100
- projectAccessToken , _ , err := client .ProjectAccessTokens .CreateProjectAccessToken (project , options )
103
+ projectAccessToken , _ , err := client .ProjectAccessTokens .CreateProjectAccessToken (project , options , gitlab . WithContext ( ctx ) )
101
104
if err != nil {
102
- return err
105
+ return diag . FromErr ( err )
103
106
}
104
107
105
108
log .Printf ("[DEBUG] created gitlab ProjectAccessToken %d - %s for project ID %d" , projectAccessToken .ID , * options .Name , project )
@@ -109,26 +112,26 @@ func resourceGitlabProjectAccessTokenCreate(d *schema.ResourceData, meta interfa
109
112
d .SetId (buildTwoPartID (& projectString , & PATstring ))
110
113
d .Set ("token" , projectAccessToken .Token )
111
114
112
- return resourceGitlabProjectAccessTokenRead (d , meta )
115
+ return resourceGitlabProjectAccessTokenRead (ctx , d , meta )
113
116
}
114
117
115
- func resourceGitlabProjectAccessTokenRead (d * schema.ResourceData , meta interface {}) error {
118
+ func resourceGitlabProjectAccessTokenRead (ctx context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
116
119
117
120
projectString , PATstring , err := parseTwoPartID (d .Id ())
118
121
if err != nil {
119
- return fmt .Errorf ("Error parsing ID: %s" , d .Id ())
122
+ return diag .Errorf ("Error parsing ID: %s" , d .Id ())
120
123
}
121
124
122
125
client := meta .(* gitlab.Client )
123
126
124
127
project , err := strconv .Atoi (projectString )
125
128
if err != nil {
126
- return fmt .Errorf ("%s cannot be converted to int" , projectString )
129
+ return diag .Errorf ("%s cannot be converted to int" , projectString )
127
130
}
128
131
129
132
projectAccessTokenID , err := strconv .Atoi (PATstring )
130
133
if err != nil {
131
- return fmt .Errorf ("%s cannot be converted to int" , PATstring )
134
+ return diag .Errorf ("%s cannot be converted to int" , PATstring )
132
135
}
133
136
134
137
log .Printf ("[DEBUG] read gitlab ProjectAccessToken %d, project ID %d" , projectAccessTokenID , project )
@@ -143,9 +146,9 @@ func resourceGitlabProjectAccessTokenRead(d *schema.ResourceData, meta interface
143
146
144
147
page := 1
145
148
for page != 0 {
146
- projectAccessTokens , response , err := client .ProjectAccessTokens .ListProjectAccessTokens (project , & gitlab.ListProjectAccessTokensOptions {Page : page , PerPage : 100 })
149
+ projectAccessTokens , response , err := client .ProjectAccessTokens .ListProjectAccessTokens (project , & gitlab.ListProjectAccessTokensOptions {Page : page , PerPage : 100 }, gitlab . WithContext ( ctx ) )
147
150
if err != nil {
148
- return err
151
+ return diag . FromErr ( err )
149
152
}
150
153
151
154
for _ , projectAccessToken := range projectAccessTokens {
@@ -174,26 +177,26 @@ func resourceGitlabProjectAccessTokenRead(d *schema.ResourceData, meta interface
174
177
return nil
175
178
}
176
179
177
- func resourceGitlabProjectAccessTokenDelete (d * schema.ResourceData , meta interface {}) error {
180
+ func resourceGitlabProjectAccessTokenDelete (ctx context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
178
181
179
182
projectString , PATstring , err := parseTwoPartID (d .Id ())
180
183
if err != nil {
181
- return fmt .Errorf ("Error parsing ID: %s" , d .Id ())
184
+ return diag .Errorf ("Error parsing ID: %s" , d .Id ())
182
185
}
183
186
184
187
client := meta .(* gitlab.Client )
185
188
186
189
project , err := strconv .Atoi (projectString )
187
190
if err != nil {
188
- return fmt .Errorf ("%s cannot be converted to int" , projectString )
191
+ return diag .Errorf ("%s cannot be converted to int" , projectString )
189
192
}
190
193
191
194
projectAccessTokenID , err := strconv .Atoi (PATstring )
192
195
if err != nil {
193
- return fmt .Errorf ("%s cannot be converted to int" , PATstring )
196
+ return diag .Errorf ("%s cannot be converted to int" , PATstring )
194
197
}
195
198
196
199
log .Printf ("[DEBUG] Delete gitlab ProjectAccessToken %s" , d .Id ())
197
- _ , err = client .ProjectAccessTokens .DeleteProjectAccessToken (project , projectAccessTokenID )
198
- return err
200
+ _ , err = client .ProjectAccessTokens .DeleteProjectAccessToken (project , projectAccessTokenID , gitlab . WithContext ( ctx ) )
201
+ return diag . FromErr ( err )
199
202
}
0 commit comments