|
1 | 1 | package gitlab
|
2 | 2 |
|
3 | 3 | import (
|
| 4 | + "context" |
4 | 5 | "fmt"
|
5 | 6 | "log"
|
6 | 7 |
|
| 8 | + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" |
7 | 9 | "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
|
8 | 10 | gitlab "github.com/xanzy/go-gitlab"
|
9 | 11 | )
|
10 | 12 |
|
11 | 13 | func resourceGitlabServiceSlack() *schema.Resource {
|
12 | 14 | return &schema.Resource{
|
13 |
| - Create: resourceGitlabServiceSlackCreate, |
14 |
| - Read: resourceGitlabServiceSlackRead, |
15 |
| - Update: resourceGitlabServiceSlackUpdate, |
16 |
| - Delete: resourceGitlabServiceSlackDelete, |
| 15 | + CreateContext: resourceGitlabServiceSlackCreate, |
| 16 | + ReadContext: resourceGitlabServiceSlackRead, |
| 17 | + UpdateContext: resourceGitlabServiceSlackUpdate, |
| 18 | + DeleteContext: resourceGitlabServiceSlackDelete, |
17 | 19 | Importer: &schema.ResourceImporter{
|
18 |
| - State: resourceGitlabServiceSlackImportState, |
| 20 | + StateContext: resourceGitlabServiceSlackImportState, |
19 | 21 | },
|
20 | 22 |
|
21 | 23 | Schema: map[string]*schema.Schema{
|
@@ -172,7 +174,7 @@ func resourceGitlabServiceSlackSetToState(d *schema.ResourceData, service *gitla
|
172 | 174 | return nil
|
173 | 175 | }
|
174 | 176 |
|
175 |
| -func resourceGitlabServiceSlackCreate(d *schema.ResourceData, meta interface{}) error { |
| 177 | +func resourceGitlabServiceSlackCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { |
176 | 178 | client := meta.(*gitlab.Client)
|
177 | 179 | project := d.Get("project").(string)
|
178 | 180 |
|
@@ -204,52 +206,56 @@ func resourceGitlabServiceSlackCreate(d *schema.ResourceData, meta interface{})
|
204 | 206 | opts.WikiPageEvents = gitlab.Bool(d.Get("wiki_page_events").(bool))
|
205 | 207 | opts.WikiPageChannel = gitlab.String(d.Get("wiki_page_channel").(string))
|
206 | 208 |
|
207 |
| - _, err := client.Services.SetSlackService(project, opts) |
| 209 | + _, err := client.Services.SetSlackService(project, opts, gitlab.WithContext(ctx)) |
208 | 210 | if err != nil {
|
209 |
| - return err |
| 211 | + return diag.FromErr(err) |
210 | 212 | }
|
211 | 213 |
|
212 |
| - return resourceGitlabServiceSlackRead(d, meta) |
| 214 | + return resourceGitlabServiceSlackRead(ctx, d, meta) |
213 | 215 | }
|
214 | 216 |
|
215 |
| -func resourceGitlabServiceSlackRead(d *schema.ResourceData, meta interface{}) error { |
| 217 | +func resourceGitlabServiceSlackRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { |
216 | 218 | client := meta.(*gitlab.Client)
|
217 | 219 | project := d.Get("project").(string)
|
218 | 220 |
|
219 | 221 | log.Printf("[DEBUG] read gitlab slack service for project %s", project)
|
220 | 222 |
|
221 |
| - service, _, err := client.Services.GetSlackService(project) |
| 223 | + service, _, err := client.Services.GetSlackService(project, gitlab.WithContext(ctx)) |
222 | 224 | if err != nil {
|
223 | 225 | if is404(err) {
|
224 | 226 | log.Printf("[DEBUG] gitlab slack service not found %s", project)
|
225 | 227 | d.SetId("")
|
226 | 228 | return nil
|
227 | 229 | }
|
228 |
| - return err |
| 230 | + return diag.FromErr(err) |
229 | 231 | }
|
230 | 232 |
|
231 | 233 | if err = resourceGitlabServiceSlackSetToState(d, service); err != nil {
|
232 |
| - return err |
| 234 | + return diag.FromErr(err) |
233 | 235 | }
|
234 | 236 |
|
235 | 237 | return nil
|
236 | 238 | }
|
237 | 239 |
|
238 |
| -func resourceGitlabServiceSlackUpdate(d *schema.ResourceData, meta interface{}) error { |
239 |
| - return resourceGitlabServiceSlackCreate(d, meta) |
| 240 | +func resourceGitlabServiceSlackUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { |
| 241 | + return resourceGitlabServiceSlackCreate(ctx, d, meta) |
240 | 242 | }
|
241 | 243 |
|
242 |
| -func resourceGitlabServiceSlackDelete(d *schema.ResourceData, meta interface{}) error { |
| 244 | +func resourceGitlabServiceSlackDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { |
243 | 245 | client := meta.(*gitlab.Client)
|
244 | 246 | project := d.Get("project").(string)
|
245 | 247 |
|
246 | 248 | log.Printf("[DEBUG] delete gitlab slack service for project %s", project)
|
247 | 249 |
|
248 |
| - _, err := client.Services.DeleteSlackService(project) |
249 |
| - return err |
| 250 | + _, err := client.Services.DeleteSlackService(project, gitlab.WithContext(ctx)) |
| 251 | + if err != nil { |
| 252 | + return diag.FromErr(err) |
| 253 | + } |
| 254 | + |
| 255 | + return nil |
250 | 256 | }
|
251 | 257 |
|
252 |
| -func resourceGitlabServiceSlackImportState(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) { |
| 258 | +func resourceGitlabServiceSlackImportState(ctx context.Context, d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) { |
253 | 259 | d.Set("project", d.Id())
|
254 | 260 |
|
255 | 261 | return []*schema.ResourceData{d}, nil
|
|
0 commit comments