Skip to content

Commit b1a9c53

Browse files
Validate during plan
1 parent 01cc965 commit b1a9c53

File tree

2 files changed

+12
-15
lines changed

2 files changed

+12
-15
lines changed

gitlab/resource_gitlab_group_membership.go

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

33
import (
4-
"fmt"
54
"log"
65
"strconv"
76
"strings"
87

98
"github.com/hashicorp/terraform/helper/schema"
10-
gitlab "github.com/xanzy/go-gitlab"
9+
"github.com/xanzy/go-gitlab"
1110
)
1211

1312
func resourceGitlabGroupMembership() *schema.Resource {
13+
acceptedAccessLevels := make([]string, 0, len(accessLevelID))
14+
for k := range accessLevelID {
15+
acceptedAccessLevels = append(acceptedAccessLevels, k)
16+
}
1417
return &schema.Resource{
1518
Create: resourceGitlabGroupMembershipCreate,
1619
Read: resourceGitlabGroupMembershipRead,
@@ -32,8 +35,9 @@ func resourceGitlabGroupMembership() *schema.Resource {
3235
Required: true,
3336
},
3437
"access_level": {
35-
Type: schema.TypeString,
36-
Required: true,
38+
Type: schema.TypeString,
39+
ValidateFunc: validateValueFunc(acceptedAccessLevels),
40+
Required: true,
3741
},
3842
"expires_at": {
3943
Type: schema.TypeString, // Format YYYY-MM-DD
@@ -49,12 +53,8 @@ func resourceGitlabGroupMembershipCreate(d *schema.ResourceData, meta interface{
4953
userId := d.Get("user_id").(int)
5054
groupId := d.Get("group_id").(string)
5155
expiresAt := d.Get("expires_at").(string)
52-
accessLevel := strings.ToLower(d.Get("access_level").(string))
53-
accessLevelId, ok := accessLevelID[accessLevel]
56+
accessLevelId := accessLevelID[d.Get("access_level").(string)]
5457

55-
if !ok {
56-
return fmt.Errorf("Invalid access level '%s'", accessLevel)
57-
}
5858
options := &gitlab.AddGroupMemberOptions{
5959
UserID: &userId,
6060
AccessLevel: &accessLevelId,
@@ -113,11 +113,8 @@ func resourceGitlabGroupMembershipUpdate(d *schema.ResourceData, meta interface{
113113
userId := d.Get("user_id").(int)
114114
groupId := d.Get("group_id").(string)
115115
expiresAt := d.Get("expires_at").(string)
116-
accessLevel := strings.ToLower(d.Get("access_level").(string))
117-
accessLevelId, ok := accessLevelID[accessLevel]
118-
if !ok {
119-
return fmt.Errorf("Invalid access level '%s'", accessLevel)
120-
}
116+
accessLevelId := accessLevelID[strings.ToLower(d.Get("access_level").(string))]
117+
121118
options := gitlab.EditGroupMemberOptions{
122119
AccessLevel: &accessLevelId,
123120
ExpiresAt: &expiresAt,

gitlab/util.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ func validateValueFunc(values []string) schema.SchemaValidateFunc {
2222
}
2323

2424
if !valid {
25-
errors = append(errors, fmt.Errorf("%s is an invalid value for argument %s", value, k))
25+
errors = append(errors, fmt.Errorf("%s is an invalid value for argument %s acceptable values are: %v", value, k, values))
2626
}
2727
return
2828
}

0 commit comments

Comments
 (0)