github.com/danp/terraform@v0.9.5-0.20170426144147-39d740081351/builtin/providers/aws/sort.go (about) 1 package aws 2 3 import ( 4 "sort" 5 "time" 6 7 "github.com/aws/aws-sdk-go/service/ec2" 8 ) 9 10 type imageSort []*ec2.Image 11 type snapshotSort []*ec2.Snapshot 12 13 func (a imageSort) Len() int { 14 return len(a) 15 } 16 17 func (a imageSort) Swap(i, j int) { 18 a[i], a[j] = a[j], a[i] 19 } 20 21 func (a imageSort) Less(i, j int) bool { 22 itime, _ := time.Parse(time.RFC3339, *a[i].CreationDate) 23 jtime, _ := time.Parse(time.RFC3339, *a[j].CreationDate) 24 return itime.Unix() < jtime.Unix() 25 } 26 27 // Sort images by creation date, in descending order. 28 func sortImages(images []*ec2.Image) []*ec2.Image { 29 sortedImages := images 30 sort.Sort(sort.Reverse(imageSort(sortedImages))) 31 return sortedImages 32 } 33 34 func (a snapshotSort) Len() int { 35 return len(a) 36 } 37 38 func (a snapshotSort) Swap(i, j int) { 39 a[i], a[j] = a[j], a[i] 40 } 41 42 func (a snapshotSort) Less(i, j int) bool { 43 itime := *a[i].StartTime 44 jtime := *a[j].StartTime 45 return itime.Unix() < jtime.Unix() 46 } 47 48 // Sort snapshots by creation date, in descending order. 49 func sortSnapshots(snapshots []*ec2.Snapshot) []*ec2.Snapshot { 50 sortedSnapshots := snapshots 51 sort.Sort(sort.Reverse(snapshotSort(sortedSnapshots))) 52 return sortedSnapshots 53 }