Merge "Add support for puppetlabs-mysql 2.2"

This commit is contained in:
Jenkins 2014-03-21 15:23:31 +00:00 committed by Gerrit Code Review
commit ec68e990d4
5 changed files with 82 additions and 27 deletions

5
README
View File

@ -2,6 +2,11 @@ puppet-ceilometer
This is the ceilometer module.
Limitations
--------------------------
The Ceilometer Openstack service depends on a sqlalchemy database. If you are using puppetlabs-mysql to achieve this, there is a parameter called mysql_module that can be used to swap between the two supported versions: 0.9 and 2.2. This is needed because the puppetlabs-mysql module was rewritten and the custom type names have changed between versions.
License
-------

View File

@ -9,9 +9,15 @@
# [*sync_db*]
# enable dbsync.
#
# [*mysql_module*]
# (optional) Mysql puppet module version to use. Tested versions
# are 0.9 and 2.2
# Defaults to '0.9
#
class ceilometer::db (
$database_connection = 'mysql://ceilometer:ceilometer@localhost/ceilometer',
$sync_db = true
$sync_db = true,
$mysql_module = '0.9',
) {
include ceilometer::params
@ -24,7 +30,12 @@ class ceilometer::db (
case $database_connection {
/^mysql:\/\//: {
$backend_package = false
include mysql::python
if ($mysql_module >= 2.2) {
include mysql::bindings::python
} else {
include mysql::python
}
}
/^postgres:\/\//: {
$backend_package = $::ceilometer::params::psycopg_package_name

View File

@ -23,6 +23,14 @@
# [*charset*]
# the database charset. Optional. Defaults to 'latin1'
#
# [*collate*]
# the database collation. Optional. Defaults to 'latin1_swedish_ci'
#
# [*mysql_module*]
# (optional) Mysql module version to use. Tested versions
# are 0.9 and 2.2
# Defaults to '0.9'
#
class ceilometer::db::mysql(
$password = false,
$dbname = 'ceilometer',
@ -30,6 +38,8 @@ class ceilometer::db::mysql(
$host = 'localhost',
$allowed_hosts = undef,
$charset = 'latin1',
$collate = 'latin1_swedish_ci',
$mysql_module = '0.9',
) {
validate_string($password)
@ -38,12 +48,23 @@ class ceilometer::db::mysql(
Class['ceilometer::db::mysql'] -> Exec<| title == 'ceilometer-dbsync' |>
Mysql::Db[$dbname] ~> Exec<| title == 'ceilometer-dbsync' |>
mysql::db { $dbname:
user => $user,
password => $password,
host => $host,
charset => $charset,
require => Class['mysql::config'],
if $mysql_module >= 2.2 {
mysql::db { $dbname:
user => $user,
password => $password,
host => $host,
charset => $charset,
collate => $collate,
require => Class['mysql::server'],
}
} else {
mysql::db { $dbname:
user => $user,
password => $password,
host => $host,
charset => $charset,
require => Class['mysql::config'],
}
}
# Check allowed_hosts to avoid duplicate resource declarations
@ -55,9 +76,10 @@ class ceilometer::db::mysql(
if $real_allowed_hosts {
ceilometer::db::mysql::host_access { $real_allowed_hosts:
user => $user,
password => $password,
database => $dbname,
user => $user,
password => $password,
database => $dbname,
mysql_module => $mysql_module,
}
}
}

View File

@ -13,18 +13,33 @@
# [*database*]
# the database name
#
define ceilometer::db::mysql::host_access ($user, $password, $database) {
define ceilometer::db::mysql::host_access ($user, $password, $database, $mysql_module='0.9') {
# New types for mysql module v2.0+
if ($mysql_module >= 2.2) {
mysql_user { "${user}@${name}":
password_hash => mysql_password($password),
provider => 'mysql',
require => Mysql_database[$database],
}
database_user { "${user}@${name}":
password_hash => mysql_password($password),
provider => 'mysql',
require => Database[$database],
}
mysql_grant { "${user}@${name}/${database}":
privileges => 'all',
provider => 'mysql',
require => Mysql_user["${user}@${name}"]
}
database_grant { "${user}@${name}/${database}":
# TODO figure out which privileges to grant.
privileges => 'all',
provider => 'mysql',
require => Database_user["${user}@${name}"]
} else {
database_user { "${user}@${name}":
password_hash => mysql_password($password),
provider => 'mysql',
require => Database[$database],
}
database_grant { "${user}@${name}/${database}":
# TODO figure out which privileges to grant.
privileges => 'all',
provider => 'mysql',
require => Database_user["${user}@${name}"]
}
}
}

View File

@ -7,11 +7,13 @@ describe 'ceilometer::db::mysql' do
end
let :params do
{ :password => 's3cr3t',
:dbname => 'ceilometer',
:user => 'ceilometer',
:host => 'localhost',
:charset => 'latin1'
{ :password => 's3cr3t',
:dbname => 'ceilometer',
:user => 'ceilometer',
:host => 'localhost',
:charset => 'latin1',
:collate => 'latin1_swedish_ci',
:mysql_module => '0.9',
}
end