Puppet Class: gnocchi::db

Inherits:
gnocchi::params
Defined in:
manifests/db.pp

Overview

Class: gnocchi::db

Configure the Gnocchi database

Parameters

database_connection

Url used to connect to database. (Optional) Defaults to ‘sqlite:////var/lib/gnocchi/gnocchi.sqlite’.

package_ensure

(optional) The state of gnocchi packages Defaults to ‘present’

Parameters:

  • database_connection (Any) (defaults to: 'sqlite:////var/lib/gnocchi/gnocchi.sqlite')
  • package_ensure (Any) (defaults to: 'present')


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
# File 'manifests/db.pp', line 15

class gnocchi::db (
  $database_connection = 'sqlite:////var/lib/gnocchi/gnocchi.sqlite',
  $package_ensure      = 'present',
) inherits gnocchi::params {

  include gnocchi::deps

  # NOTE(spredzy): In order to keep backward compatibility we rely on the pick function
  # to use gnocchi::<myparam> if gnocchi::db::<myparam> isn't specified.
  $database_connection_real = pick($::gnocchi::database_connection, $database_connection)

  validate_legacy(Oslo::Dbconn, 'validate_re', $database_connection_real,
    ['^(sqlite|mysql(\+pymysql)?|postgresql):\/\/(\S+:\S+@\S+\/\S+)?'])

  if $database_connection_real {
    case $database_connection_real {
      /^mysql(\+pymysql)?:\/\//: {
        require '::mysql::bindings'
        require '::mysql::bindings::python'
        if $database_connection_real =~ /^mysql\+pymysql/ {
          $backend_package = $::gnocchi::params::pymysql_package_name
        } else {
          $backend_package = false
        }
      }
      /^postgresql:\/\//: {
        $backend_package = false
        require '::postgresql::lib::python'
      }
      /^sqlite:\/\//: {
        $backend_package = $::gnocchi::params::sqlite_package_name
      }
      default: {
        fail('Unsupported backend configured')
      }
    }

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

    gnocchi_config {
      'indexer/url': value => $database_connection_real, secret => true;
    }

    # NOTE(tobasco): gnocchi-indexer-sqlalchemy not packaged in Ubuntu for Queens release.
    if $::osfamily != 'Debian' {
      package { 'gnocchi-indexer-sqlalchemy':
        ensure => $package_ensure,
        name   => $::gnocchi::params::indexer_package_name,
        tag    => ['openstack', 'gnocchi-package'],
      }
    }
  }

}