Example usage for com.amazonaws.services.cloudformation AmazonCloudFormationClient validateTemplate

List of usage examples for com.amazonaws.services.cloudformation AmazonCloudFormationClient validateTemplate

Introduction

In this page you can find the example usage for com.amazonaws.services.cloudformation AmazonCloudFormationClient validateTemplate.

Prototype

@Override
public ValidateTemplateResult validateTemplate(ValidateTemplateRequest request) 

Source Link

Document

Validates a specified template.

Usage

From source file:com.mweagle.tereus.commands.CreateCommand.java

License:Open Source License

protected void validateTemplate(TereusInput tereusInput, String parameterizedTemplate)
        throws UnsupportedEncodingException {
    if (tereusInput.dryRun) {
        tereusInput.logger.info("Dry run requested (-n/--noop). Stack validation bypassed.");
    } else {//www  .  j  av  a 2  s. c  om
        tereusInput.logger.info("Validating template with AWS");
        final String bucketName = tereusInput.params.get(CONSTANTS.PARAMETER_NAMES.S3_BUCKET_NAME).toString();
        final byte[] templateBytes = parameterizedTemplate.getBytes("UTF-8");
        final InputStream is = new ByteArrayInputStream(templateBytes);

        final String templateDigest = DigestUtils.sha256Hex(templateBytes);
        final String keyName = String.format("%s-tereus-pre.cf.template", templateDigest);
        try (S3Resource resource = new S3Resource(bucketName, keyName, is,
                Optional.of(Long.valueOf(templateBytes.length)))) {
            Optional<String> templateURL = resource.upload();
            final ValidateTemplateRequest validationRequest = new ValidateTemplateRequest();
            validationRequest.setTemplateURL(templateURL.get());
            final AmazonCloudFormationClient awsClient = new AmazonCloudFormationClient(
                    tereusInput.awsCredentials);
            awsClient.setRegion(tereusInput.awsRegion);
            final ValidateTemplateResult validationResult = awsClient.validateTemplate(validationRequest);
            tereusInput.logger.debug("Stack template validation results:");
            tereusInput.logger.debug(validationResult.toString());
        }
    }
}

From source file:io.konig.schemagen.aws.AWSCloudFormationUtil.java

License:Apache License

public static void writeCloudFormationTemplate(File cfDir, String template, boolean validate)
        throws IOException, ParseException {

    for (File file : cfDir.listFiles()) {
        if (file.getName().endsWith("_template.yml")) {
            String contents = new String(Files.readAllBytes(Paths.get(file.getAbsolutePath())));

            VelocityContext context = new VelocityContext();
            context.put("functions", new VelocityFunctions(cfDir));
            StringWriter tempresult = new StringWriter();
            Template vmtemplate = new Template();
            RuntimeServices runtimeServices = RuntimeSingleton.getRuntimeServices();
            StringReader reader = new StringReader(contents);
            vmtemplate.setRuntimeServices(runtimeServices);
            vmtemplate.setData(runtimeServices.parse(reader, template));
            vmtemplate.initDocument();/* w  w w  .ja v a 2  s.co m*/
            vmtemplate.merge(context, tempresult);
            contents = tempresult.toString();
            YAMLMapper mapper = new YAMLMapper(new YAMLFactory());
            JsonNode node = mapper.readTree(contents);
            JsonNode outputNode = node.get("Outputs");
            if (outputNode != null) {
                String outputs = contents.substring(contents.lastIndexOf("Outputs:"));
                String resources = contents.substring(0, contents.lastIndexOf("Outputs:"));
                resources = resources + template;
                contents = resources + outputs;
            }

            AmazonCloudFormationClient client = new AmazonCloudFormationClient();
            ValidateTemplateRequest request = new ValidateTemplateRequest();
            request.setTemplateBody(contents);
            if (validate) {
                ValidateTemplateResult result = client.validateTemplate(request);
            }

            try (FileWriter fileWriter = new FileWriter(file)) {
                fileWriter.write(contents);
            }
        }
    }

}