diff --git a/README.md b/README.md index 321b265d5..36718f4b8 100644 --- a/README.md +++ b/README.md @@ -77,6 +77,7 @@ scenario](#all-in-one). | vitrage | X | | | | | | | watcher | | | | X | | | | vpnaas | | | | X | | | +| taas | | | | X | | | | bgpvpn-api | | | | X | | | | bgp-dr | | | | X | | | | redis | X | X | X | | | | diff --git a/fixtures/scenario004.pp b/fixtures/scenario004.pp index 9bbf51983..40bc174ae 100644 --- a/fixtures/scenario004.pp +++ b/fixtures/scenario004.pp @@ -28,14 +28,16 @@ if $facts['os']['name'] == 'Ubuntu' { $l2gw_enabled = false # FIXME(ykarel) Disable bgp_dragent until Ubuntu python3 stein(with stein packages) jobs are ready $bgp_dragent_enabled = false - # TODO(tkajinam): Enable this along with the other plugins + # TODO(tkajinam): Enable these along with the other plugins $vpnaas_enabled = false + $taas_enabled = false } else { $ipv6 = true $bgpvpn_enabled = true $l2gw_enabled = true $bgp_dragent_enabled = true $vpnaas_enabled = true + $taas_enabled = true } include openstack_integration @@ -57,6 +59,7 @@ class { 'openstack_integration::glance': } class { 'openstack_integration::neutron': vpnaas_enabled => $vpnaas_enabled, + taas_enabled => $taas_enabled, bgpvpn_enabled => $bgpvpn_enabled, l2gw_enabled => $l2gw_enabled, bgp_dragent_enabled => $bgp_dragent_enabled, @@ -87,6 +90,7 @@ class { 'openstack_integration::tempest': horizon => true, watcher => true, vpnaas => $vpnaas_enabled, + taas => $taas_enabled, bgpvpn => $bgpvpn_enabled, l2gw => $l2gw_enabled, l2gw_switch => 'cell08-5930-01::FortyGigE1/0/1|100', diff --git a/manifests/neutron.pp b/manifests/neutron.pp index 38e5a60d5..175218d38 100644 --- a/manifests/neutron.pp +++ b/manifests/neutron.pp @@ -13,6 +13,10 @@ # (optional) Flag to enable VPNaaS. # Defaults to false. # +# [*taas_enabled*] +# (optional) Flag to enable TAPaaS. +# Defaults to false. +# # [*bgpvpn_enabled*] # (optional) Flag to enable BGPVPN API extensions. # Defaults to false. @@ -37,6 +41,7 @@ class openstack_integration::neutron ( $driver = 'openvswitch', $metering_enabled = false, $vpnaas_enabled = false, + $taas_enabled = false, $bgpvpn_enabled = false, $l2gw_enabled = false, $bgp_dragent_enabled = false, @@ -51,6 +56,10 @@ class openstack_integration::neutron ( fail('Metering agent is not supported when ovn mechanism driver is used.') } + if $driver != 'openvswitch' and $taas_enabled { + fail('TaaS is supported only when ovs mechanism driver is used.') + } + if $::openstack_integration::config::ssl { openstack_integration::ssl_key { 'neutron': notify => Service['neutron-server'], @@ -142,6 +151,10 @@ class openstack_integration::neutron ( true => 'vpnaas', default => undef, } + $taas_plugin = $taas_enabled ? { + true => 'taas', + default => undef, + } $bgpvpn_plugin = $bgpvpn_enabled ? { true => 'bgpvpn', default => undef, @@ -175,6 +188,7 @@ class openstack_integration::neutron ( 'router', 'qos', 'trunk', $metering_plugin, $vpaaas_plugin, + $taas_plugin, $bgpvpn_plugin, $l2gw_plugin, $bgp_dr_plugin @@ -286,6 +300,11 @@ class openstack_integration::neutron ( case $driver { 'openvswitch': { + $agent_extensions = $taas_enabled ? { + true => ['taas'], + default => $facts['os_service_default'], + } + class { 'neutron::agents::ml2::ovs': local_ip => $::openstack_integration::config::host, tunnel_types => ['vxlan'], @@ -293,6 +312,7 @@ class openstack_integration::neutron ( manage_vswitch => false, firewall_driver => 'iptables_hybrid', of_listen_address => $::openstack_integration::config::host, + extensions => $agent_extensions, } } 'ovn': { @@ -411,6 +431,21 @@ class openstack_integration::neutron ( vpn_device_driver => $vpn_device_driver, } } + if $taas_enabled { + class { 'neutron::agents::taas': } + class { 'neutron::services::taas': } + + if $facts['os']['family'] == 'RedHat' { + # NOTE(tkajinam): Remove this once bz 2259076 is fixed + # https://bugzilla.redhat.com/show_bug.cgi?id=2259076 + Exec { 'fix-taas-synlink': + command => 'mv /usr/share/neutron/server/taas_plugin.ini /usr/share/neutron/server/taas_plugin.conf', + unless => 'test -e /usr/share/neutron/server/taas_plugin.conf', + path => ['/bin', '/usr/bin'], + } + Anchor['neutron::config::begin'] -> Anchor['neutron::config::end'] + } + } } if $baremetal_enabled { diff --git a/manifests/tempest.pp b/manifests/tempest.pp index 839ef045e..a6fc3e34e 100644 --- a/manifests/tempest.pp +++ b/manifests/tempest.pp @@ -112,6 +112,10 @@ # (optional) Define if Neutron VPNaaS needs to be tested. # Default to false. # +# [*taas*] +# (optional) Define if Neutron TaaS needs to be tested. +# Default to false. +# # [*watcher*] # (optional) Define if Watcher needs to be tested. # Default to false. @@ -185,6 +189,7 @@ class openstack_integration::tempest ( $watcher = false, $vitrage = false, $vpnaas = false, + $taas = false, $zaqar = false, $reseller_admin_role = 'ResellerAdmin', $attach_encrypted_volume = false, @@ -264,6 +269,10 @@ class openstack_integration::tempest ( true => ['vpnaas'], default => [], } + $neutron_taas_extensions = $taas ? { + true => ['taas', 'taas-vlan-filter'], + default => [], + } $neutron_api_extensions_real = sort( $neutron_base_extensions + @@ -272,7 +281,8 @@ class openstack_integration::tempest ( $neutron_metering_extensions + $neutron_l2gw_extensions + $neutron_bgpvpn_extensions + - $neutron_vpnaas_extensions + $neutron_vpnaas_extensions + + $neutron_taas_extensions ) } diff --git a/run_tests.sh b/run_tests.sh index 0718c055c..b572bef7b 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -324,6 +324,9 @@ echo "TestEncryptedCinderVolumes" >> /tmp/openstack/tempest/test-include-list.tx # Mistral echo "test_create_and_delete_workflow" >> /tmp/openstack/tempest/test-include-list.txt +# TaaS +echo "test_create_tap_service_and_flow" >> /tmp/openstack/tempest/test-include-list.txt + # BGPVPN echo "test_create_bgpvpn" >> /tmp/openstack/tempest/test-include-list.txt