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

Reply via email to