Example usage for com.amazonaws.services.cloudformation.model DescribeStackEventsResult getStackEvents

List of usage examples for com.amazonaws.services.cloudformation.model DescribeStackEventsResult getStackEvents

Introduction

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

Prototype


public java.util.List<StackEvent> getStackEvents() 

Source Link

Document

A list of StackEvents structures.

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);/*ww w .jav a 2s . c o m*/

    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

/**
 * Gets all non-progress events for stack that were generated after a
 * certain time. This method will ignore any "throttling" error from AWS and
 * return empty results./*from  ww  w  . j  a  va  2 s . c o  m*/
 * 
 * @param stackId unique ID for the stack
 * @param startDate only events after this time are considered
 * @return a list of stack events
 */
public List<StackEvent> getStackEvents(String stackId, Date startDate, OperationTracker tracker,
        int checkIntervalSeconds) {

    ArrayList<StackEvent> events = new ArrayList<StackEvent>();
    DescribeStackEventsResult result = null;
    String nextToken = null;

    doLoop: do {
        try {
            result = client.describeStackEvents(new DescribeStackEventsRequest().withStackName(stackId));
        } catch (AmazonServiceException ase) {
            if ("Throttling".equals(ase.getErrorCode())) {
                logger.warn("Got a throttling error from AWS while calling describeStackEvents()");
                break;
            } else {
                throw ase;
            }
        }
        nextToken = result.getNextToken();

        for (StackEvent evt : result.getStackEvents()) {

            // break out if we start seeing events older than our start date
            if (!evt.getTimestamp().after(startDate)) {
                if (logger.isTraceEnabled()) {
                    logger.trace(createStackEventLogMessage(evt, startDate, "Saw event older than startdate"));
                }
                break doLoop;
            }

            // mark that an event was generated
            if (tracker != null) {
                tracker.markEventsGenerated(stackId);
            }

            // ignore IN_PROGRESS events
            if (!evt.getResourceStatus().endsWith("_IN_PROGRESS")) {
                if (logger.isTraceEnabled()) {
                    logger.trace(createStackEventLogMessage(evt, startDate, "Adding event"));
                }
                events.add(evt);
            } else {
                if (logger.isTraceEnabled()) {
                    logger.trace(createStackEventLogMessage(evt, startDate, "Ignorning event"));
                }
            }

            // start tracking a sub-stack if we come across one
            if (tracker != null && evt.getResourceType().equals("AWS::CloudFormation::Stack")
                    && !evt.getPhysicalResourceId().equals(stackId)) {
                tracker.track(this, evt.getLogicalResourceId(), evt.getPhysicalResourceId(),
                        checkIntervalSeconds);
            }
        }

    } while (!StringUtils.isEmpty(nextToken));

    // sort the events
    Collections.sort(events, new Comparator<StackEvent>() {
        @Override
        public int compare(StackEvent e1, StackEvent e2) {
            return e1.getTimestamp().compareTo(e2.getTimestamp());
        }
    });

    return events;
}

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 .  jav  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.nike.cerberus.service.CloudFormationService.java

License:Apache License

/**
 * Returns the events for a named stack.
 *
 * @param stackId Stack ID.//w  w w  . jav  a  2s.c o m
 * @return Collection of events
 */
public List<StackEvent> getStackEvents(final String stackId) {
    final DescribeStackEventsRequest request = new DescribeStackEventsRequest().withStackName(stackId);

    try {
        final DescribeStackEventsResult result = cloudFormationClient.describeStackEvents(request);
        return result.getStackEvents();
    } catch (final AmazonServiceException ase) {
        // Stack doesn't exist, just return with no status
        if (ase.getStatusCode() != 400) {
            throw ase;
        }
    }

    return Collections.emptyList();
}

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  ww  w . ja va  2s  .  c o 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) {//  w  w  w.java  2s .  com
    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;
}

From source file:org.xmlsh.aws.gradle.cloudformation.AmazonCloudFormationPluginExtension.java

License:BSD License

private List<StackEvent> describeStackEvents() {
    DescribeStackEventsResult result = getClient()
            .describeStackEvents(new DescribeStackEventsRequest().withStackName(getStackName()));
    List<StackEvent> ev = result.getStackEvents();
    return ev;//from w w  w .  jav a  2 s  .com
}