in pkg/ec2pricing/ec2pricing.go [256:290]
func (p *EC2Pricing) HydrateOndemandCache() error {
newOnDemandCache := make(map[string]float64)
regionDescription := p.getRegionForPricingAPI()
productInput := pricing.GetProductsInput{
ServiceCode: aws.String(serviceCode),
Filters: []*pricing.Filter{
{Type: aws.String(pricing.FilterTypeTermMatch), Field: aws.String("ServiceCode"), Value: aws.String(serviceCode)},
{Type: aws.String(pricing.FilterTypeTermMatch), Field: aws.String("operatingSystem"), Value: aws.String("linux")},
{Type: aws.String(pricing.FilterTypeTermMatch), Field: aws.String("location"), Value: aws.String(regionDescription)},
{Type: aws.String(pricing.FilterTypeTermMatch), Field: aws.String("capacitystatus"), Value: aws.String("used")},
{Type: aws.String(pricing.FilterTypeTermMatch), Field: aws.String("preInstalledSw"), Value: aws.String("NA")},
{Type: aws.String(pricing.FilterTypeTermMatch), Field: aws.String("tenancy"), Value: aws.String("shared")},
},
}
var processingErr error
errAPI := p.PricingClient.GetProductsPages(&productInput, func(pricingOutput *pricing.GetProductsOutput, nextPage bool) bool {
for _, priceDoc := range pricingOutput.PriceList {
instanceTypeName, price, errParse := parseOndemandUnitPrice(priceDoc)
if errParse != nil {
processingErr = multierr.Append(processingErr, errParse)
continue
}
newOnDemandCache[instanceTypeName] = price
}
return true
})
if errAPI != nil {
return errAPI
}
cTime := time.Now().UTC()
p.onDemandCache = newOnDemandCache
p.lastOnDemandCacheUTC = &cTime
return processingErr
}