diff options
author | Jon Bratseth <bratseth@oath.com> | 2019-02-11 12:41:57 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-11 12:41:57 +0100 |
commit | a88534e3a2a89d9176d1c7b3b2b1f43b8ea21276 (patch) | |
tree | 17c1e903288bcdeb1b1a31ff95f527e4d446b5b2 | |
parent | 0247ccd083972cd433618002db6a0d23f13fb4e1 (diff) | |
parent | dcbcdc190091c5d2fac1eaefd5d50271efe486bc (diff) |
Merge pull request #8466 from vespa-engine/mpolden/skip-deploymentspecs-for-manual-envs
Never persist deployment spec for manual environments
6 files changed, 61 insertions, 14 deletions
diff --git a/config-model-api/abi-spec.json b/config-model-api/abi-spec.json index c932958b58b..0b36ea3bee2 100644 --- a/config-model-api/abi-spec.json +++ b/config-model-api/abi-spec.json @@ -303,6 +303,8 @@ "public static java.lang.String toMessageString(java.lang.Throwable)", "public java.util.Optional athenzDomain()", "public java.util.Optional athenzService(com.yahoo.config.provision.Environment, com.yahoo.config.provision.RegionName)", + "public boolean equals(java.lang.Object)", + "public int hashCode()", "public static void main(java.lang.String[])" ], "fields": [ diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/DeploymentSpec.java b/config-model-api/src/main/java/com/yahoo/config/application/api/DeploymentSpec.java index a6cecefe940..d15d76fd11b 100644 --- a/config-model-api/src/main/java/com/yahoo/config/application/api/DeploymentSpec.java +++ b/config-model-api/src/main/java/com/yahoo/config/application/api/DeploymentSpec.java @@ -267,6 +267,27 @@ public class DeploymentSpec { return Optional.ofNullable(athenzService); } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + DeploymentSpec that = (DeploymentSpec) o; + return globalServiceId.equals(that.globalServiceId) && + upgradePolicy == that.upgradePolicy && + majorVersion.equals(that.majorVersion) && + changeBlockers.equals(that.changeBlockers) && + steps.equals(that.steps) && + xmlForm.equals(that.xmlForm) && + athenzDomain.equals(that.athenzDomain) && + athenzService.equals(that.athenzService) && + notifications.equals(that.notifications); + } + + @Override + public int hashCode() { + return Objects.hash(globalServiceId, upgradePolicy, majorVersion, changeBlockers, steps, xmlForm, athenzDomain, athenzService, notifications); + } + /** This may be invoked by a continuous build */ public static void main(String[] args) { if (args.length != 2 && args.length != 3) { 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 3efb0db8cce..7316a859382 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 @@ -270,20 +270,20 @@ public class ApplicationController { .map(app -> new LockedApplication(app, lock)) .orElseGet(() -> new LockedApplication(createApplication(applicationId, Optional.empty()), lock)); - boolean canDeployDirectly = options.deployDirectly || zone.environment().isManuallyDeployed(); + boolean manuallyDeployed = options.deployDirectly || zone.environment().isManuallyDeployed(); boolean preferOldestVersion = options.deployCurrentVersion; // Determine versions to use. Version platformVersion; ApplicationVersion applicationVersion; ApplicationPackage applicationPackage; - if (canDeployDirectly) { - platformVersion = options.vespaVersion.map(Version::new).orElse(application.get().deploymentSpec().majorVersion() - .flatMap(this::lastCompatibleVersion) - .orElse(controller.systemVersion())); + if (manuallyDeployed) { applicationVersion = applicationVersionFromDeployer.orElse(ApplicationVersion.unknown); applicationPackage = applicationPackageFromDeployer.orElseThrow( () -> new IllegalArgumentException("Application package must be given when deploying to " + zone)); + platformVersion = options.vespaVersion.map(Version::new).orElse(applicationPackage.deploymentSpec().majorVersion() + .flatMap(this::lastCompatibleVersion) + .orElse(controller.systemVersion())); } else { JobType jobType = JobType.from(controller.system(), zone) @@ -309,8 +309,9 @@ public class ApplicationController { verifyApplicationIdentityConfiguration(applicationId.tenant(), applicationPackage, deployingIdentity); // Update application with information from application package - if ( ! preferOldestVersion && ! application.get().deploymentJobs().deployedInternally()) - // TODO jvenstad: Store only on submissions (not on deployments to dev!!) + if ( ! preferOldestVersion && + ! application.get().deploymentJobs().deployedInternally() && + ! zone.environment().isManuallyDeployed()) application = storeWithUpdatedConfig(application, applicationPackage); // Assign global rotation 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 06417da8157..32068b006f0 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 @@ -2,6 +2,7 @@ package com.yahoo.vespa.hosted.controller; import com.yahoo.component.Version; +import com.yahoo.config.application.api.DeploymentSpec; import com.yahoo.config.application.api.ValidationId; import com.yahoo.config.application.api.ValidationOverrides; import com.yahoo.config.provision.ApplicationId; @@ -426,7 +427,7 @@ public class ControllerTest { } @Test - public void testDeployDirectly() { + public void testIntegrationTestDeployment() { DeploymentTester tester = new DeploymentTester(); Version six = Version.fromString("6.1"); tester.upgradeSystem(six); @@ -461,6 +462,28 @@ public class ControllerTest { } @Test + public void testDevDeployment() { + DeploymentTester tester = new DeploymentTester(); + ApplicationPackage applicationPackage = new ApplicationPackageBuilder() + .environment(Environment.dev) + .majorVersion(6) + .region("us-east-1") + .build(); + + // Create application + Application app = tester.createApplication("app1", "tenant1", 1, 2L); + ZoneId zone = ZoneId.from("dev", "us-east-1"); + + // Deploy + tester.controller().applications().deploy(app.id(), zone, Optional.of(applicationPackage), DeployOptions.none()); + assertTrue("Application deployed and activated", + tester.controllerTester().configServer().application(app.id()).get().activated()); + assertTrue("No job status added", + tester.applications().require(app.id()).deploymentJobs().jobStatus().isEmpty()); + assertEquals("DeploymentSpec is not persisted", DeploymentSpec.empty, tester.applications().require(app.id()).deploymentSpec()); + } + + @Test public void testSuspension() { DeploymentTester tester = new DeploymentTester(); Application app = tester.createApplication("app1", "tenant1", 1, 11L); diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/application.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/application.json index 443a2c23b6a..3744e44152a 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/application.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/application.json @@ -66,7 +66,7 @@ "gitCommit": "commit1" } }, - "reason": "Testing deployment for production-us-central-1 (platform 6.1, application 1.0.42-commit1)", + "reason": "Testing last changes outside prod", "at": "(ignore)" }, "lastCompleted": { @@ -80,7 +80,7 @@ "gitCommit": "commit1" } }, - "reason": "Testing deployment for production-us-central-1 (platform 6.1, application 1.0.42-commit1)", + "reason": "Testing last changes outside prod", "at": "(ignore)" }, "lastSuccess": { @@ -94,7 +94,7 @@ "gitCommit": "commit1" } }, - "reason": "Testing deployment for production-us-central-1 (platform 6.1, application 1.0.42-commit1)", + "reason": "Testing last changes outside prod", "at": "(ignore)" } }, diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/application1-recursive.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/application1-recursive.json index 64c92f9cde4..822bc447d8d 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/application1-recursive.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/application1-recursive.json @@ -66,7 +66,7 @@ "gitCommit": "commit1" } }, - "reason": "Testing deployment for production-us-central-1 (platform 6.1, application 1.0.42-commit1)", + "reason": "Testing last changes outside prod", "at": "(ignore)" }, "lastCompleted": { @@ -80,7 +80,7 @@ "gitCommit": "commit1" } }, - "reason": "Testing deployment for production-us-central-1 (platform 6.1, application 1.0.42-commit1)", + "reason": "Testing last changes outside prod", "at": "(ignore)" }, "lastSuccess": { @@ -94,7 +94,7 @@ "gitCommit": "commit1" } }, - "reason": "Testing deployment for production-us-central-1 (platform 6.1, application 1.0.42-commit1)", + "reason": "Testing last changes outside prod", "at": "(ignore)" } }, |