77 "os"
88 "path/filepath"
99 "sort"
10+ "strings"
1011
1112 "github.com/aws/aws-sdk-go/aws"
1213 "github.com/aws/aws-sdk-go/aws/credentials"
@@ -71,8 +72,6 @@ type Route53 interface {
7172 ListHostedZonesByName (input * route53.ListHostedZonesByNameInput ) (* route53.ListHostedZonesByNameOutput , error )
7273}
7374
74- var _ interfaces.Provider = & Amazon {}
75-
7675func NewFromConfig (tarmak interfaces.Tarmak , conf * tarmakv1alpha1.Provider ) (* Amazon , error ) {
7776
7877 a := & Amazon {
@@ -505,7 +504,7 @@ func (a *Amazon) vaultSession() (*session.Session, error) {
505504 return sess , nil
506505}
507506
508- func (a * Amazon ) ValidateInstanceTypes (instancePools []interfaces.InstancePool ) error {
507+ func (a * Amazon ) VerifyInstanceTypes (instancePools []interfaces.InstancePool ) error {
509508 var result * multierror.Error
510509
511510 svc , err := a .EC2 ()
@@ -524,7 +523,9 @@ func (a *Amazon) ValidateInstanceTypes(instancePools []interfaces.InstancePool)
524523 result = multierror .Append (result , err )
525524 }
526525
527- if instance .Name () == "master" {
526+ switch instance .Name () {
527+
528+ case "master" :
528529 found := false
529530 for _ , s := range a .nonMasterType () {
530531 if s == instanceType {
@@ -534,9 +535,19 @@ func (a *Amazon) ValidateInstanceTypes(instancePools []interfaces.InstancePool)
534535 }
535536
536537 if found {
537- err := fmt .Errorf ("type '%s' is not supported for master instance" )
538+ err := fmt .Errorf ("type '%s' is not supported for master instance" , instanceType )
539+ result = multierror .Append (result , err )
540+ }
541+ break
542+
543+ case "etcd" , "vault" :
544+ if a .awsInstanceBurstable (instanceType ) {
545+ err := fmt .Errorf ("instance '%s' does not support burstable type (%s)" , instance .Name (), instanceType )
538546 result = multierror .Append (result , err )
539547 }
548+
549+ break
550+
540551 }
541552 }
542553
@@ -641,8 +652,14 @@ func (a *Amazon) awsVolumeTypes() []string {
641652 return []string {"io1" , "gp2" , "st1" , "sc1" }
642653}
643654
655+ func (a * Amazon ) awsInstanceBurstable (typeName string ) bool {
656+ return strings .HasPrefix (typeName , "t2." )
657+ }
658+
644659func (a * Amazon ) awsInstanceTypes () []string {
645- return []string {"c1.medium" , "c1.xlarge" , "c3.2xlarge" , "c3.4xlarge" , "c3.8xlarge" , "c3.large" , "c3.xlarge" , "cc2.8xlarge" , "cg1.4xlarge" , "cr1.8xlarge" , "g2.2xlarge" , "hi1.4xlarge" , "hs1.8xlarge" , "i2.2xlarge" , "i2.4xlarge" , "i2.8xlarge" , "i2.xlarge" , "m1.large" , "m1.medium" , "m1.small" , "m1.xlarge" , "m2.2xlarge" , "m2.4xlarge" , "m2.xlarge" , "m3.2xlarge" , "m3.large" , "m3.medium" , "m3.xlarge" , "r3.2xlarge" , "r3.4xlarge" , "r3.8xlarge" , "r3.large" , "r3.xlarge" , "t1.micro" , "t2.medium" , "t2.micro" , "t2.small" , "t2.nano" , "t2.micro" }
660+ instanceTypes := []string {"t2.nano" , "t2.micro" , "t2.small" , "t2.medium" , "t2.large" , "t2.xlarge" , "t2.2xlarge" , "m4.large" , "m4.xlarge" , "m4.2xlarge" , "m4.4xlarge" , "m4.10xlarge" , "m4.16xlarge" , "m5.large" , "m5.xlarge" , "m5.2xlarge" , "m5.4xlarge" , "m5.12xlarge" , "m5.24xlarge" , "m5d.large" , "m5d.xlarge" , "m5d.2xlarge" , "m5d.4xlarge" , "m5d.12xlarge" , "m5d.24xlarge" , "c4.large" , "c4.xlarge" , "c4.2xlarge" , "c4.4xlarge" , "c4.8xlarge" , "c5.large" , "c5.xlarge" , "c5.2xlarge" , "c5.4xlarge" , "c5.9xlarge" , "c5.18xlarge" , "c5d.xlarge" , "c5d.2xlarge" , "c5d.4xlarge" , "c5d.9xlarge" , "c5d.18xlarge" , "r4.large" , "r4.xlarge" , "r4.2xlarge" , "r4.4xlarge" , "r4.8xlarge" , "r4.16xlarge" , "x1.16xlarge" , "x1.32xlarge" , "x1e.xlarge" , "x1e.2xlarge" , "x1e.4xlarge" , "x1e.8xlarge" , "x1e.16xlarge" , "x1e.32xlarge" , "d2.xlarge" , "d2.2xlarge" , "d2.4xlarge" , "d2.8xlarge" , "h1.2xlarge" , "h1.4xlarge" , "h1.8xlarge" , "h1.16xlarge" , "i3.large" , "i3.xlarge" , "i3.2xlarge" , "i3.4xlarge" , "i3.8xlarge" , "i3.16xlarge" , "i3.metal" , "f1.2xlarge" , "f1.16xlarge" , "g3.4xlarge" , "g3.8xlarge" , "g3.16xlarge" , "p2.xlarge" , "p2.8xlarge" , "p2.16xlarge" , "p3.2xlarge" , "p3.8xlarge" , "p3.16xlarge" }
661+
662+ return instanceTypes
646663}
647664
648665func (a * Amazon ) nonMasterType () []string {
0 commit comments