in groups/reconcile.go [224:279]
func (r *Reconciler) ReconcileGroups(groups []GoogleGroup) error {
// aggregate the errors that occured and return them together in the end.
var errs []error
for _, g := range groups {
if g.EmailId == "" {
errs = append(errs, fmt.Errorf("group has no email-id: %#v", g))
}
err := r.adminService.CreateOrUpdateGroupIfNescessary(g)
if err != nil {
errs = append(errs, err)
}
err = r.groupService.UpdateGroupSettings(g)
if err != nil {
errs = append(errs, err)
}
err = r.adminService.AddOrUpdateGroupMembers(g, OwnerRole, g.Owners)
if err != nil {
errs = append(errs, err)
}
err = r.adminService.AddOrUpdateGroupMembers(g, ManagerRole, g.Managers)
if err != nil {
errs = append(errs, err)
}
err = r.adminService.AddOrUpdateGroupMembers(g, MemberRole, g.Members)
if err != nil {
errs = append(errs, err)
}
if g.Settings["ReconcileMembers"] == "true" {
members := append(g.Owners, g.Managers...)
members = append(members, g.Members...)
err = r.adminService.RemoveMembersFromGroup(g, members)
if err != nil {
errs = append(errs, err)
}
} else {
members := append(g.Owners, g.Managers...)
err = r.adminService.RemoveOwnerOrManagersFromGroup(g, members)
if err != nil {
errs = append(errs, err)
}
}
}
err := r.adminService.DeleteGroupsIfNecessary()
if err != nil {
errs = append(errs, err)
}
return utilerrors.NewAggregate(errs)
}