/** * Simplified method form for invoking the DescribeAutoScalingInstances operation. * * @see #describeAutoScalingInstancesAsync(DescribeAutoScalingInstancesRequest) */ @Override public java.util.concurrent.Future<DescribeAutoScalingInstancesResult> describeAutoScalingInstancesAsync() { return describeAutoScalingInstancesAsync(new DescribeAutoScalingInstancesRequest()); }
@Override public int hashCode() { final int prime = 31; int hashCode = 1; hashCode = prime * hashCode + ((getInstanceIds() == null) ? 0 : getInstanceIds().hashCode()); hashCode = prime * hashCode + ((getMaxRecords() == null) ? 0 : getMaxRecords().hashCode()); hashCode = prime * hashCode + ((getNextToken() == null) ? 0 : getNextToken().hashCode()); return hashCode; }
/** * <p> * The IDs of the instances. You can specify up to <code>MaxRecords</code> IDs. If you omit this parameter, all Auto * Scaling instances are described. If you specify an ID that does not exist, it is ignored with no error. * </p> * * @param instanceIds * The IDs of the instances. You can specify up to <code>MaxRecords</code> IDs. If you omit this parameter, * all Auto Scaling instances are described. If you specify an ID that does not exist, it is ignored with no * error. * @return Returns a reference to this object so that method calls can be chained together. */ public DescribeAutoScalingInstancesRequest withInstanceIds(java.util.Collection<String> instanceIds) { setInstanceIds(instanceIds); return this; }
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 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; } }
/** * <p> * The IDs of the instances. You can specify up to <code>MaxRecords</code> * IDs. If you omit this parameter, all Auto Scaling instances are * described. If you specify an ID that does not exist, it is ignored with * no error. * </p> * <p> * Returns a reference to this object so that method calls can be chained * together. * * @param instanceIds <p> * The IDs of the instances. You can specify up to * <code>MaxRecords</code> IDs. If you omit this parameter, all * Auto Scaling instances are described. If you specify an ID * that does not exist, it is ignored with no error. * </p> * @return A reference to this updated object so that method calls can be * chained together. */ public DescribeAutoScalingInstancesRequest withInstanceIds(String... instanceIds) { if (getInstanceIds() == null) { this.instanceIds = new java.util.ArrayList<String>(instanceIds.length); } for (String value : instanceIds) { this.instanceIds.add(value); } return this; }
@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(); } }
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); } }
/** * Simplified method form for invoking the DescribeAutoScalingInstances operation with an AsyncHandler. * * @see #describeAutoScalingInstancesAsync(DescribeAutoScalingInstancesRequest, com.amazonaws.handlers.AsyncHandler) */ @Override public java.util.concurrent.Future<DescribeAutoScalingInstancesResult> describeAutoScalingInstancesAsync( com.amazonaws.handlers.AsyncHandler<DescribeAutoScalingInstancesRequest, DescribeAutoScalingInstancesResult> asyncHandler) { return describeAutoScalingInstancesAsync(new DescribeAutoScalingInstancesRequest(), asyncHandler); }
@Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (obj instanceof DescribeAutoScalingInstancesRequest == false) return false; DescribeAutoScalingInstancesRequest other = (DescribeAutoScalingInstancesRequest) obj; if (other.getInstanceIds() == null ^ this.getInstanceIds() == null) return false; if (other.getInstanceIds() != null && other.getInstanceIds().equals(this.getInstanceIds()) == false) return false; if (other.getMaxRecords() == null ^ this.getMaxRecords() == null) return false; if (other.getMaxRecords() != null && other.getMaxRecords().equals(this.getMaxRecords()) == false) return false; if (other.getNextToken() == null ^ this.getNextToken() == null) return false; if (other.getNextToken() != null && other.getNextToken().equals(this.getNextToken()) == false) return false; return true; }
/** * <p> * The IDs of the instances. You can specify up to <code>MaxRecords</code> IDs. If you omit this parameter, all Auto * Scaling instances are described. If you specify an ID that does not exist, it is ignored with no error. * </p> * <p> * <b>NOTE:</b> This method appends the values to the existing list (if any). Use * {@link #setInstanceIds(java.util.Collection)} or {@link #withInstanceIds(java.util.Collection)} if you want to * override the existing values. * </p> * * @param instanceIds * The IDs of the instances. You can specify up to <code>MaxRecords</code> IDs. If you omit this parameter, * all Auto Scaling instances are described. If you specify an ID that does not exist, it is ignored with no * error. * @return Returns a reference to this object so that method calls can be chained together. */ public DescribeAutoScalingInstancesRequest withInstanceIds(String... instanceIds) { if (this.instanceIds == null) { setInstanceIds(new com.amazonaws.internal.SdkInternalList<String>(instanceIds.length)); } for (String ele : instanceIds) { this.instanceIds.add(ele); } return this; }
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; } }
/** * Simplified method form for invoking the DescribeAutoScalingInstances operation with an AsyncHandler. * * @see #describeAutoScalingInstancesAsync(DescribeAutoScalingInstancesRequest, com.amazonaws.handlers.AsyncHandler) */ @Override public java.util.concurrent.Future<DescribeAutoScalingInstancesResult> describeAutoScalingInstancesAsync( com.amazonaws.handlers.AsyncHandler<DescribeAutoScalingInstancesRequest, DescribeAutoScalingInstancesResult> asyncHandler) { return describeAutoScalingInstancesAsync(new DescribeAutoScalingInstancesRequest(), asyncHandler); }
/** * Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be * redacted from this string using a placeholder value. * * @return A string representation of this object. * * @see java.lang.Object#toString() */ @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("{"); if (getInstanceIds() != null) sb.append("InstanceIds: ").append(getInstanceIds()).append(","); if (getMaxRecords() != null) sb.append("MaxRecords: ").append(getMaxRecords()).append(","); if (getNextToken() != null) sb.append("NextToken: ").append(getNextToken()); sb.append("}"); return sb.toString(); }
/** * <p> * The IDs of the instances. You can specify up to <code>MaxRecords</code> * IDs. If you omit this parameter, all Auto Scaling instances are * described. If you specify an ID that does not exist, it is ignored with * no error. * </p> * <p> * Returns a reference to this object so that method calls can be chained * together. * * @param instanceIds <p> * The IDs of the instances. You can specify up to * <code>MaxRecords</code> IDs. If you omit this parameter, all * Auto Scaling instances are described. If you specify an ID * that does not exist, it is ignored with no error. * </p> * @return A reference to this updated object so that method calls can be * chained together. */ public DescribeAutoScalingInstancesRequest withInstanceIds( java.util.Collection<String> instanceIds) { setInstanceIds(instanceIds); return this; }
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"; }
/** * Simplified method form for invoking the DescribeAutoScalingInstances operation. * * @see #describeAutoScalingInstancesAsync(DescribeAutoScalingInstancesRequest) */ @Override public java.util.concurrent.Future<DescribeAutoScalingInstancesResult> describeAutoScalingInstancesAsync() { return describeAutoScalingInstancesAsync(new DescribeAutoScalingInstancesRequest()); }
public Request<DescribeAutoScalingInstancesRequest> marshall(DescribeAutoScalingInstancesRequest describeAutoScalingInstancesRequest) { if (describeAutoScalingInstancesRequest == null) { throw new SdkClientException("Invalid argument passed to marshall(...)"); } Request<DescribeAutoScalingInstancesRequest> request = new DefaultRequest<DescribeAutoScalingInstancesRequest>(describeAutoScalingInstancesRequest, "AmazonAutoScaling"); request.addParameter("Action", "DescribeAutoScalingInstances"); request.addParameter("Version", "2011-01-01"); request.setHttpMethod(HttpMethodName.POST); if (!describeAutoScalingInstancesRequest.getInstanceIds().isEmpty() || !((com.amazonaws.internal.SdkInternalList<String>) describeAutoScalingInstancesRequest.getInstanceIds()).isAutoConstruct()) { com.amazonaws.internal.SdkInternalList<String> instanceIdsList = (com.amazonaws.internal.SdkInternalList<String>) describeAutoScalingInstancesRequest .getInstanceIds(); int instanceIdsListIndex = 1; for (String instanceIdsListValue : instanceIdsList) { if (instanceIdsListValue != null) { request.addParameter("InstanceIds.member." + instanceIdsListIndex, StringUtils.fromString(instanceIdsListValue)); } instanceIdsListIndex++; } } if (describeAutoScalingInstancesRequest.getMaxRecords() != null) { request.addParameter("MaxRecords", StringUtils.fromInteger(describeAutoScalingInstancesRequest.getMaxRecords())); } if (describeAutoScalingInstancesRequest.getNextToken() != null) { request.addParameter("NextToken", StringUtils.fromString(describeAutoScalingInstancesRequest.getNextToken())); } return request; }
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"; }
@Override public DescribeAutoScalingInstancesResult describeAutoScalingInstances() { return describeAutoScalingInstances(new DescribeAutoScalingInstancesRequest()); }