in magenta-lib/src/main/scala/magenta/tasks/AWS.scala [605:693]
def withClient[T](
keyRing: KeyRing,
region: Region,
resources: DeploymentResources
)(block: Client => T): T =
withResource(
Client(
classicClient(keyRing, region, resources),
applicationClient(keyRing, region, resources)
)
)(block)
private def classicClient(
keyRing: KeyRing,
region: Region,
resources: DeploymentResources
): ClassicELB =
ClassicELB
.builder()
.credentialsProvider(AWS.provider(keyRing, resources))
.overrideConfiguration(AWS.clientConfiguration)
.region(region.awsRegion)
.build()
private def applicationClient(
keyRing: KeyRing,
region: Region,
resources: DeploymentResources
): ApplicationELB =
ApplicationELB
.builder()
.credentialsProvider(AWS.provider(keyRing, resources))
.overrideConfiguration(AWS.clientConfiguration)
.region(region.awsRegion)
.build()
def targetInstancesHealth(
targetARN: String,
client: ApplicationELB
): List[String] =
client
.describeTargetHealth(
DescribeTargetHealthRequest.builder().targetGroupArn(targetARN).build()
)
.targetHealthDescriptions
.asScala
.toList
.map(_.targetHealth.state.toString)
def instanceHealth(elbName: String, client: ClassicELB): List[String] =
client
.describeInstanceHealth(
DescribeInstanceHealthRequest
.builder()
.loadBalancerName(elbName)
.build()
)
.instanceStates
.asScala
.toList
.map(_.state)
def deregister(
elbName: List[String],
elbTargetARN: List[String],
instance: ASGInstance,
client: Client
) = {
elbName.foreach(name =>
client.classic.deregisterInstancesFromLoadBalancer(
DeregisterInstancesFromLoadBalancerRequest
.builder()
.loadBalancerName(name)
.instances(
ELBInstance.builder().instanceId(instance.instanceId).build()
)
.build()
)
)
elbTargetARN.foreach(arn =>
client.application.deregisterTargets(
DeregisterTargetsRequest
.builder()
.targetGroupArn(arn)
.targets(TargetDescription.builder().id(instance.instanceId).build())
.build()
)
)
}