diff --git a/src/java/org/apache/cassandra/schema/KeyspaceParams.java b/src/java/org/apache/cassandra/schema/KeyspaceParams.java index 6cdf27f39b..c0e8916572 100644 --- a/src/java/org/apache/cassandra/schema/KeyspaceParams.java +++ b/src/java/org/apache/cassandra/schema/KeyspaceParams.java @@ -69,6 +69,11 @@ public final class KeyspaceParams return new KeyspaceParams(false, ReplicationParams.simple(replicationFactor)); } + public static KeyspaceParams nts(Object... args) + { + return new KeyspaceParams(true, ReplicationParams.nts(args)); + } + public void validate(String name) { replication.validate(name); diff --git a/src/java/org/apache/cassandra/schema/ReplicationParams.java b/src/java/org/apache/cassandra/schema/ReplicationParams.java index cdeb4c216f..21c029e7c4 100644 --- a/src/java/org/apache/cassandra/schema/ReplicationParams.java +++ b/src/java/org/apache/cassandra/schema/ReplicationParams.java @@ -51,6 +51,21 @@ public final class ReplicationParams return new ReplicationParams(SimpleStrategy.class, ImmutableMap.of("replication_factor", Integer.toString(replicationFactor))); } + static ReplicationParams nts(Object... args) + { + assert args.length % 2 == 0; + + Map options = new HashMap<>(); + for (int i = 0; i < args.length; i += 2) + { + String dc = (String) args[i]; + Integer rf = (Integer) args[i + 1]; + options.put(dc, rf.toString()); + } + + return new ReplicationParams(NetworkTopologyStrategy.class, options); + } + public void validate(String name) { // Attempt to instantiate the ARS, which will throw a ConfigurationException if the options aren't valid. diff --git a/test/unit/org/apache/cassandra/schema/LegacySchemaMigratorTest.java b/test/unit/org/apache/cassandra/schema/LegacySchemaMigratorTest.java index 7d0be4d420..1ef3005a98 100644 --- a/test/unit/org/apache/cassandra/schema/LegacySchemaMigratorTest.java +++ b/test/unit/org/apache/cassandra/schema/LegacySchemaMigratorTest.java @@ -245,6 +245,9 @@ public class LegacySchemaMigratorTest + "PRIMARY KEY((bar, baz), qux, quz) ) " + "WITH COMPACT STORAGE", ks_cql)))); + // NTS keyspace + keyspaces.add(KeyspaceMetadata.create("nts", KeyspaceParams.nts("dc1", 1, "dc2", 2))); + keyspaces.add(keyspaceWithDroppedCollections()); keyspaces.add(keyspaceWithTriggers()); keyspaces.add(keyspaceWithUDTs());