in test-support/src/main/scala/com/datastax/spark/connector/ccm/mode/StandardModeExecutor.scala [109:191]
override def create(clusterName: String): Unit = {
if (created.compareAndSet(false, true)) {
val options = config.installDirectory
.map(dir => config.createOptions :+ s"--install-dir=${new File(dir).getAbsolutePath}")
.orElse(config.installBranch.map(branch => config.createOptions ++ Seq("-v", s"git:${branch.trim().replaceAll("\"", "")}")))
.getOrElse(config.createOptions ++ Seq("-v", adjustCassandraBetaVersion(config.version.toString)))
val dseFlag = if (config.dseEnabled) Some("--dse") else None
val createArgs = Seq("create", clusterName, "-i", config.ipPrefix) ++ options ++ dseFlag
// Check installed Directory
val repositoryDir = Paths.get(
sys.props.get("user.home").get,
".ccm",
"repository",
adjustCassandraBetaVersion(config.getDseVersion.getOrElse(config.getCassandraVersion).toString))
if (Files.exists(repositoryDir)) {
logger.info(s"Found cached repository dir: $repositoryDir")
logger.info("Checking for appropriate bin dir")
eventually(f = Files.exists(repositoryDir.resolve("bin")))
}
try {
execute(createArgs: _*)
} catch {
case NonFatal(e) =>
Try(logger.error("Create command failed, here is the last 500 lines of ccm repository log: \n" +
getLastRepositoryLogLines(500).mkString("\n")))
throw e
}
eventually("Checking to make sure repository was correctly expanded", {
Files.exists(repositoryDir.resolve("bin"))
})
config.nodes.foreach { i =>
val node = s"node$i"
val addArgs = Seq ("add",
"-s", // every node is a seed node
"-b", // autobootstrap is enabled
"-j", config.jmxPort(i).toString,
"-i", config.ipOfNode(i),
"--remote-debug-port=0") ++
dseFlag :+
node
execute(addArgs: _*)
if (config.dseEnabled && config.getDseVersion.exists(_.compareTo(DSE_V6_8_5) >= 0)) {
execute(node, "updateconf", s"metadata_directory:${dir.toFile.getAbsolutePath}/metadata$i")
}
}
config.cassandraConfiguration.foreach { case (key, value) =>
execute("updateconf", s"$key:$value")
}
if (config.getCassandraVersion.compareTo(Version.V2_2_0) >= 0 && config.getCassandraVersion.compareTo(CcmConfig.V4_1_0) < 0) {
execute("updateconf", "enable_user_defined_functions:true")
} else if (config.getCassandraVersion.compareTo(CcmConfig.V4_1_0) >= 0) {
execute("updateconf", "user_defined_functions_enabled:true")
}
if (config.dseEnabled) {
config.dseConfiguration.foreach { case (key, value) =>
execute("updatedseconf", s"$key:$value")
}
config.dseRawYaml.foreach { yaml =>
executeUnsanitized("updatedseconf", "-y", yaml)
}
if (config.dseWorkloads.nonEmpty) {
execute("setworkload", config.dseWorkloads.mkString(","))
}
} else {
// C* 4.0.0 has materialized views disabled by default
if (config.getCassandraVersion.compareTo(Version.V4_0_0) >= 0 && config.getCassandraVersion.compareTo(CcmConfig.V4_1_0) < 0) {
execute("updateconf", "enable_materialized_views:true")
} else if (config.getCassandraVersion.compareTo(CcmConfig.V4_1_0) >= 0) {
execute("updateconf", "materialized_views_enabled:true")
}
}
}
}