1 {% set enabled_roles = roles|rejectattr('disable_upgrade_deployment')|list -%}
2 {% set batch_upgrade_steps_max = 3 -%}
3 {% set upgrade_steps_max = 6 -%}
4 heat_template_version: ocata
5 description: 'Upgrade steps for all roles'
13 description: Mapping of Role name e.g Controller to the per-role data
18 Setting to a previously unused value during stack-update will trigger
19 the Upgrade resources to re-run on all roles.
22 # Conditions to disable any steps where the task list is empty
23 {%- for role in roles %}
24 {{role.name}}UpgradeBatchConfigEnabled:
27 - {get_param: [role_data, {{role.name}}, upgrade_batch_tasks]}
29 {{role.name}}UpgradeConfigEnabled:
32 - {get_param: [role_data, {{role.name}}, upgrade_tasks]}
38 # Upgrade Steps for all roles, batched updates
39 # The UpgradeConfig resources could actually be created without
40 # serialization, but the event output is easier to follow if we
41 # do, and there should be minimal performance hit (creating the
42 # config is cheap compared to the time to apply the deployment).
43 {% for step in range(0, batch_upgrade_steps_max) %}
44 # Batch config resources step {{step}}
45 {%- for role in roles %}
46 {{role.name}}UpgradeBatchConfig_Step{{step}}:
47 type: OS::TripleO::UpgradeConfig
50 {%- for dep in enabled_roles %}
51 - {{dep.name}}UpgradeBatch_Step{{step -1}}
55 UpgradeStepConfig: {get_param: [role_data, {{role.name}}, upgrade_batch_tasks]}
59 # Batch deployment resources for step {{step}} (only for enabled roles)
60 {%- for role in enabled_roles %}
61 {{role.name}}UpgradeBatch_Step{{step}}:
62 type: OS::Heat::SoftwareDeploymentGroup
63 condition: {{role.name}}UpgradeBatchConfigEnabled
66 {%- for dep in enabled_roles %}
67 - {{dep.name}}UpgradeBatch_Step{{step -1}}
72 max_batch_size: {{role.upgrade_batch_size|default(1)}}
74 max_batch_size: {{role.upgrade_batch_size|default(1)}}
76 name: {{role.name}}UpgradeBatch_Step{{step}}
77 servers: {get_param: [servers, {{role.name}}]}
78 config: {get_resource: {{role.name}}UpgradeBatchConfig_Step{{step}}}
81 update_identifier: {get_param: UpdateIdentifier}
85 # Upgrade Steps for all roles
86 {%- for step in range(0, upgrade_steps_max) %}
87 # Config resources for step {{step}}
88 {%- for role in roles %}
89 {{role.name}}UpgradeConfig_Step{{step}}:
90 type: OS::TripleO::UpgradeConfig
91 # The UpgradeConfig resources could actually be created without
92 # serialization, but the event output is easier to follow if we
93 # do, and there should be minimal performance hit (creating the
94 # config is cheap compared to the time to apply the deployment).
97 {%- for dep in enabled_roles %}
98 - {{dep.name}}Upgrade_Step{{step -1}}
101 {%- for dep in enabled_roles %}
102 - {{dep.name}}UpgradeBatch_Step{{batch_upgrade_steps_max -1}}
106 UpgradeStepConfig: {get_param: [role_data, {{role.name}}, upgrade_tasks]}
110 # Deployment resources for step {{step}} (only for enabled roles)
111 {%- for role in enabled_roles %}
112 {{role.name}}Upgrade_Step{{step}}:
113 type: OS::Heat::SoftwareDeploymentGroup
114 condition: {{role.name}}UpgradeConfigEnabled
117 {%- for dep in enabled_roles %}
118 - {{dep.name}}Upgrade_Step{{step -1}}
121 {%- for dep in enabled_roles %}
122 - {{dep.name}}UpgradeBatch_Step{{batch_upgrade_steps_max -1}}
126 name: {{role.name}}Upgrade_Step{{step}}
127 servers: {get_param: [servers, {{role.name}}]}
128 config: {get_resource: {{role.name}}UpgradeConfig_Step{{step}}}
131 update_identifier: {get_param: UpdateIdentifier}
135 # Post upgrade deployment steps for all roles
136 # This runs the normal configuration (e.g puppet) steps unless upgrade
137 # is disabled for the role
138 AllNodesPostUpgradeSteps:
139 type: OS::TripleO::PostUpgradeSteps
141 {%- for dep in enabled_roles %}
142 - {{dep.name}}Upgrade_Step{{upgrade_steps_max - 1}}
145 servers: {get_param: servers}
146 role_data: {get_param: role_data}
149 # Output the config for each role, just use Step1 as the config should be
150 # the same for all steps (only the tag provided differs)
152 description: The per-role upgrade configuration used
154 {% for role in roles %}
155 {{role.name.lower()}}: {get_attr: [{{role.name}}UpgradeConfig_Step1, upgrade_config]}