func()

in pkg/pricing/pricing.go [145:173]


func (p *Provider) UpdateOnDemandPricing(ctx context.Context) *Err {
	// standard on-demand instances
	var wg sync.WaitGroup
	var onDemandPrices = map[string]float64{}
	var onDemandErr error

	wg.Add(1)
	go func() {
		defer wg.Done()
		onDemandErr = p.fetchPricing(ctx, onDemandPage(onDemandPrices))
	}()

	wg.Wait()

	p.mu.Lock()
	defer p.mu.Unlock()
	err := onDemandErr
	if err != nil {
		return &Err{error: err, lastUpdateTime: p.onDemandUpdateTime}
	}

	if len(onDemandPrices) == 0 {
		return &Err{error: errors.New("no on-demand pricing found"), lastUpdateTime: p.onDemandUpdateTime}
	}

	p.onDemandPrices = lo.Assign(onDemandPrices)
	p.onDemandUpdateTime = time.Now()
	return nil
}