static String getAutoScaleGroup() { try { String credFileProperty = System.getProperty( AwsPropertyKeys.AWS_CREDENTIALS_FILE.getBundle()); AWSCredentials credentials; if (credFileProperty != null) { credentials = new PropertiesCredentials(new File(credFileProperty)); } else { credentials = new DefaultAWSCredentialsProviderChain().getCredentials(); } AmazonAutoScaling autoScalingClient = AwsServiceClients.autoScaling(credentials); List<AutoScalingInstanceDetails> autoScalingInstances = autoScalingClient.describeAutoScalingInstances( new DescribeAutoScalingInstancesRequest().withInstanceIds(getInstanceId())).getAutoScalingInstances(); return autoScalingInstances.isEmpty() ? UNDEFINED : autoScalingInstances.get(0).getAutoScalingGroupName(); } catch (Exception e) { getLogger().error("Unable to get ASG name.", e); return UNDEFINED; } }
public Observable<AwsState> pollForInstanceState() { try { return Observable.from(asyncClient.describeAutoScalingInstancesAsync(new DescribeAutoScalingInstancesRequest().withInstanceIds(instanceId))) .flatMap(result -> { Optional<String> optState = result.getAutoScalingInstances().stream().filter(i -> i.getInstanceId().equals(instanceId)).map(AutoScalingInstanceDetails::getLifecycleState).findFirst(); return just(optState.map(AwsState::map).orElse(AwsState.UNKNOWN)); }); } catch (AmazonClientException e) { LOG.error(LogConstants.ERROR_EXECUTING_REQUEST, e); throw new AwsException(e); } }
@Override public Optional<AutoScalingInstanceDetails> getCurrentAutoScalingGroup(String instanceId) { try { DescribeAutoScalingInstancesRequest request = new DescribeAutoScalingInstancesRequest().withInstanceIds(instanceId); DescribeAutoScalingInstancesResult describeResult = asg.describeAutoScalingInstances(request); List<AutoScalingInstanceDetails> asgs = describeResult.getAutoScalingInstances(); if (asgs.isEmpty()) { return Optional.empty(); } return Optional.ofNullable(asgs.iterator().next()); } catch (AmazonClientException e) { LOG.error("Unable to fetch current AutoScaleGroup for instance: {} {}", instanceId, e); return Optional.empty(); } }
private Optional<AutoScalingInstanceDetails> describeInstance() { try { DescribeAutoScalingInstancesResult result = asyncClient.describeAutoScalingInstances(new DescribeAutoScalingInstancesRequest().withInstanceIds(Collections.singletonList(instanceId))); return result.getAutoScalingInstances().stream().filter(a -> a.getInstanceId().equals(instanceId)).findFirst(); } catch (AmazonAutoScalingException e) { if (e.getStatusCode() == 403) { LOG.error("Looks like the instance role is not correctly authorized, please see : https://github.com/msoute/vertx-deploy-tools#aws-iam-policy"); } LOG.error(e.getMessage(), e); throw e; } }
private String getCurrentAsgName() { DescribeAutoScalingInstancesRequest asgInsReq = new DescribeAutoScalingInstancesRequest() .withInstanceIds(AWSUtil.getLocalInstanceId()); DescribeAutoScalingInstancesResult asgInsRes = getAutoScalingClient().describeAutoScalingInstances(asgInsReq); String myAsgName = asgInsRes.getAutoScalingInstances().get(0).getAutoScalingGroupName(); return myAsgName!=null && myAsgName.length() > 0 ? myAsgName : "NdBench_Aws_cluster"; }
private String getCurrentAsgName() { DescribeAutoScalingInstancesRequest asgInsReq = new DescribeAutoScalingInstancesRequest() .withInstanceIds(AWSUtil.getLocalInstanceId()); DescribeAutoScalingInstancesResult asgInsRes = getAutoScalingClient().describeAutoScalingInstances(asgInsReq); String myAsgName = asgInsRes.getAutoScalingInstances().get(0).getAutoScalingGroupName(); return myAsgName!=null && myAsgName.length() > 0 ? myAsgName : "NdBench_Aws_cluster"; }
public boolean enterStandby(final String groupId, boolean decrementDesiredCapacity) { try { DescribeAutoScalingInstancesResult result = asyncClient.describeAutoScalingInstances(new DescribeAutoScalingInstancesRequest().withMaxRecords(1).withInstanceIds(instanceId)); Optional<AutoScalingInstanceDetails> state = result.getAutoScalingInstances() .stream() .filter(asi -> asi.getInstanceId().equals(instanceId)).findFirst(); state.ifPresent(s -> LOG.trace("enterStandby() instance {} current state : {}", instanceId, s.getLifecycleState())); if (state.isPresent() && state.get().getLifecycleState().equalsIgnoreCase(AwsState.STANDBY.name())) { return true; } else { asyncClient.enterStandby(new EnterStandbyRequest().withAutoScalingGroupName(groupId).withInstanceIds(instanceId).withShouldDecrementDesiredCapacity(decrementDesiredCapacity)); return true; } } catch (AmazonClientException e) { LOG.error(LogConstants.ERROR_EXECUTING_REQUEST, e); return false; } }
static String getAutoScaleGroup() { try { String credFileProperty = System.getProperty( AwsPropertyKeys.AWS_CREDENTIALS_FILE.getBundle()); AWSCredentials credentials; if (credFileProperty != null) { credentials = new PropertiesCredentials(new File(credFileProperty)); } else { credentials = new DefaultAWSCredentialsProviderChain().getCredentials(); } AmazonAutoScaling autoScalingClient = AwsServiceClients.autoScaling(credentials); List<AutoScalingInstanceDetails> autoScalingInstances = autoScalingClient.describeAutoScalingInstances( new DescribeAutoScalingInstancesRequest().withInstanceIds(getInstanceId())).getAutoScalingInstances(); return autoScalingInstances.isEmpty() ? UNDEFINED : autoScalingInstances.get(0).getAutoScalingGroupName(); } catch (Exception e) { getLogger().error("Unable to get ASG name.", e); return UNDEFINED; } }