Skip to content

Commit 6561844

Browse files
author
Jordan Caussat
committed
Add new fields to data source users
1 parent 17de2da commit 6561844

File tree

1 file changed

+31
-4
lines changed

1 file changed

+31
-4
lines changed

gitlab/data_source_gitlab_users.go

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package gitlab
22

33
import (
44
"github.com/hashicorp/terraform/helper/schema"
5+
"github.com/hashicorp/terraform/helper/validation"
56
gitlab "github.com/xanzy/go-gitlab"
67
)
78

@@ -10,16 +11,28 @@ func dataSourceGitlabUsers() *schema.Resource {
1011
Read: dataSourceGitlabUsersRead,
1112

1213
Schema: map[string]*schema.Schema{
13-
"name": {
14+
"order_by": {
1415
Type: schema.TypeString,
1516
Optional: true,
16-
Default: "all_users",
17+
Default: "id",
18+
ValidateFunc: validation.StringInSlice([]string{"id", "name",
19+
"username", "created_at"}, true),
20+
},
21+
"sort": {
22+
Type: schema.TypeString,
23+
Optional: true,
24+
Default: "desc",
25+
ValidateFunc: validation.StringInSlice([]string{"desc", "asc"}, true),
1726
},
1827
"users": {
1928
Type: schema.TypeList,
2029
Computed: true,
2130
Elem: &schema.Resource{
2231
Schema: map[string]*schema.Schema{
32+
"id": {
33+
Type: schema.TypeInt,
34+
Computed: true,
35+
},
2336
"username": {
2437
Type: schema.TypeString,
2538
Computed: true,
@@ -56,6 +69,10 @@ func dataSourceGitlabUsers() *schema.Resource {
5669
Type: schema.TypeString,
5770
Computed: true,
5871
},
72+
"external": {
73+
Type: schema.TypeBool,
74+
Computed: true,
75+
},
5976
},
6077
},
6178
},
@@ -66,13 +83,21 @@ func dataSourceGitlabUsers() *schema.Resource {
6683
func dataSourceGitlabUsersRead(d *schema.ResourceData, meta interface{}) error {
6784
client := meta.(*gitlab.Client)
6885

69-
users, _, err := client.Users.ListUsers(nil)
86+
orderBy := d.Get("order_by").(string)
87+
sort := d.Get("sort").(string)
88+
listUsersOptions := &gitlab.ListUsersOptions{
89+
OrderBy: &orderBy,
90+
Sort: &sort,
91+
}
92+
93+
users, _, err := client.Users.ListUsers(listUsersOptions)
7094
if err != nil {
7195
return err
7296
}
7397

7498
d.Set("users", flattenGitlabUsers(users))
75-
d.SetId(d.Get("name").(string))
99+
id := "all_users_" + orderBy + "_" + sort
100+
d.SetId(id)
76101

77102
return nil
78103
}
@@ -82,6 +107,7 @@ func flattenGitlabUsers(users []*gitlab.User) []interface{} {
82107

83108
for _, user := range users {
84109
values := map[string]interface{}{
110+
"id": user.ID,
85111
"username": user.Username,
86112
"email": user.Email,
87113
"name": user.Name,
@@ -90,6 +116,7 @@ func flattenGitlabUsers(users []*gitlab.User) []interface{} {
90116
"can_create_project": user.CanCreateProject,
91117
"projects_limit": user.ProjectsLimit,
92118
"state": user.State,
119+
"external": user.External,
93120
}
94121

95122
if user.CreatedAt != nil {

0 commit comments

Comments
 (0)