Add support for resource provider bandwidth in Neutron config

Neutron introduced bandwidth aware scheduling some time ago. In [1]
new config options to set up available bandwidth in ovs agent was
introduced.
In [2] similar config options for SR-IOV agent was also added.

This patch adds support for both of them in TripleO.

[1] https://review.opendev.org/#/c/577223/
[2] https://review.opendev.org/#/c/581364/

Depends-On: https://review.opendev.org/#/c/727123/

Change-Id: Ic7b6e45b47bdb91758818555d870056730fe3983
(cherry picked from commit 6ca476842f)
This commit is contained in:
Slawek Kaplonski 2020-03-23 15:32:51 +01:00
parent 751ef8c0b0
commit 55ecd97d3e
3 changed files with 39 additions and 0 deletions

View File

@ -133,6 +133,16 @@ parameters:
description: Enable IGMP Snooping.
type: boolean
default: false
NeutronOvsResourceProviderBandwidths:
description: >
Comma-separated list of <bridge>:<egress_bw>:<ingress_bw> tuples, showing
the available bandwidth for the given bridge in the given direction. The
direction is meant from VM perspective. Bandwidth is measured in kilobits
per second (kbps). The bridge must appear in bridge_mappings as the value.
type: comma_delimited_list
default: ""
tags:
- role_specific
conditions:
no_firewall_driver: {equals : [{get_param: NeutronOVSFirewallDriver}, '']}
@ -157,11 +167,13 @@ resources:
- neutron::agents::ml2::ovs::bridge_mappings: NeutronBridgeMappings
vswitch::ovs::enable_hw_offload: OvsHwOffload
vswitch::ovs::disable_emc: OvsDisableEMC
neutron::agents::ml2::ovs::resource_provider_bandwidths: NeutronOvsResourceProviderBandwidths
- values: {get_param: [RoleParameters]}
- values:
NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
OvsHwOffload: {get_param: OvsHwOffload}
OvsDisableEMC: {get_param: OvsDisableEMC}
NeutronOvsResourceProviderBandwidths: {get_param: NeutronOvsResourceProviderBandwidths}
NeutronBase:
type: ./neutron-base.yaml

View File

@ -91,6 +91,18 @@ parameters:
value in ML2 plugin. And overwrite values from global_physnet_mtu for
selected network.
type: comma_delimited_list
NeutronOvsVnicTypeBlacklist:
description: |
Comman-separated list of VNIC types for which support in Neutron is
administratively prohibited by the OVS mechanism driver.
type: comma_delimited_list
default: ""
NeutronSriovVnicTypeBlacklist:
description: >
Comman-separated list of VNIC types for which support in Neutron is
administratively prohibited by the SR-IOV mechanism driver.
type: comma_delimited_list
default: ""
conditions:
physical_network_mtus_set: {not: {equals: [{get_param: NeutronML2PhysicalNetworkMtus}, []]}}
@ -125,6 +137,8 @@ outputs:
neutron::plugins::ml2::tenant_network_types: {get_param: NeutronNetworkType}
neutron::plugins::ml2::firewall_driver: {get_param: NeutronFirewallDriver}
neutron::plugins::ml2::overlay_ip_version: {get_param: NeutronOverlayIPVersion}
neutron::plugins::ml2::ovs_driver::vnic_type_blacklist: {get_param: NeutronOvsVnicTypeBlacklist}
neutron::plugins::ml2::sriov_driver::vnic_type_blacklist: {get_param: NeutronSriovVnicTypeBlacklist}
- if:
- physical_network_mtus_set
- neutron::plugins::ml2::physical_network_mtus: {get_param: NeutronML2PhysicalNetworkMtus}

View File

@ -85,6 +85,17 @@ parameters:
type: boolean
tags:
- role_specific
NeutronSriovResourceProviderBandwidths:
description: >
Comma-separated list of <network_device>:<egress_bw>:<ingress_bw> tuples,
showing the available bandwidth for the given device in the given
direction. The direction is meant from VM perspective. Bandwidth is
measured in kilobits per second (kbps). The device must appear in
physical_device_mappings as the value.
type: comma_delimited_list
default: ""
tags:
- role_specific
conditions:
@ -119,11 +130,13 @@ resources:
- neutron::agents::ml2::sriov::physical_device_mappings: NeutronPhysicalDevMappings
neutron::agents::ml2::sriov::exclude_devices: NeutronExcludeDevices
neutron::agents::ml2::sriov::extensions: NeutronSriovAgentExtensions
neutron::agents::ml2::sriov_nic::resource_provider_bandwidths: NeutronSriovResourceProviderBandwidths
- values: {get_param: [RoleParameters]}
- values:
NeutronPhysicalDevMappings: {get_param: NeutronPhysicalDevMappings}
NeutronExcludeDevices: {get_param: NeutronExcludeDevices}
NeutronSriovAgentExtensions: {get_param: NeutronSriovAgentExtensions}
NeutronSriovResourceProviderBandwidths: {get_param: NeutronSriovResourceProviderBandwidths}
ContainersCommon:
type: ../containers-common.yaml