Skip to content

Commit d28faa3

Browse files
committed
Use context-aware CRUD functions for User data source
1 parent 7e3ab17 commit d28faa3

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

gitlab/data_source_gitlab_user.go

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
package gitlab
22

33
import (
4+
"context"
45
"fmt"
56
"log"
67
"strings"
78

9+
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
810
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
911
gitlab "github.com/xanzy/go-gitlab"
1012
)
1113

1214
func dataSourceGitlabUser() *schema.Resource {
1315
return &schema.Resource{
14-
Read: dataSourceGitlabUserRead,
16+
ReadContext: dataSourceGitlabUserRead,
1517
Schema: map[string]*schema.Schema{
1618
"user_id": {
1719
Type: schema.TypeInt,
@@ -140,7 +142,7 @@ func dataSourceGitlabUser() *schema.Resource {
140142
}
141143
}
142144

143-
func dataSourceGitlabUserRead(d *schema.ResourceData, meta interface{}) error {
145+
func dataSourceGitlabUserRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
144146
client := meta.(*gitlab.Client)
145147

146148
var user *gitlab.User
@@ -154,9 +156,9 @@ func dataSourceGitlabUserRead(d *schema.ResourceData, meta interface{}) error {
154156

155157
if userIDOk {
156158
// Get user by id
157-
user, _, err = client.Users.GetUser(userIDData.(int), gitlab.GetUsersOptions{})
159+
user, _, err = client.Users.GetUser(userIDData.(int), gitlab.GetUsersOptions{}, gitlab.WithContext(ctx))
158160
if err != nil {
159-
return err
161+
return diag.FromErr(err)
160162
}
161163
} else if usernameOk || emailOk {
162164
username := strings.ToLower(usernameData.(string))
@@ -172,20 +174,20 @@ func dataSourceGitlabUserRead(d *schema.ResourceData, meta interface{}) error {
172174
}
173175

174176
var users []*gitlab.User
175-
users, _, err = client.Users.ListUsers(listUsersOptions)
177+
users, _, err = client.Users.ListUsers(listUsersOptions, gitlab.WithContext(ctx))
176178
if err != nil {
177-
return err
179+
return diag.FromErr(err)
178180
}
179181

180182
if len(users) == 0 {
181-
return fmt.Errorf("couldn't find a user matching: %s%s", username, email)
183+
return diag.Errorf("couldn't find a user matching: %s%s", username, email)
182184
} else if len(users) != 1 {
183-
return fmt.Errorf("more than one user found matching: %s%s", username, email)
185+
return diag.Errorf("more than one user found matching: %s%s", username, email)
184186
}
185187

186188
user = users[0]
187189
} else {
188-
return fmt.Errorf("one and only one of user_id, username or email must be set")
190+
return diag.Errorf("one and only one of user_id, username or email must be set")
189191
}
190192

191193
d.Set("user_id", user.ID)

0 commit comments

Comments
 (0)