diff --git a/CHANGELOG.md b/CHANGELOG.md index e28d5a2f94..487ea482a9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,25 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org). +## [v10.6.0](https://github.com/puppetlabs/puppetlabs-postgresql/tree/v10.6.0) - 2025-10-13 + +[Full Changelog](https://github.com/puppetlabs/puppetlabs-postgresql/compare/v10.5.0...v10.6.0) + +### Added + +- Allow puppetlabs/apt 11.x & puppet/systemd 9.x [#1645](https://github.com/puppetlabs/puppetlabs-postgresql/pull/1645) ([kenyon](https://github.com/kenyon)) +- Add support for Debian 13 (trixie) [#1638](https://github.com/puppetlabs/puppetlabs-postgresql/pull/1638) ([trefzer](https://github.com/trefzer)) +- Role: Add support for valid_until [#1624](https://github.com/puppetlabs/puppetlabs-postgresql/pull/1624) ([mooreandrew](https://github.com/mooreandrew)) + +### Fixed + +- Debian 11: Use correct package name for python bindings [#1647](https://github.com/puppetlabs/puppetlabs-postgresql/pull/1647) ([bastelfreak](https://github.com/bastelfreak)) +- Unbreak Debian support with custom encoding [#1564](https://github.com/puppetlabs/puppetlabs-postgresql/pull/1564) ([smortex](https://github.com/smortex)) + +### Other + +- (CAT-2296) Update github runner image to ubuntu-24.04 [#1636](https://github.com/puppetlabs/puppetlabs-postgresql/pull/1636) ([shubhamshinde360](https://github.com/shubhamshinde360)) + ## [v10.5.0](https://github.com/puppetlabs/puppetlabs-postgresql/tree/v10.5.0) - 2025-01-07 [Full Changelog](https://github.com/puppetlabs/puppetlabs-postgresql/compare/v10.4.0...v10.5.0) @@ -352,7 +371,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a ### Fixed -- Do not add version component to repo definition [#1282](https://github.com/puppetlabs/puppetlabs-postgresql/pull/1282) ([weastur](https://github.com/weastur)) +- Do not add version component to repo definition [#1282](https://github.com/puppetlabs/puppetlabs-postgresql/pull/1282) ([psapezhka](https://github.com/psapezhka)) - (MODULES-8700) Autorequire the service in postgresql_psql [#1276](https://github.com/puppetlabs/puppetlabs-postgresql/pull/1276) ([ekohl](https://github.com/ekohl)) ## [v7.2.0](https://github.com/puppetlabs/puppetlabs-postgresql/tree/v7.2.0) - 2021-05-24 diff --git a/REFERENCE.md b/REFERENCE.md index 247b58c952..bf3ffc306f 100644 --- a/REFERENCE.md +++ b/REFERENCE.md @@ -3677,6 +3677,7 @@ The following parameters are available in the `postgresql::server::role` defined * [`inherit`](#-postgresql--server--role--inherit) * [`superuser`](#-postgresql--server--role--superuser) * [`replication`](#-postgresql--server--role--replication) +* [`valid_until`](#-postgresql--server--role--valid_until) * [`connection_limit`](#-postgresql--server--role--connection_limit) * [`username`](#-postgresql--server--role--username) * [`connect_settings`](#-postgresql--server--role--connect_settings) @@ -3769,6 +3770,14 @@ Provides provides replication capabilities for this role if set to true. Default value: `false` +##### `valid_until` + +Data type: `Optional[String[1]]` + +Specifies whether to set a valid until date for the role. + +Default value: `undef` + ##### `connection_limit` Data type: `String[1]` diff --git a/lib/puppet/functions/postgresql/postgresql_password.rb b/lib/puppet/functions/postgresql/postgresql_password.rb index a444d5cd01..9ca4d81dbb 100644 --- a/lib/puppet/functions/postgresql/postgresql_password.rb +++ b/lib/puppet/functions/postgresql/postgresql_password.rb @@ -24,7 +24,8 @@ required_param 'Variant[String[1], Integer]', :username required_param 'Variant[String[1], Sensitive[String[1]], Integer]', :password optional_param 'Boolean', :sensitive - optional_param 'Optional[Postgresql::Pg_password_encryption]', :hash + # The following Enum is also defined in `types/pg_password_encryption.pp` but type alias can't be used in Deferred functions. + optional_param 'Optional[Enum["md5", "scram-sha-256"]]', :hash optional_param 'Optional[Variant[String[1], Integer]]', :salt return_type 'Variant[String, Sensitive[String]]' end diff --git a/manifests/globals.pp b/manifests/globals.pp index 64a4815fcc..f0eb07a9e8 100644 --- a/manifests/globals.pp +++ b/manifests/globals.pp @@ -210,6 +210,7 @@ '10' => '11', '11' => '13', '12' => '15', + '13' => '17', default => undef, }, 'Ubuntu' => $facts['os']['release']['major'] ? { diff --git a/manifests/params.pp b/manifests/params.pp index 8441aa829c..55dcd24c0f 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -161,9 +161,9 @@ $plpython_package_name = pick($plpython_package_name, "postgresql-plpython-${version}") $_ubuntu_2204 = ($facts['os']['name'] == 'Ubuntu' and versioncmp($facts['os']['release']['full'], '22.04') >= 0) - $_debian_12 = ($facts['os']['name'] == 'Debian' and versioncmp($facts['os']['release']['full'], '12') >= 0) + $_debian_11 = ($facts['os']['name'] == 'Debian' and versioncmp($facts['os']['release']['full'], '11') >= 0) - if $_ubuntu_2204 or $_debian_12 { + if $_ubuntu_2204 or $_debian_11 { $python_package_name = pick($python_package_name, 'python3-psycopg2') } else { $python_package_name = pick($python_package_name, 'python-psycopg2') diff --git a/metadata.json b/metadata.json index 6ad73624ec..82cb5fa869 100644 --- a/metadata.json +++ b/metadata.json @@ -1,6 +1,6 @@ { "name": "puppetlabs-postgresql", - "version": "10.5.0", + "version": "10.6.0", "author": "puppetlabs", "summary": "Offers support for basic management of PostgreSQL databases.", "license": "Apache-2.0", @@ -14,11 +14,11 @@ }, { "name": "puppetlabs/apt", - "version_requirement": ">= 9.2.0 < 11.0.0" + "version_requirement": ">= 9.2.0 < 12.0.0" }, { "name": "puppet/systemd", - "version_requirement": ">= 4.0.1 < 9.0.0" + "version_requirement": ">= 4.0.1 < 10.0.0" }, { "name": "puppetlabs/concat", @@ -60,7 +60,8 @@ "operatingsystemrelease": [ "10", "11", - "12" + "12", + "13" ] }, { diff --git a/spec/acceptance/db_deferred_spec.rb b/spec/acceptance/db_deferred_spec.rb new file mode 100644 index 0000000000..731e0742b8 --- /dev/null +++ b/spec/acceptance/db_deferred_spec.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +require 'spec_helper_acceptance' + +describe 'postgresql::server::db:' do + let(:user) { 'user_test' } + let(:password) { 'deferred_password_test' } + let(:database) { 'test_database' } + + let(:pp_one) do + <<~MANIFEST + $user = '#{user}' + $password = '#{password}' + $database = '#{database}' + + include postgresql::server + postgresql::server::db { $database: + user => $user, + password => Deferred('unwrap', [$password]), + } + MANIFEST + end + + it 'creates a database with with the password in the deferred function' do + apply_manifest(pp_one) + psql_cmd = "PGPASSWORD=#{password} PGUSER=#{user} PGDATABASE=#{database} psql -h 127.0.0.1 -d postgres -c '\\q'" + run_shell("cd /tmp; su #{shellescape('postgres')} -c #{shellescape(psql_cmd)}", + acceptable_exit_codes: [0]) + end +end diff --git a/spec/classes/lib/python_spec.rb b/spec/classes/lib/python_spec.rb index 86093bc7e0..64e426ca39 100644 --- a/spec/classes/lib/python_spec.rb +++ b/spec/classes/lib/python_spec.rb @@ -30,7 +30,18 @@ it { expect(subject).to contain_package('python-psycopg2').with( - name: 'python-psycopg2', + name: 'python3-psycopg2', + ensure: 'present', + ) + } + end + + describe 'on debian 12' do + include_examples 'Debian 12' + + it { + expect(subject).to contain_package('python-psycopg2').with( + name: 'python3-psycopg2', ensure: 'present', ) } diff --git a/spec/spec_helper_local.rb b/spec/spec_helper_local.rb index c9603be72a..930b943217 100644 --- a/spec/spec_helper_local.rb +++ b/spec/spec_helper_local.rb @@ -184,6 +184,10 @@ def param(type, title, param) let(:facts) { on_supported_os['debian-11-x86_64'] } end +shared_context 'Debian 12' do + let(:facts) { on_supported_os['debian-12-x86_64'] } +end + shared_context 'Ubuntu 18.04' do let(:facts) { on_supported_os['ubuntu-18.04-x86_64'] } end diff --git a/types/pg_password_encryption.pp b/types/pg_password_encryption.pp index b2b5be66e5..7512174a89 100644 --- a/types/pg_password_encryption.pp +++ b/types/pg_password_encryption.pp @@ -1,2 +1,4 @@ # @summary the supported password_encryption +# Note that this Enum is also defined in: +# lib/puppet/functions/postgresql/postgresql_password.rb type Postgresql::Pg_password_encryption = Enum['md5', 'scram-sha-256']