Make buildEC2AttributeFilterList output sorted

Makes the output deterministic
This commit is contained in:
James Bardin 2016-10-14 12:22:45 -04:00
parent fecc218505
commit 7d0ed45ec9
2 changed files with 16 additions and 6 deletions

View File

@ -2,6 +2,7 @@ package aws
import (
"fmt"
"sort"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/ec2"
@ -31,9 +32,18 @@ import (
// the EC2 API, to aid in the implementation of Terraform data sources that
// retrieve data about EC2 objects.
func buildEC2AttributeFilterList(attrs map[string]string) []*ec2.Filter {
filters := make([]*ec2.Filter, 0, len(attrs))
var filters []*ec2.Filter
for filterName, value := range attrs {
// sort the filters by name to make the output deterministic
var names []string
for filterName := range attrs {
names = append(names, filterName)
}
sort.Strings(names)
for _, filterName := range names {
value := attrs[filterName]
if value == "" {
continue
}

View File

@ -22,14 +22,14 @@ func TestBuildEC2AttributeFilterList(t *testing.T) {
"baz": "boo",
},
[]*ec2.Filter{
{
Name: aws.String("foo"),
Values: []*string{aws.String("bar")},
},
{
Name: aws.String("baz"),
Values: []*string{aws.String("boo")},
},
{
Name: aws.String("foo"),
Values: []*string{aws.String("bar")},
},
},
},
{