From c4d387d216e72911f80c1ebee91b73aba191b91b Mon Sep 17 00:00:00 2001 From: Tal Gitelman Date: Thu, 28 Mar 2019 11:00:54 +0200 Subject: Make Cassandra port configurable. SDC-BE & Onboarding - BE. Reviewer: Evgenia A & Areli F. Change-Id: Iaf86d647b0560764ef65d9148c85bffaf934992d Issue-ID: SDC-2077 Signed-off-by: Tal Gitelman --- .../impl/cassandra/CassandraSessionFactory.java | 31 +++++++------ .../core/nosqldb/util/CassandraUtils.java | 5 ++- .../core/nosqldb/util/ConfigurationManager.java | 51 +++++++++++++--------- 3 files changed, 52 insertions(+), 35 deletions(-) (limited to 'openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src') diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/impl/cassandra/CassandraSessionFactory.java b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/impl/cassandra/CassandraSessionFactory.java index 87c0055b44..f0945a4da1 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/impl/cassandra/CassandraSessionFactory.java +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/impl/cassandra/CassandraSessionFactory.java @@ -16,9 +16,6 @@ package org.openecomp.core.nosqldb.impl.cassandra; -import com.datastax.driver.core.policies.DCAwareRoundRobinPolicy; -import com.datastax.driver.core.policies.LoadBalancingPolicy; -import com.datastax.driver.core.policies.TokenAwarePolicy; import com.datastax.driver.core.Cluster; import com.datastax.driver.core.ConsistencyLevel; import com.datastax.driver.core.QueryOptions; @@ -27,6 +24,7 @@ import com.datastax.driver.core.SSLOptions; import com.datastax.driver.core.Session; +import com.datastax.driver.core.policies.*; import org.openecomp.core.nosqldb.util.CassandraUtils; import org.openecomp.sdc.common.errors.SdcConfigurationException; import org.openecomp.sdc.common.session.SessionContextProviderFactory; @@ -59,8 +57,19 @@ public class CassandraSessionFactory { * @return the session */ public static Session newCassandraSession() { - Cluster.Builder builder = Cluster.builder(); String[] addresses = CassandraUtils.getAddresses(); + int cassandraPort = CassandraUtils.getCassandraPort(); + Long reconnectTimeout = CassandraUtils.getReconnectTimeout(); + + Cluster.Builder builder = Cluster.builder(); + + if(null != reconnectTimeout) { + builder.withReconnectionPolicy(new ConstantReconnectionPolicy(reconnectTimeout)) + .withRetryPolicy(DefaultRetryPolicy.INSTANCE); + } + + builder.withPort(cassandraPort); + for (String address : addresses) { builder.addContactPoint(address); } @@ -70,10 +79,7 @@ public class CassandraSessionFactory { if (isSsl) { builder.withSSL(getSslOptions()); } - int port = CassandraUtils.getCassandraPort(); - if (port > 0) { - builder.withPort(port); - } + //Check if user/pass Boolean isAuthenticate = CassandraUtils.isAuthenticate(); if (isAuthenticate) { @@ -84,18 +90,19 @@ public class CassandraSessionFactory { setLocalDataCenter(builder); - Cluster cluster = builder.build(); String keyStore = SessionContextProviderFactory.getInstance().createInterface().get() .getTenant(); + LOGGER.info("Cassandra client created hosts: {} port: {} SSL enabled: {} reconnectTimeout", + addresses, cassandraPort, isSsl, reconnectTimeout); return cluster.connect(keyStore); } private static void setLocalDataCenter(Cluster.Builder builder) { String localDataCenter = CassandraUtils.getLocalDataCenter(); if (Objects.nonNull(localDataCenter)) { - LOGGER.info("localDatacenter was provided, setting Cassndra client to use datacenter: {} as " + - "local.", localDataCenter); + LOGGER.info("localDatacenter was provided, setting Cassndra client to use datacenter: {} as local.", + localDataCenter); LoadBalancingPolicy tokenAwarePolicy = new TokenAwarePolicy( DCAwareRoundRobinPolicy.builder().withLocalDc(localDataCenter).build()); @@ -165,6 +172,4 @@ public class CassandraSessionFactory { // prevent instantiation } } - - } diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/util/CassandraUtils.java b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/util/CassandraUtils.java index cc9f626f62..30bc0a72a3 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/util/CassandraUtils.java +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/util/CassandraUtils.java @@ -34,7 +34,10 @@ public class CassandraUtils { public static String[] getAddresses() { return ConfigurationManager.getInstance().getAddresses(); + } + public static Long getReconnectTimeout() { + return ConfigurationManager.getInstance().getReconnectTimeout(); } public static String getKeySpace() { @@ -78,7 +81,7 @@ public class CassandraUtils { } public static int getCassandraPort() { - return ConfigurationManager.getInstance().getSslPort(); + return ConfigurationManager.getInstance().getCassandraPort(); } diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/util/ConfigurationManager.java b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/util/ConfigurationManager.java index 0694acbda1..a1d5246eee 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/util/ConfigurationManager.java +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/util/ConfigurationManager.java @@ -42,6 +42,7 @@ import java.util.function.Function; public class ConfigurationManager { static final String CONFIGURATION_YAML_FILE = "configuration.yaml"; + static private final Integer DEFAULT_CASSANDRA_PORT = 9042; private static final String CASSANDRA = "cassandra"; private static final String CASSANDRA_KEY = CASSANDRA + "Config"; private static final String DEFAULT_KEYSPACE_NAME = "dox"; @@ -50,13 +51,13 @@ public class ConfigurationManager { private static final String CASSANDRA_AUTHENTICATE = CASSANDRA + ".authenticate"; private static final String CASSANDRA_USER = CASSANDRA + ".user"; private static final String CASSANDRA_PASSWORD = CASSANDRA + ".password"; - private static final String CASSANDRA_PORT = CASSANDRA + ".port"; private static final String CASSANDRA_SSL = CASSANDRA + ".ssl"; private static final String CASSANDRA_TRUSTSTORE = CASSANDRA + ".Truststore"; private static final String CASSANDRA_TRUSTSTORE_PASSWORD = CASSANDRA + ".TruststorePassword"; private static final String CASSANDRA_HOSTS_KEY = CASSANDRA + "Hosts"; - private static final String CASSANDRA_PORT_KEY = "port"; + private static final String CASSANDRA_PORT_KEY = "cassandraPort"; private static final String CASSANDRA_USERNAME_KEY = "username"; + private static final String CASSANDRA_RECONNECT_TIMEOUT = "reconnectTimeout"; @SuppressWarnings("squid:S2068") private static final String CASSANDRA_PASSWORD_KEY = "password"; private static final String CASSANDRA_AUTHENTICATE_KEY = "authenticate"; @@ -129,6 +130,33 @@ public class ConfigurationManager { } + /** + * Gets Cassandra port. + * + * @return the port + */ + public int getCassandraPort() { + Integer cassandraPort = (Integer) cassandraConfiguration.get(CASSANDRA_PORT_KEY); + if (Objects.isNull(cassandraPort)) { + cassandraPort = DEFAULT_CASSANDRA_PORT; + } + return cassandraPort; + } + + /** + * Gets Cassandra reconnection timeout + * + * @return + */ + public Long getReconnectTimeout() { + Integer cassandraReconnectTimeout = (Integer) cassandraConfiguration.get(CASSANDRA_RECONNECT_TIMEOUT); + if (Objects.isNull(cassandraReconnectTimeout)) { + LOG.info("No Cassandra reconnect timeout are defined."); + return null; + } + return cassandraReconnectTimeout.longValue(); + } + /** * Gets key space. * @@ -194,25 +222,6 @@ public class ConfigurationManager { return truststorePassword; } - /** - * Gets ssl port. - * - * @return the ssl port - */ - public int getSslPort() { - int port; - String sslPort = System.getProperty(CASSANDRA_PORT); - if (Objects.isNull(sslPort)) { - sslPort = (String) cassandraConfiguration.get(CASSANDRA_PORT_KEY); - if (Objects.isNull(sslPort)) { - sslPort = "0"; - } - } - port = Integer.valueOf(sslPort); - return port; - } - - /** * Is ssl boolean. * -- cgit 1.2.3-korg