remove legacy db connection check with proper types

- includes new type check for slave type

Change-Id: I170e46d65abe3399e69a33dabbe59b44adc90337
This commit is contained in:
Benedikt Trefzer 2023-06-13 09:12:35 +02:00 committed by Takashi Kajinami
parent 386021e502
commit 6ca03a90c4
9 changed files with 130 additions and 34 deletions

View File

@ -109,13 +109,13 @@
# #
define oslo::db( define oslo::db(
$config = $name, $config = $name,
$config_group = 'database', String[1] $config_group = 'database',
$sqlite_synchronous = $facts['os_service_default'], $sqlite_synchronous = $facts['os_service_default'],
$backend = $facts['os_service_default'], $backend = $facts['os_service_default'],
Boolean $manage_backend_package = true, Boolean $manage_backend_package = true,
$backend_package_ensure = present, $backend_package_ensure = present,
$connection = $facts['os_service_default'], Oslo::Dbconn $connection = $facts['os_service_default'],
$slave_connection = $facts['os_service_default'], Oslo::Dbconn $slave_connection = $facts['os_service_default'],
$mysql_sql_mode = $facts['os_service_default'], $mysql_sql_mode = $facts['os_service_default'],
$connection_recycle_time = $facts['os_service_default'], $connection_recycle_time = $facts['os_service_default'],
$max_pool_size = $facts['os_service_default'], $max_pool_size = $facts['os_service_default'],
@ -134,40 +134,33 @@ define oslo::db(
) { ) {
include oslo::params include oslo::params
if !is_service_default($connection) {
validate_legacy(Oslo::Dbconn, 'validate_re', $connection, if $manage_backend_package {
['^(sqlite|mysql(\+pymysql)?|postgresql(\+psycopg2)?):\/\/(\S+:\S+@\S+\/\S+)?']) case $connection {
Oslo::Dbconn::Mysql: {
if $manage_backend_package { require 'mysql::bindings'
case $connection { require 'mysql::bindings::python'
/^mysql(\+pymysql)?:\/\//: { if $connection =~ /^mysql\+pymysql/ {
require 'mysql::bindings' $backend_package = $::oslo::params::pymysql_package_name
require 'mysql::bindings::python' } else {
if $connection =~ /^mysql\+pymysql/ { $backend_package = undef
$backend_package = $::oslo::params::pymysql_package_name
} else {
$backend_package = false
}
}
/^postgresql(\+psycopg2)?:\/\//: {
$backend_package = false
require 'postgresql::lib::python'
}
/^sqlite:\/\//: {
$backend_package = $::oslo::params::sqlite_package_name
}
default: {
fail('Unsupported backend configured')
} }
} }
Oslo::Dbconn::Postgres: {
$backend_package = undef
require 'postgresql::lib::python'
}
Oslo::Dbconn::Sqlite: {
$backend_package = $::oslo::params::sqlite_package_name
}
default: {}
}
if $backend_package and !defined(Package[$backend_package]) { if $backend_package and !defined(Package[$backend_package]) {
package { $backend_package: package { $backend_package:
ensure => $backend_package_ensure, ensure => $backend_package_ensure,
name => $backend_package, name => $backend_package,
tag => 'openstack', tag => 'openstack',
}
} }
} }
} }

View File

@ -0,0 +1,31 @@
require 'spec_helper'
describe 'Oslo::Dbconn::Mysql' do
describe 'valid types' do
context 'with valid types' do
[
'mysql+pymysql://db:db@localhost/db',
].each do |value|
describe value.inspect do
it { is_expected.to allow_value(value) }
end
end
end
end
describe 'invalid types' do
context 'with garbage inputs' do
[
'postgresql://db:db@localhost/db',
'postgresql+psycopg2://db:db@localhost/db',
'sqlite:///var/lib/db.db',
'mongodb://db:db@localhost/db',
].each do |value|
describe value.inspect do
it { is_expected.not_to allow_value(value) }
end
end
end
end
end

View File

@ -0,0 +1,31 @@
require 'spec_helper'
describe 'Oslo::Dbconn::Postgres' do
describe 'valid types' do
context 'with valid types' do
[
'postgresql://db:db@localhost/db',
'postgresql+psycopg2://db:db@localhost/db',
].each do |value|
describe value.inspect do
it { is_expected.to allow_value(value) }
end
end
end
end
describe 'invalid types' do
context 'with garbage inputs' do
[
'mysql+pymysql://db:db@localhost/db',
'sqlite:///var/lib/db.db',
'mongodb://db:db@localhost/db',
].each do |value|
describe value.inspect do
it { is_expected.not_to allow_value(value) }
end
end
end
end
end

View File

@ -8,6 +8,7 @@ describe 'Oslo::Dbconn' do
'postgresql://db:db@localhost/db', 'postgresql://db:db@localhost/db',
'postgresql+psycopg2://db:db@localhost/db', 'postgresql+psycopg2://db:db@localhost/db',
'sqlite:///var/lib/db.db', 'sqlite:///var/lib/db.db',
'<SERVICE DEFAULT>',
].each do |value| ].each do |value|
describe value.inspect do describe value.inspect do
it { is_expected.to allow_value(value) } it { is_expected.to allow_value(value) }
@ -21,6 +22,7 @@ describe 'Oslo::Dbconn' do
[ [
'foo://db:db@localhost/db', 'foo://db:db@localhost/db',
'foo+pymysql://db:db@localhost/db', 'foo+pymysql://db:db@localhost/db',
'mongodb://db:db@localhost/db',
true, true,
false, false,
nil, nil,

View File

@ -0,0 +1,31 @@
require 'spec_helper'
describe 'Oslo::Dbconn::Sqlite' do
describe 'valid types' do
context 'with valid types' do
[
'sqlite:///var/lib/db.db',
].each do |value|
describe value.inspect do
it { is_expected.to allow_value(value) }
end
end
end
end
describe 'invalid types' do
context 'with garbage inputs' do
[
'mysql+pymysql://db:db@localhost/db',
'postgresql://db:db@localhost/db',
'postgresql+psycopg2://db:db@localhost/db',
'mongodb://db:db@localhost/db',
].each do |value|
describe value.inspect do
it { is_expected.not_to allow_value(value) }
end
end
end
end
end

View File

@ -1 +1,6 @@
type Oslo::Dbconn = Pattern[/^(sqlite|mysql(\+pymysql)?|postgresql(\+psycopg2)?):\/\/(\S+:\S+@\S+\/\S+)?/] type Oslo::Dbconn = Variant[
Oslo::Dbconn::Sqlite,
Oslo::Dbconn::Mysql,
Oslo::Dbconn::Postgres,
Openstacklib::Servicedefault,
]

1
types/dbconn/mysql.pp Normal file
View File

@ -0,0 +1 @@
type Oslo::Dbconn::Mysql = Pattern[/^mysql(\+pymysql)?:\/\/(\S+:\S+@\S+\/\S+)?/]

1
types/dbconn/postgres.pp Normal file
View File

@ -0,0 +1 @@
type Oslo::Dbconn::Postgres = Pattern[/^postgresql(\+psycopg2)?:\/\/(\S+:\S+@\S+\/\S+)?/]

1
types/dbconn/sqlite.pp Normal file
View File

@ -0,0 +1 @@
type Oslo::Dbconn::Sqlite = Pattern[/^sqlite:\/\//]