From: Lucas Di Pentima Date: Tue, 21 Jun 2022 14:16:08 +0000 (-0300) Subject: 18858: Fixes unlisted account deactivation logic. Improves logging. X-Git-Tag: 2.5.0~124^2~11 X-Git-Url: https://git.arvados.org/arvados.git/commitdiff_plain/f699425ce9bd7b5055192e81de31cc10609ba41d 18858: Fixes unlisted account deactivation logic. Improves logging. Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima --- diff --git a/tools/sync-users/sync-users.go b/tools/sync-users/sync-users.go index 23f1118178..969e101feb 100644 --- a/tools/sync-users/sync-users.go +++ b/tools/sync-users/sync-users.go @@ -190,33 +190,29 @@ func doMain(cfg *ConfigParams) error { } log.Printf("Loaded %d records from input file", len(loadedRecords)) - updatesSucceeded, updatesFailed := 0, 0 + updatesSucceeded := map[string]bool{} + updatesFailed := map[string]bool{} + updatesSkipped := map[string]bool{} + for _, record := range loadedRecords { + processedUsers[record.Email] = true if record.Email == cfg.CurrentUser.Email { + updatesSkipped[record.Email] = true log.Printf("Skipping current user %q from processing", record.Email) continue } if updated, err := ProcessRecord(cfg, record, allUsers); err != nil { log.Printf("error processing record %q: %s", record.Email, err) - updatesFailed++ + updatesFailed[record.Email] = true } else if updated { - processedUsers[strings.ToLower(record.Email)] = true - updatesSucceeded++ + updatesSucceeded[record.Email] = true } } if cfg.DeactivateUnlisted { for email, user := range allUsers { - switch user.UUID { - case cfg.SysUserUUID, cfg.AnonUserUUID: - if cfg.Verbose { - log.Printf("Skipping system user deactivation: %s", user.UUID) - } - continue - case cfg.CurrentUser.UUID: - if cfg.Verbose { - log.Printf("Skipping current user deactivation: %s (%s)", user.Email, user.UUID) - } + if shouldSkip(cfg, user) { + updatesSkipped[email] = true continue } if !processedUsers[email] && allUsers[email].IsActive { @@ -226,20 +222,30 @@ func doMain(cfg *ConfigParams) error { var updatedUser arvados.User if err := UnsetupUser(cfg.Client, user.UUID, &updatedUser); err != nil { log.Printf("error deactivating unlisted user %q: %s", user.UUID, err) - updatesFailed++ + updatesFailed[email] = true } else { allUsers[email] = updatedUser - updatesSucceeded++ + updatesSucceeded[email] = true } } } } - log.Printf("Updated %d user(s), failed to update %d user(s)", updatesSucceeded, updatesFailed) + log.Printf("User update successes: %d, skips: %d, failures: %d", len(updatesSucceeded), len(updatesSkipped), len(updatesFailed)) return nil } +func shouldSkip(cfg *ConfigParams, user arvados.User) bool { + switch user.UUID { + case cfg.SysUserUUID, cfg.AnonUserUUID: + return true + case cfg.CurrentUser.UUID: + return true + } + return false +} + type userRecord struct { Email string FirstName string