1
1
package gitlab
2
2
3
3
import (
4
- "fmt "
4
+ "context "
5
5
"log"
6
6
"net/http"
7
7
8
+ "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
8
9
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
9
10
gitlab "github.com/xanzy/go-gitlab"
10
11
)
11
12
12
13
func resourceGitlabServiceJira () * schema.Resource {
13
14
return & schema.Resource {
14
- Create : resourceGitlabServiceJiraCreate ,
15
- Read : resourceGitlabServiceJiraRead ,
16
- Update : resourceGitlabServiceJiraUpdate ,
17
- Delete : resourceGitlabServiceJiraDelete ,
15
+ CreateContext : resourceGitlabServiceJiraCreate ,
16
+ ReadContext : resourceGitlabServiceJiraRead ,
17
+ UpdateContext : resourceGitlabServiceJiraUpdate ,
18
+ DeleteContext : resourceGitlabServiceJiraDelete ,
18
19
Importer : & schema.ResourceImporter {
19
- State : resourceGitlabServiceJiraImportState ,
20
+ StateContext : resourceGitlabServiceJiraImportState ,
20
21
},
21
22
22
23
Schema : map [string ]* schema.Schema {
@@ -113,52 +114,51 @@ func resourceGitlabServiceJira() *schema.Resource {
113
114
}
114
115
}
115
116
116
- func resourceGitlabServiceJiraCreate (d * schema.ResourceData , meta interface {}) error {
117
+ func resourceGitlabServiceJiraCreate (ctx context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
117
118
client := meta .(* gitlab.Client )
118
119
119
120
project := d .Get ("project" ).(string )
120
121
121
122
jiraOptions , err := expandJiraOptions (d )
122
123
if err != nil {
123
- return err
124
+ return diag . FromErr ( err )
124
125
}
125
126
126
127
log .Printf ("[DEBUG] Create Gitlab Jira service" )
127
128
128
- _ , err = client .Services .SetJiraService (project , jiraOptions )
129
- if err != nil {
130
- return fmt .Errorf ("[ERROR] Couldn't create Gitlab Jira service: %s" , err )
129
+ if _ , err := client .Services .SetJiraService (project , jiraOptions , gitlab .WithContext (ctx )); err != nil {
130
+ return diag .Errorf ("couldn't create Gitlab Jira service: %v" , err )
131
131
}
132
132
133
133
d .SetId (project )
134
134
135
- return resourceGitlabServiceJiraRead (d , meta )
135
+ return resourceGitlabServiceJiraRead (ctx , d , meta )
136
136
}
137
137
138
- func resourceGitlabServiceJiraRead (d * schema.ResourceData , meta interface {}) error {
138
+ func resourceGitlabServiceJiraRead (ctx context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
139
139
client := meta .(* gitlab.Client )
140
140
project := d .Get ("project" ).(string )
141
141
142
- p , resp , err := client .Projects .GetProject (project , nil )
142
+ p , resp , err := client .Projects .GetProject (project , nil , gitlab . WithContext ( ctx ) )
143
143
if err != nil {
144
144
if resp != nil && resp .StatusCode == http .StatusNotFound {
145
145
log .Printf ("[DEBUG] Removing Gitlab Jira service %s because project %s not found" , d .Id (), p .Name )
146
146
d .SetId ("" )
147
147
return nil
148
148
}
149
- return err
149
+ return diag . FromErr ( err )
150
150
}
151
151
152
152
log .Printf ("[DEBUG] Read Gitlab Jira service %s" , d .Id ())
153
153
154
- jiraService , _ , err := client .Services .GetJiraService (project )
154
+ jiraService , _ , err := client .Services .GetJiraService (project , gitlab . WithContext ( ctx ) )
155
155
if err != nil {
156
156
if is404 (err ) {
157
157
log .Printf ("[DEBUG] gitlab jira service not found %s" , project )
158
158
d .SetId ("" )
159
159
return nil
160
160
}
161
- return err
161
+ return diag . FromErr ( err )
162
162
}
163
163
164
164
if v := jiraService .Properties .URL ; v != "" {
@@ -191,20 +191,23 @@ func resourceGitlabServiceJiraRead(d *schema.ResourceData, meta interface{}) err
191
191
return nil
192
192
}
193
193
194
- func resourceGitlabServiceJiraUpdate (d * schema.ResourceData , meta interface {}) error {
195
- return resourceGitlabServiceJiraCreate (d , meta )
194
+ func resourceGitlabServiceJiraUpdate (ctx context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
195
+ return resourceGitlabServiceJiraCreate (ctx , d , meta )
196
196
}
197
197
198
- func resourceGitlabServiceJiraDelete (d * schema.ResourceData , meta interface {}) error {
198
+ func resourceGitlabServiceJiraDelete (ctx context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
199
199
client := meta .(* gitlab.Client )
200
200
201
201
project := d .Get ("project" ).(string )
202
202
203
203
log .Printf ("[DEBUG] Delete Gitlab Jira service %s" , d .Id ())
204
204
205
- _ , err := client .Services .DeleteJiraService (project )
205
+ _ , err := client .Services .DeleteJiraService (project , gitlab .WithContext (ctx ))
206
+ if err != nil {
207
+ return diag .FromErr (err )
208
+ }
206
209
207
- return err
210
+ return nil
208
211
}
209
212
210
213
func expandJiraOptions (d * schema.ResourceData ) (* gitlab.SetJiraServiceOptions , error ) {
@@ -227,7 +230,7 @@ func expandJiraOptions(d *schema.ResourceData) (*gitlab.SetJiraServiceOptions, e
227
230
return & setJiraServiceOptions , nil
228
231
}
229
232
230
- func resourceGitlabServiceJiraImportState (d * schema.ResourceData , meta interface {}) ([]* schema.ResourceData , error ) {
233
+ func resourceGitlabServiceJiraImportState (ctx context. Context , d * schema.ResourceData , meta interface {}) ([]* schema.ResourceData , error ) {
231
234
d .Set ("project" , d .Id ())
232
235
233
236
return []* schema.ResourceData {d }, nil
0 commit comments