From 40ce484296834dc7e1e1da734f1b4c7d7ce62ae1 Mon Sep 17 00:00:00 2001 From: Aravind Mandyam Devashikamani Date: Fri, 12 Feb 2021 16:12:30 -0800 Subject: [PATCH] fix(titus): Set default disruption budget based on job type --- .../deploy/actions/PrepareTitusDeploy.java | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/deploy/actions/PrepareTitusDeploy.java b/clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/deploy/actions/PrepareTitusDeploy.java index 47643e3a2e9..055062867b4 100644 --- a/clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/deploy/actions/PrepareTitusDeploy.java +++ b/clouddriver-titus/src/main/groovy/com/netflix/spinnaker/clouddriver/titus/deploy/actions/PrepareTitusDeploy.java @@ -46,6 +46,7 @@ import com.netflix.spinnaker.clouddriver.titus.client.model.disruption.ContainerHealthProvider; import com.netflix.spinnaker.clouddriver.titus.client.model.disruption.HourlyTimeWindow; import com.netflix.spinnaker.clouddriver.titus.client.model.disruption.RatePercentagePerInterval; +import com.netflix.spinnaker.clouddriver.titus.client.model.disruption.SelfManaged; import com.netflix.spinnaker.clouddriver.titus.client.model.disruption.TimeWindow; import com.netflix.spinnaker.clouddriver.titus.deploy.actions.SubmitTitusJob.SubmitTitusJobCommand; import com.netflix.spinnaker.clouddriver.titus.deploy.description.TitusDeployDescription; @@ -219,7 +220,8 @@ private void configureDisruptionBudget( // "systemDefault" should be treated as "no migrationPolicy" if (description.getMigrationPolicy() == null || "systemDefault".equals(description.getMigrationPolicy().getType())) { - description.setDisruptionBudget(getDefaultDisruptionBudget(front50App)); + description.setDisruptionBudget( + getDefaultDisruptionBudget(front50App, description.getJobType())); } } } @@ -367,17 +369,23 @@ private void setSpinnakerAccountEnvVar(TitusDeployDescription description) { } @Nonnull - private DisruptionBudget getDefaultDisruptionBudget(LoadFront50App.Front50App front50App) { + private DisruptionBudget getDefaultDisruptionBudget( + LoadFront50App.Front50App front50App, String jobType) { DisruptionBudget budget = new DisruptionBudget(); - budget.setAvailabilityPercentageLimit(new AvailabilityPercentageLimit(95)); - budget.setRatePercentagePerInterval(new RatePercentagePerInterval(600_000, 5)); - budget.setTimeWindows(Collections.singletonList(DEFAULT_SYSTEM_TIME_WINDOW)); + if (JobType.BATCH.isEqual(jobType)) { + SelfManaged selfManaged = new SelfManaged(); + selfManaged.setRelocationTimeMs(30000); + budget.setSelfManaged(selfManaged); + } else { + budget.setAvailabilityPercentageLimit(new AvailabilityPercentageLimit(95)); + budget.setRatePercentagePerInterval(new RatePercentagePerInterval(600_000, 5)); + budget.setTimeWindows(Collections.singletonList(DEFAULT_SYSTEM_TIME_WINDOW)); - if (front50App != null && front50App.isPlatformHealthOnly()) { - budget.setContainerHealthProviders( - Collections.singletonList(new ContainerHealthProvider("eureka"))); + if (front50App != null && front50App.isPlatformHealthOnly()) { + budget.setContainerHealthProviders( + Collections.singletonList(new ContainerHealthProvider("eureka"))); + } } - return budget; }