Skip to content
This repository was archived by the owner on Jan 9, 2023. It is now read-only.

Commit 33d4de2

Browse files
committed
Adds review changes
1 parent 6437542 commit 33d4de2

File tree

4 files changed

+38
-11
lines changed

4 files changed

+38
-11
lines changed

pkg/tarmak/cluster/cluster.go

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -160,15 +160,25 @@ func (c *Cluster) validateInstancePools() error {
160160
}
161161
}
162162

163-
if err := c.Environment().Provider().ValidateInstanceTypes(c.InstancePools()); err != nil {
163+
return result.ErrorOrNil()
164+
}
165+
166+
// Verify cluster
167+
func (c *Cluster) Verify() error {
168+
var result *multierror.Error
169+
170+
if err := c.VerifyInstancePools(); err != nil {
171+
result = multierror.Append(result, err)
172+
}
173+
174+
if err := c.Environment().Provider().VerifyInstanceTypes(c.InstancePools()); err != nil {
164175
result = multierror.Append(result, err)
165176
}
166177

167178
return result.ErrorOrNil()
168179
}
169180

170-
// Verify cluster
171-
func (c *Cluster) Verify() error {
181+
func (c *Cluster) VerifyInstancePools() (result error) {
172182
// Verify instance pools
173183
imageIDs, err := c.ImageIDs()
174184
if err != nil {

pkg/tarmak/instance_pool/instance_pool.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func NewFromConfig(cluster interfaces.Cluster, conf *clusterv1alpha1.InstancePoo
4949
provider := cluster.Environment().Provider()
5050
instanceType, err := provider.InstanceType(conf.Size)
5151
if err != nil {
52-
return nil, fmt.Errorf("instanceType '%s' is not valid for this provier", conf.Size)
52+
return nil, fmt.Errorf("instanceType '%s' is not valid for this provider: %v", conf.Size, err)
5353
}
5454
instancePool.instanceType = instanceType
5555

pkg/tarmak/interfaces/interfaces.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ type Provider interface {
127127
AskEnvironmentLocation(Initialize) (string, error)
128128
AskInstancePoolZones(Initialize) (zones []string, err error)
129129
UploadConfiguration(Cluster, io.ReadSeeker) error
130-
ValidateInstanceTypes(intstancePools []InstancePool) error
130+
VerifyInstanceTypes(intstancePools []InstancePool) error
131131
}
132132

133133
type Tarmak interface {

pkg/tarmak/provider/amazon/amazon.go

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
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-
7675
func 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+
644659
func (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

648665
func (a *Amazon) nonMasterType() []string {

0 commit comments

Comments
 (0)