You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ad...@apache.org on 2018/12/07 16:13:18 UTC
[10/11] james-project git commit: JAMES-2592 Add clusterName in
ElasticSearch configuration
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/a026c36c
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/a026c36c
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/a026c36c
Branch: refs/heads/3.2.x
Commit: a026c36c755bdb6f94531888dd57762123c75273
Parents: 0cec75c
Author: Antoine Duprat <ad...@linagora.com>
Authored: Tue Nov 13 16:12:36 2018 +0100
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Fri Dec 7 17:11:56 2018 +0100
----------------------------------------------------------------------
.../backends/es/ElasticSearchConfiguration.java | 22 +++++++++-
.../es/ElasticSearchConfigurationTest.java | 45 ++++++++++++++++++++
2 files changed, 65 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/a026c36c/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/a026c36c/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..4fa55e9 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(
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org