]> review.fuel-infra Code Review - puppet-modules/puppet-ceilometer.git/commitdiff
db: Added postgresql backend using openstacklib helper
authorSebastien Badia <sebastien.badia@enovance.com>
Tue, 30 Dec 2014 17:55:06 +0000 (18:55 +0100)
committerSebastien Badia <sebastien.badia@enovance.com>
Tue, 30 Dec 2014 17:55:06 +0000 (18:55 +0100)
Standardize ceilometer module, and add postgresql backend.

Change-Id: I6603304cab680185d289e6b284e55deaef437b61
Implements: blueprint commmon-openstack-database-resource

.fixtures.yml
manifests/db/postgresql.pp [new file with mode: 0644]
spec/classes/ceilometer_db_postgresql_spec.rb [new file with mode: 0644]

index cf0f5e521f193759c2b51e53aaa0e62c76dcba63..5f2c2841cf9951c7842480e797221107e0d43534 100644 (file)
@@ -1,12 +1,14 @@
 fixtures:
   repositories:
     'inifile': 'git://github.com/puppetlabs/puppetlabs-inifile'
+    'concat': 'git://github.com/puppetlabs/puppetlabs-concat.git'
     'keystone': 'git://github.com/stackforge/puppet-keystone.git'
     'mysql':
       repo: 'git://github.com/puppetlabs/puppetlabs-mysql.git'
       ref:  'origin/2.2.x'
     'nova': 'git://github.com/stackforge/puppet-nova.git'
     'openstacklib': 'git://github.com/stackforge/puppet-openstacklib.git'
+    'postgresql': 'git://github.com/puppetlabs/puppet-postgresql.git'
     'stdlib': 'git://github.com/puppetlabs/puppetlabs-stdlib.git'
   symlinks:
     'ceilometer': "#{source_dir}"
diff --git a/manifests/db/postgresql.pp b/manifests/db/postgresql.pp
new file mode 100644 (file)
index 0000000..6007b67
--- /dev/null
@@ -0,0 +1,45 @@
+# == Class: ceilometer::db::postgresql
+#
+# Class that configures postgresql for ceilometer
+# Requires the Puppetlabs postgresql module.
+#
+# === Parameters
+#
+# [*password*]
+#   (Required) Password to connect to the database.
+#
+# [*dbname*]
+#   (Optional) Name of the database.
+#   Defaults to 'ceilometer'.
+#
+# [*user*]
+#   (Optional) User to connect to the database.
+#   Defaults to 'ceilometer'.
+#
+#  [*encoding*]
+#    (Optional) The charset to use for the database.
+#    Default to undef.
+#
+#  [*privileges*]
+#    (Optional) Privileges given to the database user.
+#    Default to 'ALL'
+#
+class ceilometer::db::postgresql(
+  $password,
+  $dbname     = 'ceilometer',
+  $user       = 'ceilometer',
+  $encoding   = undef,
+  $privileges = 'ALL',
+) {
+
+  ::openstacklib::db::postgresql { 'ceilometer':
+    password_hash => postgresql_password($user, $password),
+    dbname        => $dbname,
+    user          => $user,
+    encoding      => $encoding,
+    privileges    => $privileges,
+  }
+
+  ::Openstacklib::Db::Postgresql['ceilometer']    ~> Exec<| title == 'ceilometer-dbsync' |>
+
+}
diff --git a/spec/classes/ceilometer_db_postgresql_spec.rb b/spec/classes/ceilometer_db_postgresql_spec.rb
new file mode 100644 (file)
index 0000000..6478342
--- /dev/null
@@ -0,0 +1,58 @@
+require 'spec_helper'
+
+describe 'ceilometer::db::postgresql' do
+
+  let :req_params do
+    { :password => 'pw' }
+  end
+
+  let :pre_condition do
+    'include postgresql::server'
+  end
+
+  context 'on a RedHat osfamily' do
+    let :facts do
+      {
+        :osfamily                 => 'RedHat',
+        :operatingsystemrelease   => '7.0',
+        :concat_basedir => '/var/lib/puppet/concat'
+      }
+    end
+
+    context 'with only required parameters' do
+      let :params do
+        req_params
+      end
+
+      it { should contain_postgresql__server__db('ceilometer').with(
+        :user     => 'ceilometer',
+        :password => 'md52899c518e96bce6633ab342b0ca38292'
+      )}
+    end
+
+  end
+
+  context 'on a Debian osfamily' do
+    let :facts do
+      {
+        :operatingsystemrelease => '7.8',
+        :operatingsystem        => 'Debian',
+        :osfamily               => 'Debian',
+        :concat_basedir => '/var/lib/puppet/concat'
+      }
+    end
+
+    context 'with only required parameters' do
+      let :params do
+        req_params
+      end
+
+      it { should contain_postgresql__server__db('ceilometer').with(
+        :user     => 'ceilometer',
+        :password => 'md52899c518e96bce6633ab342b0ca38292'
+      )}
+    end
+
+  end
+
+end