@@ -767,8 +767,9 @@ func (s *syncGSuite) getGoogleGroupsAndUsers(queryGroups string, queryUsers stri
767767 // If we've not seen the user email address before add it to the list of unique users
768768 // also, we need to deduplicate the list of members.
769769 log .WithFields (log.Fields {
770- "func" : funcName ,
771- "group.Id" : g .Id ,
770+ "func" : funcName ,
771+ "group.Id" : g .Id ,
772+ "membersUsers" : membersUsers ,
772773 }).Debug ("Process group membership" )
773774
774775 gUniqMembers := make (map [string ]* admin.User )
@@ -1333,15 +1334,16 @@ func (s *syncGSuite) getGoogleUsersInGroup(group *admin.Group, userCache map[str
13331334 "func" : funcName ,
13341335 "GroupId" : group .Id ,
13351336 "# Members" : len (groupMembers ),
1336- }).Debug ("processing membership" )
1337+ "Members" : groupMembers ,
1338+ }).Debug ("Group membership" )
13371339
13381340 // process the members of the group
13391341 for memberIndex , m := range groupMembers {
13401342 log .WithFields (log.Fields {
13411343 "func" : funcName ,
13421344 "GroupId" : group .Id ,
13431345 "Member#" : memberIndex ,
1344- }).WithField ( "Member" , m )
1346+ }).Debug ( "Parsing member" )
13451347
13461348 if len (m .Email ) == 0 {
13471349 log .WithFields (log.Fields {
@@ -1367,6 +1369,7 @@ func (s *syncGSuite) getGoogleUsersInGroup(group *admin.Group, userCache map[str
13671369 log .WithFields (log.Fields {
13681370 "func" : funcName ,
13691371 "GroupId" : group .Id ,
1372+ "Member#" : memberIndex ,
13701373 }).Info ("skip: external user" )
13711374 continue
13721375 }
@@ -1377,6 +1380,7 @@ func (s *syncGSuite) getGoogleUsersInGroup(group *admin.Group, userCache map[str
13771380 log .WithFields (log.Fields {
13781381 "func" : funcName ,
13791382 "GroupId" : group .Id ,
1383+ "Member#" : memberIndex ,
13801384 }).Info ("skip: suspended user" )
13811385 continue
13821386 }
@@ -1386,30 +1390,38 @@ func (s *syncGSuite) getGoogleUsersInGroup(group *admin.Group, userCache map[str
13861390 log .WithFields (log.Fields {
13871391 "func" : funcName ,
13881392 "GroupId" : group .Id ,
1393+ "Member#" : memberIndex ,
13891394 }).Info ("skip: ignore list" )
13901395 continue
13911396 }
13921397
1398+ // Ignore any users that don't have a valid status
13931399 allowedStatus := map [string ]bool {"ACTIVE" : true , "SUSPENDED" : true }
13941400 if ! allowedStatus [m .Status ] {
13951401 log .WithFields (log.Fields {
13961402 "func" : funcName ,
13971403 "GroupId" : group .Id ,
1404+ "Member#" : memberIndex ,
13981405 }).Info ("skip: !ACTIVE" )
13991406 continue
14001407 }
14011408
1409+ // This is a member that should be synced to AWS
14021410 log .WithFields (log.Fields {
14031411 "func" : funcName ,
14041412 "GroupId" : group .Id ,
1413+ "Member#" : memberIndex ,
14051414 }).Debug ("valid member" )
1415+ var memberEmail string
14061416 // Find the group member in the cache of UserDetails
14071417 if _ , found := userCache [m .Email ]; ! found {
14081418 log .WithFields (log.Fields {
14091419 "func" : funcName ,
14101420 "GroupId" : group .Id ,
1421+ "Member#" : memberIndex ,
14111422 }).Debug ("Cache: user not found" )
1412-
1423+ // Looking up the user based on the member email address,
1424+ // it might be an alias
14131425 googleUsers , err := s .google .GetUsers ("email=" + m .Email , s .cfg .UserFilter )
14141426 if err != nil {
14151427 log .WithFields (log.Fields {
@@ -1419,33 +1431,52 @@ func (s *syncGSuite) getGoogleUsersInGroup(group *admin.Group, userCache map[str
14191431 }).Error ("Fetching user" )
14201432 continue
14211433 }
1434+ // Add user to the cache
14221435 for _ , u := range googleUsers {
1436+ if _ , found := userCache [u .PrimaryEmail ]; ! found {
1437+ log .WithFields (log.Fields {
1438+ "func" : funcName ,
1439+ "GroupId" : group .Id ,
1440+ "Member#" : memberIndex ,
1441+ }).Debug ("Cache user" )
1442+ userCache [u .PrimaryEmail ] = u
1443+ }
1444+ memberEmail = u .PrimaryEmail
1445+ }
1446+ // Check whether the member was based on an alias
1447+ if memberEmail != m .Email {
14231448 log .WithFields (log.Fields {
14241449 "func" : funcName ,
14251450 "GroupId" : group .Id ,
14261451 "Member#" : memberIndex ,
1427- }).Debug ("Cache user" )
1428- userCache [u .PrimaryEmail ] = u
1452+ }).Debug ("Member listed using an alias" )
14291453 }
1454+ } else {
1455+ // member (email address) found in user cache
1456+ memberEmail = m .Email
14301457 }
1431- log .WithFields (log.Fields {
1432- "func" : funcName ,
1433- "GroupId" : group .Id ,
1434- "Member#" : memberIndex ,
1435- }).Debug ("Add member" )
1436- if userCache [m .Email ] == nil {
1458+
1459+ // Add user based on user cache
1460+ if userCache [memberEmail ] == nil {
14371461 log .WithFields (log.Fields {
1438- "func" : funcName ,
1439- "Member " : m ,
1462+ "func" : funcName ,
1463+ "memberEmail " : memberEmail ,
14401464 }).Error ("Can't retrieve user" )
14411465 continue
1466+ } else {
1467+ log .WithFields (log.Fields {
1468+ "func" : funcName ,
1469+ "GroupId" : group .Id ,
1470+ "Member#" : memberIndex ,
1471+ }).Debug ("Add member" )
14421472 }
1443- membersUsers = append (membersUsers , userCache [m . Email ])
1473+ membersUsers = append (membersUsers , userCache [memberEmail ])
14441474
14451475 }
14461476 log .WithFields (log.Fields {
14471477 "func" : funcName ,
14481478 "GroupId" : group .Id ,
1479+ "# Members" : len (membersUsers ),
14491480 "membersUsers" : membersUsers ,
14501481 }).Debug ("Return" )
14511482 return membersUsers
0 commit comments