diff --git a/src/main/java/com/orbitz/consul/model/agent/Check.java b/src/main/java/com/orbitz/consul/model/agent/Check.java index 3e8a5694..8601b8c6 100644 --- a/src/main/java/com/orbitz/consul/model/agent/Check.java +++ b/src/main/java/com/orbitz/consul/model/agent/Check.java @@ -5,8 +5,11 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.google.common.base.Optional; +import com.google.common.collect.ImmutableList; import org.immutables.value.Value; +import java.util.List; + import static com.google.common.base.Preconditions.checkState; @Value.Immutable @@ -45,6 +48,10 @@ public abstract class Check { @JsonProperty("ServiceID") public abstract Optional getServiceId(); + @JsonProperty("ServiceTags") + @JsonDeserialize(as = ImmutableList.class, contentAs = String.class) + public abstract List getServiceTags(); + @JsonProperty("DeregisterCriticalServiceAfter") public abstract Optional getDeregisterCriticalServiceAfter(); diff --git a/src/main/java/com/orbitz/consul/model/health/HealthCheck.java b/src/main/java/com/orbitz/consul/model/health/HealthCheck.java index e01d78f5..2c4899bc 100644 --- a/src/main/java/com/orbitz/consul/model/health/HealthCheck.java +++ b/src/main/java/com/orbitz/consul/model/health/HealthCheck.java @@ -5,8 +5,11 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.google.common.base.Optional; +import com.google.common.collect.ImmutableList; import org.immutables.value.Value; +import java.util.List; + @Value.Immutable @JsonSerialize(as = ImmutableHealthCheck.class) @JsonDeserialize(as = ImmutableHealthCheck.class) @@ -37,4 +40,8 @@ public abstract class HealthCheck { @JsonProperty("ServiceName") public abstract Optional getServiceName(); + @JsonProperty("ServiceTags") + @JsonDeserialize(as = ImmutableList.class, contentAs = String.class) + public abstract List getServiceTags(); + } diff --git a/src/test/java/com/orbitz/consul/model/agent/CheckTest.java b/src/test/java/com/orbitz/consul/model/agent/CheckTest.java index d4d9b111..78a4cfc9 100644 --- a/src/test/java/com/orbitz/consul/model/agent/CheckTest.java +++ b/src/test/java/com/orbitz/consul/model/agent/CheckTest.java @@ -2,6 +2,10 @@ import org.junit.Test; +import java.util.Collections; + +import static org.junit.Assert.assertEquals; + public class CheckTest { @Test(expected = IllegalStateException.class) @@ -33,4 +37,25 @@ public void testCheckIntervalScript() throws Exception { .name("name") .build(); } -} \ No newline at end of file + + @Test + public void serviceTagsAreNotNullWhenNotSpecified() { + Check check = ImmutableCheck.builder() + .name("name") + .id("id") + .build(); + + assertEquals(Collections.emptyList(), check.getServiceTags()); + } + + @Test + public void serviceTagsCanBeAddedToCheck() { + Check check = ImmutableCheck.builder() + .name("name") + .id("id") + .addServiceTags("myTag") + .build(); + + assertEquals(Collections.singletonList("myTag"), check.getServiceTags()); + } +} diff --git a/src/test/java/com/orbitz/consul/model/health/HealthCheckTest.java b/src/test/java/com/orbitz/consul/model/health/HealthCheckTest.java new file mode 100644 index 00000000..4ca95554 --- /dev/null +++ b/src/test/java/com/orbitz/consul/model/health/HealthCheckTest.java @@ -0,0 +1,35 @@ +package com.orbitz.consul.model.health; + +import org.junit.Test; + +import java.util.Collections; + +import static org.junit.Assert.assertEquals; + +public class HealthCheckTest { + + @Test + public void serviceTagsAreNotNullWhenNotSpecified() { + HealthCheck check = ImmutableHealthCheck.builder() + .name("name") + .node("node") + .checkId("id") + .status("passing") + .build(); + + assertEquals(Collections.emptyList(), check.getServiceTags()); + } + + @Test + public void serviceTagsCanBeAddedToHealthCheck() { + HealthCheck check = ImmutableHealthCheck.builder() + .name("name") + .node("node") + .checkId("id") + .status("passing") + .addServiceTags("myTag") + .build(); + + assertEquals(Collections.singletonList("myTag"), check.getServiceTags()); + } +}