Documentation ¶
Index ¶
- Constants
- Variables
- func AWSErrorCode(err error) string
- func AWSErrorMessage(err error) string
- func FindASGTag(tags []*autoscaling.TagDescription, key string) (string, bool)
- func FindEC2Tag(tags []*ec2.Tag, key string) (string, bool)
- func FindELBTag(tags []*elb.Tag, key string) (string, bool)
- func NewEC2Filter(name string, values ...string) *ec2.Filter
- func ValidateRegion(region string) error
- type AWSAPITarget
- func (t *AWSAPITarget) AddAWSTags(id string, expected map[string]string) error
- func (t *AWSAPITarget) AddELBTags(loadBalancerName string, expected map[string]string) error
- func (t *AWSAPITarget) Finish(taskMap map[string]fi.Task) error
- func (t *AWSAPITarget) WaitForInstanceRunning(instanceID string) error
- type AWSCloud
- func (c *AWSCloud) AddAWSTags(id string, expected map[string]string) error
- func (c *AWSCloud) AddTags(name *string, tags map[string]string)
- func (c *AWSCloud) BuildFilters(name *string) []*ec2.Filter
- func (c *AWSCloud) BuildTags(name *string) map[string]string
- func (c *AWSCloud) CreateELBTags(loadBalancerName string, tags map[string]string) error
- func (c *AWSCloud) CreateTags(resourceId string, tags map[string]string) error
- func (c *AWSCloud) DeleteTags(resourceId string, tags map[string]string) error
- func (t *AWSCloud) DescribeInstance(instanceID string) (*ec2.Instance, error)
- func (t *AWSCloud) DescribeVPC(vpcID string) (*ec2.Vpc, error)
- func (c *AWSCloud) FindDNSHostedZone(clusterDNSName string) (string, error)
- func (c *AWSCloud) GetELBTags(loadBalancerName string) (map[string]string, error)
- func (c *AWSCloud) GetTags(resourceId string) (map[string]string, error)
- func (c *AWSCloud) ProviderID() fi.CloudProviderID
- func (c *AWSCloud) ResolveImage(name string) (*ec2.Image, error)
- func (c *AWSCloud) Tags() map[string]string
- func (c *AWSCloud) ValidateZones(zones []string) error
- type AWSMachineTypeInfo
- type EphemeralDevice
Constants ¶
const BurstableCreditsToECUS float32 = 3.0 / 60.0
I believe one vCPU ~ 3 ECUS, and 60 CPU credits would be needed to use one vCPU for an hour
const MaxCreateTagsAttempts = 60
const MaxDescribeTagsAttempts = 60
const TagClusterName = "KubernetesCluster"
Variables ¶
var MachineTypes []AWSMachineTypeInfo = []AWSMachineTypeInfo{ { Name: "t2.nano", MemoryGB: 0.5, ECU: 3 * BurstableCreditsToECUS, Cores: 1, EphemeralDisks: nil, Burstable: true, }, { Name: "t2.micro", MemoryGB: 1, ECU: 6 * BurstableCreditsToECUS, Cores: 1, EphemeralDisks: nil, Burstable: true, }, { Name: "t2.small", MemoryGB: 2, ECU: 12 * BurstableCreditsToECUS, Cores: 1, EphemeralDisks: nil, Burstable: true, }, { Name: "t2.medium", MemoryGB: 4, ECU: 24 * BurstableCreditsToECUS, Cores: 2, EphemeralDisks: nil, Burstable: true, }, { Name: "t2.large", MemoryGB: 8, ECU: 36 * BurstableCreditsToECUS, Cores: 2, EphemeralDisks: nil, Burstable: true, }, { Name: "m3.medium", MemoryGB: 3.75, ECU: 3, Cores: 1, EphemeralDisks: []int{4}, }, { Name: "m3.large", MemoryGB: 7.5, ECU: 6.5, Cores: 2, EphemeralDisks: []int{32}, }, { Name: "m3.xlarge", MemoryGB: 15, ECU: 13, Cores: 4, EphemeralDisks: []int{40, 40}, }, { Name: "m3.2xlarge", MemoryGB: 30, ECU: 26, Cores: 8, EphemeralDisks: []int{80, 80}, }, { Name: "m4.large", MemoryGB: 8, ECU: 6.5, Cores: 2, EphemeralDisks: nil, }, { Name: "m4.xlarge", MemoryGB: 16, ECU: 13, Cores: 4, EphemeralDisks: nil, }, { Name: "m4.2xlarge", MemoryGB: 32, ECU: 26, Cores: 8, EphemeralDisks: nil, }, { Name: "m4.4xlarge", MemoryGB: 64, ECU: 53.5, Cores: 16, EphemeralDisks: nil, }, { Name: "m4.10xlarge", MemoryGB: 160, ECU: 124.5, Cores: 40, EphemeralDisks: nil, }, { Name: "c3.large", MemoryGB: 3.75, ECU: 7, Cores: 2, EphemeralDisks: []int{16, 16}, }, { Name: "c3.xlarge", MemoryGB: 7.5, ECU: 14, Cores: 4, EphemeralDisks: []int{40, 40}, }, { Name: "c3.2xlarge", MemoryGB: 15, ECU: 28, Cores: 8, EphemeralDisks: []int{80, 80}, }, { Name: "c3.4xlarge", MemoryGB: 30, ECU: 55, Cores: 16, EphemeralDisks: []int{160, 160}, }, { Name: "c3.8xlarge", MemoryGB: 60, ECU: 108, Cores: 32, EphemeralDisks: []int{320, 320}, }, { Name: "c4.large", MemoryGB: 3.75, ECU: 8, Cores: 2, EphemeralDisks: nil, }, { Name: "c4.xlarge", MemoryGB: 7.5, ECU: 16, Cores: 4, EphemeralDisks: nil, }, { Name: "c4.2xlarge", MemoryGB: 15, ECU: 31, Cores: 8, EphemeralDisks: nil, }, { Name: "c4.4xlarge", MemoryGB: 30, ECU: 62, Cores: 16, EphemeralDisks: nil, }, { Name: "c4.8xlarge", MemoryGB: 60, ECU: 132, Cores: 32, EphemeralDisks: nil, }, { Name: "cc2.8xlarge", MemoryGB: 60.5, ECU: 88, Cores: 32, EphemeralDisks: []int{840, 840, 840, 840}, }, { Name: "cg1.4xlarge", MemoryGB: 22.5, ECU: 33.5, Cores: 16, EphemeralDisks: []int{840, 840}, }, { Name: "cr1.8xlarge", MemoryGB: 244.0, ECU: 88, Cores: 32, EphemeralDisks: []int{120, 120}, }, { Name: "d2.xlarge", MemoryGB: 30.5, ECU: 14, Cores: 4, EphemeralDisks: []int{2000, 2000, 2000}, }, { Name: "d2.2xlarge", MemoryGB: 61.0, ECU: 28, Cores: 8, EphemeralDisks: []int{2000, 2000, 2000, 2000, 2000, 2000}, }, { Name: "d2.4xlarge", MemoryGB: 122.0, ECU: 56, Cores: 16, EphemeralDisks: []int{ 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, }, }, { Name: "d2.8xlarge", MemoryGB: 244.0, ECU: 116, Cores: 36, EphemeralDisks: []int{ 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, }, }, { Name: "g2.2xlarge", MemoryGB: 15, ECU: 26, Cores: 8, EphemeralDisks: []int{60}, }, { Name: "g2.8xlarge", MemoryGB: 60, ECU: 104, Cores: 32, EphemeralDisks: []int{120, 120}, }, { Name: "hi1.4xlarge", MemoryGB: 60.5, ECU: 35, Cores: 16, EphemeralDisks: []int{1024, 1024}, }, { Name: "i2.xlarge", MemoryGB: 30.5, ECU: 14, Cores: 4, EphemeralDisks: []int{800}, }, { Name: "i2.2xlarge", MemoryGB: 61, ECU: 27, Cores: 8, EphemeralDisks: []int{800, 800}, }, { Name: "i2.4xlarge", MemoryGB: 122, ECU: 53, Cores: 16, EphemeralDisks: []int{800, 800, 800, 800}, }, { Name: "i2.8xlarge", MemoryGB: 244, ECU: 104, Cores: 32, EphemeralDisks: []int{800, 800, 800, 800, 800, 800, 800, 800}, }, { Name: "r3.large", MemoryGB: 15.25, ECU: 6.5, Cores: 2, EphemeralDisks: []int{32}, }, { Name: "r3.xlarge", MemoryGB: 30.5, ECU: 13, Cores: 4, EphemeralDisks: []int{80}, }, { Name: "r3.2xlarge", MemoryGB: 61, ECU: 26, Cores: 8, EphemeralDisks: []int{160}, }, { Name: "r3.4xlarge", MemoryGB: 122, ECU: 52, Cores: 16, EphemeralDisks: []int{320}, }, { Name: "r3.8xlarge", MemoryGB: 244, ECU: 104, Cores: 32, EphemeralDisks: []int{320, 320}, }, { Name: "x1.32xlarge", MemoryGB: 1952, ECU: 349, Cores: 128, EphemeralDisks: []int{1920, 1920}, }, }
Functions ¶
func AWSErrorCode ¶
AWSErrorCode returns the aws error code, if it is an awserr.Error, otherwise ""
func AWSErrorMessage ¶
AWSErrorMessage returns the aws error message, if it is an awserr.Error, otherwise ""
func FindASGTag ¶
func FindASGTag(tags []*autoscaling.TagDescription, key string) (string, bool)
FindASGTag find the value of the tag with the specified key
func FindEC2Tag ¶
FindEC2Tag find the value of the tag with the specified key
func FindELBTag ¶
FindELBTag find the value of the tag with the specified key
func ValidateRegion ¶
ValidateRegion checks that an AWS region name is valid
Types ¶
type AWSAPITarget ¶
type AWSAPITarget struct {
Cloud *AWSCloud
}
func NewAWSAPITarget ¶
func NewAWSAPITarget(cloud *AWSCloud) *AWSAPITarget
func (*AWSAPITarget) AddAWSTags ¶
func (t *AWSAPITarget) AddAWSTags(id string, expected map[string]string) error
func (*AWSAPITarget) AddELBTags ¶
func (t *AWSAPITarget) AddELBTags(loadBalancerName string, expected map[string]string) error
func (*AWSAPITarget) WaitForInstanceRunning ¶
func (t *AWSAPITarget) WaitForInstanceRunning(instanceID string) error
type AWSCloud ¶
type AWSCloud struct { EC2 *ec2.EC2 IAM *iam.IAM ELB *elb.ELB Autoscaling *autoscaling.AutoScaling Route53 *route53.Route53 Region string // contains filtered or unexported fields }
func (*AWSCloud) AddAWSTags ¶
func (*AWSCloud) CreateELBTags ¶
CreateELBTags will add tags to the specified loadBalancer, retrying up to MaxCreateTagsAttempts times if it hits an eventual-consistency type error
func (*AWSCloud) CreateTags ¶
CreateTags will add tags to the specified resource, retrying up to MaxCreateTagsAttempts times if it hits an eventual-consistency type error
func (*AWSCloud) DeleteTags ¶
DeleteTags will remove tags from the specified resource, retrying up to MaxCreateTagsAttempts times if it hits an eventual-consistency type error
func (*AWSCloud) DescribeInstance ¶
DescribeInstance is a helper that queries for the specified instance by id
func (*AWSCloud) DescribeVPC ¶
DescribeVPC is a helper that queries for the specified vpc by id
func (*AWSCloud) FindDNSHostedZone ¶
func (*AWSCloud) GetELBTags ¶
func (*AWSCloud) GetTags ¶
GetTags will fetch the tags for the specified resource, retrying (up to MaxDescribeTagsAttempts) if it hits an eventual-consistency type error
func (*AWSCloud) ProviderID ¶
func (c *AWSCloud) ProviderID() fi.CloudProviderID
func (*AWSCloud) ResolveImage ¶
ResolveImage finds an AMI image based on the given name. The name can be one of: `ami-...` in which case it is presumed to be an id owner/name in which case we find the image with the specified name, owned by owner name in which case we find the image with the specified name, with the current owner
func (*AWSCloud) ValidateZones ¶
ValidateZones checks that every zone in the sliced passed is recognized
type AWSMachineTypeInfo ¶
type AWSMachineTypeInfo struct { Name string MemoryGB float32 ECU float32 Cores int EphemeralDisks []int Burstable bool }
func GetMachineTypeInfo ¶
func GetMachineTypeInfo(machineType string) (*AWSMachineTypeInfo, error)
func (*AWSMachineTypeInfo) EphemeralDevices ¶
func (m *AWSMachineTypeInfo) EphemeralDevices() []*EphemeralDevice