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  }