diff --git a/manifests/agents/ml2/ovs.pp b/manifests/agents/ml2/ovs.pp index a06205937..27ac22e85 100644 --- a/manifests/agents/ml2/ovs.pp +++ b/manifests/agents/ml2/ovs.pp @@ -184,6 +184,12 @@ # (optional) List of :: # Defaults to empty list # +# [*explicitly_egress_direct*] +# (optional) When set to True, the accepted egress unicast traffic will not +# use action NORMAL. The accepted egress packets will be taken care of in the +# final egress tables direct output flows for unicast traffic. (boolean value) +# Defaults to $::os_service_default +# # DEPRECATED # # [*ovsdb_interface*] @@ -226,6 +232,7 @@ class neutron::agents::ml2::ovs ( $tunnel_csum = $::os_service_default, $igmp_snooping_enable = $::os_service_default, $resource_provider_bandwidths = [], + $explicitly_egress_direct = $::os_service_default, # DEPRECATED $ovsdb_interface = undef, ) { @@ -335,6 +342,7 @@ class neutron::agents::ml2::ovs ( 'agent/extensions': value => join(any2array($extensions), ','); 'agent/minimize_polling': value => $minimize_polling; 'agent/tunnel_csum': value => $tunnel_csum; + 'agent/explicitly_egress_direct': value => $explicitly_egress_direct; 'ovs/ovsdb_timeout': value => $ovsdb_timeout; 'ovs/of_connect_timeout': value => $of_connect_timeout; 'ovs/of_request_timeout': value => $of_request_timeout; diff --git a/releasenotes/notes/ovs_agent_explicitly_egress_direct-a5989bd33844c0f4.yaml b/releasenotes/notes/ovs_agent_explicitly_egress_direct-a5989bd33844c0f4.yaml new file mode 100644 index 000000000..c3e22818a --- /dev/null +++ b/releasenotes/notes/ovs_agent_explicitly_egress_direct-a5989bd33844c0f4.yaml @@ -0,0 +1,9 @@ +--- +features: + - | + Add new configuration parameter explicitly_egress_direct for ML2 OVS agent + When set to True, the accepted egress unicast traffic will not use action + NORMAL. The accepted egress packets will be taken care of in the final + egress tables direct output flows for unicast traffic so that operators can + set customized integration bridge name in l3 agent configuration. + This can be enabled on some nodes to prevent flooding on integration bridge. diff --git a/spec/classes/neutron_agents_ml2_ovs_spec.rb b/spec/classes/neutron_agents_ml2_ovs_spec.rb index 1368f51b0..0da1f73ed 100644 --- a/spec/classes/neutron_agents_ml2_ovs_spec.rb +++ b/spec/classes/neutron_agents_ml2_ovs_spec.rb @@ -66,6 +66,7 @@ describe 'neutron::agents::ml2::ovs' do should contain_neutron_agent_ovs('agent/tunnel_types').with_ensure('absent') should contain_neutron_agent_ovs('ovs/igmp_snooping_enable').with_value('') should_not contain_neutron_agent_ovs('ovs/resource_provider_bandwidths') + should contain_neutron_agent_ovs('agent/explicitly_egress_direct').with_value(['']) end it 'installs neutron ovs agent package' do @@ -379,6 +380,16 @@ describe 'neutron::agents::ml2::ovs' do end end + context 'with direct output enabled for egress flows' do + before :each do + params.merge!(:explicitly_egress_direct => true) + end + + it 'configure neutron/plugins/ml2/ml2_conf.ini' do + should contain_neutron_agent_ovs('agent/explicitly_egress_direct').with_value(true) + end + end + end on_supported_os({