From e2b0c7fca1d663d4ffa7cc280ff48a0901fb41df Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fran=C3=A7ois=20Charlier?= Date: Mon, 10 Dec 2012 16:52:40 +0100 Subject: [PATCH] Move database settings to a different class --- manifests/api.pp | 2 ++ manifests/collector.pp | 1 + manifests/db/init.pp | 40 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+) create mode 100644 manifests/db/init.pp diff --git a/manifests/api.pp b/manifests/api.pp index 1751a38..d5d37f2 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 5088474..74ef3e2 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 0000000..67c7c14 --- /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; + } +} -- 2.45.2