Showing with 105 additions and 29 deletions.
  1. +0 −2 .github/workflows/call_nightly.yml
  2. +3 −6 .github/workflows/release.yml
  3. +8 −0 CHANGELOG.md
  4. +19 −0 REFERENCE.md
  5. +26 −0 data/rspec.yaml
  6. +10 −0 hiera-rspec.yaml
  7. +10 −1 manifests/pg_repack.pp
  8. +1 −1 metadata.json
  9. +26 −17 spec/classes/pg_repack_spec.rb
  10. +1 −1 spec/fixtures/matrix/latest.json
  11. +1 −1 spec/fixtures/matrix/lts.json
2 changes: 0 additions & 2 deletions .github/workflows/call_nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ name: Call nightly testing workflows

on:
workflow_dispatch:
schedule:
- cron: '25 5 * * 3'

jobs:
spec_testing:
Expand Down
9 changes: 3 additions & 6 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,12 @@ jobs:
id: gv
run: |
echo "ver=$(jq --raw-output .version metadata.json)" >> $GITHUB_OUTPUT
- name: Create Release
uses: actions/create-release@v1
- name: Create release
id: create_release
run: |
gh release create v${{ steps.gv.outputs.ver }} --title v${{ steps.gv.outputs.ver }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: "v${{ steps.gv.outputs.ver }}"
draft: false
prerelease: false

deploy-forge:
name: Deploy to Forge
Expand Down
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@

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).

## [v4.1.0](https://github.com/puppetlabs/puppetlabs-pe_databases/tree/v4.1.0) (2024-01-31)

[Full Changelog](https://github.com/puppetlabs/puppetlabs-pe_databases/compare/v4.0.0...v4.1.0)

### Added

- \(SUP-4666\) Pe\_databases: pg\_repack enable debug mode [\#126](https://github.com/puppetlabs/puppetlabs-pe_databases/pull/126) ([Aaronoftheages](https://github.com/Aaronoftheages))

## [v4.0.0](https://github.com/puppetlabs/puppetlabs-pe_databases/tree/v4.0.0) (2023-06-23)

[Full Changelog](https://github.com/puppetlabs/puppetlabs-pe_databases/compare/v3.0.0...v4.0.0)
Expand Down
19 changes: 19 additions & 0 deletions REFERENCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,8 @@ The following parameters are available in the `pe_databases::pg_repack` class:
* [`other_tables`](#-pe_databases--pg_repack--other_tables)
* [`activity_tables`](#-pe_databases--pg_repack--activity_tables)
* [`disable_maintenance`](#-pe_databases--pg_repack--disable_maintenance)
* [`repack_log_level`](#-pe_databases--pg_repack--repack_log_level)
* [`enable_echo`](#-pe_databases--pg_repack--enable_echo)
* [`jobs`](#-pe_databases--pg_repack--jobs)
* [`facts_tables_repack_timer`](#-pe_databases--pg_repack--facts_tables_repack_timer)
* [`catalogs_tables_repack_timer`](#-pe_databases--pg_repack--catalogs_tables_repack_timer)
Expand Down Expand Up @@ -184,6 +186,23 @@ Disable or enable maintenance mode

Default value: `false`

##### <a name="-pe_databases--pg_repack--repack_log_level"></a>`repack_log_level`

Data type: `Enum['INFO','NOTICE','WARNING','ERROR','LOG','FATAL','PANIC','DEBUG']`

Desired output level of logs

Default value: `'DEBUG'`

##### <a name="-pe_databases--pg_repack--enable_echo"></a>`enable_echo`

Data type: `Boolean`

true or false (Default: true)
Enabling echo output in logs

Default value: `true`

##### <a name="-pe_databases--pg_repack--jobs"></a>`jobs`

Data type: `Integer`
Expand Down
26 changes: 26 additions & 0 deletions data/rspec.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
pe_databases::facts_tables_repack_timer:
'Tue,Sat *-*-* 04:30:00'
pe_databases::catalogs_tables_repack_timer:
'Sun,Thu *-*-* 04:30:00'
pe_databases::other_tables_repack_timer:
'*-*-20 05:30:00'
pe_databases::activity_tables_repack_timer:
'Wed,Fri *-*-* 04:30:00'
pe_databases::pg_repack::fact_tables:
- factsets
- fact_paths
pe_databases::pg_repack::catalog_tables:
- catalogs
- catalog_resources
- catalog_inputs
- edges
- certnames
pe_databases::pg_repack::other_tables:
- producers
- resource_params
- resource_params_cache
pe_databases::pg_repack::activity_tables:
- events
- event_commits
pe_databases::pg_repack::repack_log_level: 'INFO'
pe_databases::pg_repack::enable_echo: false
10 changes: 10 additions & 0 deletions hiera-rspec.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
version: 5

defaults: # Used for any hierarchy level that omits these keys.
datadir: data # This path is relative to hiera.yaml's directory.
data_hash: yaml_data # Use the built-in YAML backend.

hierarchy:
- name: 'rspec'
path: 'rspec.yaml'
11 changes: 10 additions & 1 deletion manifests/pg_repack.pp
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
# @param activity_tables [Array] Array of 'activity' tables to repack
# @param disable_maintenance [Boolean] true or false (Default: false)
# Disable or enable maintenance mode
# @param repack_log_level [Enum] Desired output level of logs
# @param enable_echo [Boolean] true or false (Default: true)
# Enabling echo output in logs
# @param jobs [Integer] How many jobs to run in parallel
# @param facts_tables_repack_timer [String] The Systemd timer for the pg_repack job affecting the 'facts' tables
# @param catalogs_tables_repack_timer [String]The Systemd timer for the pg_repack job affecting the 'catalog' tables
Expand All @@ -22,6 +25,8 @@
Array $other_tables,
Array $activity_tables,
Boolean $disable_maintenance = false,
Enum['INFO','NOTICE','WARNING','ERROR','LOG','FATAL','PANIC','DEBUG'] $repack_log_level='DEBUG',
Boolean $enable_echo = true,
Integer $jobs = $facts['processors']['count'] / 4,
String[1] $facts_tables_repack_timer = $pe_databases::facts_tables_repack_timer,
String[1] $catalogs_tables_repack_timer = $pe_databases::catalogs_tables_repack_timer,
Expand All @@ -36,7 +41,11 @@
$postgresql_version = $facts['pe_postgresql_info']['installed_server_version']
$repack_executable = "/opt/puppetlabs/server/apps/postgresql/${postgresql_version}/bin/pg_repack"

$repack_cmd = "${repack_executable} --jobs ${jobs}"
if $enable_echo {
$repack_cmd = "${repack_executable} --jobs ${jobs} --elevel ${repack_log_level} --echo"
} else {
$repack_cmd = "${repack_executable} --jobs ${jobs} --elevel ${repack_log_level}"
}

pe_databases::collect { 'facts':
disable_maintenance => $disable_maintenance,
Expand Down
2 changes: 1 addition & 1 deletion metadata.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "puppetlabs-pe_databases",
"version": "4.0.0",
"version": "4.1.0",
"author": "puppetlabs",
"summary": "A Puppet Module for Maintaining Your Puppet Enterprise Databases",
"license": "Apache-2.0",
Expand Down
43 changes: 26 additions & 17 deletions spec/classes/pg_repack_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,36 +27,28 @@
}
}
end
let(:pre_condition) do
<<-PRE_COND
define puppet_enterprise::deprecated_parameter() {}
include pe_databases
PRE_COND
end

on_supported_os.each do |os, os_facts|
context "on #{os}" do
let(:pre_condition) do
<<-PRE_COND
define puppet_enterprise::deprecated_parameter() {}
include pe_databases
PRE_COND
end
let(:facts) { os_facts }

it { is_expected.to compile }
end
end

context 'with default parameters' do
let(:pre_condition) do
<<-PRE_COND
define puppet_enterprise::deprecated_parameter() {}
include pe_databases
PRE_COND
end

it {
tables_hash.each do |name, val|
is_expected.to contain_pe_databases__collect(name).with(
disable_maintenance: false,
command: "#{repack_cmd} #{val[:database]}",
command: "#{repack_cmd} --elevel DEBUG --echo #{val[:database]}",
# Strip the backslash character because this is not a regex
on_cal: (val[:schedule]).to_s.tr('\\', ''),
)
Expand All @@ -66,7 +58,7 @@

is_expected.to contain_file("/etc/systemd/system/pe_databases-#{name}.timer").with_content(%r{OnCalendar=#{val[:schedule]}})
is_expected.to contain_file("/etc/systemd/system/pe_databases-#{name}.service").with_content(
%r{ExecStart=#{repack_cmd} #{val[:database]} #{val[:tables]}},
%r{ExecStart=#{repack_cmd} --elevel DEBUG --echo #{val[:database]} #{val[:tables]}},
)

[
Expand Down Expand Up @@ -103,4 +95,21 @@ class {'pe_databases': facts_tables_repack_timer => 'Tue *-*-* 04:20:00'}
)
}
end

context 'when customizing log parameters' do
# Load the rspec hieradata. This data sets repack_log_level: 'INFO' and enable_echo: false
let(:hiera_config) { 'hiera-rspec.yaml' }

it {
# The command should have --elevel INFO and not contain --echo according to the hieradata
is_expected.to contain_pe_databases__collect('facts').with(
command: "#{repack_cmd} --elevel INFO #{tables_hash[:facts][:database]}",
)

# The service file should have --elevel INFO and not contain --echo according to the hieradata
is_expected.to contain_file('/etc/systemd/system/pe_databases-facts.service').with_content(
%r{ExecStart=#{repack_cmd} --elevel INFO #{tables_hash[:facts][:database]} #{tables_hash[:facts][:tables]}},
)
}
end
end
2 changes: 1 addition & 1 deletion spec/fixtures/matrix/latest.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"platforms":[{"label":"CentOS-7","provider":"provision::provision_service","image":"centos-7"},{"label":"RedHat-7","provider":"provision::provision_service","image":"rhel-7"},{"label":"Ubuntu-1804","provider":"provision::provision_service","image":"ubuntu-1804-lts"},{"label":"Ubuntu-2004","provider":"provision::provision_service","image":"ubuntu-2004-lts"},{"label":"RedHat-8","provider":"provision::provision_service","image":"rhel-8"},{"label":"Sles-12","provider":"provision::provision_service","image":"sles-12"},{"label":"AlmaLinux-8","provider":"provision::provision_service","image":"almalinux-cloud/almalinux-8"},{"label":"Rocky-Linux-8","provider":"provision::provision_service","image":"rocky-linux-cloud/rocky-linux-8"},{"label":"Sles-15","provider":"provision::provision_service","image":"sles-15"}]}
{"platforms":[{"label":"CentOS-7","provider":"provision::provision_service","image":"centos-7"},{"label":"RedHat-7","provider":"provision::provision_service","image":"rhel-7"},{"label":"RedHat-9","provider":"provision::provision_service","image":"rhel-9"},{"label":"Ubuntu-2004","provider":"provision::provision_service","image":"ubuntu-2004-lts"},{"label":"Ubuntu-2204","provider":"provision::provision_service","image":"ubuntu-2204-lts"},{"label":"RedHat-8","provider":"provision::provision_service","image":"rhel-8"},{"label":"Sles-12","provider":"provision::provision_service","image":"sles-12"},{"label":"AlmaLinux-8","provider":"provision::provision_service","image":"almalinux-cloud/almalinux-8"},{"label":"Rocky-Linux-8","provider":"provision::provision_service","image":"rocky-linux-cloud/rocky-linux-8"},{"label":"Sles-15","provider":"provision::provision_service","image":"sles-15"}, {"label":"Rocky-Linux-9" ,"provider":"provision::provision_service","image":"rocky-linux-cloud/rocky-linux-9" }, {"label" : "Alma-Linux-9", "provider":"provision::provision_service","image": "almalinux-cloud/almalinux-9" }]}
2 changes: 1 addition & 1 deletion spec/fixtures/matrix/lts.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"platforms":[{"label":"CentOS-7","provider":"provision::provision_service","image":"centos-7"},{"label":"RedHat-7","provider":"provision::provision_service","image":"rhel-7"},{"label":"Ubuntu-1804","provider":"provision::provision_service","image":"ubuntu-1804-lts"},{"label":"Ubuntu-2004","provider":"provision::provision_service","image":"ubuntu-2004-lts"},{"label":"RedHat-8","provider":"provision::provision_service","image":"rhel-8"},{"label":"Sles-12","provider":"provision::provision_service","image":"sles-12"},{"label":"Sles-15","provider":"provision::provision_service","image":"sles-15"},{"label":"AlmaLinux-8","provider":"provision::provision_service","image":"almalinux-cloud/almalinux-8"},{"label":"Rocky-Linux-8","provider":"provision::provision_service","image":"rocky-linux-cloud/rocky-linux-8"}]}
{"platforms":[{"label":"CentOS-7","provider":"provision::provision_service","image":"centos-7"},{"label":"RedHat-7","provider":"provision::provision_service","image":"rhel-7"},{"label":"RedHat-9","provider":"provision::provision_service","image":"rhel-9"},{"label":"Ubuntu-2004","provider":"provision::provision_service","image":"ubuntu-2004-lts"},{"label":"Ubuntu-2204","provider":"provision::provision_service","image":"ubuntu-2204-lts"},{"label":"RedHat-8","provider":"provision::provision_service","image":"rhel-8"},{"label":"Sles-12","provider":"provision::provision_service","image":"sles-12"},{"label":"AlmaLinux-8","provider":"provision::provision_service","image":"almalinux-cloud/almalinux-8"},{"label":"Rocky-Linux-8","provider":"provision::provision_service","image":"rocky-linux-cloud/rocky-linux-8"},{"label":"Sles-15","provider":"provision::provision_service","image":"sles-15"}, {"label":"Rocky-Linux-9" ,"provider":"provision::provision_service","image":"rocky-linux-cloud/rocky-linux-9" }, {"label" : "Alma-Linux-9", "provider":"provision::provision_service","image": "almalinux-cloud/almalinux-9" }]}