package core.aws.task.as;
import com.amazonaws.services.autoscaling.model.Instance;
import core.aws.client.AWS;
import core.aws.env.Context;
import core.aws.resource.as.ASGroup;
import core.aws.workflow.Action;
import core.aws.workflow.Task;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author neo
*/
@Action("desc-asg")
public class DescribeASGroupTask extends Task<ASGroup> {
public DescribeASGroupTask(ASGroup asGroup) {
super(asGroup);
}
@Override
public void execute(Context context) throws Exception {
String key = "autoScaling/" + resource.id;
context.output(key, String.format("status=%s, ami=%s", resource.status, resource.launchConfig.ami.id()));
com.amazonaws.services.autoscaling.model.AutoScalingGroup remoteASGroup = resource.remoteASGroup;
if (remoteASGroup != null) {
context.output(key, String.format("name=%s, min=%s, desired=%s, max=%s, imageId=%s",
remoteASGroup.getAutoScalingGroupName(),
remoteASGroup.getMinSize(),
remoteASGroup.getDesiredCapacity(),
remoteASGroup.getMaxSize(),
resource.launchConfig.remoteLaunchConfig.getImageId()));
List<String> instanceIds = remoteASGroup.getInstances().stream().map(Instance::getInstanceId).collect(Collectors.toList());
if (!instanceIds.isEmpty()) {
for (com.amazonaws.services.ec2.model.Instance remoteInstance : AWS.ec2.describeInstances(instanceIds)) {
context.output(key, String.format("instanceId=%s, state=%s, privateDNS=%s, privateIP=%s",
remoteInstance.getInstanceId(),
remoteInstance.getState().getName(),
remoteInstance.getPrivateDnsName(),
remoteInstance.getPrivateIpAddress()));
}
}
}
}
}