Merge "Set name property on missing deployments"
[apex-tripleo-heat-templates.git] / puppet / puppet-steps.j2
1 {% set deploy_steps_max = 6 %}
2 conditions:
3 {% for step in range(1, deploy_steps_max) %}
4   WorkflowTasks_Step{{step}}_Enabled:
5     or:
6     {%- for role in roles %}
7       - not:
8           equals:
9             - get_param: [role_data, {{role.name}}, service_workflow_tasks, step{{step}}]
10             - ''
11       - False
12     {%- endfor %}
13 {% endfor %}
14
15 resources:
16   # Post deployment steps for all roles
17   # A single config is re-applied with an incrementing step number
18 {% for role in roles %}
19   # {{role.name}} Role post-deploy steps
20   {{role.name}}ArtifactsConfig:
21     type: deploy-artifacts.yaml
22
23   {{role.name}}ArtifactsDeploy:
24     type: OS::Heat::StructuredDeployments
25     properties:
26       name: {{role.name}}ArtifactsDeploy
27       servers:  {get_param: [servers, {{role.name}}]}
28       config: {get_resource: {{role.name}}ArtifactsConfig}
29
30   {{role.name}}PreConfig:
31     type: OS::TripleO::Tasks::{{role.name}}PreConfig
32     properties:
33       servers: {get_param: [servers, {{role.name}}]}
34       input_values:
35         update_identifier: {get_param: DeployIdentifier}
36
37   {{role.name}}Config:
38     type: OS::TripleO::{{role.name}}Config
39     properties:
40       StepConfig: {get_param: [role_data, {{role.name}}, step_config]}
41
42   # Step through a series of configuration steps
43 {% for step in range(1, deploy_steps_max) %}
44   {{role.name}}Deployment_Step{{step}}:
45     type: OS::Heat::StructuredDeploymentGroup
46     depends_on:
47       - WorkflowTasks_Step{{step}}_Execution
48     # TODO(gfidente): the following if/else condition
49     # replicates what is already defined for the
50     # WorkflowTasks_StepX resource and can be remove
51     # if https://bugs.launchpad.net/heat/+bug/1700569
52     # is fixed.
53     {%- if step == 1 %}
54     {%- for dep in roles %}
55       - {{dep.name}}PreConfig
56       - {{dep.name}}ArtifactsDeploy
57     {%- endfor %}
58     {%- else %}
59     {%- for dep in roles %}
60       - {{dep.name}}Deployment_Step{{step -1}}
61     {%- endfor %}
62     {%- endif %}
63     properties:
64       name: {{role.name}}Deployment_Step{{step}}
65       servers: {get_param: [servers, {{role.name}}]}
66       config: {get_resource: {{role.name}}Config}
67       input_values:
68         step: {{step}}
69         update_identifier: {get_param: DeployIdentifier}
70 {% endfor %}
71
72   # Note, this should be the last step to execute configuration changes.
73   # Ensure that all {{role.name}}ExtraConfigPost steps are executed
74   # after all the previous deployment steps.
75   {{role.name}}ExtraConfigPost:
76     depends_on:
77   {%- for dep in roles %}
78       - {{dep.name}}Deployment_Step5
79   {%- endfor %}
80     type: OS::TripleO::NodeExtraConfigPost
81     properties:
82         servers: {get_param: [servers, {{role.name}}]}
83
84   # The {{role.name}}PostConfig steps are in charge of
85   # quiescing all services, i.e. in the Controller case,
86   # we should run a full service reload.
87   {{role.name}}PostConfig:
88     type: OS::TripleO::Tasks::{{role.name}}PostConfig
89     depends_on:
90   {%- for dep in roles %}
91       - {{dep.name}}ExtraConfigPost
92   {%- endfor %}
93     properties:
94       servers: {get_param: servers}
95       input_values:
96         update_identifier: {get_param: DeployIdentifier}
97
98
99 {% endfor %}
100
101 # BEGIN service_workflow_tasks handling
102 {% for step in range(1, deploy_steps_max) %}
103   WorkflowTasks_Step{{step}}:
104     type: OS::Mistral::Workflow
105     condition: WorkflowTasks_Step{{step}}_Enabled
106     depends_on:
107     {%- if step == 1 %}
108     {%- for dep in roles %}
109       - {{dep.name}}PreConfig
110       - {{dep.name}}ArtifactsDeploy
111     {%- endfor %}
112     {%- else %}
113     {%- for dep in roles %}
114       - {{dep.name}}Deployment_Step{{step -1}}
115     {%- endfor %}
116     {%- endif %}
117     properties:
118       name: {list_join: [".", ["tripleo", {get_param: stack_name}, "workflowtasks", "step{{step}}"]]}
119       type: direct
120       tasks:
121         yaql:
122           expression: $.data.where($ != '').select($.get('step{{step}}')).where($ != null).flatten()
123           data:
124           {%- for role in roles %}
125             - get_param: [role_data, {{role.name}}, service_workflow_tasks]
126           {%- endfor %}
127
128   WorkflowTasks_Step{{step}}_Execution:
129     type: OS::Mistral::ExternalResource
130     condition: WorkflowTasks_Step{{step}}_Enabled
131     depends_on: WorkflowTasks_Step{{step}}
132     properties:
133       actions:
134         CREATE:
135           workflow: { get_resource: WorkflowTasks_Step{{step}} }
136           params:
137             env:
138               service_ips: { get_param: ctlplane_service_ips }
139               role_merged_configs:
140                 {%- for r in roles %}
141                 {{r.name}}: {get_param: [role_data, {{r.name}}, merged_config_settings]}
142                 {%- endfor %}
143             evaluate_env: false
144         UPDATE:
145           workflow: { get_resource: WorkflowTasks_Step{{step}} }
146           params:
147             env:
148               service_ips: { get_param: ctlplane_service_ips }
149               role_merged_configs:
150                 {%- for r in roles %}
151                 {{r.name}}: {get_param: [role_data, {{r.name}}, merged_config_settings]}
152                 {%- endfor %}
153             evaluate_env: false
154       always_update: true
155 {% endfor %}
156 # END service_workflow_tasks handling