Example usage for com.amazonaws.services.cloudformation.model GetTemplateSummaryResult setCapabilitiesReason

List of usage examples for com.amazonaws.services.cloudformation.model GetTemplateSummaryResult setCapabilitiesReason

Introduction

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

Prototype


public void setCapabilitiesReason(String capabilitiesReason) 

Source Link

Document

The list of resources that generated the values in the Capabilities response element.

Usage

From source file:com.eucalyptus.cloudformation.template.TemplateParser.java

License:Open Source License

public GetTemplateSummaryResult getTemplateSummary(String templateBody, List<Parameter> userParameters,
        PseudoParameterValues pseudoParameterValues, String effectiveUserId) throws CloudFormationException {
    Template template = new Template();
    template.setResourceInfoMap(Maps.<String, ResourceInfo>newLinkedHashMap());
    JsonNode templateJsonNode = null;//w  ww .  j a  v a 2  s.c o  m
    try {
        templateJsonNode = objectMapper.readTree(templateBody);
    } catch (IOException ex) {
        throw new ValidationErrorException(ex.getMessage());
    }
    if (!templateJsonNode.isObject()) {
        throw new ValidationErrorException("Template body is not a JSON object");
    }
    template.setTemplateBody(templateBody);
    addPseudoParameters(template, pseudoParameterValues);
    buildResourceMap(template, templateJsonNode);
    parseValidTopLevelKeys(templateJsonNode);
    parseVersion(template, templateJsonNode);
    parseDescription(template, templateJsonNode);
    parseMetadata(template, templateJsonNode);
    parseMappings(template, templateJsonNode);
    ParameterParser.parseParameters(template, templateJsonNode, userParameters, true);
    parseConditions(template, templateJsonNode, true, effectiveUserId);
    parseResources(template, templateJsonNode, true);
    parseOutputs(template, templateJsonNode);

    Set<String> capabilitiesResourceTypes = Sets.newLinkedHashSet();
    Set<String> requiredCapabilities = Sets.newLinkedHashSet();
    Set<String> resourceTypes = Sets.newLinkedHashSet();
    for (ResourceInfo resourceInfo : template.getResourceInfoMap().values()) {
        String resourceType = resourceInfo.getType();
        resourceTypes.add(resourceType);
        if (resourceInfo.getRequiredCapabilities() != null
                && !resourceInfo.getRequiredCapabilities().isEmpty()) {
            requiredCapabilities.addAll(resourceInfo.getRequiredCapabilities());
            capabilitiesResourceTypes.add(resourceType);
        }
    }
    GetTemplateSummaryResult getTemplateSummaryResult = new GetTemplateSummaryResult();
    getTemplateSummaryResult.setDescription(template.getDescription());
    getTemplateSummaryResult.setCapabilities(new ResourceList());
    getTemplateSummaryResult.getCapabilities().setMember(Lists.newArrayList(requiredCapabilities));
    if (!requiredCapabilities.isEmpty()) {
        getTemplateSummaryResult.setCapabilitiesReason(
                "The following resource(s) require capabilities: " + capabilitiesResourceTypes);
    }
    getTemplateSummaryResult.setParameters(new ParameterDeclarations());
    getTemplateSummaryResult.getParameters().setMember(template.getParameterDeclarations());
    getTemplateSummaryResult.setMetadata(template.getMetadataJSON());
    getTemplateSummaryResult.setResourceTypes(new ResourceList());
    getTemplateSummaryResult.getResourceTypes().setMember(Lists.newArrayList(resourceTypes));
    return getTemplateSummaryResult;
}