.filter(DockerHost::isPresentInASG).map(DockerHost::getInstanceId).collect(Collectors.toList()); if (!asgInstances.isEmpty()) { AmazonAutoScaling asClient = AmazonAutoScalingClientBuilder.defaultClient(); DetachInstancesResult result = asClient.detachInstances(new DetachInstancesRequest()
@Override public void scaleTo(int desiredCapacity, String autoScalingGroup) throws ECSException { logger.info("Scaling to capacity: {} in ASG: {}", desiredCapacity, autoScalingGroup); try { AmazonAutoScaling asClient = AmazonAutoScalingClientBuilder.defaultClient(); asClient.setDesiredCapacity(new SetDesiredCapacityRequest() .withDesiredCapacity(desiredCapacity) .withAutoScalingGroupName(autoScalingGroup) ); } catch (Exception e) { throw new ECSException(e); } }
/** * * @param autoScalingGroup name * @return described autoscaling group * @throws ECSException */ @Override public AutoScalingGroup describeAutoScalingGroup(String autoScalingGroup) throws ECSException { try { AmazonAutoScaling asgClient = AmazonAutoScalingClientBuilder.defaultClient(); DescribeAutoScalingGroupsRequest asgReq = new DescribeAutoScalingGroupsRequest() .withAutoScalingGroupNames(autoScalingGroup); List<AutoScalingGroup> groups = asgClient.describeAutoScalingGroups(asgReq).getAutoScalingGroups(); if (groups.size() > 1) { throw new ECSException("More than one group by name:" + autoScalingGroup); } if (groups.isEmpty()) { throw new ECSException("No auto scaling group with name:" + autoScalingGroup); } return groups.get(0); } catch (Exception ex) { if (ex instanceof ECSException) { throw ex; } else { throw new ECSException(ex); } } }
@Override public void suspendProcess(String autoScalingGroupName, String processName) throws ECSException { try { AmazonAutoScaling asgClient = AmazonAutoScalingClientBuilder.defaultClient(); SuspendProcessesRequest req = new SuspendProcessesRequest() .withAutoScalingGroupName(autoScalingGroupName) .withScalingProcesses(processName); asgClient.suspendProcesses(req); } catch (Exception ex) { throw new ECSException(ex); } } }