in internal/pkg/manifest/validate.go [1178:1239]
func (a AdvancedCount) validate() error {
if a.IsEmpty() {
return nil
}
if len(a.validScalingFields()) == 0 {
return fmt.Errorf("cannot have autoscaling options for workloads of type '%s'", a.workloadType)
}
// validate if incorrect autoscaling fields are set
if fields := a.getInvalidFieldsSet(); fields != nil {
return &errInvalidAutoscalingFieldsWithWkldType{
invalidFields: fields,
workloadType: a.workloadType,
}
}
// validate spot and remaining autoscaling fields.
if a.Spot != nil && a.hasAutoscaling() {
return &errFieldMutualExclusive{
firstField: "spot",
secondField: fmt.Sprintf("range/%s", strings.Join(a.validScalingFields(), "/")),
}
}
if err := a.Range.validate(); err != nil {
return fmt.Errorf(`validate "range": %w`, err)
}
// validate combinations with "range".
if a.Range.IsEmpty() && a.hasScalingFieldsSet() {
return &errFieldMustBeSpecified{
missingField: "range",
conditionalFields: a.validScalingFields(),
}
}
if !a.Range.IsEmpty() && !a.hasScalingFieldsSet() {
return &errAtLeastOneFieldMustBeSpecified{
missingFields: a.validScalingFields(),
conditionalField: "range",
}
}
// validate combinations with cooldown
if !a.Cooldown.IsEmpty() && !a.hasScalingFieldsSet() {
return &errAtLeastOneFieldMustBeSpecified{
missingFields: a.validScalingFields(),
conditionalField: "cooldown",
}
}
// validate individual custom autoscaling options.
if err := a.QueueScaling.validate(); err != nil {
return fmt.Errorf(`validate "queue_delay": %w`, err)
}
if err := a.CPU.validate(); err != nil {
return fmt.Errorf(`validate "cpu_percentage": %w`, err)
}
if err := a.Memory.validate(); err != nil {
return fmt.Errorf(`validate "memory_percentage": %w`, err)
}
return nil
}