diff --git a/README.md b/README.md index 15ed0fb28..9619d8929 100644 --- a/README.md +++ b/README.md @@ -79,7 +79,7 @@ scenario](#all-in-one). | bgp-dr | | | | | X | | | | redis | | X | X | | | | | | l2gw | | | | | X | | | -| octavia | | | | | X | | | +| octavia | | | | | X | X | | | om rpc | amqp1 | amqp1 | rabbit | rabbit | rabbit | rabbit | rabbit | | om notify | rabbit | rabbit | rabbit | rabbit | rabbit | rabbit | rabbit | diff --git a/fixtures/scenario005.pp b/fixtures/scenario005.pp index afcd3481a..a77fe8249 100644 --- a/fixtures/scenario005.pp +++ b/fixtures/scenario005.pp @@ -52,8 +52,14 @@ class { 'openstack_integration::neutron': } include openstack_integration::placement include openstack_integration::nova + +class { 'openstack_integration::octavia': + provider_driver => 'ovn' +} + include openstack_integration::provision class { 'openstack_integration::tempest': + octavia => true, neutron_driver => 'ovn', } diff --git a/manifests/octavia.pp b/manifests/octavia.pp index f18a5825d..6de24b02d 100644 --- a/manifests/octavia.pp +++ b/manifests/octavia.pp @@ -4,8 +4,13 @@ # (optional) AMQP topic used for OpenStack notifications # Defaults to $::os_service_default. # +# [*provider_driver*] +# (optional) Provider driver used in Octavia. +# Defaults to 'amphora'. +# class openstack_integration::octavia ( $notification_topics = $::os_service_default, + $provider_driver = 'amphora', ) { include openstack_integration::config @@ -24,6 +29,16 @@ class openstack_integration::octavia ( Exec['update-ca-certificates'] ~> Service['httpd'] } + # TODO(tkajinam): This directory should be created by the package. + file { '/var/run/octavia': + ensure => directory, + owner => 'octavia', + group => 'octavia', + mode => '0750', + require => Anchor['octavia::config::begin'], + before => Anchor['octavia::config::end'] + } + class { 'octavia::logging': debug => true, } @@ -102,10 +117,31 @@ class openstack_integration::octavia ( client_cert => '/etc/octavia/certs/client.cert-and-key.pem', } + if $provider_driver == 'ovn' { + # NOTE(tkajinam): Because noop drivers does not work with the ovn provider, + # amphora provider is also enabled. All tests are currently + # executed with amphora provider + noop drivers but we + # might want to revisit this later. + $enabled_provider_drivers = { + 'amphora' => 'The Octavia Amphora driver.', + 'octavia' => 'Deprecated alias of the Octavia Amphora driver.', + 'ovn' => 'OVN provider driver.' + } + $enabled_provider_agents = 'ovn' + class { 'octavia::provider::ovn': + ovn_nb_connection => 'tcp:127.0.0.1:6641', + ovn_sb_connection => 'tcp:127.0.0.1:6642', + } + } else{ + $enabled_provider_drivers = $::os_service_default + $enabled_provider_agents = $::os_service_default + } + class { 'octavia::api': - enabled => true, - service_name => 'httpd', - sync_db => true, + enabled => true, + service_name => 'httpd', + sync_db => true, + enabled_provider_drivers => $enabled_provider_drivers, } include apache class { 'octavia::wsgi::apache': @@ -119,6 +155,7 @@ class openstack_integration::octavia ( class { 'octavia::networking': } + class { 'octavia::controller': amp_flavor_id => '65', amphora_driver => 'amphora_noop_driver', @@ -127,6 +164,7 @@ class openstack_integration::octavia ( network_driver => 'network_noop_driver', heartbeat_key => 'abcdefghijkl', } + class { 'octavia::worker': } class { 'octavia::health_manager': @@ -134,6 +172,7 @@ class openstack_integration::octavia ( class { 'octavia::housekeeping': } class { 'octavia::driver_agent': + enabled_provider_agents => $enabled_provider_agents, } class { 'octavia::service_auth': auth_url => $::openstack_integration::config::keystone_admin_uri,