diff --git a/src/main/java/com/contrastsecurity/cassandra/migration/CassandraMigration.java b/src/main/java/com/contrastsecurity/cassandra/migration/CassandraMigration.java index 043b956..38844d8 100644 --- a/src/main/java/com/contrastsecurity/cassandra/migration/CassandraMigration.java +++ b/src/main/java/com/contrastsecurity/cassandra/migration/CassandraMigration.java @@ -152,6 +152,8 @@ T execute(Action action) { throw new IllegalArgumentException("Password must be provided with username."); } } + if (keyspace.getCluster().isSSL()) + builder.withSSL(); cluster = builder.build(); Metadata metadata = cluster.getMetadata(); diff --git a/src/main/java/com/contrastsecurity/cassandra/migration/config/Cluster.java b/src/main/java/com/contrastsecurity/cassandra/migration/config/Cluster.java index 89d339b..7eb6c1a 100644 --- a/src/main/java/com/contrastsecurity/cassandra/migration/config/Cluster.java +++ b/src/main/java/com/contrastsecurity/cassandra/migration/config/Cluster.java @@ -7,7 +7,8 @@ public enum ClusterProperty { CONTACTPOINTS(PROPERTY_PREFIX + "contactpoints", "Comma separated values of node IP addresses"), PORT(PROPERTY_PREFIX + "port", "CQL native transport port"), USERNAME(PROPERTY_PREFIX + "username", "Username for password authenticator"), - PASSWORD(PROPERTY_PREFIX + "password", "Password for password authenticator"); + PASSWORD(PROPERTY_PREFIX + "password", "Password for password authenticator"), + SSL(PROPERTY_PREFIX + "ssl", "Cluster requires SSL connection (true/false)"); private String name; private String description; @@ -30,6 +31,7 @@ public String getDescription() { private int port = 9042; private String username; private String password; + private boolean ssl; public Cluster() { String contactpointsP = System.getProperty(ClusterProperty.CONTACTPOINTS.getName()); @@ -47,6 +49,8 @@ public Cluster() { String passwordP = System.getProperty(ClusterProperty.PASSWORD.getName()); if (null != passwordP && passwordP.trim().length() != 0) this.password = passwordP; + + this.ssl = Boolean.getBoolean(ClusterProperty.SSL.getName()); } public String[] getContactpoints() { @@ -80,4 +84,12 @@ public String getPassword() { public void setPassword(String password) { this.password = password; } + + public boolean isSSL() { + return ssl; + } + + public void setSSL(boolean ssl) { + this.ssl = ssl; + } } diff --git a/src/test/java/com/contrastsecurity/cassandra/migration/BaseIT.java b/src/test/java/com/contrastsecurity/cassandra/migration/BaseIT.java index 1a810c9..6b289c2 100644 --- a/src/test/java/com/contrastsecurity/cassandra/migration/BaseIT.java +++ b/src/test/java/com/contrastsecurity/cassandra/migration/BaseIT.java @@ -17,6 +17,7 @@ public abstract class BaseIT { public static final int CASSANDRA_PORT = 9147; public static final String CASSANDRA_USERNAME = "cassandra"; public static final String CASSANDRA_PASSWORD = "cassandra"; + public static final boolean CASSANDRA_SSL = false; private Session session; @@ -57,6 +58,7 @@ protected Keyspace getKeyspace() { ks.getCluster().setPort(CASSANDRA_PORT); ks.getCluster().setUsername(CASSANDRA_USERNAME); ks.getCluster().setPassword(CASSANDRA_PASSWORD); + ks.getCluster().setSSL(CASSANDRA_SSL); return ks; } @@ -67,6 +69,8 @@ private Session getSession(Keyspace keyspace) { com.datastax.driver.core.Cluster.Builder builder = new com.datastax.driver.core.Cluster.Builder(); builder.addContactPoints(CASSANDRA_CONTACT_POINT).withPort(CASSANDRA_PORT); builder.withCredentials(keyspace.getCluster().getUsername(), keyspace.getCluster().getPassword()); + if (keyspace.getCluster().isSSL()) + builder.withSSL(); Cluster cluster = builder.build(); session = cluster.connect(); return session;