List of usage examples for com.amazonaws.services.cloudformation.model ValidateTemplateRequest ValidateTemplateRequest
ValidateTemplateRequest
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; }