github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/provider/ec2/instance_information.go (about)

     1  // Copyright 2016 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package ec2
     5  
     6  import (
     7  	"github.com/juju/errors"
     8  
     9  	"github.com/juju/juju/core/constraints"
    10  	"github.com/juju/juju/environs"
    11  	"github.com/juju/juju/environs/context"
    12  	"github.com/juju/juju/environs/instances"
    13  )
    14  
    15  var _ environs.InstanceTypesFetcher = (*environ)(nil)
    16  
    17  // InstanceTypes implements InstanceTypesFetcher
    18  func (e *environ) InstanceTypes(ctx context.ProviderCallContext, c constraints.Value) (instances.InstanceTypesWithCostMetadata, error) {
    19  	iTypes, err := e.supportedInstanceTypes(ctx)
    20  	if err != nil {
    21  		return instances.InstanceTypesWithCostMetadata{}, errors.Trace(err)
    22  	}
    23  	iTypes, err = instances.MatchingInstanceTypes(iTypes, "", c)
    24  	if err != nil {
    25  		return instances.InstanceTypesWithCostMetadata{}, errors.Trace(err)
    26  	}
    27  	return instances.InstanceTypesWithCostMetadata{
    28  		InstanceTypes: iTypes,
    29  		CostUnit:      "$USD/hour",
    30  		CostDivisor:   1000,
    31  		CostCurrency:  "USD"}, nil
    32  }