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 InstallMockAWSCloud(region string, zoneLetters string)
- func NewEC2Filter(name string, values ...string) *ec2.Filter
- func ValidateRegion(region string) error
- func ValidateZones(zones []string, cloud AWSCloud) 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
- type AWSMachineTypeInfo
- type EphemeralDevice
- type MockAWSCloud
- func (c *MockAWSCloud) AddAWSTags(id string, expected map[string]string) error
- func (c *MockAWSCloud) AddTags(name *string, tags map[string]string)
- func (c *MockAWSCloud) Autoscaling() *autoscaling.AutoScaling
- func (c *MockAWSCloud) BuildFilters(name *string) []*ec2.Filter
- func (c *MockAWSCloud) BuildTags(name *string) map[string]string
- func (c *MockAWSCloud) CreateELBTags(loadBalancerName string, tags map[string]string) error
- func (c *MockAWSCloud) CreateTags(resourceId string, tags map[string]string) error
- func (c *MockAWSCloud) DescribeAvailabilityZones() ([]*ec2.AvailabilityZone, error)
- func (c *MockAWSCloud) DescribeInstance(instanceID string) (*ec2.Instance, error)
- func (c *MockAWSCloud) DescribeVPC(vpcID string) (*ec2.Vpc, error)
- func (c *MockAWSCloud) EC2() *ec2.EC2
- func (c *MockAWSCloud) ELB() *elb.ELB
- func (c *MockAWSCloud) GetELBTags(loadBalancerName string) (map[string]string, error)
- func (c *MockAWSCloud) GetTags(resourceID string) (map[string]string, error)
- func (c *MockAWSCloud) IAM() *iam.IAM
- func (c *MockAWSCloud) Region() string
- func (c *MockAWSCloud) ResolveImage(name string) (*ec2.Image, error)
- func (c *MockAWSCloud) Route53() *route53.Route53
- func (c *MockAWSCloud) Tags() map[string]string
- func (c *MockAWSCloud) WithTags(tags map[string]string) AWSCloud
- type MockCloud
Constants ¶
View Source
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
View Source
const MaxCreateTagsAttempts = 60
View Source
const MaxDescribeTagsAttempts = 60
View Source
const TagClusterName = "KubernetesCluster"
Variables ¶
View Source
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 InstallMockAWSCloud ¶
func ValidateRegion ¶
ValidateRegion checks that an AWS region name is valid
func ValidateZones ¶
ValidateZones checks that every zone in the sliced passed is recognized
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 interface { fi.Cloud Region() string EC2() *ec2.EC2 IAM() *iam.IAM ELB() *elb.ELB Autoscaling() *autoscaling.AutoScaling Route53() *route53.Route53 // TODO: Document and rationalize these tags/filters methods AddTags(name *string, tags map[string]string) BuildFilters(name *string) []*ec2.Filter BuildTags(name *string) map[string]string Tags() map[string]string // GetTags will fetch the tags for the specified resource, retrying (up to MaxDescribeTagsAttempts) if it hits an eventual-consistency type error GetTags(resourceId string) (map[string]string, error) // CreateTags will add tags to the specified resource, retrying up to MaxCreateTagsAttempts times if it hits an eventual-consistency type error CreateTags(resourceId string, tags map[string]string) error AddAWSTags(id string, expected map[string]string) error GetELBTags(loadBalancerName string) (map[string]string, error) // CreateELBTags will add tags to the specified loadBalancer, retrying up to MaxCreateTagsAttempts times if it hits an eventual-consistency type error CreateELBTags(loadBalancerName string, tags map[string]string) error // DescribeInstance is a helper that queries for the specified instance by id DescribeInstance(instanceID string) (*ec2.Instance, error) // DescribeVPC is a helper that queries for the specified vpc by id DescribeVPC(vpcID string) (*ec2.Vpc, error) DescribeAvailabilityZones() ([]*ec2.AvailabilityZone, error) // 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 ResolveImage(name string) (*ec2.Image, error) // WithTags created a copy of AWSCloud with the specified default-tags bound WithTags(tags map[string]string) AWSCloud }
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
type EphemeralDevice ¶
type MockAWSCloud ¶
type MockAWSCloud struct { MockCloud // contains filtered or unexported fields }
func (*MockAWSCloud) AddAWSTags ¶
func (c *MockAWSCloud) AddAWSTags(id string, expected map[string]string) error
func (*MockAWSCloud) Autoscaling ¶
func (c *MockAWSCloud) Autoscaling() *autoscaling.AutoScaling
func (*MockAWSCloud) BuildFilters ¶
func (c *MockAWSCloud) BuildFilters(name *string) []*ec2.Filter
func (*MockAWSCloud) CreateELBTags ¶
func (c *MockAWSCloud) CreateELBTags(loadBalancerName string, tags map[string]string) error
func (*MockAWSCloud) CreateTags ¶
func (c *MockAWSCloud) CreateTags(resourceId string, tags map[string]string) error
func (*MockAWSCloud) DescribeAvailabilityZones ¶
func (c *MockAWSCloud) DescribeAvailabilityZones() ([]*ec2.AvailabilityZone, error)
func (*MockAWSCloud) DescribeInstance ¶
func (c *MockAWSCloud) DescribeInstance(instanceID string) (*ec2.Instance, error)
func (*MockAWSCloud) DescribeVPC ¶
func (c *MockAWSCloud) DescribeVPC(vpcID string) (*ec2.Vpc, error)
func (*MockAWSCloud) EC2 ¶
func (c *MockAWSCloud) EC2() *ec2.EC2
func (*MockAWSCloud) ELB ¶
func (c *MockAWSCloud) ELB() *elb.ELB
func (*MockAWSCloud) GetELBTags ¶
func (c *MockAWSCloud) GetELBTags(loadBalancerName string) (map[string]string, error)
func (*MockAWSCloud) GetTags ¶
func (c *MockAWSCloud) GetTags(resourceID string) (map[string]string, error)
func (*MockAWSCloud) IAM ¶
func (c *MockAWSCloud) IAM() *iam.IAM
func (*MockAWSCloud) Region ¶
func (c *MockAWSCloud) Region() string
func (*MockAWSCloud) ResolveImage ¶
func (c *MockAWSCloud) ResolveImage(name string) (*ec2.Image, error)
func (*MockAWSCloud) Route53 ¶
func (c *MockAWSCloud) Route53() *route53.Route53
func (*MockAWSCloud) Tags ¶
func (c *MockAWSCloud) Tags() map[string]string
type MockCloud ¶
type MockCloud struct { }
func (*MockCloud) FindDNSHostedZone ¶
func (*MockCloud) ProviderID ¶
func (c *MockCloud) ProviderID() fi.CloudProviderID
Click to show internal directories.
Click to hide internal directories.