Skip to content

Commit 7e9eb82

Browse files
committed
feat: add garbagecollection
1 parent a8457a2 commit 7e9eb82

File tree

2 files changed

+45
-4
lines changed

2 files changed

+45
-4
lines changed

internal/runnable/UsageRunnable.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package runnable
22

33
import (
44
"context"
5+
"errors"
6+
"fmt"
57
"time"
68

79
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -47,11 +49,17 @@ func (u *UsageRunnable) Start(ctx context.Context) error {
4749
}
4850
}
4951

50-
func (u *UsageRunnable) loop(ctx context.Context) error {
52+
func (u *UsageRunnable) loop(ctx context.Context) (errs error) {
53+
5154
err := u.usageTracker.ScheduledEvent(ctx)
5255
if err != nil {
53-
return err
56+
errs = errors.Join(errs, fmt.Errorf("error in scheduled event: %w", err))
57+
}
58+
59+
err = u.usageTracker.GarbageCollection(ctx)
60+
if err != nil {
61+
errs = errors.Join(errs, fmt.Errorf("error in garbage collection: %w", err))
5462
}
5563

56-
return nil
64+
return
5765
}

internal/usage/tracking.go

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,8 +183,41 @@ func (u *UsageTracker) ScheduledEvent(ctx context.Context) error {
183183
errs = errors.Join(errs, err)
184184
}
185185

186+
if errs != nil {
187+
return fmt.Errorf("error when updating the usage: %w", errs)
188+
}
189+
190+
return nil
191+
}
192+
193+
func (u *UsageTracker) GarbageCollection(ctx context.Context) error {
194+
_ = u.log.WithName("scheduled")
195+
196+
var mcpUsages v1.MCPUsageList
197+
err := u.client.List(ctx, &mcpUsages)
186198
if err != nil {
187-
return fmt.Errorf("error when updating the usage: %w", err)
199+
return fmt.Errorf("error when getting list of mcp usages: %w", err)
200+
}
201+
202+
now := time.Now().UTC().Truncate(time.Hour * 24)
203+
oneMonth := time.Hour * 24 * 32
204+
latestTimestamp := now.Add(-oneMonth)
205+
206+
var errs error
207+
for _, mcpUsage := range mcpUsages.Items {
208+
usagesToKeep := make([]v1.DailyUsage, 0, len(mcpUsage.Spec.Usage))
209+
for _, usage := range mcpUsage.Spec.Usage {
210+
if !usage.Date.Time.Before(latestTimestamp) {
211+
usagesToKeep = append(usagesToKeep, usage)
212+
}
213+
}
214+
mcpUsage.Spec.Usage = usagesToKeep
215+
err = u.client.Update(ctx, &mcpUsage)
216+
errs = errors.Join(errs, err)
217+
}
218+
219+
if errs != nil {
220+
return fmt.Errorf("error when updating the usage: %w", errs)
188221
}
189222

190223
return nil

0 commit comments

Comments
 (0)