heat_template_version: 2016-10-14 description: > Utility stack to convert an array of services into a set of combined role configs. parameters: Services: default: [] description: | List nested stack service templates. type: comma_delimited_list EndpointMap: default: {} description: Mapping of service endpoint -> protocol. Typically set via parameter_defaults in the resource registry. type: json resources: ServiceChain: type: OS::Heat::ResourceChain properties: resources: {get_param: Services} concurrent: true resource_properties: EndpointMap: {get_param: EndpointMap} outputs: role_data: description: Combined Role data for this set of services. value: service_names: # Filter any null/None service_names which may be present due to mapping # of services to OS::Heat::None yaql: expression: list($.data.s_names.where($ != null)) data: {s_names: {get_attr: [ServiceChain, role_data, service_name]}} config_settings: {map_merge: {get_attr: [ServiceChain, role_data, config_settings]}} step_config: {list_join: ["\n", {get_attr: [ServiceChain, role_data, step_config]}]}