Add ServerIdMap output
authorSteven Hardy <shardy@redhat.com>
Wed, 28 Jun 2017 20:41:29 +0000 (21:41 +0100)
committerSteven Hardy <shardy@redhat.com>
Thu, 29 Jun 2017 09:32:07 +0000 (10:32 +0100)
This exposes the nova server IDs for each role, and the bootstrap node
so that we can add this data to the tripleo dynamic ansible inventory

Change-Id: I2fc48eec77210805c0139fa4abcbf4dd721e7c37

overcloud.j2.yaml

index 1848e09..56a10a5 100644 (file)
@@ -462,6 +462,21 @@ resources:
             servers: {get_attr: [{{role.name}}, attributes, nova_server_resource]}
 {% endfor %}
 
+  # This is a different format to *Servers, as it creates a map of lists
+  # whereas *Servers creates a map of maps with keys of the nested resource names
+  ServerIdMap:
+    type: OS::Heat::Value
+    properties:
+      value:
+        server_ids:
+{% for role in roles %}
+          {{role.name}}: {get_attr: [{{role.name}}, nova_server_resource]}
+{% endfor %}
+        bootstrap_server_id:
+          yaql:
+            expression: coalesce($.data, []).first(null)
+            data: {get_attr: [{{primary_role_name}}, nova_server_resource]}
+
   # This resource just creates a dict out of the DeploymentServerBlacklist,
   # which is a list. The dict is used in the role templates to set a condition
   # on whether to create the deployment resources. We can't use the list
@@ -825,3 +840,6 @@ outputs:
       map_merge:
         - {get_attr: [VipMap, net_ip_map]}
         - redis: {get_attr: [RedisVirtualIP, ip_address]}
+  ServerIdData:
+    description: Mapping of each role to a list of nova server IDs and the bootstrap ID
+    value: {get_attr: [ServerIdMap, value]}