app/schedule/ScheduledBakeRunner.scala (57 lines of code) (raw):

package schedule import data.{Bakes, Dynamo, Recipes} import event.EventBus import models.RecipeId import packer.{PackerConfig, PackerRunner} import services.{AmiMetadataLookup, Loggable, PrismData} class ScheduledBakeRunner( stage: String, enabled: Boolean, prism: PrismData, eventBus: EventBus, ansibleVars: Map[String, String], amiMetadataLookup: AmiMetadataLookup, amigoDataBucket: Option[String], packerRunner: PackerRunner )(implicit dynamo: Dynamo, packerConfig: PackerConfig) extends Loggable { def bake(recipeId: RecipeId): Unit = { if (!enabled) { log.info("Skipping scheduled bake because I am disabled") } else { Recipes.findById(recipeId) match { case Some(recipe) => // sanity check: is the recipe actually scheduled? if (recipe.bakeSchedule.isEmpty) { log.warn( s"Skipping scheduled bake of recipe $recipeId because it does not have a bake schedule defined" ) } else { Recipes.incrementAndGetBuildNumber(recipe.id) match { case Some(buildNumber) => val theBake = Bakes.create(recipe, buildNumber, startedBy = "scheduler") log.info(s"Starting scheduled bake: ${theBake.bakeId}") packerRunner.createImage( stage, theBake, prism, eventBus, ansibleVars, false, amiMetadataLookup, amigoDataBucket ) case None => log.warn( s"Failed to get the next build number for recipe $recipeId" ) } } case None => log.warn( s"Skipping scheduled bake of recipe $recipeId because the recipe does not exist" ) } } } }