in cmd/main.go [512:553]
func hydrateCaches(ctx context.Context, instanceSelector selector.Selector) (errs error) {
wg := &sync.WaitGroup{}
hydrateTasks := []func(*sync.WaitGroup) error{
func(waitGroup *sync.WaitGroup) error {
defer waitGroup.Done()
if instanceSelector.EC2Pricing.OnDemandCacheCount() == 0 {
if err := instanceSelector.EC2Pricing.RefreshOnDemandCache(ctx); err != nil {
return multierr.Append(errs, fmt.Errorf("there was a problem refreshing the on-demand pricing cache: %w", err))
}
}
return nil
},
func(waitGroup *sync.WaitGroup) error {
defer waitGroup.Done()
if instanceSelector.EC2Pricing.SpotCacheCount() == 0 {
if err := instanceSelector.EC2Pricing.RefreshSpotCache(ctx, spotPricingDaysBack); err != nil {
return multierr.Append(errs, fmt.Errorf("there was a problem refreshing the spot pricing cache: %w", err))
}
}
return nil
},
func(waitGroup *sync.WaitGroup) error {
defer waitGroup.Done()
if instanceSelector.InstanceTypesProvider.CacheCount() == 0 {
if _, err := instanceSelector.InstanceTypesProvider.Get(ctx, nil); err != nil {
return multierr.Append(errs, fmt.Errorf("there was a problem refreshing the instance types cache: %w", err))
}
}
return nil
},
}
wg.Add(len(hydrateTasks))
for _, task := range hydrateTasks {
go func() {
if err := task(wg); err != nil {
log.Printf("Hydrate task error: %v", err)
}
}()
}
wg.Wait()
return errs
}