github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/provider/azure/instance_information.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package azure 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 = (*azureEnviron)(nil) 16 17 // InstanceTypes implements InstanceTypesFetcher 18 func (env *azureEnviron) InstanceTypes(ctx context.ProviderCallContext, c constraints.Value) (instances.InstanceTypesWithCostMetadata, error) { 19 types, err := env.getInstanceTypes(ctx) 20 if err != nil { 21 return instances.InstanceTypesWithCostMetadata{}, errors.Trace(err) 22 } 23 result := make([]instances.InstanceType, len(types)) 24 i := 0 25 for _, iType := range types { 26 result[i] = iType 27 i++ 28 } 29 result, err = instances.MatchingInstanceTypes(result, "", c) 30 if err != nil { 31 return instances.InstanceTypesWithCostMetadata{}, errors.Trace(err) 32 } 33 34 return instances.InstanceTypesWithCostMetadata{ 35 InstanceTypes: result, 36 CostUnit: "", 37 CostCurrency: "USD"}, nil 38 }