def refresh()

in magenta-lib/src/main/scala/magenta/tasks/AWS.scala [427:491]


  def refresh(
      asg: AutoScalingGroup
  )(implicit client: AutoScalingClient): AutoScalingGroup =
    client
      .describeAutoScalingGroups(
        DescribeAutoScalingGroupsRequest
          .builder()
          .autoScalingGroupNames(asg.autoScalingGroupName())
          .build()
      )
      .autoScalingGroups
      .asScala
      .head

  def suspendAlarmNotifications(
      name: String,
      client: AutoScalingClient
  ): SuspendProcessesResponse =
    client.suspendProcesses(
      SuspendProcessesRequest
        .builder()
        .autoScalingGroupName(name)
        .scalingProcesses("AlarmNotification")
        .build()
    )

  def resumeAlarmNotifications(
      name: String,
      client: AutoScalingClient
  ): ResumeProcessesResponse =
    client.resumeProcesses(
      ResumeProcessesRequest
        .builder()
        .autoScalingGroupName(name)
        .scalingProcesses("AlarmNotification")
        .build()
    )

  trait TagRequirement
  case class TagMatch(key: String, value: String) extends TagRequirement
  case class TagExists(key: String) extends TagRequirement
  case class TagAbsent(key: String) extends TagRequirement

  def getGroupByName(
      name: String,
      client: AutoScalingClient,
      reporter: DeployReporter
  ): AutoScalingGroup = {
    val request = DescribeAutoScalingGroupsRequest
      .builder()
      .autoScalingGroupNames(name)
      .maxRecords(1)
      .build()
    val autoScalingGroups = client
      .describeAutoScalingGroups(request)
      .autoScalingGroups()
      .asScala
      .toList
    // We've asked for one record and the name must be unique per Region per account
    autoScalingGroups.headOption.getOrElse(
      reporter.fail(
        s"Failed to identify an autoscaling group with name ${name}"
      )
    )
  }