@import data.Roles @import prism.Prism.Image @import prism.Prism.AWSAccount @import prism.RecipeUsage @import views.html.helper.CSRF @( recipe: Recipe, recentBakes: Iterable[Bake], recentCopies: Map[AmiId, Seq[Image]], accounts: Seq[AWSAccount], usage: prism.RecipeUsage, allRoles: Seq[RoleSummary], debugAvailable: Boolean, cloneForm: Form[_] )(implicit request: RequestHeader, flash: Flash, messages: play.api.i18n.Messages) @implicitFieldConstructor = @{ b3.inline.fieldConstructor() } @simpleLayout("AMIgo"){

@recipe.id.value

Actions
@b3.form(routes.BakeController.startBaking(recipe.id)) { @CSRF.formField } Edit @if(debugAvailable){ @b3.form(routes.BakeController.startBaking(recipe.id, debug = true)) { @CSRF.formField } } Delete...
@b3.form(routes.RecipeController.cloneRecipe(recipe.id)) { @CSRF.formField @b3.inputWrapped( "newId", cloneForm("newId"), Symbol("placeholder") -> s"${recipe.id.value}-cloned" ) { input =>
@input
} }
Description

Created @fragments.timestamp(recipe.createdAt, recipe.createdBy)

Modified @fragments.timestamp(recipe.modifiedAt, recipe.modifiedBy)

Build schedule: @recipe.bakeSchedule.map(_.quartzCronExpression).getOrElse("(none)")

Request encrypted copy: @if(recipe.encryptFor.nonEmpty){ @recipe.encryptFor.map(_.accountNumber).mkString(", ") }else{ None }

@recipe.description

@if(usage.instances.size + usage.launchConfigurations.size > 0) {

This recipe is used by @usage.instances.size instance@if(usage.instances.size != 1){s} and @usage.launchConfigurations.size launch configuration@if(usage.launchConfigurations.size != 1){s}

} else {

This recipe is not used

}

Search GitHub for usage

@BaseImage.eolStatusString(recipe.baseImage)

Base image
@recipe.baseImage.id @recipe.diskSize.map{size=> With a disk size of @size gb. }
Roles
@fragments.customisedRoles(Roles.customisedTransitiveDependency(allRoles, recipe.roles))

Inherited from base image @recipe.baseImage.id

@fragments.customisedRoles(Roles.customisedTransitiveDependency(allRoles, recipe.baseImage.builtinRoles))
Recent bakes
@if(recentCopies.nonEmpty) { } @* Column for copy button *@ @for(bake <- recentBakes) { @if(recentCopies.nonEmpty) { } @if(bake.amiId.isDefined) { @fragments.usagesColumn(recipe, RecipeUsage.amiUsages(usage, bake.amiId.get)) } else { } @for(copy <- bake.amiId.flatMap(id => recentCopies.get(id)).getOrElse(Nil)){ @fragments.usagesColumn(recipe, RecipeUsage.amiUsages(usage, copy.imageId)) } }
Started Build numberEncrypted copyStatus AMI Usages AMIable
View in AMIable
   
  • @defining(accounts.find(_.accountNumber == copy.ownerId)){ maybeOwnerAcc => @maybeOwnerAcc.map{ ownerAcc => @ownerAcc.accountName (@ownerAcc.accountNumber) }.getOrElse(copy.ownerId) }
  • @copy.encrypted.map{e =>
  • Encrypted tag: @e
  • }
@copy.state.capitalize @copy.imageId View in AMIable
}