From 656587d7ad8ac62e277a94800aff6a0afbfc7e83 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Sat, 27 May 2017 23:25:51 +0200 Subject: [PATCH] Allow Vault standby node to pass health check. We now accept Vault standby nodes as available. Requests to standby nodes are redirected by Vault to the master node. Communication with a standby node allows using Vault without functional restrictions. Related pull request: gh-113. Fixes gh-112. --- .../cloud/vault/config/VaultHealthIndicator.java | 5 +++-- .../config/VaultHealthIndicatorUnitTests.java | 16 ++++++++-------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/VaultHealthIndicator.java b/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/VaultHealthIndicator.java index 998d8c90..6a6ccfd3 100644 --- a/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/VaultHealthIndicator.java +++ b/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/VaultHealthIndicator.java @@ -21,6 +21,8 @@ import org.springframework.vault.core.VaultOperations; import org.springframework.vault.support.VaultHealth; /** + * Simple health indicator reporting Vault's availability. + * * @author Stuart Ingram * @author Mark Paluch */ @@ -48,8 +50,7 @@ public class VaultHealthIndicator implements HealthIndicator { } if (vaultHealthResponse.isStandby()) { - return Health.outOfService().withDetail("state", "Vault in standby") - .build(); + return Health.up().withDetail("state", "Vault in standby").build(); } return Health.up().build(); diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultHealthIndicatorUnitTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultHealthIndicatorUnitTests.java index 0c675e35..2972f53d 100644 --- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultHealthIndicatorUnitTests.java +++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultHealthIndicatorUnitTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2016 the original author or authors. + * Copyright 2016-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -51,7 +51,7 @@ public class VaultHealthIndicatorUnitTests { VaultHealthIndicator healthIndicator; @Before - public void before() throws Exception { + public void before() { healthIndicator = new VaultHealthIndicator(vaultOperations); @@ -60,7 +60,7 @@ public class VaultHealthIndicatorUnitTests { } @Test - public void shouldReportHealthyService() throws Exception { + public void shouldReportHealthyService() { when(healthResponse.isInitialized()).thenReturn(true); when(vaultOperations.opsForSys()).thenReturn(vaultSysOperations); @@ -71,7 +71,7 @@ public class VaultHealthIndicatorUnitTests { } @Test - public void shouldReportSealedService() throws Exception { + public void shouldReportSealedService() { when(healthResponse.isInitialized()).thenReturn(true); when(healthResponse.isSealed()).thenReturn(true); @@ -83,7 +83,7 @@ public class VaultHealthIndicatorUnitTests { } @Test - public void shouldReportUninitializedService() throws Exception { + public void shouldReportUninitializedService() { Health health = healthIndicator.health(); @@ -92,19 +92,19 @@ public class VaultHealthIndicatorUnitTests { } @Test - public void shouldReportStandbyService() throws Exception { + public void shouldReportStandbyService() { when(healthResponse.isInitialized()).thenReturn(true); when(healthResponse.isStandby()).thenReturn(true); Health health = healthIndicator.health(); - assertThat(health.getStatus()).isEqualTo(Status.OUT_OF_SERVICE); + assertThat(health.getStatus()).isEqualTo(Status.UP); assertThat(health.getDetails()).containsEntry("state", "Vault in standby"); } @Test - public void exceptionsShouldReportDownStatus() throws Exception { + public void exceptionsShouldReportDownStatus() { reset(vaultSysOperations); when(vaultSysOperations.health()).thenThrow(new IllegalStateException());