2017-03-17 21:45:54 +05:30
|
|
|
heat_template_version: pike
|
|
|
|
|
|
|
|
description: >
|
|
|
|
All configurations which require reboot should be initiated via PreNetworkConfig. After
|
|
|
|
this configuration is completed, the corresponding node will be rebooted.
|
|
|
|
|
|
|
|
parameters:
|
|
|
|
server:
|
|
|
|
type: string
|
|
|
|
RoleParameters:
|
|
|
|
type: json
|
|
|
|
description: Role Specific parameters
|
|
|
|
default: {}
|
2017-05-24 11:28:37 +05:30
|
|
|
ServiceNames:
|
|
|
|
type: comma_delimited_list
|
|
|
|
default: []
|
|
|
|
HostCpusList:
|
|
|
|
default: "0"
|
|
|
|
description: List of cores to be used for host process
|
|
|
|
type: string
|
|
|
|
constraints:
|
|
|
|
- allowed_pattern: "[0-9,-]+"
|
|
|
|
NeutronDpdkCoreList:
|
|
|
|
default: ""
|
|
|
|
description: List of cores to be used for DPDK Poll Mode Driver
|
|
|
|
type: string
|
|
|
|
constraints:
|
|
|
|
- allowed_pattern: "[0-9,-]*"
|
|
|
|
NeutronDpdkMemoryChannels:
|
|
|
|
default: ""
|
|
|
|
description: Number of memory channels to be used for DPDK
|
|
|
|
type: string
|
|
|
|
constraints:
|
|
|
|
- allowed_pattern: "[0-9]*"
|
|
|
|
NeutronDpdkSocketMemory:
|
|
|
|
default: ""
|
|
|
|
description: Memory allocated for each socket
|
|
|
|
type: string
|
|
|
|
NeutronDpdkDriverType:
|
|
|
|
default: "vfio-pci"
|
|
|
|
description: DPDK Driver type
|
|
|
|
type: string
|
2017-03-17 21:45:54 +05:30
|
|
|
|
|
|
|
conditions:
|
|
|
|
is_host_config_required: {not: {equals: [{get_param: [RoleParameters, KernelArgs]}, ""]}}
|
2017-05-24 11:28:37 +05:30
|
|
|
# YAQL is enabled in conditions with https://review.openstack.org/#/c/467506/
|
|
|
|
is_dpdk_config_required:
|
|
|
|
yaql:
|
|
|
|
expression: $.data.service_names.contains('neutron_ovs_dpdk_agent')
|
|
|
|
data:
|
|
|
|
service_names: {get_param: ServiceNames}
|
|
|
|
is_reboot_config_required:
|
|
|
|
or:
|
|
|
|
- is_host_config_required
|
|
|
|
- is_dpdk_config_required
|
2017-03-17 21:45:54 +05:30
|
|
|
|
|
|
|
resources:
|
2017-05-24 11:28:37 +05:30
|
|
|
RoleParametersValue:
|
|
|
|
type: OS::Heat::Value
|
|
|
|
properties:
|
|
|
|
type: json
|
|
|
|
value:
|
|
|
|
map_replace:
|
|
|
|
- map_replace:
|
|
|
|
- HostCpusList: HostCpusList
|
|
|
|
NeutronDpdkCoreList: NeutronDpdkCoreList
|
|
|
|
NeutronDpdkMemoryChannels: NeutronDpdkMemoryChannels
|
|
|
|
NeutronDpdkSocketMemory: NeutronDpdkSocketMemory
|
|
|
|
- values: {get_param: [RoleParameters]}
|
|
|
|
- values:
|
|
|
|
HostCpusList: {get_param: HostCpusList}
|
|
|
|
NeutronDpdkCoreList: {get_param: NeutronDpdkCoreList}
|
|
|
|
NeutronDpdkMemoryChannels: {get_param: NeutronDpdkMemoryChannels}
|
|
|
|
NeutronDpdkSocketMemory: {get_param: NeutronDpdkSocketMemory}
|
|
|
|
|
2017-03-17 21:45:54 +05:30
|
|
|
HostParametersConfig:
|
|
|
|
type: OS::Heat::SoftwareConfig
|
|
|
|
condition: is_host_config_required
|
|
|
|
properties:
|
|
|
|
group: ansible
|
|
|
|
inputs:
|
|
|
|
- name: _KERNEL_ARGS_
|
|
|
|
- name: _TUNED_PROFILE_NAME_
|
|
|
|
- name: _TUNED_CORES_
|
|
|
|
outputs:
|
|
|
|
- name: result
|
|
|
|
config:
|
|
|
|
get_file: ansible_host_config.yaml
|
|
|
|
|
|
|
|
HostParametersDeployment:
|
|
|
|
type: OS::Heat::SoftwareDeployment
|
|
|
|
condition: is_host_config_required
|
|
|
|
properties:
|
|
|
|
name: HostParametersDeployment
|
|
|
|
server: {get_param: server}
|
|
|
|
config: {get_resource: HostParametersConfig}
|
2017-06-22 13:35:19 +00:00
|
|
|
actions: ['CREATE'] # Only do this on CREATE
|
2017-03-17 21:45:54 +05:30
|
|
|
input_values:
|
|
|
|
_KERNEL_ARGS_: {get_param: [RoleParameters, KernelArgs]}
|
|
|
|
_TUNED_PROFILE_NAME_: {get_param: [RoleParameters, TunedProfileName]}
|
|
|
|
_TUNED_CORES_: {get_param: [RoleParameters, HostIsolatedCoreList]}
|
|
|
|
|
2017-05-24 11:28:37 +05:30
|
|
|
EnableDpdkConfig:
|
|
|
|
type: OS::Heat::SoftwareConfig
|
|
|
|
condition: is_dpdk_config_required
|
|
|
|
properties:
|
|
|
|
group: script
|
|
|
|
config:
|
|
|
|
str_replace:
|
|
|
|
template: |
|
|
|
|
#!/bin/bash
|
|
|
|
set -x
|
|
|
|
# DO NOT use --detailed-exitcodes
|
|
|
|
puppet apply --logdest console \
|
|
|
|
--modulepath /etc/puppet/modules:/opt/stack/puppet-modules:/usr/share/openstack-puppet/modules \
|
|
|
|
-e '
|
|
|
|
class {"vswitch::dpdk":
|
|
|
|
host_core_list => "$HOST_CORES",
|
|
|
|
pmd_core_list => "$PMD_CORES",
|
|
|
|
memory_channels => "$MEMORY_CHANNELS",
|
|
|
|
socket_mem => "$SOCKET_MEMORY",
|
|
|
|
}
|
|
|
|
'
|
|
|
|
params:
|
|
|
|
$HOST_CORES: {get_attr: [RoleParametersValue, value, HostCpusList]}
|
|
|
|
$PMD_CORES: {get_attr: [RoleParametersValue, value, NeutronDpdkCoreList]}
|
|
|
|
$MEMORY_CHANNELS: {get_attr: [RoleParametersValue, value, NeutronDpdkMemoryChannels]}
|
|
|
|
$SOCKET_MEMORY: {get_attr: [RoleParametersValue, value, NeutronDpdkSocketMemory]}
|
|
|
|
|
|
|
|
EnableDpdkDeployment:
|
|
|
|
type: OS::Heat::SoftwareDeployment
|
|
|
|
condition: is_dpdk_config_required
|
|
|
|
properties:
|
|
|
|
name: EnableDpdkDeployment
|
|
|
|
server: {get_param: server}
|
|
|
|
config: {get_resource: EnableDpdkConfig}
|
|
|
|
actions: ['CREATE'] # Only do this on CREATE
|
|
|
|
|
2017-03-17 21:45:54 +05:30
|
|
|
RebootConfig:
|
|
|
|
type: OS::Heat::SoftwareConfig
|
2017-05-24 11:28:37 +05:30
|
|
|
condition: is_reboot_config_required
|
2017-03-17 21:45:54 +05:30
|
|
|
properties:
|
|
|
|
group: script
|
|
|
|
config: |
|
|
|
|
#!/bin/bash
|
|
|
|
# Stop os-collect-config to avoid any race collecting another
|
|
|
|
# deployment before reboot happens
|
|
|
|
systemctl stop os-collect-config.service
|
|
|
|
/sbin/reboot
|
|
|
|
|
|
|
|
RebootDeployment:
|
|
|
|
type: OS::Heat::SoftwareDeployment
|
|
|
|
depends_on: HostParametersDeployment
|
2017-05-24 11:28:37 +05:30
|
|
|
condition: is_reboot_config_required
|
2017-03-17 21:45:54 +05:30
|
|
|
properties:
|
|
|
|
name: RebootDeployment
|
|
|
|
server: {get_param: server}
|
|
|
|
config: {get_resource: RebootConfig}
|
2017-06-22 13:35:19 +00:00
|
|
|
actions: ['CREATE'] # Only do this on CREATE
|
2017-03-17 21:45:54 +05:30
|
|
|
signal_transport: NO_SIGNAL
|
|
|
|
|
|
|
|
outputs:
|
|
|
|
result:
|
|
|
|
condition: is_host_config_required
|
|
|
|
value:
|
|
|
|
get_attr: [HostParametersDeployment, result]
|
|
|
|
stdout:
|
|
|
|
condition: is_host_config_required
|
|
|
|
value:
|
|
|
|
get_attr: [HostParametersDeployment, deploy_stdout]
|
|
|
|
stderr:
|
|
|
|
condition: is_host_config_required
|
|
|
|
value:
|
|
|
|
get_attr: [HostParametersDeployment, deploy_stderr]
|
|
|
|
status_code:
|
|
|
|
condition: is_host_config_required
|
|
|
|
value:
|
|
|
|
get_attr: [HostParametersDeployment, deploy_status_code]
|