github.com/rogpeppe/juju@v0.0.0-20140613142852-6337964b789e/provider/common/supportedarchitectures.go (about)

     1  // Copyright 2014 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package common
     5  
     6  import (
     7  	"github.com/juju/utils/set"
     8  
     9  	"github.com/juju/juju/environs"
    10  	"github.com/juju/juju/environs/imagemetadata"
    11  	"github.com/juju/juju/environs/simplestreams"
    12  )
    13  
    14  // SupportedArchitectures returns all the image architectures for env matching the constraints.
    15  func SupportedArchitectures(env environs.Environ, imageConstraint *imagemetadata.ImageConstraint) ([]string, error) {
    16  	sources, err := imagemetadata.GetMetadataSources(env)
    17  	if err != nil {
    18  		return nil, err
    19  	}
    20  	matchingImages, _, err := imagemetadata.Fetch(sources, simplestreams.DefaultIndexPath, imageConstraint, false)
    21  	if err != nil {
    22  		return nil, err
    23  	}
    24  	var arches = set.NewStrings()
    25  	for _, im := range matchingImages {
    26  		arches.Add(im.Arch)
    27  	}
    28  	return arches.Values(), nil
    29  }