@@ -77,8 +77,9 @@ func (p *FederatedProvider) Poll(ctx context.Context) (provider.PollResult, erro
7777
7878 // For each known pool, check if we need a grant
7979 // Note: In a real implementation, we might need to know which pools *should* exist from config.
80- // For now, we only manage pools we've seen usage for or that are pre-seeded.
81- // TODO: Allow pre-seeding pools.
80+ // For now, we only manage pools we've seen usage for or that are pre-seeded via RegisterPool.
81+
82+ var pollErrors []error
8283
8384 for poolID , state := range p .pools {
8485 // Logic: If remaining is low (< 20%) or expired, ask for more.
@@ -115,8 +116,9 @@ func (p *FederatedProvider) Poll(ctx context.Context) (provider.PollResult, erro
115116 granted , validUntil , err := p .requestGrant (ctx , req )
116117 if err != nil {
117118 // Log error but continue with other pools
118- // TODO: Add error to result
119- fmt .Printf ("federated_provider: failed to get grant for %s: %v\n " , poolID , err )
119+ err = fmt .Errorf ("failed to get grant for %s: %w" , poolID , err )
120+ pollErrors = append (pollErrors , err )
121+ fmt .Printf ("federated_provider: %v\n " , err )
120122 } else {
121123 // Update State
122124 // Strategy: New grant *adds* to existing? Or replaces?
@@ -142,6 +144,11 @@ func (p *FederatedProvider) Poll(ctx context.Context) (provider.PollResult, erro
142144 result .Usage = append (result .Usage , obs )
143145 }
144146
147+ if len (pollErrors ) > 0 {
148+ result .Status = "partial"
149+ result .Error = fmt .Errorf ("encountered %d errors during poll: %v" , len (pollErrors ), pollErrors )
150+ }
151+
145152 return result , nil
146153}
147154
0 commit comments