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
-------
# [*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
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
# [*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',
$host = 'localhost',
$allowed_hosts = undef,
$charset = 'latin1',
+ $collate = 'latin1_swedish_ci',
+ $mysql_module = '0.9',
) {
validate_string($password)
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
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,
}
}
}
# [*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}"]
+ }
+
+ } 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}"]
+ database_grant { "${user}@${name}/${database}":
+ # TODO figure out which privileges to grant.
+ privileges => 'all',
+ provider => 'mysql',
+ require => Database_user["${user}@${name}"]
+ }
}
}
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