Skip to content

Commit 96037df

Browse files
authored
add network and disk filter flags (#123)
* add network and disk filter flags * add inference acceleartor filter support
1 parent 0cd325f commit 96037df

File tree

7 files changed

+336
-157
lines changed

7 files changed

+336
-157
lines changed

README.md

Lines changed: 65 additions & 44 deletions
Large diffs are not rendered by default.

cmd/main.go

Lines changed: 86 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -54,30 +54,41 @@ const (
5454

5555
// Filter Flag Constants
5656
const (
57-
vcpus = "vcpus"
58-
memory = "memory"
59-
vcpusToMemoryRatio = "vcpus-to-memory-ratio"
60-
cpuArchitecture = "cpu-architecture"
61-
gpus = "gpus"
62-
gpuMemoryTotal = "gpu-memory-total"
63-
placementGroupStrategy = "placement-group-strategy"
64-
usageClass = "usage-class"
65-
rootDeviceType = "root-device-type"
66-
enaSupport = "ena-support"
67-
efaSupport = "efa-support"
68-
hibernationSupport = "hibernation-support"
69-
baremetal = "baremetal"
70-
fpgaSupport = "fpga-support"
71-
burstSupport = "burst-support"
72-
hypervisor = "hypervisor"
73-
availabilityZones = "availability-zones"
74-
currentGeneration = "current-generation"
75-
networkInterfaces = "network-interfaces"
76-
networkPerformance = "network-performance"
77-
allowList = "allow-list"
78-
denyList = "deny-list"
79-
virtualizationType = "virtualization-type"
80-
pricePerHour = "price-per-hour"
57+
vcpus = "vcpus"
58+
memory = "memory"
59+
vcpusToMemoryRatio = "vcpus-to-memory-ratio"
60+
cpuArchitecture = "cpu-architecture"
61+
gpus = "gpus"
62+
gpuMemoryTotal = "gpu-memory-total"
63+
inferenceAccelerators = "inference-accelerators"
64+
placementGroupStrategy = "placement-group-strategy"
65+
usageClass = "usage-class"
66+
rootDeviceType = "root-device-type"
67+
enaSupport = "ena-support"
68+
efaSupport = "efa-support"
69+
hibernationSupport = "hibernation-support"
70+
baremetal = "baremetal"
71+
fpgaSupport = "fpga-support"
72+
burstSupport = "burst-support"
73+
hypervisor = "hypervisor"
74+
availabilityZones = "availability-zones"
75+
currentGeneration = "current-generation"
76+
networkInterfaces = "network-interfaces"
77+
networkPerformance = "network-performance"
78+
networkEncryption = "network-encryption"
79+
ipv6 = "ipv6"
80+
allowList = "allow-list"
81+
denyList = "deny-list"
82+
virtualizationType = "virtualization-type"
83+
pricePerHour = "price-per-hour"
84+
instanceStorage = "instance-storage"
85+
diskType = "disk-type"
86+
diskEncryption = "disk-encryption"
87+
nvme = "nvme"
88+
ebsOptimized = "ebs-optimized"
89+
ebsOptimizedBaselineBandwidth = "ebs-optimized-baseline-bandwidth"
90+
ebsOptimizedBaselineThroughput = "ebs-optimized-baseline-throughput"
91+
ebsOptimizedBaselineIOPS = "ebs-optimized-baseline-iops"
8192
)
8293

8394
// Aggregate Filter Flags
@@ -137,6 +148,7 @@ Full docs can be found at github.com/aws/amazon-` + binName
137148
cli.StringOptionsFlag(cpuArchitecture, cli.StringMe("a"), nil, "CPU architecture [x86_64/amd64, x86_64_mac, i386, or arm64]", []string{"x86_64", "x86_64_mac", "amd64", "i386", "arm64"})
138149
cli.IntMinMaxRangeFlags(gpus, cli.StringMe("g"), nil, "Total Number of GPUs (Example: 4)")
139150
cli.ByteQuantityMinMaxRangeFlags(gpuMemoryTotal, nil, nil, "Number of GPUs' total memory (Example: 4 GiB)")
151+
cli.IntMinMaxRangeFlags(inferenceAccelerators, nil, nil, "Total Number of inference accelerators (Example: 4)")
140152
cli.StringOptionsFlag(placementGroupStrategy, nil, nil, "Placement group strategy: [cluster, partition, spread]", []string{"cluster", "partition", "spread"})
141153
cli.StringOptionsFlag(usageClass, cli.StringMe("u"), nil, "Usage class: [spot or on-demand]", []string{"spot", "on-demand"})
142154
cli.StringOptionsFlag(rootDeviceType, nil, nil, "Supported root device types: [ebs or instance-store]", []string{"ebs", "instance-store"})
@@ -151,10 +163,20 @@ Full docs can be found at github.com/aws/amazon-` + binName
151163
cli.BoolFlag(currentGeneration, nil, nil, "Current generation instance types (explicitly set this to false to not return current generation instance types)")
152164
cli.IntMinMaxRangeFlags(networkInterfaces, nil, nil, "Number of network interfaces (ENIs) that can be attached to the instance")
153165
cli.IntMinMaxRangeFlags(networkPerformance, nil, nil, "Bandwidth in Gib/s of network performance (Example: 100)")
166+
cli.BoolFlag(networkEncryption, nil, nil, "Instance Types that support automatic network encryption in-transit")
167+
cli.BoolFlag(ipv6, nil, nil, "Instance Types that support IPv6")
154168
cli.RegexFlag(allowList, nil, nil, "List of allowed instance types to select from w/ regex syntax (Example: m[3-5]\\.*)")
155169
cli.RegexFlag(denyList, nil, nil, "List of instance types which should be excluded w/ regex syntax (Example: m[1-2]\\.*)")
156170
cli.StringOptionsFlag(virtualizationType, nil, nil, "Virtualization Type supported: [hvm or pv]", []string{"hvm", "paravirtual", "pv"})
157171
cli.Float64MinMaxRangeFlags(pricePerHour, nil, nil, "Price/hour in USD (Example: 0.09)")
172+
cli.ByteQuantityMinMaxRangeFlags(instanceStorage, nil, nil, "Amount of local instance storage (Example: 4 GiB)")
173+
cli.StringOptionsFlag(diskType, nil, nil, "Disk Type: [hdd or ssd]", []string{"hdd", "ssd"})
174+
cli.BoolFlag(nvme, nil, nil, "EBS or local instance storage where NVME is supported or required")
175+
cli.BoolFlag(diskEncryption, nil, nil, "EBS or local instance storage where encryption is supported or required")
176+
cli.BoolFlag(ebsOptimized, nil, nil, "EBS Optimized is supported or default")
177+
cli.ByteQuantityMinMaxRangeFlags(ebsOptimizedBaselineBandwidth, nil, nil, "EBS Optimized baseline bandwidth (Example: 4 GiB)")
178+
cli.ByteQuantityMinMaxRangeFlags(ebsOptimizedBaselineThroughput, nil, nil, "EBS Optimized baseline throughput per second (Example: 4 GiB)")
179+
cli.IntMinMaxRangeFlags(ebsOptimizedBaselineIOPS, nil, nil, "EBS Optimized baseline IOPS per second (Example: 10000)")
158180

159181
// Suite Flags - higher level aggregate filters that return opinionated result
160182

@@ -230,35 +252,46 @@ Full docs can be found at github.com/aws/amazon-` + binName
230252
}
231253

232254
filters := selector.Filters{
233-
VCpusRange: cli.IntRangeMe(flags[vcpus]),
234-
MemoryRange: cli.ByteQuantityRangeMe(flags[memory]),
235-
VCpusToMemoryRatio: cli.Float64Me(flags[vcpusToMemoryRatio]),
236-
CPUArchitecture: cli.StringMe(flags[cpuArchitecture]),
237-
GpusRange: cli.IntRangeMe(flags[gpus]),
238-
GpuMemoryRange: cli.ByteQuantityRangeMe(flags[gpuMemoryTotal]),
239-
PlacementGroupStrategy: cli.StringMe(flags[placementGroupStrategy]),
240-
UsageClass: cli.StringMe(flags[usageClass]),
241-
RootDeviceType: cli.StringMe(flags[rootDeviceType]),
242-
EnaSupport: cli.BoolMe(flags[enaSupport]),
243-
EfaSupport: cli.BoolMe(flags[efaSupport]),
244-
HibernationSupported: cli.BoolMe(flags[hibernationSupport]),
245-
Hypervisor: cli.StringMe(flags[hypervisor]),
246-
BareMetal: cli.BoolMe(flags[baremetal]),
247-
Fpga: cli.BoolMe(flags[fpgaSupport]),
248-
Burstable: cli.BoolMe(flags[burstSupport]),
249-
Region: cli.StringMe(flags[region]),
250-
AvailabilityZones: cli.StringSliceMe(flags[availabilityZones]),
251-
CurrentGeneration: cli.BoolMe(flags[currentGeneration]),
252-
MaxResults: cli.IntMe(flags[maxResults]),
253-
NetworkInterfaces: cli.IntRangeMe(flags[networkInterfaces]),
254-
NetworkPerformance: cli.IntRangeMe(flags[networkPerformance]),
255-
AllowList: cli.RegexMe(flags[allowList]),
256-
DenyList: cli.RegexMe(flags[denyList]),
257-
InstanceTypeBase: cli.StringMe(flags[instanceTypeBase]),
258-
Flexible: cli.BoolMe(flags[flexible]),
259-
Service: cli.StringMe(flags[service]),
260-
VirtualizationType: cli.StringMe(flags[virtualizationType]),
261-
PricePerHour: cli.Float64RangeMe(flags[pricePerHour]),
255+
VCpusRange: cli.IntRangeMe(flags[vcpus]),
256+
MemoryRange: cli.ByteQuantityRangeMe(flags[memory]),
257+
VCpusToMemoryRatio: cli.Float64Me(flags[vcpusToMemoryRatio]),
258+
CPUArchitecture: cli.StringMe(flags[cpuArchitecture]),
259+
GpusRange: cli.IntRangeMe(flags[gpus]),
260+
GpuMemoryRange: cli.ByteQuantityRangeMe(flags[gpuMemoryTotal]),
261+
InferenceAcceleratorsRange: cli.IntRangeMe(flags[inferenceAccelerators]),
262+
PlacementGroupStrategy: cli.StringMe(flags[placementGroupStrategy]),
263+
UsageClass: cli.StringMe(flags[usageClass]),
264+
RootDeviceType: cli.StringMe(flags[rootDeviceType]),
265+
EnaSupport: cli.BoolMe(flags[enaSupport]),
266+
EfaSupport: cli.BoolMe(flags[efaSupport]),
267+
HibernationSupported: cli.BoolMe(flags[hibernationSupport]),
268+
Hypervisor: cli.StringMe(flags[hypervisor]),
269+
BareMetal: cli.BoolMe(flags[baremetal]),
270+
Fpga: cli.BoolMe(flags[fpgaSupport]),
271+
Burstable: cli.BoolMe(flags[burstSupport]),
272+
Region: cli.StringMe(flags[region]),
273+
AvailabilityZones: cli.StringSliceMe(flags[availabilityZones]),
274+
CurrentGeneration: cli.BoolMe(flags[currentGeneration]),
275+
MaxResults: cli.IntMe(flags[maxResults]),
276+
NetworkInterfaces: cli.IntRangeMe(flags[networkInterfaces]),
277+
NetworkPerformance: cli.IntRangeMe(flags[networkPerformance]),
278+
NetworkEncryption: cli.BoolMe(flags[networkEncryption]),
279+
IPv6: cli.BoolMe(flags[ipv6]),
280+
AllowList: cli.RegexMe(flags[allowList]),
281+
DenyList: cli.RegexMe(flags[denyList]),
282+
InstanceTypeBase: cli.StringMe(flags[instanceTypeBase]),
283+
Flexible: cli.BoolMe(flags[flexible]),
284+
Service: cli.StringMe(flags[service]),
285+
VirtualizationType: cli.StringMe(flags[virtualizationType]),
286+
PricePerHour: cli.Float64RangeMe(flags[pricePerHour]),
287+
InstanceStorageRange: cli.ByteQuantityRangeMe(flags[instanceStorage]),
288+
DiskType: cli.StringMe(flags[diskType]),
289+
DiskEncryption: cli.BoolMe(flags[diskEncryption]),
290+
NVME: cli.BoolMe(flags[nvme]),
291+
EBSOptimized: cli.BoolMe(flags[ebsOptimized]),
292+
EBSOptimizedBaselineBandwidth: cli.ByteQuantityRangeMe(flags[ebsOptimizedBaselineBandwidth]),
293+
EBSOptimizedBaselineThroughput: cli.ByteQuantityRangeMe(flags[ebsOptimizedBaselineThroughput]),
294+
EBSOptimizedBaselineIOPS: cli.IntRangeMe(flags[ebsOptimizedBaselineIOPS]),
262295
}
263296

264297
if flags[verbose] != nil {

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module github.com/aws/amazon-ec2-instance-selector/v2
33
go 1.17
44

55
require (
6-
github.com/aws/aws-sdk-go v1.38.27
6+
github.com/aws/aws-sdk-go v1.43.31
77
github.com/blang/semver/v4 v4.0.0
88
github.com/ghodss/yaml v1.0.0
99
github.com/hashicorp/hcl v1.0.0

go.sum

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAE
44
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
55
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
66
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
7-
github.com/aws/aws-sdk-go v1.38.27 h1:jQAUnMGWH33STZ7djdeSlNlXZf/Jhuij9172x7U5/HE=
8-
github.com/aws/aws-sdk-go v1.38.27/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=
7+
github.com/aws/aws-sdk-go v1.43.31 h1:yJZIr8nMV1hXjAvvOLUFqZRJcHV7udPQBfhJqawDzI0=
8+
github.com/aws/aws-sdk-go v1.43.31/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
99
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
1010
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
1111
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
@@ -125,16 +125,14 @@ go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/
125125
go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
126126
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
127127
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
128-
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
129128
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
130129
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
131130
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
132131
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
133132
golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
134133
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
135-
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
136134
golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
137-
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
135+
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
138136
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
139137
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
140138
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -144,10 +142,11 @@ golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5h
144142
golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
145143
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
146144
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
147-
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
148-
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
145+
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
146+
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
147+
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
149148
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
150-
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
149+
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
151150
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
152151
golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
153152
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=

pkg/selector/comparators.go

Lines changed: 68 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,17 @@ func isSupportedWithBool(instanceTypeValue *bool, target *bool) bool {
111111

112112
// Helper functions for aggregating data parsed from AWS API calls
113113

114+
func getTotalAcceleratorsCount(acceleratorInfo *ec2.InferenceAcceleratorInfo) *int64 {
115+
if acceleratorInfo == nil {
116+
return nil
117+
}
118+
total := aws.Int64(0)
119+
for _, accel := range acceleratorInfo.Accelerators {
120+
total = aws.Int64(*total + *accel.Count)
121+
}
122+
return total
123+
}
124+
114125
func getTotalGpusCount(gpusInfo *ec2.GpuInfo) *int64 {
115126
if gpusInfo == nil {
116127
return nil
@@ -153,13 +164,68 @@ func getNetworkPerformance(networkPerformance *string) *int {
153164
return aws.Int(bandwidthNumber)
154165
}
155166

156-
// supportSyntaxToBool takes an instance spec field that uses ["unsupported", "supported", or "required"]
167+
func getInstanceStorage(instanceStorageInfo *ec2.InstanceStorageInfo) *int64 {
168+
if instanceStorageInfo == nil {
169+
return aws.Int64(0)
170+
}
171+
return aws.Int64(*instanceStorageInfo.TotalSizeInGB * 1024)
172+
}
173+
174+
func getDiskType(instanceStorageInfo *ec2.InstanceStorageInfo) *string {
175+
if instanceStorageInfo == nil || len(instanceStorageInfo.Disks) == 0 {
176+
return nil
177+
}
178+
return instanceStorageInfo.Disks[0].Type
179+
}
180+
181+
func getNVMESupport(instanceStorageInfo *ec2.InstanceStorageInfo, ebsInfo *ec2.EbsInfo) *bool {
182+
if instanceStorageInfo != nil {
183+
return supportSyntaxToBool(instanceStorageInfo.NvmeSupport)
184+
}
185+
if ebsInfo != nil {
186+
return supportSyntaxToBool(ebsInfo.EbsOptimizedSupport)
187+
}
188+
return aws.Bool(false)
189+
}
190+
191+
func getDiskEncryptionSupport(instanceStorageInfo *ec2.InstanceStorageInfo, ebsInfo *ec2.EbsInfo) *bool {
192+
if instanceStorageInfo != nil {
193+
return supportSyntaxToBool(instanceStorageInfo.EncryptionSupport)
194+
}
195+
if ebsInfo != nil {
196+
return supportSyntaxToBool(ebsInfo.EncryptionSupport)
197+
}
198+
return aws.Bool(false)
199+
}
200+
201+
func getEBSOptimizedBaselineBandwidth(ebsInfo *ec2.EbsInfo) *int64 {
202+
if ebsInfo == nil || ebsInfo.EbsOptimizedInfo == nil {
203+
return nil
204+
}
205+
return ebsInfo.EbsOptimizedInfo.BaselineBandwidthInMbps
206+
}
207+
208+
func getEBSOptimizedBaselineThroughput(ebsInfo *ec2.EbsInfo) *float64 {
209+
if ebsInfo == nil || ebsInfo.EbsOptimizedInfo == nil {
210+
return nil
211+
}
212+
return ebsInfo.EbsOptimizedInfo.BaselineThroughputInMBps
213+
}
214+
215+
func getEBSOptimizedBaselineIOPS(ebsInfo *ec2.EbsInfo) *int64 {
216+
if ebsInfo == nil || ebsInfo.EbsOptimizedInfo == nil {
217+
return nil
218+
}
219+
return ebsInfo.EbsOptimizedInfo.BaselineIops
220+
}
221+
222+
// supportSyntaxToBool takes an instance spec field that uses ["unsupported", "supported", "required", or "default"]
157223
// and transforms it to a *bool to use in filter execution
158224
func supportSyntaxToBool(instanceTypeSupport *string) *bool {
159225
if instanceTypeSupport == nil {
160226
return nil
161227
}
162-
if strings.ToLower(*instanceTypeSupport) == required || strings.ToLower(*instanceTypeSupport) == supported {
228+
if strings.ToLower(*instanceTypeSupport) == required || strings.ToLower(*instanceTypeSupport) == supported || strings.ToLower(*instanceTypeSupport) == "default" {
163229
return aws.Bool(true)
164230
}
165231
return aws.Bool(false)

0 commit comments

Comments
 (0)