diff options
author | Morten Tokle <mortent@verizonmedia.com> | 2021-07-27 13:47:43 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-27 13:47:43 +0200 |
commit | 048672327aac65c13b29cf6b3a1076496d2b60c7 (patch) | |
tree | 0f1f6447018c11ee7d8066c86129cc50594d0cc7 | |
parent | d8acae4eeb9d66457e596fb06b0009d95b973f13 (diff) | |
parent | fe496eb0b73c179d5eefbe3346a04c92ce110143 (diff) |
Merge pull request #18647 from vespa-engine/mortent/maintain-aws-roles-perf
Include tenant iam roles with perf deployments
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) { |