def amiUpgrade()

in app/prism/Recommendations.scala [15:40]


  def amiUpgrade(ami: AMI, allAmis: Set[AMI]): Option[AMI] = {
    val candidateAmis = allAmis.view
      .filter(_.ownerId == ami.ownerId)
      .filter(newerThan(ami))
      .filter(_.region == ami.region)
      .filter(_.virtualizationType == ami.virtualizationType)
      .filter(_.architecture == ami.architecture)
      .filter(_.rootDeviceType == ami.rootDeviceType)
      .filter(_.hypervisor == ami.hypervisor)
      .filter(_.creationDate.nonEmpty)

    val upgrades = {
      // filter on additional ami-creator specific properties where appropriate
      if (isUbuntu(ami)) candidateAmis.filter(isUbuntuUpgrade(ami))
      else if (isMachineImages(ami))
        candidateAmis.filter(isMachineImagesUpgrade(ami))
      else if (isAmigo(ami)) candidateAmis.filter(isAmigoUpgrade(ami))
      // with Amazon Linux, it is enough to have matched the above conditions
      else if (isAmazon(ami)) candidateAmis
      // unknown ami type, cannot recommend upgrades
      else Set.empty
    }
    upgrades.toList
      .sortBy(_.creationDate.get.getMillis)
      .lastOption
  }