Skip to content

Commit c656347

Browse files
committed
Use context-aware CRUD functions for Project Membership resource
1 parent e172282 commit c656347

File tree

1 file changed

+30
-24
lines changed

1 file changed

+30
-24
lines changed

gitlab/resource_gitlab_project_membership.go

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package gitlab
22

33
import (
4+
"context"
45
"log"
56
"net/http"
67
"strconv"
78
"strings"
89

10+
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
911
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1012
"github.com/xanzy/go-gitlab"
1113
)
@@ -18,10 +20,10 @@ func resourceGitlabProjectMembership() *schema.Resource {
1820
}
1921
}
2022
return &schema.Resource{
21-
Create: resourceGitlabProjectMembershipCreate,
22-
Read: resourceGitlabProjectMembershipRead,
23-
Update: resourceGitlabProjectMembershipUpdate,
24-
Delete: resourceGitlabProjectMembershipDelete,
23+
CreateContext: resourceGitlabProjectMembershipCreate,
24+
ReadContext: resourceGitlabProjectMembershipRead,
25+
UpdateContext: resourceGitlabProjectMembershipUpdate,
26+
DeleteContext: resourceGitlabProjectMembershipDelete,
2527
Importer: &schema.ResourceImporter{
2628
StateContext: schema.ImportStatePassthroughContext,
2729
},
@@ -46,7 +48,7 @@ func resourceGitlabProjectMembership() *schema.Resource {
4648
}
4749
}
4850

49-
func resourceGitlabProjectMembershipCreate(d *schema.ResourceData, meta interface{}) error {
51+
func resourceGitlabProjectMembershipCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
5052
client := meta.(*gitlab.Client)
5153

5254
userId := d.Get("user_id").(int)
@@ -59,33 +61,33 @@ func resourceGitlabProjectMembershipCreate(d *schema.ResourceData, meta interfac
5961
}
6062
log.Printf("[DEBUG] create gitlab project membership for %d in %s", options.UserID, projectId)
6163

62-
_, _, err := client.ProjectMembers.AddProjectMember(projectId, options)
64+
_, _, err := client.ProjectMembers.AddProjectMember(projectId, options, gitlab.WithContext(ctx))
6365
if err != nil {
64-
return err
66+
return diag.FromErr(err)
6567
}
6668
userIdString := strconv.Itoa(userId)
6769
d.SetId(buildTwoPartID(&projectId, &userIdString))
68-
return resourceGitlabProjectMembershipRead(d, meta)
70+
return resourceGitlabProjectMembershipRead(ctx, d, meta)
6971
}
7072

71-
func resourceGitlabProjectMembershipRead(d *schema.ResourceData, meta interface{}) error {
73+
func resourceGitlabProjectMembershipRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
7274
client := meta.(*gitlab.Client)
7375
id := d.Id()
7476
log.Printf("[DEBUG] read gitlab project projectMember %s", id)
7577

76-
projectId, userId, e := projectIdAndUserIdFromId(id)
77-
if e != nil {
78-
return e
78+
projectId, userId, err := projectIdAndUserIdFromId(id)
79+
if err != nil {
80+
return diag.FromErr(err)
7981
}
8082

81-
projectMember, resp, err := client.ProjectMembers.GetProjectMember(projectId, userId)
83+
projectMember, resp, err := client.ProjectMembers.GetProjectMember(projectId, userId, gitlab.WithContext(ctx))
8284
if err != nil {
8385
if resp != nil && resp.StatusCode == http.StatusNotFound {
8486
log.Printf("[DEBUG] gitlab project membership for %s not found so removing from state", d.Id())
8587
d.SetId("")
8688
return nil
8789
}
88-
return err
90+
return diag.FromErr(err)
8991
}
9092

9193
resourceGitlabProjectMembershipSetToState(d, projectMember, &projectId)
@@ -104,7 +106,7 @@ func projectIdAndUserIdFromId(id string) (string, int, error) {
104106
return projectId, userId, e
105107
}
106108

107-
func resourceGitlabProjectMembershipUpdate(d *schema.ResourceData, meta interface{}) error {
109+
func resourceGitlabProjectMembershipUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
108110
client := meta.(*gitlab.Client)
109111

110112
userId := d.Get("user_id").(int)
@@ -116,26 +118,30 @@ func resourceGitlabProjectMembershipUpdate(d *schema.ResourceData, meta interfac
116118
}
117119
log.Printf("[DEBUG] update gitlab project membership %v for %s", userId, projectId)
118120

119-
_, _, err := client.ProjectMembers.EditProjectMember(projectId, userId, &options)
121+
_, _, err := client.ProjectMembers.EditProjectMember(projectId, userId, &options, gitlab.WithContext(ctx))
120122
if err != nil {
121-
return err
123+
return diag.FromErr(err)
122124
}
123-
return resourceGitlabProjectMembershipRead(d, meta)
125+
return resourceGitlabProjectMembershipRead(ctx, d, meta)
124126
}
125127

126-
func resourceGitlabProjectMembershipDelete(d *schema.ResourceData, meta interface{}) error {
128+
func resourceGitlabProjectMembershipDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
127129
client := meta.(*gitlab.Client)
128130

129131
id := d.Id()
130-
projectId, userId, e := projectIdAndUserIdFromId(id)
131-
if e != nil {
132-
return e
132+
projectId, userId, err := projectIdAndUserIdFromId(id)
133+
if err != nil {
134+
return diag.FromErr(err)
133135
}
134136

135137
log.Printf("[DEBUG] Delete gitlab project membership %v for %s", userId, projectId)
136138

137-
_, err := client.ProjectMembers.DeleteProjectMember(projectId, userId)
138-
return err
139+
_, err = client.ProjectMembers.DeleteProjectMember(projectId, userId, gitlab.WithContext(ctx))
140+
if err != nil {
141+
return diag.FromErr(err)
142+
}
143+
144+
return nil
139145
}
140146

141147
func resourceGitlabProjectMembershipSetToState(d *schema.ResourceData, projectMember *gitlab.ProjectMember, projectId *string) {

0 commit comments

Comments
 (0)