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

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

Introduction

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

Prototype


public void setCapabilities(java.util.Collection<String> capabilities) 

Source Link

Document

The capabilities found within the template.

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 w  w . j  a v  a  2  s.co 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;
}