Filter null/None service names
authorSteven Hardy <shardy@redhat.com>
Wed, 27 Jul 2016 10:51:30 +0000 (11:51 +0100)
committerSteven Hardy <shardy@redhat.com>
Wed, 27 Jul 2016 16:04:59 +0000 (17:04 +0100)
To enable use of the service_names lists in overcloud.yaml we need
to strip any null/None values or list processing becomes cumbersome.

These happen because we're currently disabling some services via
OS::Heat::None in the resource_registry, it may be possible to remove
when we've got a fully composable approach to generating the
*Services lists.

Change-Id: I8ef53b4279d93850c207c73aab0d75095a2497a2
Partially-Implements: blueprint custom-roles

puppet/services/services.yaml

index 64a0f98..c9a952a 100644 (file)
@@ -1,4 +1,4 @@
-heat_template_version: 2016-04-08
+heat_template_version: 2016-10-14
 
 description: >
   Utility stack to convert an array of services into a set of combined
@@ -30,6 +30,11 @@ outputs:
   role_data:
     description: Combined Role data for this set of services.
     value:
-      service_names: {get_attr: [ServiceChain, role_data, service_name]}
+      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]}]}