Class ProcessedTemplate

  • All Implemented Interfaces:
    pl.wrzasq.commons.aws.cloudformation.macro.TemplateDefinition

    public class ProcessedTemplate
    extends Object
    implements pl.wrzasq.commons.aws.cloudformation.macro.TemplateDefinition
    Contains template structure after macro logic transformation.
    • Field Detail

      • NO_VALUE

        private static final Object NO_VALUE
        !Ref "AWS::NoValue" expression.
      • ARTIFACT_SEPARATOR

        private static final String ARTIFACT_SEPARATOR
        CloudFormation artifact path separator.
        See Also:
        Constant Field Values
      • objectMapper

        private static com.fasterxml.jackson.databind.ObjectMapper objectMapper
        Values converter.
      • logger

        private static org.slf4j.Logger logger
        Logger.
    • Constructor Detail

      • ProcessedTemplate

        public ProcessedTemplate​(Map<String,​Object> input)
        Template initializer.
        Parameters:
        input - Initial template structure.
    • Method Detail

      • processTemplate

        private Map<String,​Object> processTemplate​(Map<String,​Object> input)
        Builds pipeline resource.
        Parameters:
        input - Initial template structure.
        Returns:
        Template state after processing.
      • buildConditions

        private Map<String,​Object> buildConditions​(Map<String,​Object> conditions,
                                                         PipelineConfiguraiton config)
        Builds conditions used by pipeline.
        Parameters:
        conditions - Initial conditions.
        config - Pipeline config.
        Returns:
        Template conditions.
      • buildResources

        private Map<String,​Object> buildResources​(Map<String,​Object> resources,
                                                        PipelineDefinition pipeline)
        Builds resources used by pipeline.
        Parameters:
        resources - Resources container.
        pipeline - Pipeline definition.
        Returns:
        Template conditions.
      • buildPipelineDefinition

        private Map<String,​Object> buildPipelineDefinition​(PipelineDefinition pipeline)
        Build pipeline definition.
        Parameters:
        pipeline - Pipeline definition.
        Returns:
        Resource definition.
      • buildCheckoutSources

        private Object buildCheckoutSources​(Map<String,​Map<String,​Object>> sources)
        Builds sources action steps.
        Parameters:
        sources - Source locations.
        Returns:
        Stage actions.
      • buildPromotedSources

        private Object buildPromotedSources​(Map<String,​PipelineArtifact> artifacts)
        Builds sources action steps.
        Parameters:
        artifacts - Previous stage artifacts.
        Returns:
        Stage actions.
      • buildStages

        private List<Object> buildStages​(List<PipelineStage> stages)
        Builds pipelines stage definition.
        Parameters:
        stages - Stages definitions.
        Returns:
        Stages definition.
      • buildManualApprovalStage

        private Object buildManualApprovalStage​(PipelineConfiguraiton config)
        Builds manual approval stage definition.
        Parameters:
        config - Pipeline configuration.
        Returns:
        Stage definition.
      • buildPromoteStage

        private Object buildPromoteStage​(PipelineConfiguraiton config,
                                         Map<String,​PipelineArtifact> artifacts)
        Builds artifacts promotion stage definition.
        Parameters:
        config - Pipeline configuration.
        artifacts - Artifacts configuration.
        Returns:
        Stage definition.
      • buildStage

        private Map<String,​Object> buildStage​(PipelineStage stage)
        Builds pipeline stage definition structure.
        Parameters:
        stage - Stage setup.
        Returns:
        CodePipeline stage definition.
      • normalizeAction

        private static void normalizeAction​(PipelineAction action)
        Normalizes all actions.
        Parameters:
        action - Action setup.
      • orderActions

        private static void orderActions​(List<PipelineAction> actions)
        Orders all actions.
        Parameters:
        actions - Stage actions.
      • calculateActionOrder

        private static void calculateActionOrder​(PipelineAction action,
                                                 Set<PipelineAction> visited,
                                                 Map<String,​PipelineAction> outputs)
        Calculates action order.
        Parameters:
        action - Current subject action.
        visited - Current state markers.
        outputs - Output artifacts mapping.
      • detectInputArtifacts

        private static List<String> detectInputArtifacts​(PipelineAction action)
        Builds list of all used input artifacts.
        Parameters:
        action - Action definition.
        Returns:
        List of input artifacts.
      • buildActionDefinition

        private static Map<String,​Object> buildActionDefinition​(PipelineAction action)
        Populates pipeline action definition structure.
        Parameters:
        action - Action configuration.
        Returns:
        CodePipeline stage definition.
      • buildActionDefinition

        private static Map<String,​Object> buildActionDefinition​(Map<String,​Object> data,
                                                                      PipelineAction action)
        Populates pipeline action definition structure.
        Parameters:
        data - Initial definition.
        action - Action configuration.
        Returns:
        CodePipeline stage definition.
      • buildWebhookDefinition

        private Map<String,​Object> buildWebhookDefinition​(PipelineConfiguraiton config,
                                                                String checkoutAction)
        Builds webhook definition.
        Parameters:
        config - Pipeline configuration.
        checkoutAction - Checkout action name.
        Returns:
        Resource definition.
      • buildBooleanCondition

        private static Map<String,​Object> buildBooleanCondition​(String param)
        Builds condition based on Y/N parameter.
        Parameters:
        param - Parameter name.
        Returns:
        Condition definition structure.
      • buildArtifactRefs

        private static List<Map<String,​String>> buildArtifactRefs​(Collection<String> names)
        Converts artifact names into list of artifact reference.
        Parameters:
        names - Artifact names.
        Returns:
        Artifact references.
      • fnIf

        private static Map<String,​Object> fnIf​(String condition,
                                                     Object whenTrue,
                                                     Object whenFalse)
        Builds Fn::If call.
        Parameters:
        condition - Condition name.
        whenTrue - Value in case of positive case.
        whenFalse - Value in case of negative case.
        Returns:
        Fn::If call.
      • getTemplate

        public Map<String,​Object> getTemplate()
        Template structure.
        Specified by:
        getTemplate in interface pl.wrzasq.commons.aws.cloudformation.macro.TemplateDefinition