Example usage for com.amazonaws.services.cloudformation.model StackEvent getEventId

List of usage examples for com.amazonaws.services.cloudformation.model StackEvent getEventId

Introduction

In this page you can find the example usage for com.amazonaws.services.cloudformation.model StackEvent getEventId.

Prototype


public String getEventId() 

Source Link

Document

The unique ID of this event.

Usage

From source file:com.carrotgarden.maven.aws.cfn.CarrotCloudForm.java

License:BSD License

private void printStackEvents() {

    final DescribeStackEventsRequest request = new DescribeStackEventsRequest();

    request.withStackName(name);/*from   www.ja  v a2 s .com*/

    final DescribeStackEventsResult describeStackEvents = amazonClient.describeStackEvents(request);

    final List<StackEvent> stackEvents = describeStackEvents.getStackEvents();

    Collections.reverse(stackEvents);

    logger.info("stack events:");

    for (final StackEvent event : stackEvents) {

        final StringBuilder text = new StringBuilder(128);

        text.append("\n\t");
        text.append("time=");
        text.append(event.getTimestamp());

        text.append("\n\t");
        text.append("id=");
        text.append(event.getEventId());

        text.append("\n\t");
        text.append("type=");
        text.append(event.getResourceType());

        text.append("\n\t");
        text.append("status=");
        text.append(event.getResourceStatus());

        text.append("\n\t");
        text.append("reason=");
        text.append(event.getResourceStatusReason());

        logger.info("event {}", text);

    }

}

From source file:com.deploymentio.cfnstacker.CloudFormationClient.java

License:Apache License

private String createStackEventLogMessage(StackEvent evt, Date startDate, String message) {
    return message + ": StartDate=" + DateUtils.formatISO8601Date(startDate) + " EventStatus="
            + evt.getResourceStatus() + " EventDate=" + DateUtils.formatISO8601Date(evt.getTimestamp())
            + " EventId=" + evt.getEventId() + " EventResourceId=" + evt.getLogicalResourceId()
            + " EventResourceType=" + evt.getResourceType();
}

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 .j  a  va 2s. co  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:com.nike.cerberus.service.CloudFormationService.java

License:Apache License

/**
 * Blocking call that waits for a stack change to complete.  Times out if waiting more than 30 minutes.
 *
 * @param endStatuses Status to end on/*w  ww.  j a v a  2s  .  com*/
 * @return The final status
 */
public StackStatus waitForStatus(final String stackId, final HashSet<StackStatus> endStatuses) {
    DateTime now = DateTime.now(DateTimeZone.UTC).minusSeconds(10);
    DateTime timeoutDateTime = now.plusMinutes(90);
    Set<String> recordedStackEvents = Sets.newHashSet();
    boolean isRunning = true;
    StackStatus stackStatus = null;

    while (isRunning) {
        try {
            TimeUnit.SECONDS.sleep(5);
        } catch (InterruptedException e) {
            logger.warn("Thread sleep interrupted. Continuing...", e);
        }
        stackStatus = getStackStatus(stackId);

        if (endStatuses.contains(stackStatus) || stackStatus == null) {
            isRunning = false;
        }

        if (stackStatus != null) {
            List<StackEvent> stackEvents = getStackEvents(stackId);
            stackEvents.sort((o1, o2) -> o1.getTimestamp().compareTo(o2.getTimestamp()));

            for (StackEvent stackEvent : stackEvents) {
                DateTime eventTime = new DateTime(stackEvent.getTimestamp());
                if (!recordedStackEvents.contains(stackEvent.getEventId()) && now.isBefore(eventTime)) {
                    logger.info(String.format("TS: %s, Status: %s, Type: %s, Reason: %s",
                            Chalk.on(stackEvent.getTimestamp().toString()).yellow(),
                            getStatusColor(stackEvent.getResourceStatus()),
                            Chalk.on(stackEvent.getResourceType()).yellow(),
                            Chalk.on(stackEvent.getResourceStatusReason()).yellow()));

                    recordedStackEvents.add(stackEvent.getEventId());
                }
            }
        }

        if (timeoutDateTime.isBeforeNow()) {
            logger.error("Timed out waiting for CloudFormation completion status.");
            isRunning = false;
        }
    }

    return stackStatus;
}

From source file:de.taimos.pipeline.aws.cloudformation.EventPrinter.java

License:Apache License

private void waitAndPrintEvents(String stack, long pollIntervalMillis,
        BasicFuture<AmazonWebServiceRequest> waitResult) throws ExecutionException {
    Date startDate = new Date();
    String lastEventId = null;//from w ww  .ja v  a  2  s.  co m
    this.printLine();
    this.printStackName(stack);
    this.printLine();

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");

    if (pollIntervalMillis > 0) {
        while (!waitResult.isDone()) {
            try {
                DescribeStackEventsResult result = this.client
                        .describeStackEvents(new DescribeStackEventsRequest().withStackName(stack));
                List<StackEvent> stackEvents = new ArrayList<>();
                for (StackEvent event : result.getStackEvents()) {
                    if (event.getEventId().equals(lastEventId) || event.getTimestamp().before(startDate)) {
                        break;
                    }
                    stackEvents.add(event);
                }
                if (!stackEvents.isEmpty()) {
                    Collections.reverse(stackEvents);
                    for (StackEvent event : stackEvents) {
                        this.printEvent(sdf, event);
                        this.printLine();
                    }
                    lastEventId = stackEvents.get(stackEvents.size() - 1).getEventId();
                }
            } catch (AmazonCloudFormationException e) {
                // suppress and continue
            }
            try {
                Thread.sleep(pollIntervalMillis);
            } catch (InterruptedException e) {
                // suppress and continue
            }
        }
    }

    try {
        waitResult.get();
    } catch (InterruptedException e) {
        this.listener.getLogger().format("Failed to wait for CFN action to complete: %s", e.getMessage());
    }
}

From source file:jetbrains.buildServer.runner.cloudformation.AWSClient.java

License:Apache License

public List<String> describeStackEvents(AmazonCloudFormationClient stackbuilder, String stackName,
        String ACTION) {//from   w w w .j av  a2 s .c om
    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;
}