List of usage examples for com.amazonaws.services.cloudformation.model DescribeStackEventsRequest setStackName
public void setStackName(String stackName)
The name or the unique stack ID that is associated with the stack, which are not always interchangeable:
Running stacks: You can specify either the stack's name or its unique stack ID.
From source file:com.mweagle.tereus.aws.CloudFormation.java
License:Open Source License
protected List<StackEvent> getStackEvents(final AmazonCloudFormationAsyncClient awsClient, final String stackName, Logger logger) throws Exception { List<StackEvent> events = new ArrayList<StackEvent>(); Optional<String> token = Optional.empty(); final DescribeStackEventsRequest describeRequest = new DescribeStackEventsRequest(); describeRequest.setStackName(stackName); do {/*w w w . j av a 2 s. c o m*/ if (token.isPresent()) { describeRequest.setNextToken(token.get()); } final Future<DescribeStackEventsResult> stackEvents = awsClient .describeStackEventsAsync(describeRequest); DescribeStackEventsResult eventResult = stackEvents.get(); events.addAll(eventResult.getStackEvents()); token = Optional.ofNullable(eventResult.getNextToken()); } while (token.isPresent()); return events; }
From source file:com.mweagle.tereus.aws.CloudFormation.java
License:Open Source License
protected Optional<DescribeStacksResult> waitForStackComplete(final AmazonCloudFormationAsyncClient awsClient, final String stackName, List<StackEvent> priorEvents, Logger logger) throws Exception { Map<String, StackEvent> eventHistory = new HashMap<>(); for (StackEvent eachEvent : priorEvents) { eventHistory.put(eachEvent.getEventId(), eachEvent); }//from w w w .ja v a 2 s . c o m Optional<StackEvent> terminationEvent = Optional.empty(); final Predicate<StackEvent> isNewEvent = event -> { return !eventHistory.containsKey(event.getEventId()); }; final Predicate<StackEvent> isTerminalEvent = stackEvent -> { return (CloudFormation.TERMINAL_EVENTS.contains(stackEvent.getResourceStatus()) && stackEvent.getResourceType().equals("AWS::CloudFormation::Stack")); }; // Query for events final DescribeStackEventsRequest describeRequest = new DescribeStackEventsRequest(); describeRequest.setStackName(stackName); while (!terminationEvent.isPresent()) { logger.debug("Waiting for StackEvents"); Thread.sleep(20 * 1000); final List<StackEvent> events = getStackEvents(awsClient, stackName, logger); // Get all the events we haven't seen, log and mark them events.stream().filter(isNewEvent).forEach(item -> { logger.info(item.toString()); eventHistory.put(item.getEventId(), item); }); // Find the first terminal event terminationEvent = events.stream().filter(isTerminalEvent).findFirst(); } // Don't ever delete anything, unless the initial event set length was empty, implying // a creation event if (priorEvents.size() <= 0 && terminationEvent.get().getResourceStatus().contains("_FAILED")) { logger.warn("Stack creation . Deleting stack."); final DeleteStackRequest deleteStackRequest = new DeleteStackRequest(); deleteStackRequest.setStackName(stackName); awsClient.deleteStack(deleteStackRequest); return Optional.empty(); } else { // Looks good, let's get the final output for the stack... return describeStack(awsClient, stackName, logger); } }
From source file:jetbrains.buildServer.runner.cloudformation.AWSClient.java
License:Apache License
public List<String> describeStackEvents(AmazonCloudFormationClient stackbuilder, String stackName, String ACTION) {/*from w ww .j a v a 2s. c o m*/ List<String> output = new ArrayList<String>(); DescribeStackEventsRequest request = new DescribeStackEventsRequest(); request.setStackName(stackName); DescribeStackEventsResult results = stackbuilder.describeStackEvents(request); for (StackEvent event : results.getStackEvents()) { if (event.getEventId().contains(ACTION)) { output.add(event.getEventId()); // myListener.debugLog(event.toString()); } } return output; }