diff options
author | Øyvind Grønnesby <oyving@yahooinc.com> | 2022-11-11 15:11:07 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2022-11-14 11:37:12 +0100 |
commit | 0979fffb39994efb81fb6f51daf807dc696eae26 (patch) | |
tree | 451a5280be4ab84c7e9c130edf31cb5b43d91ab9 /controller-server | |
parent | 399b271622dc80a67cf01906b7e863ee1bac12be (diff) |
Make is possible to say cloud-account="default"
Diffstat (limited to 'controller-server')
3 files changed, 38 insertions, 1 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java index e09e1f04b8e..ba148345d0d 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java @@ -677,7 +677,7 @@ public class ApplicationController { .flatMap(instanceSpec -> instanceSpec.cloudAccount(zoneId.environment(), Optional.of(zoneId.region()))) .or(spec::cloudAccount); - if (requestedAccount.isEmpty()) { + if (requestedAccount.isEmpty() || requestedAccount.map(CloudAccount::isDefault).orElse(false)) { return Optional.empty(); } TenantName tenant = deployment.applicationId().tenant(); diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java index 43a4ac0f6fc..f6af6bbe7e5 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java @@ -1325,6 +1325,33 @@ public class ControllerTest { } @Test + void testCloudAccountWithDefaultOverride() { + var context = tester.newDeploymentContext(); + var prodZone1 = productionUsEast3.zone(); + var prodZone2 = productionUsWest1.zone(); + var cloudAccount = "012345678912"; + var application = new ApplicationPackageBuilder() + .cloudAccount(cloudAccount) + .region(prodZone1.region()) + .region(prodZone2.region(), "default") + .build(); + + // I don't know why this makes the test pass :( + tester.controllerTester().flagSource().withListFlag(PermanentFlags.CLOUD_ACCOUNTS.id(), List.of(cloudAccount), String.class); + + // Deployment to prod succeeds once all zones are configured in requested account + tester.controllerTester().zoneRegistry().configureCloudAccount(new CloudAccount(cloudAccount), + systemTest.zone(), + stagingTest.zone(), + prodZone1); + + context.submit(application).deploy(); + + assertEquals(cloudAccount, tester.controllerTester().configServer().cloudAccount(context.deploymentIdIn(prodZone1)).get().value()); + assertEquals(Optional.empty(), tester.controllerTester().configServer().cloudAccount(context.deploymentIdIn(prodZone2))); + } + + @Test void testSubmitWithElementDeprecatedOnPreviousMajor() { DeploymentContext context = tester.newDeploymentContext(); var applicationPackage = new ApplicationPackageBuilder() diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/ApplicationPackageBuilder.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/ApplicationPackageBuilder.java index 7fb85af0d4a..2c1e0b743fe 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/ApplicationPackageBuilder.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/ApplicationPackageBuilder.java @@ -173,6 +173,16 @@ public class ApplicationPackageBuilder { return this; } + public ApplicationPackageBuilder region(RegionName regionName, String cloudAccount) { + prodBody.append(" <region ") + .append("cloud-account=\"") + .append(cloudAccount) + .append("\">") + .append(regionName) + .append("</region>\n"); + return this; + } + public ApplicationPackageBuilder region(RegionName regionName, boolean active) { prodBody.append(" <region active='") .append(active) |