List of usage examples for com.amazonaws.services.autoscaling AmazonAutoScalingClient describeAutoScalingInstances
@Override
public DescribeAutoScalingInstancesResult describeAutoScalingInstances()
From source file:de.tuhrig.deployman.launch.Launcher.java
/** * Starts a auto scaling launch configuration. This method is a little but complicated, since the * process to start a auto scaling configuration involves some steps: - create a launch * configuration which defines the machines to start - create an auto scaling definition which * defines how many machines should be started if something happens. - create an auto scaling * policy to which we add a metric - create the metric which is checked by the auto scaling - * print the starting instances/*w ww.j ava2s. c om*/ */ private List<Instance> runAutoScalingLaunch(Formation formation) { this.console.write("Run auto scaling..."); Machine machine = formation.getMachine(); Scaling scaling = machine.getScaling(); AmazonAutoScalingClient autoScaling = new AutoScaling().getClient(); try { CreateLaunchConfigurationRequest request = createLaunchConfigurationRequest(formation); autoScaling.createLaunchConfiguration(request); this.console.write("Created launch configuration " + scaling.getName()); } catch (AlreadyExistsException e) { this.console.write("Launch configuration " + scaling.getName() + " already exists"); //$NON-NLS-2$ } // // // try { CreateAutoScalingGroupRequest request = createAutoScalingRequest(scaling); autoScaling.createAutoScalingGroup(request); this.console.write("Created auto scaling group " + scaling.getGroup()); } catch (AlreadyExistsException e) { this.console.write("Auto scaling group " + scaling.getGroup() + " already exists"); //$NON-NLS-2$ } // // // PutScalingPolicyRequest request = new PutScalingPolicyRequest().withAutoScalingGroupName(scaling.getGroup()) .withPolicyName(scaling.getPolicy()).withScalingAdjustment(1) .withAdjustmentType("ChangeInCapacity"); PutScalingPolicyResult result = autoScaling.putScalingPolicy(request); this.console.write("Put scaling policy " + scaling.getPolicy()); // // // // Scale Up Dimension dimension = new Dimension().withName("AutoScalingGroupName").withValue(scaling.getGroup()); List<String> actions = new ArrayList<>(); actions.add(result.getPolicyARN()); PutMetricAlarmRequest upRequest = new PutMetricAlarmRequest().withAlarmName(scaling.getAlarm()) .withMetricName("CPUUtilization").withDimensions(dimension).withNamespace("AWS/EC2") .withComparisonOperator(ComparisonOperator.GreaterThanThreshold).withStatistic(Statistic.Average) .withUnit(StandardUnit.Percent).withThreshold(60d).withPeriod(300).withEvaluationPeriods(2) .withAlarmActions(actions); AmazonCloudWatchClient cloudWatch = new CloudWatch().getClient(); cloudWatch.putMetricAlarm(upRequest); this.console.write("Put alarm " + scaling.getAlarm()); this.console.newLine(); List<Instance> instances = new ArrayList<>(); for (AutoScalingInstanceDetails instance : autoScaling.describeAutoScalingInstances() .getAutoScalingInstances()) { if (instance.getAutoScalingGroupName().equals(scaling.getGroup())) { instances.add(new Ec2().getEC2InstanceById(instance.getInstanceId())); } } return instances; }