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(
$config = $name,
$config_group = 'database',
String[1] $config_group = 'database',
$sqlite_synchronous = $facts['os_service_default'],
$backend = $facts['os_service_default'],
Boolean $manage_backend_package = true,
$backend_package_ensure = present,
$connection = $facts['os_service_default'],
$slave_connection = $facts['os_service_default'],
Oslo::Dbconn $connection = $facts['os_service_default'],
Oslo::Dbconn $slave_connection = $facts['os_service_default'],
$mysql_sql_mode = $facts['os_service_default'],
$connection_recycle_time = $facts['os_service_default'],
$max_pool_size = $facts['os_service_default'],
@ -134,40 +134,33 @@ define oslo::db(
) {
include oslo::params
if !is_service_default($connection) {
validate_legacy(Oslo::Dbconn, 'validate_re', $connection,
['^(sqlite|mysql(\+pymysql)?|postgresql(\+psycopg2)?):\/\/(\S+:\S+@\S+\/\S+)?'])
if $manage_backend_package {
case $connection {
/^mysql(\+pymysql)?:\/\//: {
require 'mysql::bindings'
require 'mysql::bindings::python'
if $connection =~ /^mysql\+pymysql/ {
$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')
if $manage_backend_package {
case $connection {
Oslo::Dbconn::Mysql: {
require 'mysql::bindings'
require 'mysql::bindings::python'
if $connection =~ /^mysql\+pymysql/ {
$backend_package = $::oslo::params::pymysql_package_name
} else {
$backend_package = undef
}
}
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]) {
package { $backend_package:
ensure => $backend_package_ensure,
name => $backend_package,
tag => 'openstack',
}
if $backend_package and !defined(Package[$backend_package]) {
package { $backend_package:
ensure => $backend_package_ensure,
name => $backend_package,
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+psycopg2://db:db@localhost/db',
'sqlite:///var/lib/db.db',
'<SERVICE DEFAULT>',
].each do |value|
describe value.inspect do
it { is_expected.to allow_value(value) }
@ -21,6 +22,7 @@ describe 'Oslo::Dbconn' do
[
'foo://db:db@localhost/db',
'foo+pymysql://db:db@localhost/db',
'mongodb://db:db@localhost/db',
true,
false,
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:\/\//]