Documentation
¶
Overview ¶
Package selector provides filtering logic for Amazon EC2 Instance Types based on declarative resource specfications.
Index ¶
- Constants
- type Filters
- type InstanceTypesOutput
- type InstanceTypesOutputFn
- type IntRangeFilter
- type Selector
- func (itf Selector) AggregateFilterTransform(filters Filters, lowerPercentile float64, upperPercentile float64) (Filters, error)
- func (itf Selector) Filter(filters Filters) ([]string, error)
- func (itf Selector) FilterVerbose(filters Filters) ([]*ec2.InstanceTypeInfo, error)
- func (itf Selector) FilterWithOutput(filters Filters, outputFn InstanceTypesOutput) ([]string, error)
- func (itf Selector) RetrieveInstanceTypesSupportedInLocations(locations []string) (map[string]string, error)
Constants ¶
const ( // AggregateLowPercentile is the default lower percentile for resource ranges on similar instance type comparisons AggregateLowPercentile = 0.8 // AggregateHighPercentile is the default upper percentile for resource ranges on similar instance type comparisons AggregateHighPercentile = 1.2 )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Filters ¶
type Filters struct {
// AvailabilityZones is the AWS Availability Zones where instances will be provisioned.
// Instance type capacity can vary between availability zones.
// Will accept zone names or ids
// Example: us-east-1a, us-east-1b, us-east-2a, etc. OR use1-az1, use2-az2, etc.
AvailabilityZones *[]string
// AvailabilityZone [DEPRECATED] is the AWS Availability Zone where instances will be provisioned.
// Instance type capacity can vary between availability zones.
// Will accept zone name or id
// Example: us-east-1a, us-east-1b, us-east-2a, etc. OR use1-az1, use2-az2, etc.
AvailabilityZone *string
// BareMetal is used to only return bare metal instance type results
BareMetal *bool
// Burstable is used to only return burstable instance type results like the t* series
Burstable *bool
// CPUArchitecture of the EC2 instance type
// Possible values are: x86_64 or arm64
CPUArchitecture *string
// CurrentGeneration returns the latest generation of instance types
CurrentGeneration *bool
// EnaSupport returns instances that can support an Elastic Network Adapter.
EnaSupport *bool
// FPGA is used to only return FPGA instance type results
Fpga *bool
// GpusRange filter is a range of acceptable GPU count available to an EC2 instance type
GpusRange *IntRangeFilter
// GpuMemoryRange filter is a range of acceptable GPU memory available to an EC2 instance type in aggreagte across all GPUs.
GpuMemoryRange *IntRangeFilter
// HibernationSupported denotes whether EC2 hibernate is supported
// Possible values are: true or false
HibernationSupported *bool
// Hypervisor is used to return only a specific hypervisor backed instance type
// Possibly values are: xen or nitro
Hypervisor *string
// MaxResults is the maximum number of instance types to return that match the filter criteria
MaxResults *int
// MemoryRange filter is a range of acceptable DRAM memory in Mebibytes (MiB) for the instance type
MemoryRange *IntRangeFilter
// NetworkInterfaces filter is a range of the number of ENI attachments an instance type can support
NetworkInterfaces *IntRangeFilter
// NetworkPerformance filter is a range of network bandwidth an instance type can support
NetworkPerformance *IntRangeFilter
// PlacementGroupStrategy is used to return instance types based on its support
// for a specific placement group strategy
// Possible values are: cluster, spread, or partition
PlacementGroupStrategy *string
// Region is the AWS Region where instances will be provisioned.
// Instance type availability can vary between AWS Regions.
// Example: us-east-1, us-east-2, eu-west-1, etc.
Region *string
// RootDeviceType is the backing device of the root storage volume
// Possible values are: instance-store or ebs
RootDeviceType *string
// UsageClass of the instance EC2 instance type
// Possible values are: spot or on-demand
UsageClass *string
// VCpusRange filter is a range of acceptable VCpus for the instance type
VCpusRange *IntRangeFilter
// VcpusToMemoryRatio is a ratio of vcpus to memory expressed as a floating point
VCpusToMemoryRatio *float64
// AllowList is a regex of allowed instance types
AllowList *regexp.Regexp
// DenyList is a regex of excluded instance types
DenyList *regexp.Regexp
// InstanceTypeBase is a base instance type which is used to retrieve similarly spec'd instance types
InstanceTypeBase *string
}
Filters is used to group instance type resource attributes for filtering
type InstanceTypesOutput ¶
type InstanceTypesOutput interface {
Output([]*ec2.InstanceTypeInfo) []string
}
InstanceTypesOutput can be implemented to provide custom output to instance type results
type InstanceTypesOutputFn ¶
type InstanceTypesOutputFn func([]*ec2.InstanceTypeInfo) []string
InstanceTypesOutputFn is the func type definition for InstanceTypesOuput
func (InstanceTypesOutputFn) Output ¶
func (fn InstanceTypesOutputFn) Output(instanceTypes []*ec2.InstanceTypeInfo) []string
Output implements InstanceTypesOutput interface on InstanceTypesOutputFn This allows any InstanceTypesOutputFn to be passed into funcs accepting InstanceTypesOutput interface
type IntRangeFilter ¶
IntRangeFilter holds an upper and lower bound int The lower and upper bound are used to range filter resource specs
type Selector ¶
Selector is used to filter instance type resource specs
func (Selector) AggregateFilterTransform ¶ added in v1.1.0
func (itf Selector) AggregateFilterTransform(filters Filters, lowerPercentile float64, upperPercentile float64) (Filters, error)
AggregateFilterTransform takes higher level filters which are used to affect multiple raw filters in an opinionated way.
func (Selector) Filter ¶
Filter accepts a Filters struct which is used to select the available instance types matching the criteria within Filters and returns a simple list of instance type strings
func (Selector) FilterVerbose ¶
func (itf Selector) FilterVerbose(filters Filters) ([]*ec2.InstanceTypeInfo, error)
FilterVerbose accepts a Filters struct which is used to select the available instance types matching the criteria within Filters and returns a list instanceTypeInfo
func (Selector) FilterWithOutput ¶
func (itf Selector) FilterWithOutput(filters Filters, outputFn InstanceTypesOutput) ([]string, error)
FilterWithOutput accepts a Filters struct which is used to select the available instance types matching the criteria within Filters and returns a list of strings based on the custom outputFn
func (Selector) RetrieveInstanceTypesSupportedInLocations ¶ added in v1.1.0
func (itf Selector) RetrieveInstanceTypesSupportedInLocations(locations []string) (map[string]string, error)
RetrieveInstanceTypesSupportedInLocations returns a map of instance type -> AZ or Region for all instance types supported in the intersected locations passed in The location can be a zone-id (ie. use1-az1), a zone-name (us-east-1a), or a region name (us-east-1). Note that zone names are not necessarily the same across accounts