def auroraLaunch()

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)
  }