Merge "Set manila::keystone::auth::tenant"
[apex-tripleo-heat-templates.git] / overcloud.j2.yaml
index 88a91e3..e2ff4c1 100644 (file)
@@ -121,16 +121,12 @@ parameters:
                  resource_registry) which represent nested stacks
                  for each service that should get installed on the {{role.name}} role.
     type: comma_delimited_list
-  {% if role.ServicesDefault %}
-    default: {{role.ServicesDefault}}
-  {% endif %}
+    default: {{role.ServicesDefault|default([])}}
 
   {{role.name}}Count:
     description: Number of {{role.name}} nodes to deploy
     type: number
-  {% if role.CountDefault %}
-    default: {{role.CountDefault}}
-  {% endif %}
+    default: {{role.CountDefault|default(0)}}
 
   {{role.name}}HostnameFormat:
     type: string
@@ -140,6 +136,8 @@ parameters:
       and %stackname% is replaced with the stack name e.g overcloud
   {% if role.HostnameFormatDefault %}
     default: "{{role.HostnameFormatDefault}}"
+  {% else %}
+    default: "%stackname%-{{role.name.lower()}}-%index%"
   {% endif %}
 
   {{role.name}}RemovalPolicies:
@@ -263,8 +261,25 @@ resources:
           {% for r in roles %}
               - get_attr: [{{r.name}}ServiceChain, role_data, global_config_settings]
           {% endfor %}
+              # This next step combines two yaql passes:
+              # - The inner one does a deep merge on the service_config_settings for all roles
+              # - The outer one filters the map based on the services enabled for the role
+              #   then merges the result into one map.
+              - yaql:
+                  expression: let(root => $) -> $.data.map.items().where($[0] in $root.data.services).select($[1]).reduce($1.mergeWith($2), {})
+                  data:
+                    map:
+                      yaql:
+                        expression: $.data.where($ != null).reduce($1.mergeWith($2), {})
+                        data:
+                        {% for r in roles %}
+                          - get_attr: [{{r.name}}ServiceChain, role_data, service_config_settings]
+                        {% endfor %}
+                    services: {get_attr: [{{role.name}}ServiceChain, role_data, service_names]}
           ServiceNames: {get_attr: [{{role.name}}ServiceChain, role_data, service_names]}
           MonitoringSubscriptions: {get_attr: [{{role.name}}ServiceChain, role_data, monitoring_subscriptions]}
+          LoggingSources: {get_attr: [{{role.name}}ServiceChain, role_data, logging_sources]}
+          LoggingGroups: {get_attr: [{{role.name}}ServiceChain, role_data, logging_groups]}
 {% endfor %}
 
   allNodesConfig:
@@ -276,29 +291,17 @@ resources:
       cloud_name_storage_mgmt: {get_param: CloudNameStorageManagement}
       cloud_name_ctlplane: {get_param: CloudNameCtlplane}
       hosts:
+{% for role in roles %}
         - list_join:
             - '\n'
-            - {get_attr: [Compute, hosts_entry]}
-        - list_join:
-            - '\n'
-            - {get_attr: [Controller, hosts_entry]}
-        - list_join:
-            - '\n'
-            - {get_attr: [BlockStorage, hosts_entry]}
-        - list_join:
-            - '\n'
-            - {get_attr: [ObjectStorage, hosts_entry]}
-        - list_join:
-            - '\n'
-            - {get_attr: [CephStorage, hosts_entry]}
+            - {get_attr: [{{role.name}}, hosts_entry]}
+{% endfor %}
       enabled_services:
         list_join:
           - ','
-          - {get_attr: [ControllerServiceChain, role_data, service_names]}
-          - {get_attr: [ComputeServiceChain, role_data, service_names]}
-          - {get_attr: [BlockStorageServiceChain, role_data, service_names]}
-          - {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
-          - {get_attr: [CephStorageServiceChain, role_data, service_names]}
+{% for role in roles %}
+          - {get_attr: [{{role.name}}ServiceChain, role_data, service_names]}
+{% endfor %}
       controller_ips: {get_attr: [Controller, ip_address]}
       controller_names: {get_attr: [Controller, hostname]}
       service_ips:
@@ -310,21 +313,17 @@ resources:
           expression: dict($.data.l.where($ != null).selectMany($.items()).groupBy($[0], $[1], [$[0], $[1].flatten()]))
           data:
             l:
-              - {get_attr: [ControllerIpListMap, service_ips]}
-              - {get_attr: [ComputeIpListMap, service_ips]}
-              - {get_attr: [BlockStorageIpListMap, service_ips]}
-              - {get_attr: [ObjectStorageIpListMap, service_ips]}
-              - {get_attr: [CephStorageIpListMap, service_ips]}
+{% for role in roles %}
+              - {get_attr: [{{role.name}}IpListMap, service_ips]}
+{% endfor %}
       service_node_names:
         yaql:
           expression: dict($.data.l.where($ != null).selectMany($.items()).groupBy($[0], $[1], [$[0], $[1].flatten()]))
           data:
             l:
-              - {get_attr: [ControllerIpListMap, service_hostnames]}
-              - {get_attr: [ComputeIpListMap, service_hostnames]}
-              - {get_attr: [BlockStorageIpListMap, service_hostnames]}
-              - {get_attr: [ObjectStorageIpListMap, service_hostnames]}
-              - {get_attr: [CephStorageIpListMap, service_hostnames]}
+{% for role in roles %}
+              - {get_attr: [{{role.name}}IpListMap, service_hostnames]}
+{% endfor %}
       # FIXME(shardy): These require further work to move into service_ips
       memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MemcachedNetwork]}]}
       keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
@@ -444,11 +443,10 @@ resources:
   UpdateWorkflow:
     type: OS::TripleO::Tasks::UpdateWorkflow
     properties:
-      controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
-      compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
-      blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
-      objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
-      cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
+      servers:
+{% for role in roles %}
+        {{role.name}}: {get_attr: [{{role.name}}, attributes, nova_server_resource]}
+{% endfor %}
       input_values:
         deploy_identifier: {get_param: DeployIdentifier}
         update_identifier: {get_param: UpdateIdentifier}
@@ -459,34 +457,26 @@ resources:
     type: OS::TripleO::AllNodesExtraConfig
     depends_on:
       - UpdateWorkflow
-      - ComputeAllNodesValidationDeployment
-      - BlockStorageAllNodesValidationDeployment
-      - ObjectStorageAllNodesValidationDeployment
-      - CephStorageAllNodesValidationDeployment
-      - ControllerAllNodesValidationDeployment
+{% for role in roles %}
+      - {{role.name}}AllNodesValidationDeployment
+{% endfor %}
     properties:
-      controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
-      compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
-      blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
-      objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
-      cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
+{% for role in roles %}
+      servers: {get_attr: [{{role.name}}, attributes, nova_server_resource]}
+{% endfor %}
 
   # Post deployment steps for all roles
   AllNodesDeploySteps:
     type: OS::TripleO::PostDeploySteps
     properties:
       servers:
-        Controller: {get_attr: [Controller, attributes, nova_server_resource]}
-        Compute: {get_attr: [Compute, attributes, nova_server_resource]}
-        BlockStorage: {get_attr: [BlockStorage, attributes, nova_server_resource]}
-        ObjectStorage: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
-        CephStorage: {get_attr: [CephStorage, attributes, nova_server_resource]}
+{% for role in roles %}
+        {{role.name}}: {get_attr: [{{role.name}}, attributes, nova_server_resource]}
+{% endfor %}
       role_data:
-        Controller: {get_attr: [ControllerServiceChain, role_data]}
-        Compute: {get_attr: [ComputeServiceChain, role_data]}
-        BlockStorage: {get_attr: [BlockStorageServiceChain, role_data]}
-        ObjectStorage: {get_attr: [ObjectStorageServiceChain, role_data]}
-        CephStorage: {get_attr: [CephStorageServiceChain, role_data]}
+{% for role in roles %}
+        {{role.name}}: {get_attr: [{{role.name}}ServiceChain, role_data]}
+{% endfor %}
 
 outputs:
   ManagedEndpoints:
@@ -561,8 +551,6 @@ outputs:
   EnabledServices:
     description: The services enabled on each role
     value:
-      Controller: {get_attr: [ControllerServiceChain, role_data, service_names]}
-      Compute: {get_attr: [ComputeServiceChain, role_data, service_names]}
-      BlockStorage: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
-      ObjectStorage: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
-      CephStorage: {get_attr: [CephStorageServiceChain, role_data, service_names]}
+{% for role in roles %}
+      {{role.name}}: {get_attr: [{{role.name}}ServiceChain, role_data, service_names]}
+{% endfor %}