Merge "Enable DPDK on boot using PreNetworkConfig"
This commit is contained in:
commit
eaa8092211
extraconfig/pre_network
puppet
blockstorage-role.yamlcephstorage-role.yamlcompute-role.yamlcontroller-role.yamlobjectstorage-role.yamlrole.role.j2.yaml
releasenotes/notes
@ -11,11 +11,68 @@ parameters:
|
||||
type: json
|
||||
description: Role Specific parameters
|
||||
default: {}
|
||||
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
|
||||
|
||||
conditions:
|
||||
is_host_config_required: {not: {equals: [{get_param: [RoleParameters, KernelArgs]}, ""]}}
|
||||
# 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
|
||||
|
||||
resources:
|
||||
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}
|
||||
|
||||
HostParametersConfig:
|
||||
type: OS::Heat::SoftwareConfig
|
||||
condition: is_host_config_required
|
||||
@ -43,9 +100,45 @@ resources:
|
||||
_TUNED_PROFILE_NAME_: {get_param: [RoleParameters, TunedProfileName]}
|
||||
_TUNED_CORES_: {get_param: [RoleParameters, HostIsolatedCoreList]}
|
||||
|
||||
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
|
||||
|
||||
RebootConfig:
|
||||
type: OS::Heat::SoftwareConfig
|
||||
condition: is_host_config_required
|
||||
condition: is_reboot_config_required
|
||||
properties:
|
||||
group: script
|
||||
config: |
|
||||
@ -58,7 +151,7 @@ resources:
|
||||
RebootDeployment:
|
||||
type: OS::Heat::SoftwareDeployment
|
||||
depends_on: HostParametersDeployment
|
||||
condition: is_host_config_required
|
||||
condition: is_reboot_config_required
|
||||
properties:
|
||||
name: RebootDeployment
|
||||
server: {get_param: server}
|
||||
|
@ -407,6 +407,7 @@ resources:
|
||||
properties:
|
||||
server: {get_resource: BlockStorage}
|
||||
RoleParameters: {get_param: RoleParameters}
|
||||
ServiceNames: {get_param: ServiceNames}
|
||||
|
||||
NetworkDeployment:
|
||||
type: OS::TripleO::SoftwareDeployment
|
||||
|
@ -413,6 +413,7 @@ resources:
|
||||
properties:
|
||||
server: {get_resource: CephStorage}
|
||||
RoleParameters: {get_param: RoleParameters}
|
||||
ServiceNames: {get_param: ServiceNames}
|
||||
|
||||
NetworkDeployment:
|
||||
type: OS::TripleO::SoftwareDeployment
|
||||
|
@ -416,6 +416,7 @@ resources:
|
||||
properties:
|
||||
server: {get_resource: NovaCompute}
|
||||
RoleParameters: {get_param: RoleParameters}
|
||||
ServiceNames: {get_param: ServiceNames}
|
||||
|
||||
NetworkConfig:
|
||||
type: OS::TripleO::Compute::Net::SoftwareConfig
|
||||
|
@ -439,6 +439,7 @@ resources:
|
||||
properties:
|
||||
server: {get_resource: Controller}
|
||||
RoleParameters: {get_param: RoleParameters}
|
||||
ServiceNames: {get_param: ServiceNames}
|
||||
|
||||
NetworkConfig:
|
||||
type: OS::TripleO::Controller::Net::SoftwareConfig
|
||||
|
@ -408,6 +408,7 @@ resources:
|
||||
properties:
|
||||
server: {get_resource: SwiftStorage}
|
||||
RoleParameters: {get_param: RoleParameters}
|
||||
ServiceNames: {get_param: ServiceNames}
|
||||
|
||||
NetworkDeployment:
|
||||
type: OS::TripleO::SoftwareDeployment
|
||||
|
@ -433,6 +433,7 @@ resources:
|
||||
properties:
|
||||
server: {get_resource: {{role}}}
|
||||
RoleParameters: {get_param: RoleParameters}
|
||||
ServiceNames: {get_param: ServiceNames}
|
||||
|
||||
NetworkDeployment:
|
||||
type: OS::TripleO::SoftwareDeployment
|
||||
|
@ -0,0 +1,8 @@
|
||||
---
|
||||
features:
|
||||
- DPDK is enabled in OvS before the NetworkDeployment to ensure DPDK
|
||||
is ready to handle new port additions.
|
||||
upgrade:
|
||||
- A new parameter ServiceNames is added to the PreNeworkConfig resource.
|
||||
All templates associated with PreNeworkConfig should add this new
|
||||
parameter during the upgrade.
|
Loading…
x
Reference in New Issue
Block a user