diff --git a/manifests/api.pp b/manifests/api.pp index 1751a38c..d5d37f28 100644 --- a/manifests/api.pp +++ b/manifests/api.pp @@ -28,6 +28,8 @@ class ceilometer::api( require => Package['ceilometer-api'] } + Service['ceilometer-api'] -> Class['ceilometer::db'] + ceilometer_setting { 'keystone_authtoken/auth_host': value => $keystone_host; 'keystone_authtoken/auth_port': value => $keystone_port; diff --git a/manifests/collector.pp b/manifests/collector.pp index 5088474b..74ef3e25 100644 --- a/manifests/collector.pp +++ b/manifests/collector.pp @@ -20,4 +20,5 @@ class ceilometer::collector( require => Package['ceilometer-collector'] } + Service['ceilometer-collector'] -> Class['ceilometer::db'] } diff --git a/manifests/db/init.pp b/manifests/db/init.pp new file mode 100644 index 00000000..67c7c140 --- /dev/null +++ b/manifests/db/init.pp @@ -0,0 +1,40 @@ +# Ceilometer::Db::Settings class +# +# +class ceilometer::db::settings ( + $database_connection = 'mysql://ceilometer:ceilometer@127.0.0.1/ceilometer' +) { + + validate_re($database_connection, + '(sqlite|mysql|posgres|mongodb):\/\/(\S+:\S+@\S+\/\S+)?') + + case $database_connection { + /^mysql:\/\//: { + $backend_package = false + include mysql::python + } + /^postgres:\/\//: { + $backend_package = 'python-psycopg2' + } + /^mongodb:\/\//: { + $backend_package = 'python-pymongo' + } + /^sqlite:\/\//: { + $backend_package = 'python-pysqlite2' + } + default: { + fail('Unsupported backend configured') + } + } + + if $backend_package and !defined(Package[$backend_package]) { + package {'ceilometer-backend-package': + ensure => present, + name => $backend_package, + } + } + + ceilometer_setting { + 'DEFAULT/database_connection': value => $database_connection; + } +}