Class ProcessedTemplate
- java.lang.Object
-
- pl.wrzasq.lambda.macro.pipeline.multistagecd.template.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 Summary
Fields Modifier and Type Field Description private static String
ARTIFACT_SEPARATOR
CloudFormation artifact path separator.private static org.slf4j.Logger
logger
Logger.private static Object
NO_VALUE
!Ref "AWS::NoValue" expression.private static com.fasterxml.jackson.databind.ObjectMapper
objectMapper
Values converter.private static String
SECTION_PIPELINE
Artificial "Pipeline" section.private Map<String,Object>
template
Template structure.
-
Constructor Summary
Constructors Constructor Description ProcessedTemplate(Map<String,Object> input)
Template initializer.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static Map<String,Object>
buildActionDefinition(Map<String,Object> data, PipelineAction action)
Populates pipeline action definition structure.private static Map<String,Object>
buildActionDefinition(PipelineAction action)
Populates pipeline action definition structure.private static List<Map<String,String>>
buildArtifactRefs(Collection<String> names)
Converts artifact names into list of artifact reference.private static Map<String,Object>
buildBooleanCondition(String param)
Builds condition based on Y/N parameter.private Object
buildCheckoutSources(Map<String,Map<String,Object>> sources)
Builds sources action steps.private Map<String,Object>
buildConditions(Map<String,Object> conditions, PipelineConfiguraiton config)
Builds conditions used by pipeline.private Object
buildManualApprovalStage(PipelineConfiguraiton config)
Builds manual approval stage definition.private Map<String,Object>
buildPipelineDefinition(PipelineDefinition pipeline)
Build pipeline definition.private Object
buildPromotedSources(Map<String,PipelineArtifact> artifacts)
Builds sources action steps.private Object
buildPromoteStage(PipelineConfiguraiton config, Map<String,PipelineArtifact> artifacts)
Builds artifacts promotion stage definition.private Map<String,Object>
buildResources(Map<String,Object> resources, PipelineDefinition pipeline)
Builds resources used by pipeline.private Map<String,Object>
buildSourceStage(PipelineConfiguraiton config, Map<String,Map<String,Object>> sources, Map<String,PipelineArtifact> artifacts)
Builds sources stage.private Map<String,Object>
buildStage(PipelineStage stage)
Builds pipeline stage definition structure.private List<Object>
buildStages(List<PipelineStage> stages)
Builds pipelines stage definition.private Map<String,Object>
buildWebhookDefinition(PipelineConfiguraiton config, String checkoutAction)
Builds webhook definition.private static void
calculateActionOrder(PipelineAction action, Set<PipelineAction> visited, Map<String,PipelineAction> outputs)
Calculates action order.private static List<String>
detectInputArtifacts(PipelineAction action)
Builds list of all used input artifacts.private static Map<String,Object>
fnIf(String condition, Object whenTrue, Object whenFalse)
Builds Fn::If call.Map<String,Object>
getTemplate()
Template structure.private static void
normalizeAction(PipelineAction action)
Normalizes all actions.private static void
orderActions(List<PipelineAction> actions)
Orders all actions.private Map<String,Object>
processTemplate(Map<String,Object> input)
Builds pipeline resource.
-
-
-
Field Detail
-
SECTION_PIPELINE
private static final String SECTION_PIPELINE
Artificial "Pipeline" section.- See Also:
- Constant Field Values
-
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.
-
-
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.
-
buildSourceStage
private Map<String,Object> buildSourceStage(PipelineConfiguraiton config, Map<String,Map<String,Object>> sources, Map<String,PipelineArtifact> artifacts)
Builds sources stage.- Parameters:
config
- Pipeline configuration.sources
- Source locations.artifacts
- Previous stage artifacts.- Returns:
- Stage 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.
-
-