From 10b5d37f6944fa2c2d28f78fdbdfc6d8a3d0acd2 Mon Sep 17 00:00:00 2001 From: Carlos Duelo Date: Mon, 1 Nov 2021 14:55:25 +0300 Subject: [PATCH 1/4] not installing postgresql-contrib if not need to - In debian families: postgresql-contrib is a virtual package and it is not needed to be installed. - Archlinux does have postgresql-contrib but it isn't maintained - Gentoo provides contrib in the main package Referencies: https://packages.debian.org/bullseye/postgresql-contrib-13 https://packages.ubuntu.com/bionic/postgresql-contrib --- manifests/params.pp | 4 ---- manifests/server/contrib.pp | 28 +++++++++++++--------------- 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/manifests/params.pp b/manifests/params.pp index c63ac771fd..70fbdba444 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -135,8 +135,6 @@ $java_package_name = pick($java_package_name, 'postgresql-jdbc') # Archlinux doesn't have develop packages $devel_package_name = pick($devel_package_name, 'postgresql-devel') - # Archlinux does have postgresql-contrib but it isn't maintained - $contrib_package_name = pick($contrib_package_name,'undef') # Archlinux postgresql package provides plperl $plperl_package_name = pick($plperl_package_name, 'undef') $plpython_package_name = pick($plpython_package_name, 'undef') @@ -163,7 +161,6 @@ $client_package_name = pick($client_package_name, "postgresql-client-${version}") $server_package_name = pick($server_package_name, "postgresql-${version}") - $contrib_package_name = pick($contrib_package_name, "postgresql-contrib-${version}") if $postgis_version and versioncmp($postgis_version, '2') < 0 { $postgis_package_name = pick($postgis_package_name, "postgresql-${version}-postgis") } elsif $postgis_version and versioncmp($postgis_version, '3') >= 0 { @@ -203,7 +200,6 @@ $client_package_name = pick($client_package_name, 'UNSET') $server_package_name = pick($server_package_name, 'postgresql') - $contrib_package_name = pick_default($contrib_package_name, undef) $devel_package_name = pick_default($devel_package_name, undef) $java_package_name = pick($java_package_name, 'jdbc-postgresql') $perl_package_name = pick($perl_package_name, 'DBD-Pg') diff --git a/manifests/server/contrib.pp b/manifests/server/contrib.pp index 0cd8e5834f..ef5c3e26b6 100644 --- a/manifests/server/contrib.pp +++ b/manifests/server/contrib.pp @@ -5,22 +5,20 @@ # @param package_ensure # Ensure the contrib package is installed. class postgresql::server::contrib ( - String $package_name = $postgresql::params::contrib_package_name, - String[1] $package_ensure = 'present' + Optional[String[1]] $package_name = $postgresql::params::contrib_package_name, + String[1] $package_ensure = 'present' ) inherits postgresql::params { - if $facts['os']['family'] == 'Gentoo' { - fail('osfamily Gentoo does not have a separate "contrib" package, postgresql::server::contrib is not supported.') - } + if $package_name { + package { 'postgresql-contrib': + ensure => $package_ensure, + name => $package_name, + tag => 'puppetlabs-postgresql', + } - package { 'postgresql-contrib': - ensure => $package_ensure, - name => $package_name, - tag => 'puppetlabs-postgresql', + anchor { 'postgresql::server::contrib::start': } + -> Class['postgresql::server::install'] + -> Package['postgresql-contrib'] + -> Class['postgresql::server::service'] + anchor { 'postgresql::server::contrib::end': } } - - anchor { 'postgresql::server::contrib::start': } - -> Class['postgresql::server::install'] - -> Package['postgresql-contrib'] - -> Class['postgresql::server::service'] - anchor { 'postgresql::server::contrib::end': } } From f10a335af73b95e0ff64bc2d1e40b62fc1070fbe Mon Sep 17 00:00:00 2001 From: Carlos Duelo Date: Wed, 10 Nov 2021 11:53:30 +0300 Subject: [PATCH 2/4] fixing unit testing contrib package Now the contrib package is not installed in Debian So test must check RedHat for exmaple Gentoo is not failing so raise check should not be done anymore. --- spec/unit/classes/server/contrib_spec.rb | 25 ++++++------------------ 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/spec/unit/classes/server/contrib_spec.rb b/spec/unit/classes/server/contrib_spec.rb index d332adee51..4b66522a8e 100644 --- a/spec/unit/classes/server/contrib_spec.rb +++ b/spec/unit/classes/server/contrib_spec.rb @@ -10,9 +10,12 @@ let :facts do { os: { - family: 'Debian', - name: 'Debian', - release: { 'full' => '8.0', 'major' => '8' }, + family: 'RedHat', + name: 'RedHat', + release: { 'major' => '8' }, + selinux: { + enabled: false, + }, }, kernel: 'Linux', id: 'root', @@ -41,20 +44,4 @@ end end - describe 'on Gentoo' do - let :facts do - { - os: { - family: 'Gentoo', - name: 'Gentoo', - }, - } - end - - it 'fails to compile' do - expect { - is_expected.to compile - }.to raise_error(%r{is not supported}) - end - end end From 2140b72d5101861afde7bef5aff167c1eb79f7af Mon Sep 17 00:00:00 2001 From: Carlos Duelo Date: Mon, 15 Nov 2021 16:44:23 +0300 Subject: [PATCH 3/4] fix: Layout/EmptyLinesAroundBlockBody: Extra empty line detected at block body end --- spec/unit/classes/server/contrib_spec.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/spec/unit/classes/server/contrib_spec.rb b/spec/unit/classes/server/contrib_spec.rb index 4b66522a8e..8f87929da4 100644 --- a/spec/unit/classes/server/contrib_spec.rb +++ b/spec/unit/classes/server/contrib_spec.rb @@ -43,5 +43,4 @@ is_expected.to contain_package('postgresql-contrib').with(tag: 'puppetlabs-postgresql') end end - end From 6d7ca602d7d70b9fff51f64d235e1ab689ae061b Mon Sep 17 00:00:00 2001 From: Carlos Duelo Date: Wed, 17 Nov 2021 09:32:37 +0300 Subject: [PATCH 4/4] add tests for new implementation contrib --- spec/unit/classes/server/contrib_spec.rb | 33 ++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/spec/unit/classes/server/contrib_spec.rb b/spec/unit/classes/server/contrib_spec.rb index 8f87929da4..33f11c9d30 100644 --- a/spec/unit/classes/server/contrib_spec.rb +++ b/spec/unit/classes/server/contrib_spec.rb @@ -43,4 +43,37 @@ is_expected.to contain_package('postgresql-contrib').with(tag: 'puppetlabs-postgresql') end end + + describe 'on Gentoo' do + let :facts do + { + os: { + family: 'Gentoo', + name: 'Gentoo', + }, + } + end + + it 'postgresql-contrib should not be installed' do + is_expected.to compile + is_expected.not_to contain_package('postgresql-contrib') + end + end + + describe 'on Debian' do + let :facts do + { + os: { + family: 'Debian', + name: 'Debian', + release: { 'full' => '8.0', 'major' => '8' }, + }, + } + end + + it 'postgresql-contrib should not be installed' do + is_expected.to compile + is_expected.not_to contain_package('postgresql-contrib') + end + end end