Package com.elastisys.scale.cloudadapters.aws.commons.requests.autoscaling

Source Code of com.elastisys.scale.cloudadapters.aws.commons.requests.autoscaling.GetAutoScalingGroupInstances

package com.elastisys.scale.cloudadapters.aws.commons.requests.autoscaling;

import java.util.List;
import java.util.concurrent.Callable;

import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.services.autoscaling.model.AutoScalingGroup;
import com.amazonaws.services.ec2.model.Filter;
import com.amazonaws.services.ec2.model.Instance;
import com.elastisys.scale.cloudadapters.aws.commons.functions.AwsAutoScalingFunctions;
import com.elastisys.scale.cloudadapters.aws.commons.requests.ec2.GetInstances;
import com.google.common.collect.Lists;

/**
* A {@link Callable} task that, when executed, requests details about all
* instances belonging to a particular AWS Auto Scaling Group in a region.
*
* @see AutoScalingInstance
*
*/
public class GetAutoScalingGroupInstances extends
    AmazonAutoScalingRequest<List<Instance>> {

  /** The name of the {@link AutoScalingGroup} of interest. */
  private final String groupName;

  /**
   * Constructs a new {@link GetAutoScalingGroupInstances} task.
   *
   * @param awsCredentials
   * @param region
   * @param groupName
   */
  public GetAutoScalingGroupInstances(AWSCredentials awsCredentials,
      String region, String groupName) {
    super(awsCredentials, region);
    this.groupName = groupName;
  }

  @Override
  public List<Instance> call() {
    AutoScalingGroup autoScalingGroup = new GetAutoScalingGroup(
        getAwsCredentials(), getRegion(), this.groupName).call();

    return listGroupInstances(autoScalingGroup);
  }

  private List<Instance> listGroupInstances(AutoScalingGroup autoScalingGroup) {
    List<String> instanceIds = Lists.transform(
        autoScalingGroup.getInstances(),
        AwsAutoScalingFunctions.toAutoScalingInstanceId());
    GetInstances listInstances = new GetInstances(getAwsCredentials(),
        getRegion(), new Filter("instance-id", instanceIds));
    return listInstances.call();
  }
}
TOP

Related Classes of com.elastisys.scale.cloudadapters.aws.commons.requests.autoscaling.GetAutoScalingGroupInstances

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.