List of usage examples for com.amazonaws.services.cloudformation.model CreateChangeSetRequest setUsePreviousTemplate
public void setUsePreviousTemplate(Boolean usePreviousTemplate)
Whether to reuse the template that is associated with the stack to create the change set.
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; } }