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 }