From 71b25d083e97caa32f0ab6c7adef4fb9344040c1 Mon Sep 17 00:00:00 2001 From: Christian Rohmann Date: Wed, 17 Mar 2021 11:34:27 +0100 Subject: [PATCH] Add designate::db::postgresql class. This allows Designate to be used with PostgreSQL. Backport note: This backport includes modifications to accomodate for password_hash function removed during Victoria cycle[1]. [1] https://review.opendev.org/728595 Change-Id: Ief63f88ba323e3f20300b8ff6a5148a78413ac3d (cherry picked from commit fd43d18c0f83c3401c7908fa60f160e4ae7ab4a2) (cherry picked from commit 47e3e4132fbdf046c0d1f8dcfe1dd2b08b73778f) --- manifests/db/postgresql.pp | 49 +++++++++++++++++++ .../notes/postgresql-441cce8804597ce3.yaml | 4 ++ spec/classes/designate_db_postgresql_spec.rb | 44 +++++++++++++++++ 3 files changed, 97 insertions(+) create mode 100644 manifests/db/postgresql.pp create mode 100644 releasenotes/notes/postgresql-441cce8804597ce3.yaml create mode 100644 spec/classes/designate_db_postgresql_spec.rb diff --git a/manifests/db/postgresql.pp b/manifests/db/postgresql.pp new file mode 100644 index 00000000..f57b5166 --- /dev/null +++ b/manifests/db/postgresql.pp @@ -0,0 +1,49 @@ +# == Class: designate::db::postgresql +# +# Class that configures postgresql for designate +# Requires the Puppetlabs postgresql module. +# +# === Parameters +# +# [*password*] +# (Required) Password to connect to the database. +# +# [*dbname*] +# (Optional) Name of the database. +# Defaults to 'designate'. +# +# [*user*] +# (Optional) User to connect to the database. +# Defaults to 'designate'. +# +# [*encoding*] +# (Optional) The charset to use for the database. +# Default to undef. +# +# [*privileges*] +# (Optional) Privileges given to the database user. +# Default to 'ALL' +# +class designate::db::postgresql( + $password, + $dbname = 'designate', + $user = 'designate', + $encoding = undef, + $privileges = 'ALL', +) { + + include designate::deps + + ::openstacklib::db::postgresql { 'designate': + password_hash => postgresql_password($user, $password), + dbname => $dbname, + user => $user, + encoding => $encoding, + privileges => $privileges, + } + + + Anchor['designate::db::begin'] + ~> Class['designate::db::postgresql'] + ~> Anchor['designate::db::end'] +} diff --git a/releasenotes/notes/postgresql-441cce8804597ce3.yaml b/releasenotes/notes/postgresql-441cce8804597ce3.yaml new file mode 100644 index 00000000..d61c61ec --- /dev/null +++ b/releasenotes/notes/postgresql-441cce8804597ce3.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + Add support for PostgreSQL database backend via designate::db::postgresql diff --git a/spec/classes/designate_db_postgresql_spec.rb b/spec/classes/designate_db_postgresql_spec.rb new file mode 100644 index 00000000..6c38420a --- /dev/null +++ b/spec/classes/designate_db_postgresql_spec.rb @@ -0,0 +1,44 @@ +require 'spec_helper' + +describe 'designate::db::postgresql' do + + shared_examples 'designate::db::postgresql' do + let :req_params do + { :password => 'pw' } + end + + let :pre_condition do + 'include postgresql::server' + end + + context 'with only required parameters' do + let :params do + req_params + end + + it { should contain_openstacklib__db__postgresql('designate').with( + :password_hash => 'md5919ed897e792e4768228d95591410cd1', + :dbname => 'designate', + :user => 'designate', + :encoding => nil, + :privileges => 'ALL', + )} + end + end + + on_supported_os({ + :supported_os => OSDefaults.get_supported_os + }).each do |os,facts| + context "on #{os}" do + let (:facts) do + facts.merge(OSDefaults.get_facts({ + :os_workers => 8, + :concat_basedir => '/var/lib/puppet/concat' + })) + end + + it_configures 'designate::db::postgresql' + end + end + +end