+++ /dev/null
-# Configure the neutron server to use the OVS plugin.
-# This configures the plugin for the API server, but does nothing
-# about configuring the agents that must also run and share a config
-# file with the OVS plugin if both are on the same machine.
-#
-# === Parameters
-#
-class neutron::plugins::ovs (
- $package_ensure = 'present',
- $sql_connection = false,
- $sql_max_retries = false,
- $sql_idle_timeout = false,
- $reconnect_interval = false,
- $tenant_network_type = 'vlan',
- # NB: don't need tunnel ID range when using VLANs,
- # *but* you do need the network vlan range regardless of type,
- # because the list of networks there is still important
- # even if the ranges aren't specified
- # if type is vlan or flat, a default of physnet1:1000:2000 is used
- # otherwise this will not be set by default.
- $network_vlan_ranges = undef,
- $tunnel_id_ranges = '1:1000',
- $vxlan_udp_port = 4789
-) {
-
- include neutron::params
-
- Package['neutron'] -> Package['neutron-plugin-ovs']
- Package['neutron-plugin-ovs'] -> Neutron_plugin_ovs<||>
- Neutron_plugin_ovs<||> ~> Service<| title == 'neutron-server' |>
- Package['neutron-plugin-ovs'] -> Service<| title == 'neutron-server' |>
-
- if ! defined(Package['neutron-plugin-ovs']) {
- package { 'neutron-plugin-ovs':
- ensure => $package_ensure,
- name => $::neutron::params::ovs_server_package,
- }
- }
-
- if $sql_connection {
- warning('sql_connection is deprecated for connection in the neutron::server class')
- }
-
- if $sql_max_retries {
- warning('sql_max_retries is deprecated for max_retries in the neutron::server class')
- }
-
- if $sql_idle_timeout {
- warning('sql_idle_timeout is deprecated for idle_timeout in the neutron::server class')
- }
-
- if $reconnect_interval {
- warning('reconnect_interval is deprecated for retry_interval in the neutron::server class')
- }
-
- neutron_plugin_ovs {
- 'OVS/tenant_network_type': value => $tenant_network_type;
- }
-
- if $tenant_network_type in ['gre', 'vxlan'] {
- validate_tunnel_id_ranges($tunnel_id_ranges)
- neutron_plugin_ovs {
- # this is set by the plugin and the agent - since the plugin node has the agent installed
- # we rely on it setting it.
- # TODO(ijw): do something with a virtualised node
- # 'OVS/enable_tunneling': value => 'True';
- 'OVS/tunnel_id_ranges': value => $tunnel_id_ranges;
- 'OVS/tunnel_type': value => $tenant_network_type;
- }
- }
-
- validate_vxlan_udp_port($vxlan_udp_port)
- neutron_plugin_ovs { 'OVS/vxlan_udp_port': value => $vxlan_udp_port; }
-
- if ! $network_vlan_ranges {
- # If the user hasn't specified vlan_ranges, fail for the modes where
- # it is required, otherwise keep it absent
- if $tenant_network_type in ['vlan', 'flat'] {
- fail('When using the vlan network type, network_vlan_ranges is required')
- } else {
- neutron_plugin_ovs { 'OVS/network_vlan_ranges': ensure => absent }
- }
- } else {
- # This might be set by the user for the gre or vxlan case where
- # provider networks are in use
- if !is_array($network_vlan_ranges) {
- $arr_network_vlan_ranges = strip(split($network_vlan_ranges, ','))
- } else {
- $arr_network_vlan_ranges = $network_vlan_ranges
- }
-
- validate_network_vlan_ranges($arr_network_vlan_ranges)
- neutron_plugin_ovs {
- 'OVS/network_vlan_ranges': value => join($arr_network_vlan_ranges, ',');
- }
- }
-
- # In RH, this link is used to start Neutron process but in Debian, it's used only
- # to manage database synchronization.
- file {'/etc/neutron/plugin.ini':
- ensure => link,
- target => '/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini',
- require => Package['neutron-plugin-ovs']
- }
-}