Use NovaVcpuPinSet when deriving HCI parameters

When deriving deployment parameters for HCI (hyperconverged Nova compute and
Ceph OSD nodes), use NovaVcpuPinSet to determine the number of CPU cores
available for Nova and Ceph. When NovaVcpuPinSet isn't set, use all of the
cores identified in the baremetal introspection data.

Closes-Bug: #1711462
Change-Id: I6e0a0004d3df1f7acbb15b014cc2fe5fb139c2aa
This commit is contained in:
Alan Bishop 2017-08-17 17:20:59 -04:00
parent cb3a932a48
commit 813e12ab9f
2 changed files with 37 additions and 2 deletions

View File

@ -64,7 +64,10 @@ workflows:
container: <% $.plan %>
key: 'derived_parameters'
on-success:
# Add the derived parameters to the deployment plan only when $.result
# (the derived parameters) is non-empty. Otherwise, we're done.
- update_derive_parameters_in_plan: <% $.result %>
- send_message: <% not $.result %>
on-error: set_status_failed_reset_derive_parameters_in_plan
update_derive_parameters_in_plan:

View File

@ -501,6 +501,8 @@ workflows:
publish:
extra_config: <% $.environment_parameters.get('ExtraConfig', {}) %>
role_extra_config: <% $.environment_parameters.get(concat($.role_name, 'ExtraConfig'), {}) %>
role_env_params: <% $.environment_parameters.get(concat($.role_name, 'Parameters'), {}) %>
role_derive_params: <% $.derived_parameters.get(concat($.role_name, 'Parameters'), {}) %>
on-success: get_num_osds
get_num_osds:
@ -514,12 +516,37 @@ workflows:
publish:
memory_mb: <% $.introspection_data.get('memory_mb', 0) %>
on-success:
- get_num_cores: <% $.memory_mb %>
- get_nova_vcpu_pin_set: <% $.memory_mb %>
- set_failed_get_memory_mb: <% not $.memory_mb %>
# Determine the number of CPU cores available to Nova and Ceph. If
# NovaVcpuPinSet is defined then use the number of vCPUs in the set,
# otherwise use all of the cores identified in the introspection data.
get_nova_vcpu_pin_set:
publish:
# NovaVcpuPinSet can be defined in multiple locations, and it's
# important to select the value in order of precedence:
#
# 1) User specified value for this role
# 2) User specified default value for all roles
# 3) Value derived by another derived parameters workflow
nova_vcpu_pin_set: <% $.role_env_params.get('NovaVcpuPinSet', $.environment_parameters.get('NovaVcpuPinSet', $.role_derive_params.get('NovaVcpuPinSet', ''))) %>
on-success:
- get_nova_vcpu_count: <% $.nova_vcpu_pin_set %>
- get_num_cores: <% not $.nova_vcpu_pin_set %>
get_nova_vcpu_count:
action: tripleo.derive_params.convert_range_to_number_list
input:
range_list: <% $.nova_vcpu_pin_set %>
publish:
num_cores: <% task().result.split(',').count() %>
on-success: calculate_nova_parameters
on-error: set_failed_get_nova_vcpu_count
get_num_cores:
publish:
# TODO(abishop): If NovaVcpuPinSet is defined then use it to determine num_cores
num_cores: <% $.introspection_data.get('cpus', 0) %>
on-success:
- calculate_nova_parameters: <% $.num_cores %>
@ -634,6 +661,11 @@ workflows:
message: "Unable to determine the amount of physical memory (no 'memory_mb' found in introspection_data)."
on-success: fail
set_failed_get_nova_vcpu_count:
publish:
message: <% task(get_nova_vcpu_count).result %>
on-success: fail
set_failed_get_num_cores:
publish:
message: "Unable to determine the number of CPU cores (no 'cpus' found in introspection_data)."