in src/main/scala/com/twitter/iago/launcher/AuroraMode.scala [164:190]
def auroraLaunch(feederFlags: Seq[Flag[_]], serverFlags: Seq[Flag[_]]): Unit = {
def launchCmd(jobPath: String) = List("aurora", "job", "create", s"$jobPath")
// pass flags needed by Aurora configuration as Pystachio bindings
def auroraArgs =
auroraConfigFlagMap.flatMap { case (name, value) => List("--bind", s"flags.$name=$value") }.toList
def launchJobs(jobPath: String, jobShortName: String, jobFlagMap: Map[String, String]) = {
val jobLaunchCmd = launchCmd(jobPath) ::: List(auroraConfig())
// pass job-specific flags as a single string
val jobArgs =
List("--bind", s"flags.${jobShortName}Args=${flagMapToArgs(jobFlagMap).mkString(" ")}")
val jobLaunchCmdWithArgs = jobLaunchCmd ::: auroraArgs ::: jobArgs
runCmdWithExitOnError(jobLaunchCmdWithArgs, errorMsg = s"Failed to launch ${jobShortName}[s]")
}
missingFlagCheck(auroraRequiredFlagsForLaunch)
val (feederFlagMap, serverFlagMap) = auroraLaunchOverrideFlags(feederFlags, serverFlags)
if (!noKillBeforeLaunch()) {
// kill existing jobs if present
auroraKill(feederFlags, serverFlags)
}
launchJobs(feederJobPath, "feeder", feederFlagMap)
launchJobs(serverJobPath, "server", serverFlagMap)
}