diff --git a/pkg/gcrcleaner/cleaner.go b/pkg/gcrcleaner/cleaner.go index f0dc595..7eba881 100644 --- a/pkg/gcrcleaner/cleaner.go +++ b/pkg/gcrcleaner/cleaner.go @@ -83,6 +83,21 @@ func (c *Cleaner) Clean(ctx context.Context, repo string, since time.Time, keep return manifests[j].Info.Created.Before(manifests[i].Info.Created) }) + // Generate an ordered map + manifestListForLog := make([]map[string]any, len(manifests)) + for _, m := range manifests { + manifestListForLog = append(manifestListForLog, map[string]any{ + "repo": m.Repo, + "digest": m.Digest, + "tags": m.Info.Tags, + "created": m.Info.Created.Format(time.RFC3339), + "uploaded": m.Info.Uploaded.Format(time.RFC3339), + }) + } + c.logger.Debug("computed all manifests", + "keep", keep, + "manifests", manifestListForLog) + for _, m := range manifests { // Store copy of manifest for thread safety in delete job pool m := m @@ -91,6 +106,7 @@ func (c *Cleaner) Clean(ctx context.Context, repo string, since time.Time, keep "repo", repo, "digest", m.Digest, "tags", m.Info.Tags, + "created", m.Info.Created.Format(time.RFC3339), "uploaded", m.Info.Uploaded.Format(time.RFC3339)) if c.shouldDelete(m, since, tagFilter) { @@ -100,7 +116,9 @@ func (c *Cleaner) Clean(ctx context.Context, repo string, since time.Time, keep "repo", repo, "digest", m.Digest, "keep", keep, - "keep_count", keepCount) + "keep_count", keepCount, + "created", m.Info.Created.Format(time.RFC3339), + "uploaded", m.Info.Uploaded.Format(time.RFC3339)) keepCount++ continue @@ -212,6 +230,7 @@ func (c *Cleaner) shouldDelete(m *manifest, since time.Time, tagFilter TagFilter "digest", m.Digest, "reason", "too new", "since", since.Format(time.RFC3339), + "created", m.Info.Created.Format(time.RFC3339), "uploaded", uploaded.Format(time.RFC3339), "delta", uploaded.Sub(since).String()) return false @@ -234,6 +253,7 @@ func (c *Cleaner) shouldDelete(m *manifest, since time.Time, tagFilter TagFilter "repo", m.Repo, "digest", m.Digest, "reason", "matches tag filter", + "tags", m.Info.Tags, "tag_filter", tagFilter.Name()) return true } diff --git a/pkg/gcrcleaner/logging.go b/pkg/gcrcleaner/logging.go index 484625f..83c5750 100644 --- a/pkg/gcrcleaner/logging.go +++ b/pkg/gcrcleaner/logging.go @@ -77,28 +77,28 @@ func NewLogger(level string, outw, errw io.Writer) *Logger { return &Logger{level: v, stdout: outw, stderr: errw} } -func (l *Logger) Debug(msg string, fields ...interface{}) { +func (l *Logger) Debug(msg string, fields ...any) { l.log(l.stdout, msg, SeverityDebug, fields...) } -func (l *Logger) Info(msg string, fields ...interface{}) { +func (l *Logger) Info(msg string, fields ...any) { l.log(l.stdout, msg, SeverityInfo, fields...) } -func (l *Logger) Warn(msg string, fields ...interface{}) { +func (l *Logger) Warn(msg string, fields ...any) { l.log(l.stdout, msg, SeverityWarn, fields...) } -func (l *Logger) Error(msg string, fields ...interface{}) { +func (l *Logger) Error(msg string, fields ...any) { l.log(l.stderr, msg, SeverityError, fields...) } -func (l *Logger) Fatal(msg string, fields ...interface{}) { +func (l *Logger) Fatal(msg string, fields ...any) { l.log(l.stderr, msg, SeverityFatal, fields...) os.Exit(1) } -func (l *Logger) log(w io.Writer, msg string, sev Severity, fields ...interface{}) { +func (l *Logger) log(w io.Writer, msg string, sev Severity, fields ...any) { if len(fields)%2 != 0 { panic("number of fields must be even") } @@ -107,7 +107,7 @@ func (l *Logger) log(w io.Writer, msg string, sev Severity, fields ...interface{ return } - data := make(map[string]interface{}, len(fields)/2) + data := make(map[string]any, len(fields)/2) for i := 0; i < len(fields); i += 2 { key, ok := fields[i].(string) if !ok { @@ -141,11 +141,11 @@ type LogEntry struct { Time *time.Time Severity Severity Message string - Data map[string]interface{} + Data map[string]any } func (l *LogEntry) MarshalJSON() ([]byte, error) { - d := make(map[string]interface{}, 8) + d := make(map[string]any, 8) if l.Time != nil { d["time"] = l.Time.Format(time.RFC3339) diff --git a/pkg/gcrcleaner/server.go b/pkg/gcrcleaner/server.go index a3dc21e..680b4d0 100644 --- a/pkg/gcrcleaner/server.go +++ b/pkg/gcrcleaner/server.go @@ -292,7 +292,7 @@ func (s sortedStringSlice) MarshalJSON() ([]byte, error) { } func (s *sortedStringSlice) UnmarshalJSON(b []byte) error { - var v interface{} + var v any if err := json.Unmarshal(b, &v); err != nil { return err } @@ -304,7 +304,7 @@ func (s *sortedStringSlice) UnmarshalJSON(b []byte) error { if t := strings.TrimSpace(val); t != "" { m[t] = struct{}{} } - case []interface{}: + case any: for i, v := range val { s, ok := v.(string) if !ok { @@ -341,7 +341,7 @@ func (d duration) MarshalJSON() ([]byte, error) { } func (d *duration) UnmarshalJSON(b []byte) error { - var v interface{} + var v any if err := json.Unmarshal(b, &v); err != nil { return err }