in internal/controller/evictionautoscaler_controller.go [216:236]
func calculateSurge(ctx context.Context, target Surger, minrepicas int32) int32 {
surge := target.GetMaxSurge()
if surge.Type == intstr.Int {
return minrepicas + surge.IntVal
}
if surge.Type == intstr.String {
percentageStr := strings.TrimSuffix(surge.StrVal, "%")
percentage, err := strconv.Atoi(percentageStr)
if err != nil {
//return an error? so we can set degraded?
log.FromContext(ctx).Error(err, "invalid surge")
return minrepicas
}
return minrepicas + int32(math.Ceil((float64(minrepicas)*float64(percentage))/100.0))
}
panic("must be string or int")
}