Example usage for com.amazonaws.services.cloudformation.model CreateChangeSetRequest setUsePreviousTemplate

List of usage examples for com.amazonaws.services.cloudformation.model CreateChangeSetRequest setUsePreviousTemplate

Introduction

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

Prototype


public void setUsePreviousTemplate(Boolean usePreviousTemplate) 

Source Link

Document

Whether to reuse the template that is associated with the stack to create the change set.

Usage

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

License:Apache License

public void createChangeSet(String changeSetName, String templateBody, String templateUrl,
        Collection<Parameter> params, Collection<Tag> tags, long pollIntervallMillis,
        ChangeSetType changeSetType, String roleArn) throws ExecutionException {
    try {//from  www . ja va 2s .  c  o  m
        CreateChangeSetRequest req = new CreateChangeSetRequest();
        req.withChangeSetName(changeSetName).withStackName(this.stack)
                .withCapabilities(Capability.CAPABILITY_IAM, Capability.CAPABILITY_NAMED_IAM)
                .withChangeSetType(changeSetType);

        if (ChangeSetType.CREATE.equals(changeSetType)) {
            this.listener.getLogger().format("Creating CloudFormation change set %s for new stack %s %n",
                    changeSetName, this.stack);
            if ((templateBody == null || templateBody.isEmpty())
                    && (templateUrl == null || templateUrl.isEmpty())) {
                throw new IllegalArgumentException("Either a file or url for the template must be specified");
            }
            req.withTemplateBody(templateBody).withTemplateURL(templateUrl);
        } else if (ChangeSetType.UPDATE.equals(changeSetType)) {
            this.listener.getLogger().format("Creating CloudFormation change set %s for existing stack %s %n",
                    changeSetName, this.stack);
            if (templateBody != null && !templateBody.isEmpty()) {
                req.setTemplateBody(templateBody);
            } else if (templateUrl != null && !templateUrl.isEmpty()) {
                req.setTemplateURL(templateUrl);
            } else {
                req.setUsePreviousTemplate(true);
            }
        } else {
            throw new IllegalArgumentException(
                    "Cannot create a CloudFormation change set without a valid change set type.");
        }

        req.withParameters(params).withTags(tags).withRoleARN(roleArn);

        this.client.createChangeSet(req);

        new EventPrinter(this.client, this.listener).waitAndPrintChangeSetEvents(this.stack, changeSetName,
                this.client.waiters().changeSetCreateComplete(), pollIntervallMillis);

        this.listener.getLogger().format("Created CloudFormation change set %s for stack %s %n", changeSetName,
                this.stack);

    } catch (ExecutionException e) {
        try {
            if (this.changeSetExists(changeSetName) && !this.changeSetHasChanges(changeSetName)) {
                // Ignore the failed creation of a change set with no changes.
                this.listener.getLogger().format("Created empty change set %s for stack %s %n", changeSetName,
                        this.stack);
                return;
            }
        } catch (Throwable throwable) {
            e.addSuppressed(throwable);
        }
        this.listener.getLogger().format("Failed to create CloudFormation change set %s for stack %s %n",
                changeSetName, this.stack);
        throw e;
    }
}