sqlalchemy: Ensure backend package is installed

Some of the backends supported by sqlalchemy (eg mysql + pymysql)
require additional packages. This ensures the required packages are
installed using the oslo::db defined type.

Change-Id: I7fc4cea95a0a7ecba7def9db4f01c16ef1cfa2f3
This commit is contained in:
Takashi Kajinami 2023-11-14 21:36:43 +09:00
parent 2d8f3e3ef0
commit 30d6d4c102
3 changed files with 20 additions and 0 deletions

View File

@ -3,8 +3,13 @@
# [*uri*]
# SQLAlchemy Connection URI. Required.
#
# [*package_ensure*]
# (Optional) Ensure state for package.
# Defaults to present.
#
class zaqar::management::sqlalchemy(
$uri,
$package_ensure = 'present',
) {
include zaqar::deps
@ -13,4 +18,9 @@ class zaqar::management::sqlalchemy(
'drivers:management_store:sqlalchemy/uri': value => $uri, secret => true;
}
oslo::db { 'zaqar_config':
connection => $uri,
backend_package_ensure => $package_ensure,
manage_config => false,
}
}

View File

@ -0,0 +1,6 @@
---
features:
- |
The ``zaqar::management::sqlalchemy`` class now ensures the dependent
library packages such as PyMySQL is installed. The package's state can be
customized using the new ``package_ensure`` parameter.

View File

@ -30,6 +30,10 @@ describe 'zaqar::management::sqlalchemy' do
is_expected.to contain_zaqar_config('drivers:management_store:sqlalchemy/uri').with(
:value => 'mysql://user:pass@127.0.0.1/zaqar',
)
is_expected.to contain_oslo__db('zaqar_config').with(
:connection => 'mysql://user:pass@127.0.0.1/zaqar',
:backend_package_ensure => 'present'
)
end
end