diff options
author | Håkon Hallingstad <hakon@yahooinc.com> | 2021-09-13 16:41:21 +0200 |
---|---|---|
committer | Håkon Hallingstad <hakon@yahooinc.com> | 2021-09-13 16:41:21 +0200 |
commit | a3fcef7201b804437becb7773821bb1457a1c8ce (patch) | |
tree | 42db280ea8d99bcb80378e907db8aa3ba6262cc6 /orchestrator | |
parent | dc4fd3d892d799cee3016f04f134bd1baa5c9ce6 (diff) |
Add ServiceStatus.UNKNOWN
Diffstat (limited to 'orchestrator')
4 files changed, 14 insertions, 2 deletions
diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ClusterApiImpl.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ClusterApiImpl.java index 6e88b227e61..b8538079194 100644 --- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ClusterApiImpl.java +++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/model/ClusterApiImpl.java @@ -126,7 +126,10 @@ class ClusterApiImpl implements ClusterApi { continue; } - if (service.serviceStatus() == ServiceStatus.DOWN) { + if (service.serviceStatus() == ServiceStatus.UNKNOWN) { + reasons.mergeWith(SuspensionReasons.unknownStatus(service)); + continue; + } else if (service.serviceStatus() == ServiceStatus.DOWN) { Optional<Instant> since = service.serviceStatusInfo().since(); if (since.isEmpty()) { reasons.mergeWith(SuspensionReasons.isDown(service)); diff --git a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/SuspensionReasons.java b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/SuspensionReasons.java index c043396497b..4a1b4528d02 100644 --- a/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/SuspensionReasons.java +++ b/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/policy/SuspensionReasons.java @@ -23,12 +23,19 @@ public class SuspensionReasons { private final Map<HostName, List<String>> reasons = new HashMap<>(); public static SuspensionReasons nothingNoteworthy() { return new SuspensionReasons(); } + public static SuspensionReasons isDown(ServiceInstance service) { return new SuspensionReasons().addReason( service.hostName(), service.descriptiveName() + " is down"); } + public static SuspensionReasons unknownStatus(ServiceInstance service) { + return new SuspensionReasons().addReason( + service.hostName(), + service.descriptiveName() + " has not yet been probed for health"); + } + public static SuspensionReasons downSince(ServiceInstance service, Instant instant, Duration downDuration) { return new SuspensionReasons().addReason( service.hostName(), diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ApplicationApiImplTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ApplicationApiImplTest.java index c3e53b2f340..1138dd3f738 100644 --- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ApplicationApiImplTest.java +++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ApplicationApiImplTest.java @@ -165,9 +165,11 @@ public class ApplicationApiImplTest { verifyNoRemarksConditionWith(HostStatus.NO_REMARKS, ServiceStatus.UP, true); verifyNoRemarksConditionWith(HostStatus.NO_REMARKS, ServiceStatus.NOT_CHECKED, true); verifyNoRemarksConditionWith(HostStatus.NO_REMARKS, ServiceStatus.DOWN, true); + verifyNoRemarksConditionWith(HostStatus.NO_REMARKS, ServiceStatus.UNKNOWN, true); verifyNoRemarksConditionWith(HostStatus.ALLOWED_TO_BE_DOWN, ServiceStatus.UP, false); verifyNoRemarksConditionWith(HostStatus.ALLOWED_TO_BE_DOWN, ServiceStatus.NOT_CHECKED, false); verifyNoRemarksConditionWith(HostStatus.ALLOWED_TO_BE_DOWN, ServiceStatus.DOWN, false); + verifyNoRemarksConditionWith(HostStatus.ALLOWED_TO_BE_DOWN, ServiceStatus.UNKNOWN, false); } private void verifyNoRemarksConditionWith(HostStatus hostStatus, ServiceStatus serviceStatus, boolean expectUp) { diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ClusterApiImplTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ClusterApiImplTest.java index c61c8eb34ec..2946c82eab8 100644 --- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ClusterApiImplTest.java +++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ClusterApiImplTest.java @@ -192,7 +192,7 @@ public class ClusterApiImplTest { @Test public void testSingleConfigServerCanSuspend() { - for (var status : EnumSet.of(ServiceStatus.UP, ServiceStatus.DOWN)) { + for (var status : EnumSet.of(ServiceStatus.UP, ServiceStatus.DOWN, ServiceStatus.UNKNOWN)) { var clusterApi = makeConfigClusterApi(1, status); var policy = new HostedVespaClusterPolicy(flagSource, zone); try { |