Fix predictable placement indexing
authorBen Nemec <bnemec@redhat.com>
Mon, 26 Sep 2016 21:40:20 +0000 (16:40 -0500)
committerBen Nemec <bnemec@redhat.com>
Mon, 26 Sep 2016 21:40:20 +0000 (16:40 -0500)
As noted in the bug, predictable placement is broken right now
because the %index% in the scheduler hint isn't being interpolated.
This is because the parameter was moved from overcloud.yaml to the
service-specific files, which doesn't provide the index value.

Because the Compute role's parameter is named NovaCompute... we also
have to include some backwards compatibility logic to handle the
mismatch.

Change-Id: Ibee2949fe4c6c707203d7250e2ce169c769b1dcd
Closes-Bug: 1627858

overcloud.j2.yaml

index e2ff4c1..bd699f5 100644 (file)
@@ -147,6 +147,15 @@ parameters:
       List of resources to be removed from {{role.name}} ResourceGroup when
       doing an update which requires removal of specific resources.
       Example format ComputeRemovalPolicies: [{'resource_list': ['0']}]
+
+{% if role.name != 'Compute' %}
+  {{role.name}}SchedulerHints:
+{% else %}
+  NovaComputeSchedulerHints:
+{% endif %}
+    type: json
+    description: Optional scheduler hints to pass to nova
+    default: {}
 {% endfor %}
 
   # Identifiers to trigger tasks on nodes
@@ -255,6 +264,11 @@ resources:
               params:
                 '%stackname%': {get_param: 'OS::stack_name'}
           NodeIndex: '%index%'
+  {% if role.name != 'Compute' %}
+          {{role.name}}SchedulerHints: {get_param: {{role.name}}SchedulerHints}
+  {% else %}
+          NovaComputeSchedulerHints: {get_param: NovaComputeSchedulerHints}
+  {% endif %}
           ServiceConfigSettings:
             map_merge:
               -  get_attr: [{{role.name}}ServiceChain, role_data, config_settings]