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  }