in src/statequery/assignments.go [35:61]
func (state *State) RetrieveAssignments(ctx context.Context, project string, cache *Cache) error {
// Create shared BQ reservations client
resClient, err := reservationSDK.NewClient(ctx)
if err != nil {
return err
}
defer resClient.Close()
// Create shared resource manager client
manClient, err := cloudresourcemanagerSDK.NewService(ctx)
if err != nil {
return err
}
// Create sync for concurrent invokations
var wg sync.WaitGroup
wg.Add(len(state.Reservations))
for _, reservation := range state.Reservations {
// Create a per-reservation routine to avoid blocking on I/O during API calls
go retrieveAssignmentReservation(ctx, resClient, manClient, cache, project, state, reservation, &wg)
}
// Synchronize routines
wg.Wait()
return nil
}