diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-09-13 16:21:45 +0200 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-09-13 16:42:30 +0200 |
commit | 22b02294155b87e79501a56c44cc679d1c7c5a2c (patch) | |
tree | d9f14af9b8e02ff4bedcdb704feef2f59d132d81 /node-admin | |
parent | d706f11a6565042f647c9810cda9dfa8516bd798 (diff) |
Create factory methods for ServiceDumpReport
Diffstat (limited to 'node-admin')
3 files changed, 36 insertions, 26 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/ServiceDumpReport.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/ServiceDumpReport.java index 2d7d21e61e4..3d74d897a87 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/ServiceDumpReport.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/ServiceDumpReport.java @@ -9,6 +9,8 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.reports.BaseReport; +import java.net.URI; +import java.time.Instant; import java.util.List; /** @@ -65,6 +67,34 @@ class ServiceDumpReport extends BaseReport { this.dumpOptions = dumpOptions; } + public static ServiceDumpReport createRequestReport(Instant createdAt, Instant expireAt, String configId, + List<String> artifacts, DumpOptions options) { + return new ServiceDumpReport( + createdAt.toEpochMilli(), null, null, null, null, configId, + expireAt != null ? expireAt.toEpochMilli() : null, null, artifacts, options); + } + + public static ServiceDumpReport createStartedReport(ServiceDumpReport request, Instant startedAt) { + return new ServiceDumpReport( + request.getCreatedMillisOrNull(), startedAt.toEpochMilli(), null, null, null, request.configId(), + request.expireAt(), null, request.artifacts(), request.dumpOptions()); + } + + public static ServiceDumpReport createSuccessReport( + ServiceDumpReport request, Instant startedAt, Instant completedAt, URI location) { + return new ServiceDumpReport( + request.getCreatedMillisOrNull(), startedAt.toEpochMilli(), completedAt.toEpochMilli(), null, + location.toString(), request.configId(), request.expireAt(), null, request.artifacts(), + request.dumpOptions()); + } + + public static ServiceDumpReport createErrorReport( + ServiceDumpReport request, Instant startedAt, Instant failedAt, String message) { + return new ServiceDumpReport( + request.getCreatedMillisOrNull(), startedAt.toEpochMilli(), null, failedAt.toEpochMilli(), null, + request.configId(), request.expireAt(), message, request.artifacts(), request.dumpOptions()); + } + @JsonGetter(STARTED_AT_FIELD) public Long startedAt() { return startedAt; } @JsonGetter(COMPLETED_AT_FIELD) public Long completedAt() { return completedAt; } @JsonGetter(FAILED_AT_FIELD) public Long failedAt() { return failedAt; } diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumperImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumperImpl.java index a5b45a46b65..83e661ec0fd 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumperImpl.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumperImpl.java @@ -94,7 +94,7 @@ public class VespaServiceDumperImpl implements VespaServiceDumper { context.log(log, Level.INFO, "Creating service dump for " + configId + " requested at " + Instant.ofEpochMilli(request.getCreatedMillisOrNull())); - storeReport(context, createStartedReport(request, startedAt)); + storeReport(context, ServiceDumpReport.createStartedReport(request, startedAt)); if (directoryOnHost.exists()) { context.log(log, Level.INFO, "Removing existing directory '" + directoryOnHost +"'."); directoryOnHost.deleteRecursively(); @@ -124,7 +124,7 @@ public class VespaServiceDumperImpl implements VespaServiceDumper { return; } context.log(log, Level.INFO, "Upload complete"); - storeReport(context, createSuccessReport(clock, request, startedAt, destination)); + storeReport(context, ServiceDumpReport.createSuccessReport(request, startedAt, clock.instant(), destination)); } catch (Exception e) { handleFailure(context, request, startedAt, e); } finally { @@ -149,13 +149,13 @@ public class VespaServiceDumperImpl implements VespaServiceDumper { private void handleFailure(NodeAgentContext context, ServiceDumpReport request, Instant startedAt, Exception failure) { context.log(log, Level.WARNING, failure.toString(), failure); - ServiceDumpReport report = createErrorReport(clock, request, startedAt, failure.toString()); + ServiceDumpReport report = ServiceDumpReport.createErrorReport(request, startedAt, clock.instant(), failure.toString()); storeReport(context, report); } private void handleFailure(NodeAgentContext context, ServiceDumpReport request, Instant startedAt, String message) { context.log(log, Level.WARNING, message); - ServiceDumpReport report = createErrorReport(clock, request, startedAt, message); + ServiceDumpReport report = ServiceDumpReport.createErrorReport(request, startedAt, clock.instant(), message); storeReport(context, report); } @@ -165,26 +165,6 @@ public class VespaServiceDumperImpl implements VespaServiceDumper { nodeRepository.updateNodeAttributes(context.hostname().value(), nodeAttributes); } - private static ServiceDumpReport createStartedReport(ServiceDumpReport request, Instant startedAt) { - return new ServiceDumpReport( - request.getCreatedMillisOrNull(), startedAt.toEpochMilli(), null, null, null, request.configId(), - request.expireAt(), null, request.artifacts(), request.dumpOptions()); - } - - private static ServiceDumpReport createSuccessReport( - Clock clock, ServiceDumpReport request, Instant startedAt, URI location) { - return new ServiceDumpReport( - request.getCreatedMillisOrNull(), startedAt.toEpochMilli(), clock.instant().toEpochMilli(), null, - location.toString(), request.configId(), request.expireAt(), null, request.artifacts(), request.dumpOptions()); - } - - private static ServiceDumpReport createErrorReport( - Clock clock, ServiceDumpReport request, Instant startedAt, String message) { - return new ServiceDumpReport( - request.getCreatedMillisOrNull(), startedAt.toEpochMilli(), null, clock.instant().toEpochMilli(), null, - request.configId(), request.expireAt(), message, request.artifacts(), request.dumpOptions()); - } - static String createDumpId(ServiceDumpReport request) { String sanitizedConfigId = Lowercase.toLowerCase(request.configId()).replaceAll("[^a-z_0-9]", "-"); return sanitizedConfigId + "-" + request.getCreatedMillisOrNull().toString(); diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumperImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumperImplTest.java index 3489c08e346..47528a56048 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumperImplTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/servicedump/VespaServiceDumperImplTest.java @@ -125,8 +125,8 @@ class VespaServiceDumperImplTest { } private static NodeSpec createNodeSpecWithDumpRequest(NodeRepoMock repository, String artifactName, ServiceDumpReport.DumpOptions options) { - ServiceDumpReport request = new ServiceDumpReport( - 1600000000000L, null, null, null, null, "default/container.1", null, null, List.of(artifactName), options); + ServiceDumpReport request = ServiceDumpReport.createRequestReport( + Instant.ofEpochMilli(1600000000000L), null, "default/container.1", List.of(artifactName), options); NodeSpec spec = NodeSpec.Builder .testSpec(HOSTNAME, NodeState.active) .report(ServiceDumpReport.REPORT_ID, request.toJsonNode()) |