Documentation ¶
Overview ¶
Package selector provides filtering logic for Amazon EC2 Instance Types based on declarative resource specfications.
Index ¶
- type Filters
- type InstanceTypesOutput
- type InstanceTypesOutputFn
- type IntRangeFilter
- type Selector
- 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) RetrieveInstanceTypesSupportedInLocation(zone string) (map[string]string, error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Filters ¶
type Filters struct { // AvailabilityZone 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 }
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) 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) RetrieveInstanceTypesSupportedInLocation ¶
func (itf Selector) RetrieveInstanceTypesSupportedInLocation(zone string) (map[string]string, error)
RetrieveInstanceTypesSupportedInLocation returns a map of instance type -> AZ or Region for all instance types supported in the location 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