Example usage for com.amazonaws.services.cloudformation.model ValidateTemplateRequest ValidateTemplateRequest

List of usage examples for com.amazonaws.services.cloudformation.model ValidateTemplateRequest ValidateTemplateRequest

Introduction

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

Prototype

ValidateTemplateRequest

Source Link

Usage

From source file:br.com.ingenieux.mojo.cloudformation.PushStackMojo.java

License:Apache License

private ValidateTemplateResult validateTemplate() throws Exception {
    final ValidateTemplateRequest req = new ValidateTemplateRequest();

    if (null != destinationS3Uri) {
        req.withTemplateURL(generateExternalUrl(this.destinationS3Uri));
    } else {/* w  w w. j  a  v  a2  s.  com*/
        req.withTemplateBody(templateBody);
    }

    final ValidateTemplateResult result = getService().validateTemplate(req);

    getLog().info("Validation Result: " + result);

    return result;
}

From source file:com.deploymentio.cfnstacker.CloudFormationClient.java

License:Apache License

/**
 * Validates the stack template with CloudFormation and ensure that values
 * were provided for all required parameters
 * //  ww w. ja v  a 2s .c  om
 * @param templateBody ClouadFormation JSON template
 * @param options options needed to validate the stack template
 * @return <code>true</code> if the stack is valid, <code>false</code>
 *         otherwise
 */
public boolean validateTemplate(JsonNode templateBody) throws Exception {

    boolean allOK = true;
    Map<String, JsonNode> stackProperties = config.getParameters();
    ValidateTemplateResult validationResult = client.validateTemplate(new ValidateTemplateRequest()
            .withTemplateURL(uploadCfnTemplateToS3(config.getName(), "validate", templateBody)));

    // check if the template has any parameters without defaults for which no stack properties were provided
    for (TemplateParameter param : validationResult.getParameters()) {
        String key = param.getParameterKey();
        if (StringUtils.isEmpty(param.getDefaultValue())) {
            JsonNode value = stackProperties.get(key);
            if (value == null) {
                logger.error("Missing template parameter value: Key=" + key);
                allOK = false;
            } else if (value.isContainerNode()) {
                logger.error("Template parameter can only be a scaler value: Key=" + key);
                allOK = false;
            }
        }
    }

    return allOK;
}

From source file:com.deploymentio.cfnstacker.CloudFormationClient.java

License:Apache License

/**
 * Validates a sub-stack template with CloudFormation.
 * /*from  w ww  .j a va  2  s .  c o  m*/
 * @param templateBody ClouadFormation JSON template
 */
public boolean validateSubStackTemplate(String templateBodyUrl) throws Exception {
    client.validateTemplate(new ValidateTemplateRequest().withTemplateURL(templateBodyUrl));
    return true;
}

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 {//  w w w.  j a v  a  2  s . c o m
        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();//from  w w  w.  j  a  v  a  2  s  .c om
            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);
            }
        }
    }

}

From source file:jetbrains.buildServer.runner.cloudformation.AWSClient.java

License:Apache License

/**
 * Uploads application revision archive to S3 bucket named s3BucketName with
 * the provided key and bundle type.// w  w w  .  j av  a  2  s.  c  o  m
 * <p>
 * For performing this operation target AWSClient must have corresponding S3
 * permissions.
 *
 * @param s3BucketName
 *            valid S3 bucket name
 * @param s3ObjectKey
 *            valid S3 object key
 */
public void initiateCFN(@NotNull String stackName, @NotNull String region, @NotNull String s3BucketName,
        @NotNull String s3ObjectKey, @NotNull String cfnAction, @NotNull String onFailure) {
    try {
        String templateURL;
        Region reg = Region.getRegion(Regions.fromName(region));
        myCloudFormationClient.setRegion(reg);
        templateURL = getTemplateUrl(reg, s3BucketName, s3ObjectKey);
        System.out.println("The template url is " + templateURL);

        if (cfnAction.equalsIgnoreCase("Create")) {
            System.out.println("The CFN action is " + cfnAction);
            myListener.createStackStarted(stackName, region, s3BucketName, s3ObjectKey, cfnAction);
            CreateStackRequest createRequest = new CreateStackRequest();
            createRequest.setStackName(stackName);
            if (!onFailure.equalsIgnoreCase("null"))
                createRequest.setOnFailure(onFailure);
            createRequest.setTemplateURL(templateURL);
            myCloudFormationClient.createStack(createRequest);
            waitForCompletion(myCloudFormationClient, stackName);

        } else if (cfnAction.equalsIgnoreCase("Delete")) {
            myListener.deleteStarted(stackName, region);
            DeleteStackRequest deleteStackRequest = new DeleteStackRequest();
            deleteStackRequest.setStackName(stackName);
            myCloudFormationClient.deleteStack(deleteStackRequest);
            waitForDelete(myCloudFormationClient, stackName);

        } else if (cfnAction.equalsIgnoreCase("Validate")) {
            myListener.validateStarted(stackName);
            ValidateTemplateRequest validatetempRequest = new ValidateTemplateRequest();
            validatetempRequest.setTemplateURL(templateURL);
            myListener.validateFinished(
                    myCloudFormationClient.validateTemplate(validatetempRequest).getParameters().toString());

        } else if (cfnAction.equalsIgnoreCase("Update")) {
            myListener.updateInProgress(stackName);
            UpdateStackRequest updateStackRequest = new UpdateStackRequest();
            updateStackRequest.setStackName(stackName);
            updateStackRequest.setTemplateURL(templateURL);
            myCloudFormationClient.updateStack(updateStackRequest);
            waitForCompletion(myCloudFormationClient, stackName);
        }
    } catch (Throwable t) {
        processFailure(t);
    }
}

From source file:jp.classmethod.aws.gradle.cloudformation.AmazonCloudFormationPluginExtension.java

License:Apache License

public boolean isValidTemplateBody(String templateBody) {
    try {//from ww w .  ja v a 2  s . c o  m
        ValidateTemplateRequest validateTemplateRequest = new ValidateTemplateRequest()
                .withTemplateBody(templateBody);
        getClient().validateTemplate(validateTemplateRequest);
        return true;
    } catch (AmazonClientException e) {
        logger.error("validateTemplateBody failed: {}", e.getMessage());
        return false;
    }
}

From source file:jp.classmethod.aws.gradle.cloudformation.AmazonCloudFormationPluginExtension.java

License:Apache License

public boolean isValidTemplateUrl(String templateUrl) {
    try {//w  ww . jav a2s  .  co  m
        ValidateTemplateRequest validateTemplateRequest = new ValidateTemplateRequest()
                .withTemplateURL(templateUrl);
        getClient().validateTemplate(validateTemplateRequest);
        return true;
    } catch (AmazonClientException e) {
        logger.error("validateTemplateUrl failed: {}", e.getMessage());
        return false;
    }
}

From source file:org.xmlsh.aws.cfnValidateTemplate.java

License:BSD License

private int validate(Options opts) throws IOException, XMLStreamException, SaxonApiException, CoreException {

    ValidateTemplateRequest request = new ValidateTemplateRequest();
    if (opts.hasOpt("template-file"))
        request.setTemplateBody(Util.readString(mShell.getFile(opts.getOptValue("template-file")),
                getSerializeOpts().getInput_text_encoding()));
    else//from  ww w .ja v a2  s  . c o m
        request.setTemplateURL(opts.getOptStringRequired("template-url"));

    traceCall("validateTemplate");

    ValidateTemplateResult result = getAWSClient().validateTemplate(request);

    OutputPort stdout = getStdout();
    mWriter = new SafeXMLStreamWriter(stdout.asXMLStreamWriter(getSerializeOpts()));

    startDocument();
    startElement(getName());

    writeResult(result);

    endElement();
    endDocument();
    closeWriter();

    stdout.writeSequenceTerminator(getSerializeOpts());

    return 0;

}