diff --git a/CHANGELOG.md b/CHANGELOG.md index aaea9b0..c8161a5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,17 @@ +* Simplify JSON parsing in error handler +* Add new fields from Vault 1.16 and 1.17 to `HealthResponse` + * `echo_duration_ms` + * `clock_skew_ms` + * `replication_primary_canary_age_ms` + * `enterprise` + +### Dependencies +* Updated Jackson to 2.17.1 + +### Test +* Tested against Vault 1.2 to 1.17 + + ## 1.2.0 (2023-12-11) ### Deprecations diff --git a/pom.xml b/pom.xml index 645eecd..b3f37bf 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ de.stklcode.jvault jvault-connector - 1.2.1-SNAPSHOT + 1.3.0-SNAPSHOT jar diff --git a/src/main/java/de/stklcode/jvault/connector/model/response/HealthResponse.java b/src/main/java/de/stklcode/jvault/connector/model/response/HealthResponse.java index e6e3f29..7a52064 100644 --- a/src/main/java/de/stklcode/jvault/connector/model/response/HealthResponse.java +++ b/src/main/java/de/stklcode/jvault/connector/model/response/HealthResponse.java @@ -29,7 +29,7 @@ import java.util.Objects; */ @JsonIgnoreProperties(ignoreUnknown = true) public final class HealthResponse implements VaultResponse { - private static final long serialVersionUID = 6483840078694294401L; + private static final long serialVersionUID = 8675155916902904516L; @JsonProperty("cluster_id") private String clusterID; @@ -61,6 +61,18 @@ public final class HealthResponse implements VaultResponse { @JsonProperty("performance_standby") private Boolean performanceStandby; + @JsonProperty("echo_duration_ms") + private Long echoDurationMs; + + @JsonProperty("clock_skew_ms") + private Long clockSkewMs; + + @JsonProperty("replication_primary_canary_age_ms") + private Long replicationPrimaryCanaryAgeMs; + + @JsonProperty("enterprise") + private Boolean enterprise; + /** * @return The Cluster ID. */ @@ -134,6 +146,38 @@ public final class HealthResponse implements VaultResponse { return performanceStandby; } + /** + * @return Heartbeat echo duration in milliseconds (since Vault 1.16) + * @since 1.3 + */ + public Long getEchoDurationMs() { + return echoDurationMs; + } + + /** + * @return Clock skew in milliseconds (since Vault 1.16) + * @since 1.3 + */ + public Long getClockSkewMs() { + return clockSkewMs; + } + + /** + * @return Replication primary canary age in milliseconds (since Vault 1.17) + * @since 1.3 + */ + public Long getReplicationPrimaryCanaryAgeMs() { + return replicationPrimaryCanaryAgeMs; + } + + /** + * @return Enterprise instance? (since Vault 1.17) + * @since 1.3 + */ + public Boolean isEnterprise() { + return enterprise; + } + @Override public boolean equals(Object o) { if (this == o) { @@ -151,12 +195,17 @@ public final class HealthResponse implements VaultResponse { Objects.equals(initialized, that.initialized) && Objects.equals(replicationPerfMode, that.replicationPerfMode) && Objects.equals(replicationDrMode, that.replicationDrMode) && - Objects.equals(performanceStandby, that.performanceStandby); + Objects.equals(performanceStandby, that.performanceStandby) && + Objects.equals(echoDurationMs, that.echoDurationMs) && + Objects.equals(clockSkewMs, that.clockSkewMs) && + Objects.equals(replicationPrimaryCanaryAgeMs, that.replicationPrimaryCanaryAgeMs) && + Objects.equals(enterprise, that.enterprise); } @Override public int hashCode() { return Objects.hash(clusterID, clusterName, version, serverTimeUTC, standby, sealed, initialized, - replicationPerfMode, replicationDrMode, performanceStandby); + replicationPerfMode, replicationDrMode, performanceStandby, echoDurationMs, clockSkewMs, + replicationPrimaryCanaryAgeMs, enterprise); } } diff --git a/src/test/java/de/stklcode/jvault/connector/model/response/HealthResponseTest.java b/src/test/java/de/stklcode/jvault/connector/model/response/HealthResponseTest.java index c0e5b58..bd454cc 100644 --- a/src/test/java/de/stklcode/jvault/connector/model/response/HealthResponseTest.java +++ b/src/test/java/de/stklcode/jvault/connector/model/response/HealthResponseTest.java @@ -31,7 +31,7 @@ import static org.junit.jupiter.api.Assertions.*; class HealthResponseTest extends AbstractModelTest { private static final String CLUSTER_ID = "c9abceea-4f46-4dab-a688-5ce55f89e228"; private static final String CLUSTER_NAME = "vault-cluster-5515c810"; - private static final String VERSION = "0.9.2"; + private static final String VERSION = "0.17.0"; private static final Long SERVER_TIME_UTC = 1469555798L; private static final Boolean STANDBY = false; private static final Boolean SEALED = false; @@ -39,6 +39,10 @@ class HealthResponseTest extends AbstractModelTest { private static final Boolean PERF_STANDBY = false; private static final String REPL_PERF_MODE = "disabled"; private static final String REPL_DR_MODE = "disabled"; + private static final Long ECHO_DURATION = 1L; + private static final Long CLOCK_SKEW = 0L; + private static final Long REPL_PRIM_CANARY_AGE = 2L; + private static final Boolean ENTERPRISE = false; private static final String RES_JSON = "{\n" + " \"cluster_id\": \"" + CLUSTER_ID + "\",\n" + @@ -50,7 +54,11 @@ class HealthResponseTest extends AbstractModelTest { " \"initialized\": " + INITIALIZED + ",\n" + " \"replication_performance_mode\": \"" + REPL_PERF_MODE + "\",\n" + " \"replication_dr_mode\": \"" + REPL_DR_MODE + "\",\n" + - " \"performance_standby\": " + PERF_STANDBY + "\n" + + " \"performance_standby\": " + PERF_STANDBY + ",\n" + + " \"echo_duration_ms\": " + ECHO_DURATION + ",\n" + + " \"clock_skew_ms\": " + CLOCK_SKEW + ",\n" + + " \"replication_primary_canary_age_ms\": " + REPL_PRIM_CANARY_AGE + ",\n" + + " \"enterprise\": " + ENTERPRISE + "\n" + "}"; HealthResponseTest() { @@ -87,5 +95,9 @@ class HealthResponseTest extends AbstractModelTest { assertEquals(PERF_STANDBY, res.isPerformanceStandby(), "Incorrect performance standby state"); assertEquals(REPL_PERF_MODE, res.getReplicationPerfMode(), "Incorrect replication perf mode"); assertEquals(REPL_DR_MODE, res.getReplicationDrMode(), "Incorrect replication DR mode"); + assertEquals(ECHO_DURATION, res.getEchoDurationMs(), "Incorrect echo duration"); + assertEquals(CLOCK_SKEW, res.getClockSkewMs(), "Incorrect clock skew"); + assertEquals(REPL_PRIM_CANARY_AGE, res.getReplicationPrimaryCanaryAgeMs(), "Incorrect canary age"); + assertEquals(ENTERPRISE, res.isEnterprise(), "Incorrect enterprise flag"); } }