Skip to content

Commit d16d185

Browse files
committed
fix updating group members
1 parent 6189e40 commit d16d185

File tree

4 files changed

+22
-5
lines changed

4 files changed

+22
-5
lines changed

pkg/config/conversion.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -317,11 +317,18 @@ func ToConfigGroup(gsuiteGroup *directoryv1.Group, settings *groupssettingsv1.Gr
317317
return group, nil
318318
}
319319

320-
func ToGSuiteGroupMember(member *Member) *directoryv1.Member {
321-
return &directoryv1.Member{
320+
func ToGSuiteGroupMember(member *Member, gsuiteMember *directoryv1.Member) *directoryv1.Member {
321+
result := &directoryv1.Member{
322322
Email: member.Email,
323323
Role: member.Role,
324324
}
325+
326+
if gsuiteMember != nil {
327+
result.Id = gsuiteMember.Id
328+
result.Etag = gsuiteMember.Etag
329+
}
330+
331+
return result
325332
}
326333

327334
func ToConfigGroupMember(gsuiteMember *directoryv1.Member) Member {

pkg/glib/directory_groups.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ func (ds *DirectoryService) RemoveMember(ctx context.Context, group *directoryv1
131131
// UpdateMembership changes the role of the member
132132
func (ds *DirectoryService) UpdateMembership(ctx context.Context, group *directoryv1.Group, member *directoryv1.Member) error {
133133
// do NOT use the member email here, as it will lead to "Error 404: Resource Not Found: email, notFound." errors
134-
if _, err := ds.Members.Update(group.Email, member.Id, member).Context(ctx).Do(); err != nil {
134+
if _, err := ds.Members.Update(group.Id, member.Id, member).Context(ctx).Do(); err != nil {
135135
return err
136136
}
137137

pkg/sync/groups.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"context"
2121
"fmt"
2222
"log"
23+
"sort"
2324

2425
directoryv1 "google.golang.org/api/admin/directory/v1"
2526
"k8s.io/apimachinery/pkg/util/sets"
@@ -46,6 +47,10 @@ func SyncGroups(
4647

4748
liveGroupEmails := sets.NewString()
4849

50+
sort.Slice(liveGroups, func(i, j int) bool {
51+
return liveGroups[i].Email < liveGroups[j].Email
52+
})
53+
4954
for _, liveGroup := range liveGroups {
5055
liveGroupEmails.Insert(liveGroup.Email)
5156

@@ -171,7 +176,7 @@ func syncGroupMembers(
171176
log.Printf(" ✎ %s", liveMember.Email)
172177

173178
if confirm {
174-
member := config.ToGSuiteGroupMember(expectedMember)
179+
member := config.ToGSuiteGroupMember(expectedMember, liveMember)
175180
if err := directorySrv.UpdateMembership(ctx, liveGroup, member); err != nil {
176181
return fmt.Errorf("unable to update membership: %v", err)
177182
}
@@ -184,7 +189,7 @@ func syncGroupMembers(
184189
log.Printf(" + %s", expectedMember.Email)
185190

186191
if confirm {
187-
member := config.ToGSuiteGroupMember(&expectedMember)
192+
member := config.ToGSuiteGroupMember(&expectedMember, nil)
188193
if err := directorySrv.AddNewMember(ctx, liveGroup, member); err != nil {
189194
return fmt.Errorf("unable to add member: %v", err)
190195
}

pkg/sync/users.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"context"
2121
"fmt"
2222
"log"
23+
"sort"
2324

2425
directoryv1 "google.golang.org/api/admin/directory/v1"
2526
"k8s.io/apimachinery/pkg/util/sets"
@@ -48,6 +49,10 @@ func SyncUsers(
4849

4950
liveEmails := sets.NewString()
5051

52+
sort.Slice(liveUsers, func(i, j int) bool {
53+
return liveUsers[i].PrimaryEmail < liveUsers[j].PrimaryEmail
54+
})
55+
5156
for _, liveUser := range liveUsers {
5257
liveEmails.Insert(liveUser.PrimaryEmail)
5358

0 commit comments

Comments
 (0)