diff options
author | Jon Bratseth <jonbratseth@yahoo.com> | 2017-11-20 20:11:06 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-20 20:11:06 +0100 |
commit | 43e822c4ddf4a014dac5b10c86838417dcd848f4 (patch) | |
tree | b893f57f6b5fb1606e5efaee45bdf381f9b3d212 | |
parent | b11b14e24e130a861210a369455ba531e9549480 (diff) | |
parent | 228c04e0e8786ae24e6c22e5bb81deb4c8d63e0f (diff) |
Merge pull request #4207 from vespa-engine/jvenstad/expose-open-issues-in-application-api
Expose issue ids for applications
5 files changed, 18 insertions, 3 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedApplication.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedApplication.java index 77d8ea66417..782e97b12ee 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedApplication.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedApplication.java @@ -52,7 +52,7 @@ public class LockedApplication extends Application { hasOutstandingChange(), ownershipIssueId(), metrics()), lock); } - public LockedApplication with(IssueId issueId) { + public LockedApplication withDeploymentIssueId(IssueId issueId) { return new LockedApplication(new Application(id(), deploymentSpec(), validationOverrides(), deployments(), deploymentJobs().with(issueId), deploying(), hasOutstandingChange(), ownershipIssueId(), metrics()), lock); diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentIssueReporter.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentIssueReporter.java index 4ab1426539d..91376bd9e80 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentIssueReporter.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentIssueReporter.java @@ -133,7 +133,7 @@ public class DeploymentIssueReporter extends Maintainer { private void store(ApplicationId id, IssueId issueId) { try (Lock lock = controller().applications().lock(id)) { controller().applications().get(id, lock).ifPresent( - application -> controller().applications().store(application.with(issueId)) + application -> controller().applications().store(application.withDeploymentIssueId(issueId)) ); } } diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java index 53d584a61a3..76a453f555b 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java @@ -53,6 +53,7 @@ import com.yahoo.vespa.hosted.controller.api.identifiers.UserGroup; import com.yahoo.vespa.hosted.controller.api.identifiers.UserId; import com.yahoo.vespa.hosted.controller.api.integration.configserver.ConfigServerException; import com.yahoo.vespa.hosted.controller.api.integration.configserver.Log; +import com.yahoo.vespa.hosted.controller.api.integration.organization.IssueId; import com.yahoo.vespa.hosted.controller.api.integration.organization.User; import com.yahoo.vespa.hosted.controller.api.integration.routing.RotationStatus; import com.yahoo.vespa.hosted.controller.application.ApplicationPackage; @@ -412,6 +413,8 @@ public class ApplicationApiHandler extends LoggingRequestHandler { metricsObject.setDouble("queryServiceQuality", application.metrics().queryServiceQuality()); metricsObject.setDouble("writeServiceQuality", application.metrics().writeServiceQuality()); + application.ownershipIssueId().ifPresent(issueId -> object.setString("ownershipIssueId", issueId.value())); + application.deploymentJobs().issueId().ifPresent(issueId -> object.setString("deploymentIssueId", issueId.value())); } private HttpResponse deployment(String tenantName, String applicationName, String instanceName, String environment, String region, HttpRequest request) { diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java index b3507fab965..65a2b543e9e 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java @@ -14,6 +14,7 @@ import com.yahoo.vespa.hosted.controller.api.identifiers.PropertyId; import com.yahoo.vespa.hosted.controller.api.identifiers.UserId; import com.yahoo.vespa.hosted.controller.api.integration.MetricsService.ApplicationMetrics; import com.yahoo.vespa.hosted.controller.api.integration.configserver.ConfigServerException; +import com.yahoo.vespa.hosted.controller.api.integration.organization.IssueId; import com.yahoo.vespa.hosted.controller.api.integration.organization.MockOrganization; import com.yahoo.vespa.hosted.controller.api.integration.organization.User; import com.yahoo.vespa.hosted.controller.application.ApplicationPackage; @@ -209,6 +210,7 @@ public class ApplicationApiTest extends ControllerContainerTest { tester.assertResponse(request("/application/v4/tenant/tenant1/application/application1/environment/prod/region/corp-us-east-1/instance/default", GET), new File("deployment.json")); + addIssues(controllerTester, ApplicationId.from("tenant1", "application1", "default")); // GET at root, with "&recursive=deployment", returns info about all tenants, their applications and their deployments tester.assertResponse(request("/application/v4/", GET) .domain("domain1").user("mytenant") @@ -303,6 +305,14 @@ public class ApplicationApiTest extends ControllerContainerTest { controllerTester.controller().deconstruct(); } + private void addIssues(ContainerControllerTester tester, ApplicationId id) { + try (Lock lock = tester.controller().applications().lock(id)) { + tester.controller().applications().store(tester.controller().applications().require(id, lock) + .withDeploymentIssueId(IssueId.from("123")) + .withOwnershipIssueId(IssueId.from("321"))); + } + } + @Test public void testDeployDirectly() throws Exception { // Setup 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 3ebb870d75b..41556c04209 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 @@ -155,5 +155,7 @@ "metrics": { "queryServiceQuality": 0.5, "writeServiceQuality": 0.7 - } + }, + "ownershipIssueId": "321", + "deploymentIssueId": "123" } |