summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorJon Marius Venstad <venstad@gmail.com>2020-02-14 09:33:50 +0100
committerJon Marius Venstad <venstad@gmail.com>2020-02-14 09:54:57 +0100
commite8c73cb09347b6170e8dd114a898d0234f93caa1 (patch)
tree730cc97cdf62ec14e2e1bf632b3f8421458fff4c /controller-server
parentc2d7a2936f9a6c92b086dbb738306bc1d690115d (diff)
Add "deployment" array with dev jobs in new format to instance jobs path
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java56
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-overview.json34
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/jobs-direct-deployment.json3
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/jobs.json34
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview-user-instance.json34
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview.json3
6 files changed, 140 insertions, 24 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java
index 339facec231..0b96d8a7307 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java
@@ -45,6 +45,8 @@ import java.net.URI;
import java.time.Instant;
import java.time.format.TextStyle;
import java.util.ArrayDeque;
+import java.util.Arrays;
+import java.util.Collection;
import java.util.Comparator;
import java.util.Deque;
import java.util.LinkedHashMap;
@@ -181,6 +183,20 @@ class JobControllerApiHandlerHelper {
devJobObject.setString("url", baseUriForJobs.resolve(baseUriForJobs.getPath() + "/" + type.jobName()).normalize().toString());
});
+ Cursor jobsArray = responseObject.setArray("deployment");
+ Arrays.stream(JobType.values())
+ .filter(type -> type.environment().isManuallyDeployed())
+ .map(devType -> new JobId(instance.id(), devType))
+ .forEach(job -> {
+ Collection<Run> runs = controller.jobController().runs(job).descendingMap().values();
+ if (runs.isEmpty())
+ return;
+
+ Cursor jobObject = jobsArray.addObject();
+ jobObject.setString("name", job.type().jobName());
+ toSlime(jobObject.setArray("runs"), runs, baseUriForJobs.toString());
+ });
+
return new SlimeJsonResponse(slime);
}
@@ -592,7 +608,7 @@ class JobControllerApiHandlerHelper {
Cursor latestVersionsObject = stepObject.setObject("latestVersions");
List<ChangeBlocker> blockers = application.deploymentSpec().requireInstance(stepStatus.instance()).changeBlocker();
- latestVersionPreferablyWithNormalConfidenceNAndotNewerThanSystem(controller.versionStatus().versions())
+ latestVersionPreferablyWithNormalConfidenceAndNotNewerThanSystem(controller.versionStatus().versions())
.ifPresent(latestPlatform -> {
Cursor latestPlatformObject = latestVersionsObject.setObject("platform");
latestPlatformObject.setString("platform", latestPlatform.versionNumber().toFullString());
@@ -642,22 +658,7 @@ class JobControllerApiHandlerHelper {
toSlime(runObject.setObject("versions"), versions);
}
- Cursor runsArray = stepObject.setArray("runs");
- jobStatus.runs().descendingMap().values().stream().limit(10).forEach(run -> {
- Cursor runObject = runsArray.addObject();
- runObject.setLong("id", run.id().number());
- runObject.setString("url", baseUriForJob + "/run/" + run.id());
- runObject.setLong("start", run.start().toEpochMilli());
- run.end().ifPresent(end -> runObject.setLong("end", end.toEpochMilli()));
- runObject.setString("status", run.status().name());
- toSlime(runObject.setObject("versions"), run.versions());
- Cursor runStepsArray = runObject.setArray("steps");
- run.steps().forEach((step, info) -> {
- Cursor runStepObject = runStepsArray.addObject();
- runStepObject.setString("name", step.name());
- runStepObject.setString("status", info.status().name());
- });
- });
+ toSlime(stepObject.setArray("runs"), jobStatus.runs().descendingMap().values(), baseUriForJob);
});
}
@@ -690,7 +691,7 @@ class JobControllerApiHandlerHelper {
});
}
- private static Optional<VespaVersion> latestVersionPreferablyWithNormalConfidenceNAndotNewerThanSystem(List<VespaVersion> versions) {
+ private static Optional<VespaVersion> latestVersionPreferablyWithNormalConfidenceAndNotNewerThanSystem(List<VespaVersion> versions) {
int i;
for (i = versions.size(); i-- > 0; )
if (versions.get(i).isSystemVersion())
@@ -706,5 +707,22 @@ class JobControllerApiHandlerHelper {
return Optional.of(versions.get(i));
}
-}
+ private static void toSlime(Cursor runsArray, Collection<Run> runs, String baseUriForJob) {
+ runs.stream().limit(10).forEach(run -> {
+ Cursor runObject = runsArray.addObject();
+ runObject.setLong("id", run.id().number());
+ runObject.setString("url", baseUriForJob + "/run/" + run.id());
+ runObject.setLong("start", run.start().toEpochMilli());
+ run.end().ifPresent(end -> runObject.setLong("end", end.toEpochMilli()));
+ runObject.setString("status", run.status().name());
+ toSlime(runObject.setObject("versions"), run.versions());
+ Cursor runStepsArray = runObject.setArray("steps");
+ run.steps().forEach((step, info) -> {
+ Cursor runStepObject = runStepsArray.addObject();
+ runStepObject.setString("name", step.name());
+ runStepObject.setString("status", info.status().name());
+ });
+ });
+ }
+}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-overview.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-overview.json
index bfaa62a602d..892734a007f 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-overview.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/dev-overview.json
@@ -29,5 +29,37 @@
],
"url": "https://some.url:43/root/dev-us-east-1"
}
- }
+ },
+ "deployment": [
+ {
+ "name": "dev-us-east-1",
+ "runs": [
+ {
+ "id": 1,
+ "url": "https://some.url:43/root/run/run 1 of dev-us-east-1 for tenant.application",
+ "start": 0,
+ "end": 0,
+ "status": "success",
+ "versions": {
+ "targetPlatform": "6.1.0",
+ "targetApplication": {}
+ },
+ "steps": [
+ {
+ "name": "deployReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "installReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "copyVespaLogs",
+ "status": "succeeded"
+ }
+ ]
+ }
+ ]
+ }
+ ]
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/jobs-direct-deployment.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/jobs-direct-deployment.json
index 85a3245c308..e97c76668d3 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/jobs-direct-deployment.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/jobs-direct-deployment.json
@@ -3,5 +3,6 @@
"deployments": [],
"lastVersions": {},
"deploying": {},
- "jobs": {}
+ "jobs": {},
+ "deployment": []
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/jobs.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/jobs.json
index 3ab7078ae6a..60b7c568b19 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/jobs.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/jobs.json
@@ -328,5 +328,37 @@
],
"url": "http://localhost:8080/application/v4/tenant/tenant1/application/application1/instance/instance1/job/dev-us-east-1"
}
- }
+ },
+ "deployment": [
+ {
+ "name": "dev-us-east-1",
+ "runs": [
+ {
+ "id": 1,
+ "url": "http://localhost:8080/application/v4/tenant/tenant1/application/application1/instance/instance1/job/run/run 1 of dev-us-east-1 for tenant1.application1.instance1",
+ "start": "(ignore)",
+ "end": "(ignore)",
+ "status": "success",
+ "versions": {
+ "targetPlatform": "6.1.0",
+ "targetApplication": {}
+ },
+ "steps": [
+ {
+ "name": "deployReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "installReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "copyVespaLogs",
+ "status": "succeeded"
+ }
+ ]
+ }
+ ]
+ }
+ ]
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview-user-instance.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview-user-instance.json
index 95afb12dcbf..c2e12c655f8 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview-user-instance.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview-user-instance.json
@@ -50,5 +50,37 @@
],
"url": "https://some.url:43/root/dev-aws-us-east-2a"
}
- }
+ },
+ "deployment": [
+ {
+ "name": "dev-aws-us-east-2a",
+ "runs": [
+ {
+ "id": 1,
+ "url": "https://some.url:43/root//run/run 1 of dev-aws-us-east-2a for tenant.application.user",
+ "start": 3703000,
+ "end": 3703000,
+ "status": "success",
+ "versions": {
+ "targetPlatform": "7.1.0",
+ "targetApplication": {}
+ },
+ "steps": [
+ {
+ "name": "deployReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "installReal",
+ "status": "succeeded"
+ },
+ {
+ "name": "copyVespaLogs",
+ "status": "succeeded"
+ }
+ ]
+ }
+ ]
+ }
+ ]
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview.json
index 9510b06fb42..1e1a4549006 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview.json
@@ -945,5 +945,6 @@
"url": "https://some.url:43/root/production-us-east-3"
}
},
- "devJobs": {}
+ "devJobs": {},
+ "deployment": []
}