Puppet Class: ceilometer::db

Defined in:
manifests/db.pp

Overview

Configures the ceilometer database This class will install the required libraries depending on the driver specified in the connection_string parameter

Parameters

[*database_connection*]
  the connection string. format: [driver]://[user]:[password]@[host]/[database]

[*sync_db*]
  enable dbsync.

[*mysql_module*]
  (optional) Deprecated. Does nothing.

Parameters:

  • database_connection (Any) (defaults to: 'mysql://ceilometer:ceilometer@localhost/ceilometer')
  • sync_db (Any) (defaults to: true)
  • mysql_module (Any) (defaults to: undef)


15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'manifests/db.pp', line 15

class ceilometer::db (
  $database_connection = 'mysql://ceilometer:ceilometer@localhost/ceilometer',
  $sync_db             = true,
  $mysql_module        = undef,
) {

  include ceilometer::params

  if $mysql_module {
    warning('The mysql_module parameter is deprecated. The latest 2.x mysql module will be used.')
  }

  Package<| title == 'ceilometer-common' |> -> Class['ceilometer::db']

  validate_re($database_connection,
    '(sqlite|mysql|postgresql|mongodb):\/\/(\S+:\S+@\S+\/\S+)?')

  case $database_connection {
    /^mysql:\/\//: {
      $backend_package = false

      include mysql::bindings::python
    }
    /^postgresql:\/\//: {
      $backend_package = $::ceilometer::params::psycopg_package_name
    }
    /^mongodb:\/\//: {
      $backend_package = $::ceilometer::params::pymongo_package_name
    }
    /^sqlite:\/\//: {
      $backend_package = $::ceilometer::params::sqlite_package_name
    }
    default: {
      fail('Unsupported backend configured')
    }
  }

  if $sync_db {
    $command = $::ceilometer::params::dbsync_command
  } else {
    $command = '/bin/true'
  }

  if $backend_package and !defined(Package[$backend_package]) {
    package {'ceilometer-backend-package':
      ensure => present,
      name   => $backend_package,
    }
  }

  ceilometer_config {
    'database/connection': value => $database_connection, secret => true;
  }

  Ceilometer_config['database/connection'] ~> Exec['ceilometer-dbsync']

  exec { 'ceilometer-dbsync':
    command     => $command,
    path        => '/usr/bin',
    user        => $::ceilometer::params::user,
    refreshonly => true,
    logoutput   => on_failure,
    subscribe   => Ceilometer_config['database/connection']
  }

}