github.com/kubernetes-incubator/kube-aws@v0.16.4/pkg/api/asg.go (about) 1 package api 2 3 import ( 4 "fmt" 5 ) 6 7 // Configuration specific to auto scaling groups 8 type AutoScalingGroup struct { 9 MinSize *int `yaml:"minSize,omitempty"` 10 MaxSize int `yaml:"maxSize,omitempty"` 11 RollingUpdateMinInstancesInService *int `yaml:"rollingUpdateMinInstancesInService,omitempty"` 12 MixedInstances MixedInstances `yaml:"mixedInstances,omitempty"` 13 UnknownKeys `yaml:",inline"` 14 } 15 16 func (asg AutoScalingGroup) Validate() error { 17 if asg.MinSize != nil && *asg.MinSize < 0 { 18 return fmt.Errorf("`autoScalingGroup.minSize` must be zero or greater if specified") 19 } 20 if asg.MaxSize < 0 { 21 return fmt.Errorf("`autoScalingGroup.maxSize` must be zero or greater if specified") 22 } 23 if asg.MinSize != nil && *asg.MinSize > asg.MaxSize { 24 return fmt.Errorf("`autoScalingGroup.minSize` (%d) must be less than or equal to `autoScalingGroup.maxSize` (%d), if you have specified only minSize please specify maxSize as well", 25 *asg.MinSize, asg.MaxSize) 26 } 27 if asg.RollingUpdateMinInstancesInService != nil && *asg.RollingUpdateMinInstancesInService < 0 { 28 return fmt.Errorf("`autoScalingGroup.rollingUpdateMinInstancesInService` must be greater than or equal to 0 but was %d", *asg.RollingUpdateMinInstancesInService) 29 } 30 if asg.MixedInstances.Enabled { 31 return asg.MixedInstances.Validate() 32 } 33 return nil 34 }