JAMES-2592 Add clusterName in ElasticSearch configuration
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/644266ca Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/644266ca Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/644266ca Branch: refs/heads/master Commit: 644266ca1c8e70b655db6758a1d871058b1d3a38 Parents: fd49bd9 Author: Antoine Duprat <adup...@linagora.com> Authored: Tue Nov 13 16:12:36 2018 +0100 Committer: Benoit Tellier <btell...@linagora.com> Committed: Thu Nov 15 09:05:42 2018 +0700 ---------------------------------------------------------------------- .../backends/es/ElasticSearchConfiguration.java | 22 ++++++++- .../es/ElasticSearchConfigurationTest.java | 47 +++++++++++++++++++- 2 files changed, 66 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/644266ca/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ElasticSearchConfiguration.java ---------------------------------------------------------------------- diff --git a/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ElasticSearchConfiguration.java b/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ElasticSearchConfiguration.java index c4700f5..84d115c 100644 --- a/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ElasticSearchConfiguration.java +++ b/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ElasticSearchConfiguration.java @@ -37,9 +37,11 @@ import com.google.common.collect.ImmutableList; public class ElasticSearchConfiguration { + public static class Builder { private final ImmutableList.Builder<Host> hosts; + private Optional<String> clusterName; private Optional<Integer> nbShards; private Optional<Integer> nbReplica; private Optional<Integer> minDelay; @@ -47,6 +49,7 @@ public class ElasticSearchConfiguration { public Builder() { hosts = ImmutableList.builder(); + clusterName = Optional.empty(); nbShards = Optional.empty(); nbReplica = Optional.empty(); minDelay = Optional.empty(); @@ -58,6 +61,11 @@ public class ElasticSearchConfiguration { return this; } + public Builder clusterName(String clusterName) { + this.clusterName = Optional.ofNullable(clusterName); + return this; + } + public Builder addHosts(Collection<Host> hosts) { this.hosts.addAll(hosts); return this; @@ -90,6 +98,7 @@ public class ElasticSearchConfiguration { Preconditions.checkState(!hosts.isEmpty(), "You need to specify ElasticSearch host"); return new ElasticSearchConfiguration( hosts, + clusterName, nbShards.orElse(DEFAULT_NB_SHARDS), nbReplica.orElse(DEFAULT_NB_REPLICA), minDelay.orElse(DEFAULT_CONNECTION_MIN_DELAY), @@ -102,6 +111,7 @@ public class ElasticSearchConfiguration { } public static final String ELASTICSEARCH_HOSTS = "elasticsearch.hosts"; + public static final String ELASTICSEARCH_CLUSTER_NAME = "elasticsearch.clusterName"; public static final String ELASTICSEARCH_MASTER_HOST = "elasticsearch.masterHost"; public static final String ELASTICSEARCH_PORT = "elasticsearch.port"; public static final String ELASTICSEARCH_NB_REPLICA = "elasticsearch.nb.replica"; @@ -124,6 +134,7 @@ public class ElasticSearchConfiguration { public static ElasticSearchConfiguration fromProperties(Configuration configuration) throws ConfigurationException { return builder() .addHosts(getHosts(configuration)) + .clusterName(configuration.getString(ELASTICSEARCH_CLUSTER_NAME)) .nbShards(configuration.getInteger(ELASTICSEARCH_NB_SHARDS, DEFAULT_NB_SHARDS)) .nbReplica(configuration.getInteger(ELASTICSEARCH_NB_REPLICA, DEFAULT_NB_REPLICA)) .minDelay(Optional.ofNullable(configuration.getInteger(ELASTICSEARCH_RETRY_CONNECTION_MIN_DELAY, null))) @@ -168,13 +179,15 @@ public class ElasticSearchConfiguration { } private final ImmutableList<Host> hosts; + private final Optional<String> clusterName; private final int nbShards; private final int nbReplica; private final int minDelay; private final int maxRetries; - private ElasticSearchConfiguration(ImmutableList<Host> hosts,int nbShards, int nbReplica, int minDelay, int maxRetries) { + private ElasticSearchConfiguration(ImmutableList<Host> hosts, Optional<String> clusterName, int nbShards, int nbReplica, int minDelay, int maxRetries) { this.hosts = hosts; + this.clusterName = clusterName; this.nbShards = nbShards; this.nbReplica = nbReplica; this.minDelay = minDelay; @@ -185,6 +198,10 @@ public class ElasticSearchConfiguration { return hosts; } + public Optional<String> getClusterName() { + return clusterName; + } + public int getNbShards() { return nbShards; } @@ -207,6 +224,7 @@ public class ElasticSearchConfiguration { ElasticSearchConfiguration that = (ElasticSearchConfiguration) o; return Objects.equals(this.nbShards, that.nbShards) + && Objects.equals(this.clusterName, that.clusterName) && Objects.equals(this.nbReplica, that.nbReplica) && Objects.equals(this.minDelay, that.minDelay) && Objects.equals(this.maxRetries, that.maxRetries) @@ -217,6 +235,6 @@ public class ElasticSearchConfiguration { @Override public final int hashCode() { - return Objects.hash(hosts, nbShards, nbReplica, minDelay, maxRetries); + return Objects.hash(hosts, clusterName, nbShards, nbReplica, minDelay, maxRetries); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/644266ca/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ElasticSearchConfigurationTest.java ---------------------------------------------------------------------- diff --git a/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ElasticSearchConfigurationTest.java b/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ElasticSearchConfigurationTest.java index 14bb7ae..2397f4d 100644 --- a/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ElasticSearchConfigurationTest.java +++ b/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ElasticSearchConfigurationTest.java @@ -184,6 +184,51 @@ public class ElasticSearchConfigurationTest { } @Test + public void clusterNameShouldBeEmptyWhenNotGiven() throws ConfigurationException { + PropertiesConfiguration configuration = new PropertiesConfiguration(); + String hostname = "myHost"; + configuration.addProperty("elasticsearch.masterHost", hostname); + int port = 9300; + configuration.addProperty("elasticsearch.port", port); + + ElasticSearchConfiguration elasticSearchConfiguration = ElasticSearchConfiguration.fromProperties(configuration); + + assertThat(elasticSearchConfiguration.getClusterName()) + .isEmpty(); + } + + @Test + public void clusterNameShouldBeEmptyWhenNull() throws ConfigurationException { + PropertiesConfiguration configuration = new PropertiesConfiguration(); + String hostname = "myHost"; + configuration.addProperty("elasticsearch.masterHost", hostname); + int port = 9300; + configuration.addProperty("elasticsearch.port", port); + configuration.addProperty("elasticsearch.clusterName", null); + + ElasticSearchConfiguration elasticSearchConfiguration = ElasticSearchConfiguration.fromProperties(configuration); + + assertThat(elasticSearchConfiguration.getClusterName()) + .isEmpty(); + } + + @Test + public void clusterNameShouldKeepTheValueWhenGiven() throws ConfigurationException { + PropertiesConfiguration configuration = new PropertiesConfiguration(); + String hostname = "myHost"; + configuration.addProperty("elasticsearch.masterHost", hostname); + int port = 9300; + configuration.addProperty("elasticsearch.port", port); + String clusterName = "myClusterName"; + configuration.addProperty("elasticsearch.clusterName", clusterName); + + ElasticSearchConfiguration elasticSearchConfiguration = ElasticSearchConfiguration.fromProperties(configuration); + + assertThat(elasticSearchConfiguration.getClusterName()) + .contains(clusterName); + } + + @Test public void validateHostsConfigurationOptionsShouldThrowWhenNoHostSpecify() { assertThatThrownBy(() -> ElasticSearchConfiguration.validateHostsConfigurationOptions( @@ -271,4 +316,4 @@ public class ElasticSearchConfigurationTest { .nbShards(0)) .isInstanceOf(IllegalArgumentException.class); } -} \ No newline at end of file +} --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org