1 heat_template_version: pike
4 Utility stack to convert an array of services into a set of combined
11 List nested stack service templates.
12 type: comma_delimited_list
15 description: Dictionary packing service data
19 description: Mapping of service_name -> network name. Typically set
20 via parameter_defaults in the resource registry. This
21 mapping overrides those in ServiceNetMapDefaults.
25 description: Mapping of service endpoint -> protocol. Typically set
26 via parameter_defaults in the resource registry.
30 description: Mapping of service -> default password. Used to help
31 pass top level passwords managed by Heat into services.
35 description: Role name on which the service is applied
38 description: Parameters specific to the role
45 type: OS::Heat::ResourceChain
47 resources: {get_param: Services}
50 ServiceData: {get_param: ServiceData}
51 ServiceNetMap: {get_param: ServiceNetMap}
52 EndpointMap: {get_param: EndpointMap}
53 DefaultPasswords: {get_param: DefaultPasswords}
54 RoleName: {get_param: RoleName}
55 RoleParameters: {get_param: RoleParameters}
58 type: OS::TripleO::LoggingConfiguration
60 ServiceServerMetadataHook:
61 type: OS::TripleO::ServiceServerMetadataHook
63 RoleData: {get_attr: [ServiceChain, role_data]}
72 # select 'step_config' only from services that do not have a docker_config
73 coalesce($.data.service_names, []).zip(coalesce($.data.step_config, []), coalesce($.data.docker_config, [])).where($[2] = null).where($[1] != null).select($[1]).join("\n")
75 service_names: {get_attr: [ServiceChain, role_data, service_name]}
76 step_config: {get_attr: [ServiceChain, role_data, step_config]}
77 docker_config: {get_attr: [ServiceChain, role_data, docker_config]}
86 # select 'docker_config' only from services that have it
87 coalesce($.data.service_names, []).zip(coalesce($.data.docker_config, [])).where($[1] != null).select($[1]).reduce($1.mergeWith($2), {})
89 service_names: {get_attr: [ServiceChain, role_data, service_names]}
90 docker_config: {get_attr: [ServiceChain, role_data, docker_config]}
99 # select 'docker_config_scripts' only from services that have it
100 coalesce($.data.service_names, []).zip(coalesce($.data.docker_config_scripts, [])).where($[1] != null).select($[1]).reduce($1.mergeWith($2), {})
102 service_names: {get_attr: [ServiceChain, role_data, service_names]}
103 docker_config_scripts: {get_attr: [ServiceChain, role_data, docker_config_scripts]}
106 type: OS::Heat::Value
112 # If any service in this role requires cellv2_discovery then this value is true
113 coalesce($.data.cellv2_discovery, []).contains(true)
115 cellv2_discovery: {get_attr: [ServiceChain, role_data, cellv2_discovery]}
117 LoggingSourcesConfig:
118 type: OS::Heat::Value
120 type: comma_delimited_list
122 # Transform the individual logging_source configuration from
123 # each service in the chain into a global list, adding some
124 # default configuration at the same time.
128 default_format => coalesce($.data.default_format, ''),
129 pos_file_path => coalesce($.data.pos_file_path, ''),
130 sources => coalesce($.data.sources, {}).flatten()
132 $sources.where($ != null).select({
136 'format' => $.get('format', $default_format),
137 'pos_file' => $.get('pos_file', $pos_file_path + '/' + $.tag + '.pos')
141 - {get_attr: [LoggingConfiguration, LoggingDefaultSources]}
143 expression: list(coalesce($.data.role_data, []).where($ != null).select($.get('logging_source')).where($ != null))
144 data: {role_data: {get_attr: [ServiceChain, role_data]}}
146 - {get_attr: [LoggingConfiguration, LoggingExtraSources]}
147 default_format: {get_attr: [LoggingConfiguration, LoggingDefaultFormat]}
148 pos_file_path: {get_attr: [LoggingConfiguration, LoggingPosFilePath]}
151 type: OS::Heat::Value
153 type: comma_delimited_list
155 # Build a list of unique groups to which we should add the
159 set((coalesce($.data.default, []) + coalesce($.data.extra, []) + coalesce($.data.role_data, []).where($ != null).select($.get('logging_groups'))).flatten()).where($)
161 default: {get_attr: [LoggingConfiguration, LoggingDefaultGroups]}
162 extra: {get_attr: [LoggingConfiguration, LoggingExtraGroups]}
163 role_data: {get_attr: [ServiceChain, role_data]}
165 MonitoringSubscriptionsConfig:
166 type: OS::Heat::Value
168 type: comma_delimited_list
171 expression: list(coalesce($.data.role_data, []).where($ != null).select($.get('monitoring_subscription')).where($ != null))
172 data: {role_data: {get_attr: [ServiceChain, role_data]}}
175 type: OS::Heat::Value
177 type: comma_delimited_list
181 - {get_attr: [ServiceChain, role_data, service_name]}
183 GlobalConfigSettings:
184 type: OS::Heat::Value
190 expression: list(coalesce($.data.role_data, []).where($ != null).select($.get('global_config_settings')).where($ != null))
191 data: {role_data: {get_attr: [ServiceChain, role_data]}}
193 ServiceConfigSettings:
194 type: OS::Heat::Value
199 expression: coalesce($.data.role_data, []).where($ != null).select($.get('service_config_settings')).where($ != null).reduce($1.mergeWith($2), {})
200 data: {role_data: {get_attr: [ServiceChain, role_data]}}
203 type: OS::Heat::Value
208 expression: coalesce($.data.role_data, []).where($ != null).select($.get('workflow_tasks')).where($ != null).reduce($1.mergeWith($2), {})
209 data: {role_data: {get_attr: [ServiceChain, role_data]}}
212 type: OS::Heat::Value
214 type: comma_delimited_list
217 # Note we use distinct() here to filter any identical tasks, e.g yum update for all services
218 expression: coalesce($.data, []).where($ != null).select($.get('upgrade_tasks')).where($ != null).flatten().distinct()
219 data: {get_attr: [ServiceChain, role_data]}
222 type: OS::Heat::Value
224 type: comma_delimited_list
227 # Note we use distinct() here to filter any identical tasks, e.g yum update for all services
228 expression: coalesce($.data, []).where($ != null).select($.get('post_upgrade_tasks')).where($ != null).flatten().distinct()
229 data: {get_attr: [ServiceChain, role_data]}
232 type: OS::Heat::Value
234 type: comma_delimited_list
237 # Note we use distinct() here to filter any identical tasks, e.g yum update for all services
238 expression: coalesce($.data, []).where($ != null).select($.get('update_tasks')).where($ != null).flatten().distinct()
239 data: {get_attr: [ServiceChain, role_data]}
242 type: OS::Heat::Value
244 type: comma_delimited_list
247 expression: coalesce($.data, []).where($ != null).select($.get('upgrade_batch_tasks')).where($ != null).flatten().distinct()
248 data: {get_attr: [ServiceChain, role_data]}
251 type: OS::Heat::Value
253 type: comma_delimited_list
256 expression: coalesce($.data, []).where($ != null).select($.get('puppet_config')).where($ != null).distinct()
257 data: {get_attr: [ServiceChain, role_data]}
260 type: OS::Heat::Value
265 expression: coalesce($.data.role_data, []).where($ != null).select($.get('kolla_config')).where($ != null).reduce($1.mergeWith($2), {})
266 data: {role_data: {get_attr: [ServiceChain, role_data]}}
269 type: OS::Heat::Value
274 expression: dict(coalesce($.data, []).where($ != null).select($.get('docker_puppet_tasks')).where($ != null).selectMany($.items()).groupBy($[0], $[1]))
275 data: {get_attr: [ServiceChain, role_data]}
278 type: OS::Heat::Value
280 type: comma_delimited_list
283 # Note we use distinct() here to filter any identical tasks
284 expression: coalesce($.data, []).where($ != null).select($.get('host_prep_tasks')).where($ != null).flatten().distinct()
285 data: {get_attr: [ServiceChain, role_data]}
289 description: Combined Role data for this set of services.
291 service_names: {get_attr: [ServiceNames, value]}
292 monitoring_subscriptions: {get_attr: [MonitoringSubscriptionsConfig, value]}
293 logging_sources: {get_attr: [LoggingSourcesConfig, value]}
294 logging_groups: {get_attr: [LoggingGroupsConfig, value]}
295 config_settings: {map_merge: {get_attr: [ServiceChain, role_data, config_settings]}}
296 global_config_settings: {get_attr: [GlobalConfigSettings, value]}
297 service_config_settings: {get_attr: [ServiceConfigSettings, value]}
298 workflow_tasks: {get_attr: [WorkflowTasks, value]}
299 step_config: {get_attr: [PuppetStepConfig, value]}
300 upgrade_tasks: {get_attr: [UpgradeTasks, value]}
301 post_upgrade_tasks: {get_attr: [PostUpgradeTasks, value]}
302 update_tasks: {get_attr: [UpdateTasks, value]}
303 upgrade_batch_tasks: {get_attr: [UpgradeBatchTasks, value]}
304 service_metadata_settings: {get_attr: [ServiceServerMetadataHook, metadata]}
306 # Keys to support docker/services
307 puppet_config: {get_attr: [PuppetConfig, value]}
308 kolla_config: {get_attr: [KollaConfig, value]}
309 docker_config: {get_attr: [DockerConfig, value]}
310 docker_config_scripts: {get_attr: [DockerConfigScripts, value]}
311 docker_puppet_tasks: {get_attr: [DockerPuppetTasks, value]}
312 host_prep_tasks: {get_attr: [HostPrepTasks, value]}
313 cellv2_discovery: {get_attr: [CellV2Discovery, value]}