Skip to content
This repository was archived by the owner on Jun 27, 2021. It is now read-only.

Commit 1850abf

Browse files
authored
Group member: update role (#33)
* Release v0.1.9-dev171020181110 Signed-off-by: Chase Sillevis <chase@sillevis.net> * group member: update role * update travis * Release v0.1.9-dev171020181300 Signed-off-by: Chase Sillevis <chase@sillevis.net> * add sign * switch to version 0.1.9 * restore arch * Release v0.1.9 Signed-off-by: Chase Sillevis <chase@sillevis.net>
1 parent 5908636 commit 1850abf

File tree

4 files changed

+40
-27
lines changed

4 files changed

+40
-27
lines changed

.travis.yml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,16 @@ services:
33
- docker
44
language: go
55
go:
6-
- 1.9
6+
- 1.9
7+
- 1.11
78

89
before_install:
910
# Setup dependency management tool
1011
- curl -L -s https://github.com/golang/dep/releases/download/v0.4.1/dep-linux-amd64 -o $GOPATH/bin/dep
1112
- chmod +x $GOPATH/bin/dep
1213

13-
install:
14-
- go get github.com/hashicorp/terraform
15-
- dep ensure
16-
1714
script:
1815
- 'if [ "${TRAVIS_BUILD_DIR}" != "${GOPATH}/src/github.com/DeviaVir/terraform-provider-gsuite" ]; then ln -s "${TRAVIS_BUILD_DIR}" "${GOPATH}/src/github.com/DeviaVir/terraform-provider-gsuite"; fi'
16+
- dep ensure -v
1917
- make test
2018
- make

Makefile

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ GOVERSION := 1.9.3
1919
PROJECT := $(CURRENT_DIR:$(GOPATH)/src/%=%)
2020
OWNER := $(notdir $(patsubst %/,%,$(dir $(PROJECT))))
2121
NAME := $(notdir $(PROJECT))
22-
VERSION := 0.1.8
22+
VERSION := 0.1.9
2323
EXTERNAL_TOOLS = \
2424
github.com/golang/dep/cmd/dep
2525

@@ -116,6 +116,18 @@ else
116116
endif
117117
.PHONY: dist
118118

119+
# sign in case you were unable to sign during dist
120+
sign:
121+
ifndef GPG_KEY
122+
@echo "==> ERROR: No GPG key specified! Without a GPG key, this release cannot"
123+
@echo " be signed. Set the environment variable GPG_KEY to the ID of"
124+
@echo " the GPG key to continue."
125+
@exit 127
126+
else
127+
@$(MAKE) -f "${MKFILE_PATH}" _compress _checksum _sign
128+
endif
129+
.PHONY: sign
130+
119131
# _cleanup removes any previous binaries
120132
_cleanup:
121133
@rm -rf "${CURRENT_DIR}/pkg/"

gsuite/resource_group_member.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -85,11 +85,11 @@ func resourceGroupMemberCreate(d *schema.ResourceData, meta interface{}) error {
8585
})
8686

8787
if err != nil {
88-
return fmt.Errorf("Error creating group member: %s", err)
88+
return fmt.Errorf("error creating group member: %s", err)
8989
}
9090

9191
d.SetId(createdGroupMember.Id)
92-
log.Printf("[INFO] Created group: %s", createdGroupMember.Email)
92+
log.Printf("[INFO] Created group member: %s", createdGroupMember.Email)
9393
return resourceGroupMemberRead(d, meta)
9494
}
9595

@@ -100,10 +100,15 @@ func resourceGroupMemberUpdate(d *schema.ResourceData, meta interface{}) error {
100100
nullFields := []string{}
101101

102102
if d.HasChange("email") {
103-
log.Printf("[DEBUG] Updating groupMember email: %s", d.Get("email").(string))
103+
log.Printf("[DEBUG] Updating groupMember email (recreating member): %s", d.Get("email").(string))
104104
groupMember.Email = strings.ToLower(d.Get("email").(string))
105105
}
106106

107+
if d.HasChange("role") {
108+
log.Printf("[DEBUG] Updating groupMember role: %s to %s", d.Get("email").(string), d.Get("role").(string))
109+
groupMember.Role = strings.ToUpper(d.Get("role").(string))
110+
}
111+
107112
if len(nullFields) > 0 {
108113
groupMember.NullFields = nullFields
109114
}
@@ -116,7 +121,7 @@ func resourceGroupMemberUpdate(d *schema.ResourceData, meta interface{}) error {
116121
})
117122

118123
if err != nil {
119-
return fmt.Errorf("Error updating group member: %s", err)
124+
return fmt.Errorf("error updating group member: %s", err)
120125
}
121126

122127
log.Printf("[INFO] Updated groupMember: %s", updatedGroupMember.Email)
@@ -138,6 +143,7 @@ func resourceGroupMemberRead(d *schema.ResourceData, meta interface{}) error {
138143
}
139144

140145
d.SetId(groupMember.Id)
146+
d.Set("role", strings.ToUpper(groupMember.Role))
141147
d.Set("email", strings.ToLower(groupMember.Email))
142148
d.Set("etag", groupMember.Etag)
143149
d.Set("kind", groupMember.Kind)
@@ -173,14 +179,14 @@ func resourceGroupMemberImporter(d *schema.ResourceData, meta interface{}) ([]*s
173179
}
174180

175181
if len(s) < 2 {
176-
return nil, fmt.Errorf("Import via [group]:[member email] or [group]/[member email]!")
182+
return nil, fmt.Errorf("import via [group]:[member email] or [group]/[member email]")
177183
}
178184
group, member := strings.ToLower(s[0]), strings.ToLower(s[1])
179185

180186
id, err := config.directory.Members.Get(group, member).Do()
181187

182188
if err != nil {
183-
return nil, fmt.Errorf("Error fetching member. Make sure the member exists: %s ", err)
189+
return nil, fmt.Errorf("error fetching member, make sure the member exists: %s ", err)
184190
}
185191

186192
d.SetId(id.Id)

gsuite/resource_group_members.go

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ func resourceGroupMembersRead(d *schema.ResourceData, meta interface{}) error {
4242

4343
groupEmail := d.Id()
4444

45-
members, err := getApiMembers(groupEmail, config)
45+
members, err := getAPIMembers(groupEmail, config)
4646

4747
if err != nil {
4848
return err
@@ -79,8 +79,8 @@ func resourceGroupMembersDelete(d *schema.ResourceData, meta interface{}) error
7979
log.Printf("[DEBUG]: Deleting gsuite_group_members")
8080
config := meta.(*Config)
8181

82-
for _, raw_member := range d.Get("member").(*schema.Set).List() {
83-
member := raw_member.(map[string]interface{})
82+
for _, rawMember := range d.Get("member").(*schema.Set).List() {
83+
member := rawMember.(map[string]interface{})
8484
deleteMember(member["email"].(string), d.Id(), config)
8585
}
8686

@@ -110,8 +110,8 @@ func membersToCfg(members []*directory.Member) []map[string]interface{} {
110110
}
111111

112112
func resourceMembers(d *schema.ResourceData) (members []map[string]interface{}) {
113-
for _, raw_member := range d.Get("member").(*schema.Set).List() {
114-
member := raw_member.(map[string]interface{})
113+
for _, rawMember := range d.Get("member").(*schema.Set).List() {
114+
member := rawMember.(map[string]interface{})
115115
members = append(members, member)
116116
}
117117
return members
@@ -125,7 +125,7 @@ func createOrUpdateGroupMembers(d *schema.ResourceData, meta interface{}) (strin
125125
cfgMembers := resourceMembers(d)
126126

127127
// Get members from API
128-
apiMembers, err := getApiMembers(groupEmail, config)
128+
apiMembers, err := getAPIMembers(groupEmail, config)
129129
if err != nil {
130130
return groupEmail, fmt.Errorf("Error updating memberships: %v", err)
131131
}
@@ -203,7 +203,7 @@ func reconcileMembers(d *schema.ResourceData, cfgMembers, apiMembers []map[strin
203203
}
204204

205205
// Upsert memberships which are present in the config, but not in the api
206-
for email, _ := range cfgMap {
206+
for email := range cfgMap {
207207
err := upsertMember(email, gid, cfgMap[email]["role"].(string), config)
208208
if err != nil {
209209
return err
@@ -213,7 +213,7 @@ func reconcileMembers(d *schema.ResourceData, cfgMembers, apiMembers []map[strin
213213
}
214214

215215
// Retrieve a group's members from the API
216-
func getApiMembers(groupEmail string, config *Config) ([]*directory.Member, error) {
216+
func getAPIMembers(groupEmail string, config *Config) ([]*directory.Member, error) {
217217
// Get members from the API
218218
groupMembers := make([]*directory.Member, 0)
219219
token := ""
@@ -239,6 +239,7 @@ func getApiMembers(groupEmail string, config *Config) ([]*directory.Member, erro
239239
}
240240

241241
func upsertMember(email, groupEmail, role string, config *Config) error {
242+
var err error
242243
groupMember := &directory.Member{
243244
Role: strings.ToUpper(role),
244245
Email: strings.ToLower(email),
@@ -247,10 +248,8 @@ func upsertMember(email, groupEmail, role string, config *Config) error {
247248
// Check if the email address belongs to a user, or to a group
248249
// we need to make sure, because we need to use different logic
249250
var isGroup bool
250-
var group *directory.Group
251-
var err error
252251
err = retry(func() error {
253-
group, err = config.directory.Groups.Get(email).Do()
252+
_, err := config.directory.Groups.Get(email).Do()
254253
return err
255254
})
256255
isGroup = true
@@ -264,10 +263,8 @@ func upsertMember(email, groupEmail, role string, config *Config) error {
264263
}
265264

266265
// Grab the group as a directory member of the current group
267-
var currentMember *directory.Member
268-
var err error
269266
err = retry(func() error {
270-
currentMember, err = config.directory.Members.Get(groupEmail, email).Do()
267+
_, err := config.directory.Members.Get(groupEmail, email).Do()
271268
return err
272269
})
273270

@@ -309,7 +306,7 @@ func upsertMember(email, groupEmail, role string, config *Config) error {
309306
// When a user does not exist, the API returns a 400 "memberKey, required"
310307
// Returning a friendly message
311308
if gerr, ok := err.(*googleapi.Error); ok && (gerr.Errors[0].Reason == "required" && gerr.Code == 400) {
312-
return fmt.Errorf("Error adding groupMember %s. Please make sure the user exists beforehand.", email)
309+
return fmt.Errorf("error adding groupMember %s, please make sure the user exists beforehand", email)
313310
}
314311
return err
315312
})

0 commit comments

Comments
 (0)