Adds Database Configuration Support for Havana
Previously, database configuration information was stored in the plugin .ini file. As of Havana, a [database] section has been created in neutron.conf to manage the database configuation for all Neutron plugins: https://github.com/openstack/neutron/blob/stable/havana/etc/neutron.conf#L315 Additionaly, several database flags have changed from Grizzly to Havana. For backwards compatibility, the previously supported database flags are contained in neutron::server with a default of false. Change-Id: I300fc12092bca1abdd105e0c0c272f7fd49258ac
This commit is contained in:
@@ -55,11 +55,11 @@ class { '::neutron':
|
|||||||
class { 'neutron::server':
|
class { 'neutron::server':
|
||||||
auth_host => '127.0.0.1', # the keystone host address
|
auth_host => '127.0.0.1', # the keystone host address
|
||||||
auth_password => 'keystone_neutron_secret',
|
auth_password => 'keystone_neutron_secret',
|
||||||
|
sql_connection => 'mysql://neutron:neutron_sql_secret@127.0.0.1/neutron?charset=utf8',
|
||||||
}
|
}
|
||||||
|
|
||||||
# enable the Open VSwitch plugin server
|
# enable the Open VSwitch plugin server
|
||||||
class { 'neutron::plugins::ovs':
|
class { 'neutron::plugins::ovs':
|
||||||
sql_connection => 'mysql://neutron:neutron_sql_secret@127.0.0.1/neutron?charset=utf8',
|
|
||||||
tenant_network_type => 'gre',
|
tenant_network_type => 'gre',
|
||||||
network_vlan_ranges => 'physnet:1000:2000',
|
network_vlan_ranges => 'physnet:1000:2000',
|
||||||
}
|
}
|
||||||
|
@@ -13,6 +13,7 @@ class { 'neutron':
|
|||||||
# The API server talks to keystone for authorisation
|
# The API server talks to keystone for authorisation
|
||||||
class { 'neutron::server':
|
class { 'neutron::server':
|
||||||
keystone_password => 'password',
|
keystone_password => 'password',
|
||||||
|
connection => 'mysql://neutron:password@192.168.1.1/neutron',
|
||||||
}
|
}
|
||||||
|
|
||||||
# Various agents
|
# Various agents
|
||||||
@@ -29,7 +30,6 @@ class { 'neutron::agents::ovs':
|
|||||||
|
|
||||||
# Plugin
|
# Plugin
|
||||||
class { 'neutron::plugins::ovs':
|
class { 'neutron::plugins::ovs':
|
||||||
sql_connection => 'mysql://neutron:password@localhost/neutron',
|
|
||||||
tenant_network_type => 'gre',
|
tenant_network_type => 'gre',
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -53,6 +53,5 @@ class { 'neutron::agents::ovs':
|
|||||||
|
|
||||||
# Plugin
|
# Plugin
|
||||||
class { 'neutron::plugins::ovs':
|
class { 'neutron::plugins::ovs':
|
||||||
sql_connection => 'mysql://neutron:password@192.168.1.1/neutron',
|
|
||||||
tenant_network_type => 'gre',
|
tenant_network_type => 'gre',
|
||||||
}
|
}
|
||||||
|
@@ -5,8 +5,9 @@
|
|||||||
# === Parameters
|
# === Parameters
|
||||||
#
|
#
|
||||||
# [*sql_connection*]
|
# [*sql_connection*]
|
||||||
# (required) SQL connection string with the format:
|
# sql_connection is no longer configured in the plugin.ini.
|
||||||
# [driver]://[user]:[password]@[host]/[database]
|
# Use $connection in the nuetron::server class to configure the SQL
|
||||||
|
# connection string.
|
||||||
#
|
#
|
||||||
# [*network_vlan_ranges*]
|
# [*network_vlan_ranges*]
|
||||||
# (required) Comma-separated list of <physical_network>[:<vlan_min>:<vlan_max>]
|
# (required) Comma-separated list of <physical_network>[:<vlan_min>:<vlan_max>]
|
||||||
@@ -21,7 +22,7 @@
|
|||||||
# (optional) Ensure state for package. Defaults to 'present'.
|
# (optional) Ensure state for package. Defaults to 'present'.
|
||||||
#
|
#
|
||||||
class neutron::plugins::linuxbridge (
|
class neutron::plugins::linuxbridge (
|
||||||
$sql_connection = 'sqlite:////var/lib/neutron/linuxbridge.sqlite',
|
$sql_connection = false,
|
||||||
$network_vlan_ranges = 'physnet1:1000:2000',
|
$network_vlan_ranges = 'physnet1:1000:2000',
|
||||||
$tenant_network_type = 'vlan',
|
$tenant_network_type = 'vlan',
|
||||||
$package_ensure = 'present'
|
$package_ensure = 'present'
|
||||||
@@ -52,8 +53,11 @@ class neutron::plugins::linuxbridge (
|
|||||||
name => $::neutron::params::linuxbridge_server_package,
|
name => $::neutron::params::linuxbridge_server_package,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if $sql_connection {
|
||||||
|
warning('sql_connection is deprecated for connection in the neutron::server class')
|
||||||
|
}
|
||||||
|
|
||||||
neutron_plugin_linuxbridge {
|
neutron_plugin_linuxbridge {
|
||||||
'DATABASE/sql_connection': value => $sql_connection;
|
|
||||||
'VLANS/tenant_network_type': value => $tenant_network_type;
|
'VLANS/tenant_network_type': value => $tenant_network_type;
|
||||||
'VLANS/network_vlan_ranges': value => $network_vlan_ranges;
|
'VLANS/network_vlan_ranges': value => $network_vlan_ranges;
|
||||||
}
|
}
|
||||||
|
@@ -5,16 +5,12 @@
|
|||||||
#
|
#
|
||||||
# === Parameters
|
# === Parameters
|
||||||
#
|
#
|
||||||
# [*sql_idle_timeout*]
|
|
||||||
# (optional) Timeout for SQL to reap connetions.
|
|
||||||
# Defaults to '3600'.
|
|
||||||
#
|
|
||||||
class neutron::plugins::ovs (
|
class neutron::plugins::ovs (
|
||||||
$package_ensure = 'present',
|
$package_ensure = 'present',
|
||||||
$sql_connection = 'sqlite:////var/lib/neutron/ovs.sqlite',
|
$sql_connection = false,
|
||||||
$sql_max_retries = 10,
|
$sql_max_retries = false,
|
||||||
$sql_idle_timeout = '3600',
|
$sql_idle_timeout = false,
|
||||||
$reconnect_interval = 2,
|
$reconnect_interval = false,
|
||||||
$tenant_network_type = 'vlan',
|
$tenant_network_type = 'vlan',
|
||||||
# NB: don't need tunnel ID range when using VLANs,
|
# NB: don't need tunnel ID range when using VLANs,
|
||||||
# *but* you do need the network vlan range regardless of type,
|
# *but* you do need the network vlan range regardless of type,
|
||||||
@@ -33,23 +29,6 @@ class neutron::plugins::ovs (
|
|||||||
Neutron_plugin_ovs<||> ~> Service<| title == 'neutron-server' |>
|
Neutron_plugin_ovs<||> ~> Service<| title == 'neutron-server' |>
|
||||||
Package['neutron-plugin-ovs'] -> Service<| title == 'neutron-server' |>
|
Package['neutron-plugin-ovs'] -> Service<| title == 'neutron-server' |>
|
||||||
|
|
||||||
validate_re($sql_connection, '(sqlite|mysql|postgresql):\/\/(\S+:\S+@\S+\/\S+)?')
|
|
||||||
|
|
||||||
case $sql_connection {
|
|
||||||
/mysql:\/\/\S+:\S+@\S+\/\S+/: {
|
|
||||||
require 'mysql::python'
|
|
||||||
}
|
|
||||||
/postgresql:\/\/\S+:\S+@\S+\/\S+/: {
|
|
||||||
$backend_package = 'python-psycopg2'
|
|
||||||
}
|
|
||||||
/sqlite:\/\//: {
|
|
||||||
$backend_package = 'python-pysqlite2'
|
|
||||||
}
|
|
||||||
default: {
|
|
||||||
fail("Invalid sql connection: ${sql_connection}")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ! defined(Package['neutron-plugin-ovs']) {
|
if ! defined(Package['neutron-plugin-ovs']) {
|
||||||
package { 'neutron-plugin-ovs':
|
package { 'neutron-plugin-ovs':
|
||||||
ensure => $package_ensure,
|
ensure => $package_ensure,
|
||||||
@@ -57,11 +36,23 @@ class neutron::plugins::ovs (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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 {
|
neutron_plugin_ovs {
|
||||||
'DATABASE/sql_connection': value => $sql_connection;
|
|
||||||
'DATABASE/sql_max_retries': value => $sql_max_retries;
|
|
||||||
'DATABASE/sql_idle_timeout': value => $sql_idle_timeout;
|
|
||||||
'DATABASE/reconnect_interval': value => $reconnect_interval;
|
|
||||||
'OVS/tenant_network_type': value => $tenant_network_type;
|
'OVS/tenant_network_type': value => $tenant_network_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -61,6 +61,26 @@
|
|||||||
# (optional) Complete public Identity API endpoint.
|
# (optional) Complete public Identity API endpoint.
|
||||||
# Defaults to: $auth_protocol://$auth_host:5000/
|
# Defaults to: $auth_protocol://$auth_host:5000/
|
||||||
#
|
#
|
||||||
|
# [*connection*]
|
||||||
|
# (optional) Connection url for the neutron database.
|
||||||
|
# Deprecates sql_connection
|
||||||
|
# Defaults to: sqlite:////var/lib/neutron/ovs.sqlite
|
||||||
|
#
|
||||||
|
# [*max_retries*]
|
||||||
|
# (optional) Database reconnection retry times.
|
||||||
|
# Deprecates sql_max_retries
|
||||||
|
# Defaults to: 10
|
||||||
|
#
|
||||||
|
# [*idle_timeout*]
|
||||||
|
# (optional) Timeout before idle db connections are reaped.
|
||||||
|
# Deprecates sql_idle_timeout
|
||||||
|
# Defaults to: 3600
|
||||||
|
#
|
||||||
|
# [*retry_interval*]
|
||||||
|
# (optional) Database reconnection interval in seconds.
|
||||||
|
# Deprecates reconnect_interval
|
||||||
|
# Defaults to: 10
|
||||||
|
#
|
||||||
class neutron::server (
|
class neutron::server (
|
||||||
$package_ensure = 'present',
|
$package_ensure = 'present',
|
||||||
$enabled = true,
|
$enabled = true,
|
||||||
@@ -73,6 +93,14 @@ class neutron::server (
|
|||||||
$auth_user = 'neutron',
|
$auth_user = 'neutron',
|
||||||
$auth_protocol = 'http',
|
$auth_protocol = 'http',
|
||||||
$auth_uri = false,
|
$auth_uri = false,
|
||||||
|
$sql_connection = 'sqlite:////var/lib/neutron/ovs.sqlite',
|
||||||
|
$connection = 'sqlite:////var/lib/neutron/ovs.sqlite',
|
||||||
|
$max_retries = '10',
|
||||||
|
$sql_max_retries = '10',
|
||||||
|
$sql_idle_timeout = '3600',
|
||||||
|
$idle_timeout = '3600',
|
||||||
|
$reconnect_interval = '10',
|
||||||
|
$retry_interval = '10',
|
||||||
$log_file = false,
|
$log_file = false,
|
||||||
$log_dir = '/var/log/neutron'
|
$log_dir = '/var/log/neutron'
|
||||||
) {
|
) {
|
||||||
@@ -83,6 +111,58 @@ class neutron::server (
|
|||||||
Neutron_config<||> ~> Service['neutron-server']
|
Neutron_config<||> ~> Service['neutron-server']
|
||||||
Neutron_api_config<||> ~> Service['neutron-server']
|
Neutron_api_config<||> ~> Service['neutron-server']
|
||||||
|
|
||||||
|
if $sql_connection {
|
||||||
|
warning('sql_connection deprecated for connection')
|
||||||
|
$connection_real = $sql_connection
|
||||||
|
} else {
|
||||||
|
$connection_real = $connection
|
||||||
|
}
|
||||||
|
|
||||||
|
if $sql_max_retries {
|
||||||
|
warning('sql_max_retries deprecated for max_retries')
|
||||||
|
$max_retries_real = $sql_max_retries
|
||||||
|
} else {
|
||||||
|
$max_retries_real = $max_retries
|
||||||
|
}
|
||||||
|
|
||||||
|
if $sql_idle_timeout {
|
||||||
|
warning('sql_idle_timeout deprecated for idle_timeout')
|
||||||
|
$idle_timeout_real = $sql_idle_timeout
|
||||||
|
} else {
|
||||||
|
$idle_timeout_real = $idle_timeout
|
||||||
|
}
|
||||||
|
|
||||||
|
if $reconnect_interval {
|
||||||
|
warning('reconnect_interval deprecated for retry_interval')
|
||||||
|
$retry_interval_real = $reconnect_interval
|
||||||
|
} else {
|
||||||
|
$retry_interval_real = $retry_interval
|
||||||
|
}
|
||||||
|
|
||||||
|
validate_re($connection_real, '(sqlite|mysql|postgresql):\/\/(\S+:\S+@\S+\/\S+)?')
|
||||||
|
|
||||||
|
case $connection_real {
|
||||||
|
/mysql:\/\/\S+:\S+@\S+\/\S+/: {
|
||||||
|
require 'mysql::python'
|
||||||
|
}
|
||||||
|
/postgresql:\/\/\S+:\S+@\S+\/\S+/: {
|
||||||
|
$backend_package = 'python-psycopg2'
|
||||||
|
}
|
||||||
|
/sqlite:\/\//: {
|
||||||
|
$backend_package = 'python-pysqlite2'
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
fail("Invalid sql connection: ${connection_real}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
neutron_config {
|
||||||
|
'database/connection': value => $connection_real;
|
||||||
|
'database/idle_timeout': value => $idle_timeout_real;
|
||||||
|
'database/retry_interval': value => $retry_interval_real;
|
||||||
|
'database/max_retries': value => $max_retries_real;
|
||||||
|
}
|
||||||
|
|
||||||
if $log_file {
|
if $log_file {
|
||||||
neutron_config {
|
neutron_config {
|
||||||
'DEFAULT/log_file': value => $log_file;
|
'DEFAULT/log_file': value => $log_file;
|
||||||
|
@@ -7,7 +7,7 @@ describe 'neutron::plugins::linuxbridge' do
|
|||||||
end
|
end
|
||||||
|
|
||||||
let :params do
|
let :params do
|
||||||
{ :sql_connection => 'mysql://user:pass@db/db',
|
{ :sql_connection => false,
|
||||||
:network_vlan_ranges => 'physnet0:100:109',
|
:network_vlan_ranges => 'physnet0:100:109',
|
||||||
:tenant_network_type => 'vlan',
|
:tenant_network_type => 'vlan',
|
||||||
:package_ensure => 'installed'
|
:package_ensure => 'installed'
|
||||||
@@ -26,9 +26,6 @@ describe 'neutron::plugins::linuxbridge' do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'configures linuxbridge_conf.ini' do
|
it 'configures linuxbridge_conf.ini' do
|
||||||
should contain_neutron_plugin_linuxbridge('DATABASE/sql_connection').with(
|
|
||||||
:value => params[:sql_connection]
|
|
||||||
)
|
|
||||||
should contain_neutron_plugin_linuxbridge('VLANS/tenant_network_type').with(
|
should contain_neutron_plugin_linuxbridge('VLANS/tenant_network_type').with(
|
||||||
:value => params[:tenant_network_type]
|
:value => params[:tenant_network_type]
|
||||||
)
|
)
|
||||||
|
@@ -9,10 +9,10 @@ describe 'neutron::plugins::ovs' do
|
|||||||
let :default_params do
|
let :default_params do
|
||||||
{
|
{
|
||||||
:package_ensure => 'present',
|
:package_ensure => 'present',
|
||||||
:sql_connection => 'sqlite:////var/lib/neutron/ovs.sqlite',
|
:sql_connection => false,
|
||||||
:sql_max_retries => 10,
|
:sql_max_retries => false,
|
||||||
:sql_idle_timeout => '3600',
|
:sql_idle_timeout => false,
|
||||||
:reconnect_interval => 2,
|
:reconnect_interval => false,
|
||||||
:tunnel_id_ranges => '1:1000',
|
:tunnel_id_ranges => '1:1000',
|
||||||
:network_vlan_ranges => 'physnet1:1000:2000'
|
:network_vlan_ranges => 'physnet1:1000:2000'
|
||||||
}
|
}
|
||||||
@@ -32,10 +32,6 @@ describe 'neutron::plugins::ovs' do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'should perform default configuration of' do
|
it 'should perform default configuration of' do
|
||||||
should contain_neutron_plugin_ovs('DATABASE/sql_connection').with_value(params[:sql_connection])
|
|
||||||
should contain_neutron_plugin_ovs('DATABASE/sql_max_retries').with_value(params[:sql_max_retries])
|
|
||||||
should contain_neutron_plugin_ovs('DATABASE/sql_idle_timeout').with_value(params[:sql_idle_timeout])
|
|
||||||
should contain_neutron_plugin_ovs('DATABASE/reconnect_interval').with_value(params[:reconnect_interval])
|
|
||||||
should contain_neutron_plugin_ovs('OVS/tenant_network_type').with_value(params[:tenant_network_type])
|
should contain_neutron_plugin_ovs('OVS/tenant_network_type').with_value(params[:tenant_network_type])
|
||||||
should contain_package('neutron-plugin-ovs').with(
|
should contain_package('neutron-plugin-ovs').with(
|
||||||
:name => platform_params[:ovs_server_package],
|
:name => platform_params[:ovs_server_package],
|
||||||
|
@@ -19,7 +19,15 @@ describe 'neutron::server' do
|
|||||||
:auth_host => 'localhost',
|
:auth_host => 'localhost',
|
||||||
:auth_port => '35357',
|
:auth_port => '35357',
|
||||||
:auth_tenant => 'services',
|
:auth_tenant => 'services',
|
||||||
:auth_user => 'neutron' }
|
:auth_user => 'neutron',
|
||||||
|
:sql_connection => 'sqlite:////var/lib/neutron/ovs.sqlite',
|
||||||
|
:connection => 'sqlite:////var/lib/neutron/ovs.sqlite',
|
||||||
|
:sql_max_retries => '10',
|
||||||
|
:max_retries => '10',
|
||||||
|
:sql_idle_timeout => '3600',
|
||||||
|
:idle_timeout => '3600',
|
||||||
|
:reconnect_interval => '10',
|
||||||
|
:retry_interval => '10' }
|
||||||
end
|
end
|
||||||
|
|
||||||
shared_examples_for 'a neutron server' do
|
shared_examples_for 'a neutron server' do
|
||||||
@@ -27,6 +35,13 @@ describe 'neutron::server' do
|
|||||||
default_params.merge(params)
|
default_params.merge(params)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'should perform default database configuration of' do
|
||||||
|
should contain_neutron_config('database/connection').with_value(p[:connection])
|
||||||
|
should contain_neutron_config('database/max_retries').with_value(p[:max_retries])
|
||||||
|
should contain_neutron_config('database/idle_timeout').with_value(p[:idle_timeout])
|
||||||
|
should contain_neutron_config('database/retry_interval').with_value(p[:retry_interval])
|
||||||
|
end
|
||||||
|
|
||||||
it { should include_class('neutron::params') }
|
it { should include_class('neutron::params') }
|
||||||
it 'configures logging' do
|
it 'configures logging' do
|
||||||
should contain_neutron_config('DEFAULT/log_file').with_ensure('absent')
|
should contain_neutron_config('DEFAULT/log_file').with_ensure('absent')
|
||||||
|
Reference in New Issue
Block a user