summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/TenantRoleMaintainer.java16
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/TenantRoleMaintainerTest.java9
2 files changed, 19 insertions, 6 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/TenantRoleMaintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/TenantRoleMaintainer.java
index 637ae10bcc6..ba110951f6d 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/TenantRoleMaintainer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/TenantRoleMaintainer.java
@@ -2,10 +2,9 @@
package com.yahoo.vespa.hosted.controller.maintenance;
+import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.TenantName;
-import com.yahoo.vespa.flags.BooleanFlag;
-import com.yahoo.vespa.flags.FetchVector;
-import com.yahoo.vespa.flags.Flags;
+import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.hosted.controller.Application;
import com.yahoo.vespa.hosted.controller.Controller;
import com.yahoo.vespa.hosted.controller.tenant.Tenant;
@@ -28,7 +27,7 @@ public class TenantRoleMaintainer extends ControllerMaintainer {
var tenants = controller().tenants().asList();
var tenantsWithRoles = tenants.stream()
.map(Tenant::name)
- .filter(this::hasProductionDeployment)
+ .filter(tenant -> hasProductionDeployment(tenant) || hasPerfDeployment(tenant))
.collect(Collectors.toList());
roleService.maintainRoles(tenantsWithRoles);
return 1.0;
@@ -39,4 +38,13 @@ public class TenantRoleMaintainer extends ControllerMaintainer {
.map(Application::productionInstances)
.anyMatch(Predicate.not(Map::isEmpty));
}
+
+ private boolean hasPerfDeployment(TenantName tenant) {
+ List<ZoneId> perfZones = controller().zoneRegistry().zones().controllerUpgraded().in(Environment.perf).ids();
+ return controller().applications().asList(tenant).stream()
+ .map(Application::instances)
+ .flatMap(instances -> instances.values().stream())
+ .flatMap(instance -> instance.deployments().values().stream())
+ .anyMatch(x -> perfZones.contains(x.zone()));
+ }
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/TenantRoleMaintainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/TenantRoleMaintainerTest.java
index 050610905f3..f4e688379e5 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/TenantRoleMaintainerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/TenantRoleMaintainerTest.java
@@ -9,12 +9,14 @@ import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.deployment.ApplicationPackageBuilder;
import com.yahoo.vespa.hosted.controller.deployment.DeploymentTester;
+import org.hamcrest.Matchers;
import org.junit.Test;
import java.time.Duration;
import java.util.List;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
/**
* @author mortent
@@ -28,6 +30,7 @@ public class TenantRoleMaintainerTest {
var devAppTenant1 = tester.newDeploymentContext("tenant1", "app1", "default");
var prodAppTenant2 = tester.newDeploymentContext("tenant2", "app2", "default");
var devAppTenant2 = tester.newDeploymentContext("tenant2","app3","default");
+ var perfAppTenant1 = tester.newDeploymentContext("tenant3","app1","default");
ApplicationPackage appPackage = new ApplicationPackageBuilder()
.region("us-west-1")
.build();
@@ -36,6 +39,9 @@ public class TenantRoleMaintainerTest {
devAppTenant1.runJob(JobType.devUsEast1, appPackage);
devAppTenant2.runJob(JobType.devUsEast1, appPackage);
+ // Deploy perf apps
+ perfAppTenant1.runJob(JobType.perfUsEast3, appPackage);
+
// Deploy prod
prodAppTenant2.submit(appPackage).deploy();
assertEquals(1, permanentDeployments(devAppTenant1.instance()));
@@ -48,8 +54,7 @@ public class TenantRoleMaintainerTest {
var roleService = tester.controller().serviceRegistry().roleService();
List<TenantName> tenantNames = ((MockRoleService) roleService).maintainedTenants();
- assertEquals(1, tenantNames.size());
- assertEquals(prodAppTenant2.application().id().tenant(), tenantNames.get(0));
+ assertThat(tenantNames, Matchers.containsInAnyOrder(prodAppTenant2.application().id().tenant(), perfAppTenant1.application().id().tenant()));
}
private long permanentDeployments(Instance instance) {