Skip to content

Commit

Permalink
refactor: use scheduler maxUnavailable on k8s pdb
Browse files Browse the repository at this point in the history
  • Loading branch information
hspedro committed Sep 30, 2024
1 parent f99dd5c commit 908cf52
Showing 1 changed file with 6 additions and 28 deletions.
34 changes: 6 additions & 28 deletions internal/adapters/runtime/kubernetes/scheduler.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ package kubernetes
import (
"context"
"strconv"
"strings"

"github.com/topfreegames/maestro/internal/core/entities"
"github.com/topfreegames/maestro/internal/core/ports/errors"
Expand Down Expand Up @@ -85,35 +84,14 @@ func (k *kubernetes) isPDBSupported() bool {
return true
}

func (k *kubernetes) GetMaxUnavailable() *intstr.IntOrString {
maxUnavailable := &intstr.IntOrString{
Type: intstr.String,
StrVal: DefaultDisruptionSafetyPercentage,
}
if strings.HasSuffix(k.Config.SchedulerMaxUnavailable, "%") {
percentageStr := strings.TrimSuffix(k.Config.SchedulerMaxUnavailable, "%")
percentage, err := strconv.Atoi(percentageStr)
if err != nil || percentage < 0 || percentage > 100 {
k.logger.Warn("invalid SchedulerMaxUnavailable percentage", zap.String("SchedulerMaxUnavailable", k.Config.SchedulerMaxUnavailable))
return maxUnavailable
}
maxUnavailable = &intstr.IntOrString{
func (k *kubernetes) GetMaxUnavailable(scheduler *entities.Scheduler) *intstr.IntOrString {
if scheduler.PdbMaxUnavailable == nil || scheduler.PdbMaxUnavailable.StrVal == "" || scheduler.PdbMaxUnavailable.IntVal <= 0 {
return &intstr.IntOrString{
Type: intstr.String,
StrVal: k.Config.SchedulerMaxUnavailable,
}
} else {
maxUnavailableInt, err := strconv.Atoi(k.Config.SchedulerMaxUnavailable)
if err != nil || maxUnavailableInt < 0 {
k.logger.Warn("invalid SchedulerMaxUnavailable value", zap.String("SchedulerMaxUnavailable", k.Config.SchedulerMaxUnavailable))
return maxUnavailable
}
maxUnavailable = &intstr.IntOrString{
Type: intstr.Int,
IntVal: int32(maxUnavailableInt),
StrVal: DefaultDisruptionSafetyPercentage,
}
}

return maxUnavailable
return scheduler.PdbMaxUnavailable
}

func (k *kubernetes) createPDBFromScheduler(ctx context.Context, scheduler *entities.Scheduler) (*v1Policy.PodDisruptionBudget, error) {
Expand All @@ -128,7 +106,7 @@ func (k *kubernetes) createPDBFromScheduler(ctx context.Context, scheduler *enti
},
},
Spec: v1Policy.PodDisruptionBudgetSpec{
MaxUnavailable: k.GetMaxUnavailable(),
MaxUnavailable: k.GetMaxUnavailable(scheduler),
Selector: &metav1.LabelSelector{
MatchLabels: map[string]string{
"maestro-scheduler": scheduler.Name,
Expand Down

0 comments on commit 908cf52

Please sign in to comment.