app/model/ScalingAction.scala (22 lines of code) (raw):

package model import com.amazonaws.services.autoscaling.model.{DescribeScalingActivitiesRequest, Activity} import org.joda.time.{Duration, DateTime} import lib.{AmazonConnection, AWS, UptimeDisplay} import scala.jdk.CollectionConverters._ import scala.concurrent.{ExecutionContext, Future} case class ScalingAction(a: Activity) { def startTime = new DateTime(a.getStartTime) def ageMins = new Duration(startTime, DateTime.now).getStandardMinutes def isRecent = ageMins < 60 def age = UptimeDisplay.print(startTime) + " ago" def cause = a.getCause } object ScalingAction { import ExecutionContext.Implicits.global def forGroup(asgName: String)(implicit conn: AmazonConnection): Future[Seq[ScalingAction]] = { for { activities <- AWS.futureOf(conn.autoscaling.describeScalingActivitiesAsync, new DescribeScalingActivitiesRequest().withAutoScalingGroupName(asgName)) } yield activities.getActivities.asScala.toSeq map (new ScalingAction(_)) } }