From ebb4b3c92eb592076b2a1b2e8cec7716fe337702 Mon Sep 17 00:00:00 2001 From: Nuno Miguel Silva Date: Tue, 15 Oct 2024 15:55:58 +0100 Subject: [PATCH 1/9] Update 'validate_bool' To support puppet 7 and 8 --- manifests/init.pp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifests/init.pp b/manifests/init.pp index 6f9b211..40789cb 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -184,7 +184,7 @@ } } - validate_bool($service_start_with_system) + validate_legacy(Boolean, 'validate_bool', $service_start_with_system) service {'pgbouncer': ensure => running, From a68a0d8c52a507d851310de9e752dbb05bfd78d7 Mon Sep 17 00:00:00 2001 From: Nuno Miguel Silva Date: Wed, 16 Oct 2024 14:16:21 +0100 Subject: [PATCH 2/9] Update 'validate_array' Update 'validate_array' to support newer puppet --- manifests/userlist.pp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifests/userlist.pp b/manifests/userlist.pp index 6dc855b..3408b9d 100644 --- a/manifests/userlist.pp +++ b/manifests/userlist.pp @@ -7,7 +7,7 @@ $paramtmpfile = '', ) { - validate_array($auth_list) + validate_legacy(Boolean, 'validate_array', $auth_list) concat::fragment { $auth_list[0]['user']: target => $::pgbouncer::userlist_file, From 19c6fc9043978941b1b5f70a05af697ef09aeb87 Mon Sep 17 00:00:00 2001 From: Nuno Miguel Silva Date: Wed, 16 Oct 2024 14:24:48 +0100 Subject: [PATCH 3/9] Use correct Type for validate_array --- manifests/userlist.pp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifests/userlist.pp b/manifests/userlist.pp index 3408b9d..e569acf 100644 --- a/manifests/userlist.pp +++ b/manifests/userlist.pp @@ -7,7 +7,7 @@ $paramtmpfile = '', ) { - validate_legacy(Boolean, 'validate_array', $auth_list) + validate_legacy(Array, 'validate_array', $auth_list) concat::fragment { $auth_list[0]['user']: target => $::pgbouncer::userlist_file, From 556e69d3f28b9dc88042100fb9929c38fbc0f8ae Mon Sep 17 00:00:00 2001 From: Nuno Miguel Silva Date: Thu, 16 Jan 2025 08:24:24 +0000 Subject: [PATCH 4/9] add deb_default_file init --- manifests/params.pp | 1 + 1 file changed, 1 insertion(+) diff --git a/manifests/params.pp b/manifests/params.pp index c6aaf69..cef4837 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -9,6 +9,7 @@ $paramtmpfile = '/tmp/pgbouncer-paramtmpfile' $config_params = undef $pgbouncer_package_name = 'pgbouncer' + $deb_default_file = '' $service_start_with_system = true $user = 'pgbouncer' $group = 'pgbouncer' From ca6920e8337cc7da0bb56acee1cc7690d9fd7a05 Mon Sep 17 00:00:00 2001 From: nunomigsilva Date: Thu, 16 Jan 2025 08:46:06 +0000 Subject: [PATCH 5/9] remove validate_legacy --- manifests/init.pp | 28 +++++++++++++--------------- manifests/params.pp | 20 ++++++++++---------- manifests/userlist.pp | 6 ++---- 3 files changed, 25 insertions(+), 29 deletions(-) diff --git a/manifests/init.pp b/manifests/init.pp index 40789cb..c51e49e 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -81,19 +81,19 @@ # deb_default_file is a file specific to ubuntu that loads a startup file # class pgbouncer ( - $userlist = $pgbouncer::params::userlist, - $databases = $pgbouncer::params::databases, - $paramtmpfile = $pgbouncer::params::paramtmpfile, - $default_config_params = $pgbouncer::params::default_config_params, - $config_params = $pgbouncer::params::config_params, - $pgbouncer_package_name = $pgbouncer::params::pgbouncer_package_name, - $conffile = $pgbouncer::params::conffile, - $userlist_file = $pgbouncer::params::userlist_file, - $deb_default_file = $pgbouncer::params::deb_default_file, - $service_start_with_system = $pgbouncer::params::service_start_with_system, - $user = $pgbouncer::params::user, - $group = $pgbouncer::params::group, - $require_repo = $pgbouncer::params::require_repo, + Array $userlist = $pgbouncer::params::userlist, + Array $databases = $pgbouncer::params::databases, + String $paramtmpfile = $pgbouncer::params::paramtmpfile, + Hash $default_config_params = $pgbouncer::params::default_config_params, + Hash $config_params = $pgbouncer::params::config_params, + String $pgbouncer_package_name = $pgbouncer::params::pgbouncer_package_name, + String $conffile = $pgbouncer::params::conffile, + String $userlist_file = $pgbouncer::params::userlist_file, + String $deb_default_file = $pgbouncer::params::deb_default_file, + Boolean $service_start_with_system = $pgbouncer::params::service_start_with_system, + String $user = $pgbouncer::params::user, + String $group = $pgbouncer::params::group, + Boolean $require_repo = $pgbouncer::params::require_repo, ) inherits pgbouncer::params { # merge the defaults and custom params @@ -184,8 +184,6 @@ } } - validate_legacy(Boolean, 'validate_bool', $service_start_with_system) - service {'pgbouncer': ensure => running, enable => $service_start_with_system, diff --git a/manifests/params.pp b/manifests/params.pp index cef4837..aa567b9 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -4,16 +4,16 @@ # class pgbouncer::params { - $userlist = [] - $databases = [] - $paramtmpfile = '/tmp/pgbouncer-paramtmpfile' - $config_params = undef - $pgbouncer_package_name = 'pgbouncer' - $deb_default_file = '' - $service_start_with_system = true - $user = 'pgbouncer' - $group = 'pgbouncer' - $require_repo = true + Array $userlist = [] + Array $databases = [] + Sting $paramtmpfile = '/tmp/pgbouncer-paramtmpfile' + Hash $config_params = undef + String $pgbouncer_package_name = 'pgbouncer' + String $deb_default_file = '' + Boolean $service_start_with_system = true + String $user = 'pgbouncer' + String $group = 'pgbouncer' + Boolean $require_repo = true # === Set OS specific variables === # case $::osfamily { diff --git a/manifests/userlist.pp b/manifests/userlist.pp index e569acf..1a1c404 100644 --- a/manifests/userlist.pp +++ b/manifests/userlist.pp @@ -3,12 +3,10 @@ # defined type that can be used to create the userlist in the auth_file # define pgbouncer::userlist( - $auth_list = [], - $paramtmpfile = '', + Array $auth_list = [], + String $paramtmpfile = '', ) { - validate_legacy(Array, 'validate_array', $auth_list) - concat::fragment { $auth_list[0]['user']: target => $::pgbouncer::userlist_file, content => template('pgbouncer/userlist.txt.erb'), From cc47961f4cf5ee03425e82111b00ee317c87943c Mon Sep 17 00:00:00 2001 From: Nuno Date: Thu, 16 Jan 2025 10:01:29 +0100 Subject: [PATCH 6/9] support puppet 8 --- .gitignore | 36 +++++++++++++++- Gemfile | 94 ++++++++++++++++++++++++++++++++++++------ Rakefile | 27 ++++++------ manifests/databases.pp | 5 +-- manifests/init.pp | 27 ++++++------ manifests/params.pp | 29 +++++++------ manifests/userlist.pp | 8 ++-- metadata.json | 39 +++++++++++------- spec/spec_helper.rb | 82 ++++++++++++++++++++++++++++++------ tests/init.pp | 4 +- 10 files changed, 258 insertions(+), 93 deletions(-) diff --git a/.gitignore b/.gitignore index 01d0a08..2803e56 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,35 @@ -pkg/ +.git/ +.*.sw[op] +.metadata +.yardoc +.yardwarns +*.iml +/.bundle/ +/.idea/ +/.vagrant/ +/coverage/ +/bin/ +/doc/ +/Gemfile.local +/Gemfile.lock +/junit/ +/log/ +/pkg/ +/spec/fixtures/manifests/ +/spec/fixtures/modules/* +/tmp/ +/vendor/ +/.vendor/ +/convert_report.txt +/update_report.txt +.DS_Store +.project +.envrc +/inventory.yaml +/spec/fixtures/litmus_inventory.yaml +.resource_types +.modules +.task_cache.json +.plan_cache.json +.rerun.json +bolt-debug.log diff --git a/Gemfile b/Gemfile index 1e7f46f..dc6cbe0 100644 --- a/Gemfile +++ b/Gemfile @@ -1,13 +1,81 @@ -source ENV['GEM_SOURCE'] || "https://rubygems.org" - - if ENV.key?('PUPPET_VERSION') - puppetversion = "= #{ENV['PUPPET_VERSION']}" - else - puppetversion = ['>= 2.7'] - end - - gem 'rake' - gem 'puppet-lint' - gem 'rspec-puppet' - gem 'puppet', puppetversion - gem 'puppet-syntax' +source ENV['GEM_SOURCE'] || 'https://rubygems.org' + +def location_for(place_or_version, fake_version = nil) + git_url_regex = %r{\A(?(https?|git)[:@][^#]*)(#(?.*))?} + file_url_regex = %r{\Afile:\/\/(?.*)} + + if place_or_version && (git_url = place_or_version.match(git_url_regex)) + [fake_version, { git: git_url[:url], branch: git_url[:branch], require: false }].compact + elsif place_or_version && (file_url = place_or_version.match(file_url_regex)) + ['>= 0', { path: File.expand_path(file_url[:path]), require: false }] + else + [place_or_version, { require: false }] + end +end + +group :development do + gem "json", '= 2.1.0', require: false if Gem::Requirement.create(['>= 2.5.0', '< 2.7.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup)) + gem "json", '= 2.3.0', require: false if Gem::Requirement.create(['>= 2.7.0', '< 3.0.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup)) + gem "json", '= 2.5.1', require: false if Gem::Requirement.create(['>= 3.0.0', '< 3.0.5']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup)) + gem "json", '= 2.6.1', require: false if Gem::Requirement.create(['>= 3.1.0', '< 3.1.3']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup)) + gem "json", '= 2.6.3', require: false if Gem::Requirement.create(['>= 3.2.0', '< 4.0.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup)) + gem "racc", '~> 1.4.0', require: false if Gem::Requirement.create(['>= 2.7.0', '< 3.0.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup)) + gem "deep_merge", '~> 1.2.2', require: false + gem "voxpupuli-puppet-lint-plugins", '~> 5.0', require: false + gem "facterdb", '~> 2.1', require: false if Gem::Requirement.create(['< 3.0.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup)) + gem "facterdb", '~> 3.0', require: false if Gem::Requirement.create(['>= 3.0.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup)) + gem "metadata-json-lint", '~> 4.0', require: false + gem "json-schema", '< 5.1.1', require: false + gem "rspec-puppet-facts", '~> 4.0', require: false if Gem::Requirement.create(['< 3.0.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup)) + gem "rspec-puppet-facts", '~> 5.0', require: false if Gem::Requirement.create(['>= 3.0.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup)) + gem "dependency_checker", '~> 1.0.0', require: false + gem "parallel_tests", '= 3.12.1', require: false + gem "pry", '~> 0.10', require: false + gem "simplecov-console", '~> 0.9', require: false + gem "puppet-debugger", '~> 1.0', require: false + gem "rubocop", '~> 1.50.0', require: false + gem "rubocop-performance", '= 1.16.0', require: false + gem "rubocop-rspec", '= 2.19.0', require: false + gem "rb-readline", '= 0.5.5', require: false, platforms: [:mswin, :mingw, :x64_mingw] +end +group :development, :release_prep do + gem "puppet-strings", '~> 4.0', require: false + gem "puppetlabs_spec_helper", '~> 8.0', require: false + gem "puppet-blacksmith", '~> 7.0', require: false +end +group :system_tests do + gem "puppet_litmus", '~> 1.0', require: false, platforms: [:ruby, :x64_mingw] + gem "CFPropertyList", '< 3.0.7', require: false, platforms: [:mswin, :mingw, :x64_mingw] + gem "serverspec", '~> 2.41', require: false +end + +puppet_version = ENV['PUPPET_GEM_VERSION'] +facter_version = ENV['FACTER_GEM_VERSION'] +hiera_version = ENV['HIERA_GEM_VERSION'] + +gems = {} + +gems['puppet'] = location_for(puppet_version) + +# If facter or hiera versions have been specified via the environment +# variables + +gems['facter'] = location_for(facter_version) if facter_version +gems['hiera'] = location_for(hiera_version) if hiera_version + +gems.each do |gem_name, gem_params| + gem gem_name, *gem_params +end + +# Evaluate Gemfile.local and ~/.gemfile if they exist +extra_gemfiles = [ + "#{__FILE__}.local", + File.join(Dir.home, '.gemfile'), +] + +extra_gemfiles.each do |gemfile| + if File.file?(gemfile) && File.readable?(gemfile) + eval(File.read(gemfile), binding) + end +end +# vim: syntax=ruby diff --git a/Rakefile b/Rakefile index cc88218..31b5930 100644 --- a/Rakefile +++ b/Rakefile @@ -1,17 +1,18 @@ -require 'rake' -require 'puppet-lint/tasks/puppet-lint' -require 'puppet-syntax/tasks/puppet-syntax' +# frozen_string_literal: true -exclude_paths = [ - 'spec/**/*', - 'pkg/**/*', - 'tests/**/*' -] +require 'bundler' +require 'puppet_litmus/rake_tasks' if Gem.loaded_specs.key? 'puppet_litmus' +require 'puppetlabs_spec_helper/rake_tasks' +require 'puppet-syntax/tasks/puppet-syntax' +require 'puppet-strings/tasks' if Gem.loaded_specs.key? 'puppet-strings' -PuppetSyntax.exclude_paths = exclude_paths -PuppetLint.configuration.fail_on_warnings -PuppetLint.configuration.with_context = true -PuppetLint.configuration.relative = true +PuppetLint.configuration.send('disable_relative') +PuppetLint.configuration.send('disable_80chars') +PuppetLint.configuration.send('disable_140chars') PuppetLint.configuration.send('disable_class_inherits_from_params_class') +PuppetLint.configuration.send('disable_autoloader_layout') +PuppetLint.configuration.send('disable_documentation') +PuppetLint.configuration.send('disable_single_quote_string_with_variables') +PuppetLint.configuration.fail_on_warnings = true +PuppetLint.configuration.ignore_paths = [".vendor/**/*.pp", ".bundle/**/*.pp", "pkg/**/*.pp", "spec/**/*.pp", "tests/**/*.pp", "types/**/*.pp", "vendor/**/*.pp"] -task :default => [:lint] diff --git a/manifests/databases.pp b/manifests/databases.pp index d393fed..e021eea 100644 --- a/manifests/databases.pp +++ b/manifests/databases.pp @@ -3,16 +3,15 @@ # defined type that can be used to create the databases section in the config # file # -define pgbouncer::databases( +define pgbouncer::databases ( $databases = [], ) { - validate_array($databases) unless empty($databases[0]) { $uniq_name = "${databases[0]['dest_db']}_${databases[0]['auth_user']}" concat::fragment { $uniq_name: - target => $::pgbouncer::conffile, + target => $pgbouncer::conffile, content => template('pgbouncer/pgbouncer.ini.databases.part2.erb'), order => '02', } diff --git a/manifests/init.pp b/manifests/init.pp index c51e49e..25b3ba6 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -95,31 +95,30 @@ String $group = $pgbouncer::params::group, Boolean $require_repo = $pgbouncer::params::require_repo, ) inherits pgbouncer::params { - # merge the defaults and custom params $load_config_params = merge($default_config_params, $config_params) - anchor{'pgbouncer::begin':} + anchor { 'pgbouncer::begin': } # Same package name for both redhat based and debian based - case $::osfamily { + case $facts['os']['family'] { 'RedHat', 'Linux': { $package_require = $require_repo ? { - true => [ Class['postgresql::repo::yum_postgresql_org'], Anchor['pgbouncer::begin'] ], + true => [Class['postgresql::repo::yum_postgresql_org'], Anchor['pgbouncer::begin']], false => Anchor['pgbouncer::begin'], } - package{ $pgbouncer_package_name: + package { $pgbouncer_package_name: ensure => installed, require => $package_require, } } 'FreeBSD', 'Debian': { - package{ $pgbouncer_package_name: + package { $pgbouncer_package_name: ensure => installed, } } default: { - fail("Module ${module_name} is not supported on ${::operatingsystem}") + fail("Module ${module_name} is not supported on ${facts['os']['name']}") } } # verify we have config file managed by concat @@ -147,8 +146,8 @@ } # check if debian - if $::osfamily == 'Debian' { - file{ $deb_default_file: + if $facts['os']['family'] == 'Debian' { + file { $deb_default_file: ensure => file, source => 'puppet:///modules/pgbouncer/pgbouncer', require => Package[$pgbouncer_package_name], @@ -157,8 +156,8 @@ } # check if we have an authlist if $userlist { - pgbouncer::userlist{ 'pgbouncer_module_userlist': - auth_list => $userlist, + pgbouncer::userlist { 'pgbouncer_module_userlist': + auth_list => $userlist, paramtmpfile => $paramtmpfile, } } @@ -179,18 +178,18 @@ # check if we have a database list and create entries if $databases { - pgbouncer::databases{ 'pgbouncer_module_databases': + pgbouncer::databases { 'pgbouncer_module_databases': databases => $databases, } } - service {'pgbouncer': + service { 'pgbouncer': ensure => running, enable => $service_start_with_system, subscribe => Concat[$userlist_file, $conffile], } - anchor{'pgbouncer::end': + anchor { 'pgbouncer::end': require => Service['pgbouncer'], } } diff --git a/manifests/params.pp b/manifests/params.pp index aa567b9..bbbc57a 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -2,21 +2,20 @@ # # Private class included by pgbouncer to set parameters # -class pgbouncer::params { - - Array $userlist = [] - Array $databases = [] - Sting $paramtmpfile = '/tmp/pgbouncer-paramtmpfile' - Hash $config_params = undef - String $pgbouncer_package_name = 'pgbouncer' - String $deb_default_file = '' - Boolean $service_start_with_system = true - String $user = 'pgbouncer' - String $group = 'pgbouncer' - Boolean $require_repo = true - +class pgbouncer::params ( + Array $userlist = [], + Array $databases = [], + Sting $paramtmpfile = '/tmp/pgbouncer-paramtmpfile', + Hash $config_params = undef, + String $pgbouncer_package_name = 'pgbouncer', + String $deb_default_file = '', + Boolean $service_start_with_system = true, + String $user = 'pgbouncer', + String $group = 'pgbouncer', + Boolean $require_repo = true, +) { # === Set OS specific variables === # - case $::osfamily { + case $facts['os']['family'] { 'RedHat', 'Linux': { $logfile = '/var/log/pgbouncer/pgbouncer.log' $pidfile = '/var/run/pgbouncer/pgbouncer.pid' @@ -43,7 +42,7 @@ $unix_socket_dir = '/tmp' } default: { - fail("Module ${module_name} is not supported on ${::operatingsystem}") + fail("Module ${module_name} is not supported on ${facts['os']['name']}") } } # === Setup default parameters === # diff --git a/manifests/userlist.pp b/manifests/userlist.pp index 1a1c404..b33ed73 100644 --- a/manifests/userlist.pp +++ b/manifests/userlist.pp @@ -2,21 +2,19 @@ # # defined type that can be used to create the userlist in the auth_file # -define pgbouncer::userlist( +define pgbouncer::userlist ( Array $auth_list = [], String $paramtmpfile = '', ) { - concat::fragment { $auth_list[0]['user']: - target => $::pgbouncer::userlist_file, + target => $pgbouncer::userlist_file, content => template('pgbouncer/userlist.txt.erb'), order => '01', } concat::fragment { "${auth_list[0]['user']}_users": - target => $::pgbouncer::conffile, + target => $pgbouncer::conffile, content => template('pgbouncer/pgbouncer.ini.users.part2.erb'), order => '06', } - } diff --git a/metadata.json b/metadata.json index 17f47ba..df0bb60 100644 --- a/metadata.json +++ b/metadata.json @@ -2,16 +2,20 @@ "name": "covermymeds-pgbouncer", "version": "0.3.3", "author": "CJ Estel", - "license": "GPL-3.0+", "summary": "Deploys pgbouncer", + "license": "GPL-3.0+", "source": "https://github.com/covermymeds/puppet-pgbouncer.git", "project_page": "https://github.com/covermymeds/puppet-pgbouncer", "issues_url": "https://github.com/covermymeds/puppet-pgbouncer/issues", - "tags": [ - "postgres", - "pgbouncer", - "pool", - "proxy" + "dependencies": [ + { + "name": "puppetlabs-concat", + "version_requirement": ">=1.1.1" + }, + { + "name": "puppetlabs-postgresql", + "version_requirement": ">=4.3.0" + } ], "operatingsystem_support": [ { @@ -46,14 +50,19 @@ ] } ], - "dependencies": [ - { - "name": "puppetlabs-concat", - "version_requirement": ">=1.1.1" - }, - { - "name": "puppetlabs-postgresql", - "version_requirement": ">=4.3.0" + "requirements": [ + { + "name": "puppet", + "version_requirement": ">= 7.24 < 9.0.0" } - ] + ], + "tags": [ + "postgres", + "pgbouncer", + "pool", + "proxy" + ], + "pdk-version": "3.4.0", + "template-url": "https://github.com/puppetlabs/pdk-templates#main", + "template-ref": "tags/3.4.0.2-0-gd5f5ac1" } diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 5fda588..ae7c1f6 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,17 +1,75 @@ -dir = File.expand_path(File.dirname(__FILE__)) -$LOAD_PATH.unshift File.join(dir, 'lib') +# frozen_string_literal: true -require 'mocha' -require 'puppet' -require 'rspec' -require 'spec/autorun' +RSpec.configure do |c| + c.mock_with :rspec +end + +require 'puppetlabs_spec_helper/module_spec_helper' +require 'rspec-puppet-facts' + +require 'spec_helper_local' if File.file?(File.join(File.dirname(__FILE__), 'spec_helper_local.rb')) + +include RspecPuppetFacts + +default_facts = { + puppetversion: Puppet.version, + facterversion: Facter.version, +} + +default_fact_files = [ + File.expand_path(File.join(File.dirname(__FILE__), 'default_facts.yml')), + File.expand_path(File.join(File.dirname(__FILE__), 'default_module_facts.yml')), +] + +default_fact_files.each do |f| + next unless File.exist?(f) && File.readable?(f) && File.size?(f) -Spec::Runner.configure do |config| - config.mock_with :mocha + begin + require 'deep_merge' + default_facts.deep_merge!(YAML.safe_load(File.read(f), permitted_classes: [], permitted_symbols: [], aliases: true)) + rescue StandardError => e + RSpec.configuration.reporter.message "WARNING: Unable to load #{f}: #{e}" + end end -# We need this because the RAL uses 'should' as a method. This -# allows us the same behaviour but with a different method name. -class Object - alias :must :should +# read default_facts and merge them over what is provided by facterdb +default_facts.each do |fact, value| + add_custom_fact fact, value, merge_facts: true end + +RSpec.configure do |c| + c.default_facts = default_facts + c.before :each do + # set to strictest setting for testing + # by default Puppet runs at warning level + Puppet.settings[:strict] = :warning + Puppet.settings[:strict_variables] = true + end + c.filter_run_excluding(bolt: true) unless ENV['GEM_BOLT'] + c.after(:suite) do + RSpec::Puppet::Coverage.report!(0) + end + + # Filter backtrace noise + backtrace_exclusion_patterns = [ + %r{spec_helper}, + %r{gems}, + ] + + if c.respond_to?(:backtrace_exclusion_patterns) + c.backtrace_exclusion_patterns = backtrace_exclusion_patterns + elsif c.respond_to?(:backtrace_clean_patterns) + c.backtrace_clean_patterns = backtrace_exclusion_patterns + end +end + +# Ensures that a module is defined +# @param module_name Name of the module +def ensure_module_defined(module_name) + module_name.split('::').reduce(Object) do |last_module, next_module| + last_module.const_set(next_module, Module.new) unless last_module.const_defined?(next_module, false) + last_module.const_get(next_module, false) + end +end + +# 'spec_overrides' from sync.yml will appear below this line diff --git a/tests/init.pp b/tests/init.pp index 92800fd..64b12d5 100644 --- a/tests/init.pp +++ b/tests/init.pp @@ -1,3 +1,3 @@ -class {'pgbouncer': - auth_list => [ "\"postgres\" \"postgres\""], +class { 'pgbouncer': + auth_list => ["\"postgres\" \"postgres\""], } From bd8399d2087eb3a04dd77f71aff056c642f393ae Mon Sep 17 00:00:00 2001 From: Nuno Date: Thu, 16 Jan 2025 10:22:27 +0100 Subject: [PATCH 7/9] typo in variable type --- manifests/params.pp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifests/params.pp b/manifests/params.pp index bbbc57a..1babce3 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -5,7 +5,7 @@ class pgbouncer::params ( Array $userlist = [], Array $databases = [], - Sting $paramtmpfile = '/tmp/pgbouncer-paramtmpfile', + String $paramtmpfile = '/tmp/pgbouncer-paramtmpfile', Hash $config_params = undef, String $pgbouncer_package_name = 'pgbouncer', String $deb_default_file = '', From 9eec7c409403b1578efb4b85a4781212d1e92738 Mon Sep 17 00:00:00 2001 From: Nuno Date: Thu, 16 Jan 2025 10:31:41 +0100 Subject: [PATCH 8/9] typo in variable type --- manifests/params.pp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifests/params.pp b/manifests/params.pp index 1babce3..15b6bc1 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -6,7 +6,7 @@ Array $userlist = [], Array $databases = [], String $paramtmpfile = '/tmp/pgbouncer-paramtmpfile', - Hash $config_params = undef, + Hash $config_params = {}, String $pgbouncer_package_name = 'pgbouncer', String $deb_default_file = '', Boolean $service_start_with_system = true, From 58e8592a30f2e2aa3571434dc788492aa029971a Mon Sep 17 00:00:00 2001 From: nunomigsilva Date: Fri, 17 Jan 2025 11:43:47 +0000 Subject: [PATCH 9/9] migrate validate_array to data type --- manifests/databases.pp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/manifests/databases.pp b/manifests/databases.pp index e021eea..8d92c7c 100644 --- a/manifests/databases.pp +++ b/manifests/databases.pp @@ -4,9 +4,8 @@ # file # define pgbouncer::databases ( - $databases = [], + Array $databases = [], ) { - validate_array($databases) unless empty($databases[0]) { $uniq_name = "${databases[0]['dest_db']}_${databases[0]['auth_user']}"