@@ -81,7 +81,8 @@ func New(sess *session.Session) *Selector {
81
81
// matching the criteria within Filters and returns a simple list of instance type strings
82
82
func (itf Selector ) Filter (filters Filters ) ([]string , error ) {
83
83
outputFn := InstanceTypesOutputFn (outputs .SimpleInstanceTypeOutput )
84
- return itf .FilterWithOutput (filters , outputFn )
84
+ output , _ , err := itf .FilterWithOutput (filters , outputFn )
85
+ return output , err
85
86
}
86
87
87
88
// FilterVerbose accepts a Filters struct which is used to select the available instance types
@@ -91,31 +92,31 @@ func (itf Selector) FilterVerbose(filters Filters) ([]*ec2.InstanceTypeInfo, err
91
92
if err != nil {
92
93
return nil , err
93
94
}
94
- instanceTypeInfoSlice = itf .truncateResults (filters .MaxResults , instanceTypeInfoSlice )
95
+ instanceTypeInfoSlice , _ = itf .truncateResults (filters .MaxResults , instanceTypeInfoSlice )
95
96
return instanceTypeInfoSlice , nil
96
97
}
97
98
98
99
// FilterWithOutput accepts a Filters struct which is used to select the available instance types
99
100
// matching the criteria within Filters and returns a list of strings based on the custom outputFn
100
- func (itf Selector ) FilterWithOutput (filters Filters , outputFn InstanceTypesOutput ) ([]string , error ) {
101
+ func (itf Selector ) FilterWithOutput (filters Filters , outputFn InstanceTypesOutput ) ([]string , int , error ) {
101
102
instanceTypeInfoSlice , err := itf .rawFilter (filters )
102
103
if err != nil {
103
- return nil , err
104
+ return nil , 0 , err
104
105
}
105
- instanceTypeInfoSlice = itf .truncateResults (filters .MaxResults , instanceTypeInfoSlice )
106
+ instanceTypeInfoSlice , numOfItemsTruncated : = itf .truncateResults (filters .MaxResults , instanceTypeInfoSlice )
106
107
output := outputFn .Output (instanceTypeInfoSlice )
107
- return output , nil
108
+ return output , numOfItemsTruncated , nil
108
109
}
109
110
110
- func (itf Selector ) truncateResults (maxResults * int , instanceTypeInfoSlice []* ec2.InstanceTypeInfo ) []* ec2.InstanceTypeInfo {
111
+ func (itf Selector ) truncateResults (maxResults * int , instanceTypeInfoSlice []* ec2.InstanceTypeInfo ) ( []* ec2.InstanceTypeInfo , int ) {
111
112
if maxResults == nil {
112
- return instanceTypeInfoSlice
113
+ return instanceTypeInfoSlice , 0
113
114
}
114
115
upperIndex := * maxResults
115
116
if * maxResults > len (instanceTypeInfoSlice ) {
116
117
upperIndex = len (instanceTypeInfoSlice )
117
118
}
118
- return instanceTypeInfoSlice [0 :upperIndex ]
119
+ return instanceTypeInfoSlice [0 :upperIndex ], len ( instanceTypeInfoSlice ) - upperIndex
119
120
}
120
121
121
122
// AggregateFilterTransform takes higher level filters which are used to affect multiple raw filters in an opinionated way.
0 commit comments