in app/controllers/AMIable.scala [80:122]
def ssaInstanceAMIs(
stackOpt: Option[String],
stageOpt: Option[String],
appOpt: Option[String],
accountNameOpt: Option[String]
): Action[AnyContent] = authAction.async { implicit request =>
val ssaa = SSAA.fromParams(stackOpt, stageOpt, appOpt, accountNameOpt)
attempt {
for {
instancesWithAmis <- Prism.instancesWithAmis(ssaa)
accounts <- Prism.getAccounts
instances = instancesWithAmis.map(_._1)
amis = instancesWithAmis.flatMap(_._2).distinct
amisWithUpgrades = amis.map(
Recommendations.amiWithUpgrade(agents.allAmis)
)
amisWithInstances = PrismLogic.amiInstances(amisWithUpgrades, instances)
oldInstances = PrismLogic.oldInstances(instancesWithAmis)
amiSSAs = PrismLogic.amiSSAAs(amisWithInstances)
metrics = Metrics(
oldInstancesCount = oldInstances.length,
totalInstancesCount = instances.length,
PrismLogic.instancesAmisAgePercentiles(instancesWithAmis)
)
allSSAs = ssaa :: PrismLogic.instanceSSAAs(instances)
instancesCount = PrismLogic.instancesCountPerSsaPerAmi(
amisWithInstances,
allSSAs
)
accountNames = accounts.map(_.accountName)
} yield Ok(
views.html.instanceAMIs(
ssaa,
metrics,
amisWithUpgrades.sortBy(_.creationDate.map(_.getMillis)),
PrismLogic.sortSSAAmisByAge(amiSSAs),
instancesCount,
accountNames,
conf
)
)
}
}