in pkg/instancetypes/instancetypes.go [64:90]
func LoadFromOrNew(directoryPath string, region string, ttl time.Duration, ec2Client ec2.DescribeInstanceTypesAPIClient) (*Provider, error) {
expandedDirPath, err := homedir.Expand(directoryPath)
if err != nil {
return nil, fmt.Errorf("unable to load instance-type cache directory %s: %w", expandedDirPath, err)
}
if ttl <= 0 {
provider := NewProvider(region, ec2Client)
if err := provider.Clear(); err != nil {
return nil, err
}
return provider, nil
}
itCache, err := loadFrom(ttl, region, expandedDirPath)
if err != nil && !os.IsNotExist(err) {
return nil, fmt.Errorf("unable to load instance-type cache from %s: %w", expandedDirPath, err)
}
if err != nil {
itCache = cache.New(0, 0)
}
return &Provider{
Region: region,
DirectoryPath: expandedDirPath,
ec2Client: ec2Client,
cache: itCache,
logger: log.New(io.Discard, "", 0),
}, nil
}