Skip to content

Commit 1e4372b

Browse files
authored
Merge pull request #65 from m0dular/SUP-2404-systemd-timers
SUP-2404 systemd timers
2 parents 13bc998 + 283b2dc commit 1e4372b

18 files changed

+281
-429
lines changed

.sync.yml

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,18 +34,11 @@ spec/spec_helper.rb:
3434
coverage_report: true
3535
spec/default_facts.yml:
3636
extra_facts:
37-
pe_server_version: 2018.1.0
38-
memory:
39-
"system":
40-
"total": "16.00 GiB"
41-
"total_bytes": 17179869184
42-
processors:
43-
"count": 8
44-
spec/default_facts.yml:
45-
extra_facts:
37+
pe_databases:
38+
have_systemd: true
4639
pe_postgresql_info:
47-
installed_server_version: 9.6
48-
pe_server_version: 2018.1.0
40+
installed_server_version: 11
41+
pe_server_version: 2019.8.6
4942
memory:
5043
system:
5144
total: 16.00 GiB

files/vacuum_full_tables.sh

Lines changed: 0 additions & 43 deletions
This file was deleted.

lib/facter/pe_databases.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
Facter.add(:pe_databases, type: :aggregate) do
2+
confine kernel: 'Linux'
3+
4+
chunk(:have_systemd) do
5+
if Puppet::FileSystem.exist?('/proc/1/comm') && Puppet::FileSystem.read('/proc/1/comm').include?('systemd')
6+
{ have_systemd: true }
7+
else
8+
{ have_systemd: false }
9+
end
10+
end
11+
end

manifests/collect.pp

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Create systemd units for repacking a given database type
2+
define pe_databases::collect (
3+
String $database_type = $title,
4+
String $command = undef,
5+
Boolean $disable_maintenance = false,
6+
String $on_cal = undef,
7+
) {
8+
9+
Service {
10+
notify => Exec['pe_databases_daemon_reload'],
11+
}
12+
File {
13+
notify => Exec['pe_databases_daemon_reload'],
14+
}
15+
16+
$ensure_service = $disable_maintenance ? {
17+
true => stopped,
18+
default => running,
19+
}
20+
21+
$ensure_file = $disable_maintenance ? {
22+
true => absent,
23+
default => present
24+
}
25+
26+
file {"/etc/systemd/system/pe_databases-${database_type}.service":
27+
ensure => $ensure_file,
28+
content => epp('pe_databases/service.epp', { 'tables' => $database_type, 'command' => $command }),
29+
}
30+
file {"/etc/systemd/system/pe_databases-${database_type}.timer":
31+
ensure => $ensure_file,
32+
content => epp('pe_databases/timer.epp', { 'tables' => $database_type, 'on_cal' => $on_cal }),
33+
}
34+
35+
service { "pe_databases-${database_type}.service": }
36+
service { "pe_databases-${database_type}.timer":
37+
ensure => $ensure_service,
38+
enable => ! $disable_maintenance,
39+
subscribe => File["/etc/systemd/system/pe_databases-${database_type}.timer"],
40+
}
41+
}

manifests/init.pp

Lines changed: 31 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# @summary Tuning, maintenance, and backups for PE PostgreSQL.
44

55
class pe_databases (
6-
Boolean $manage_database_backups = true,
6+
Boolean $manage_database_backups = false,
77
Boolean $manage_database_maintenance = true,
88
Boolean $manage_postgresql_settings = true,
99
Boolean $manage_table_settings = true,
@@ -21,27 +21,39 @@
2121
mode => '0755',
2222
}
2323

24-
if $manage_database_maintenance {
25-
include pe_databases::maintenance
24+
exec { 'pe_databases_daemon_reload':
25+
command => 'systemctl daemon-reload',
26+
path => ['/bin', '/usr/bin'],
27+
refreshonly => true,
2628
}
2729

28-
# Do not manage postgresql_settings in 2018.1.0 or newer.
29-
if $manage_postgresql_settings and (versioncmp('2018.1.0', $facts['pe_server_version']) > 0) {
30-
include pe_databases::postgresql_settings
31-
class { 'pe_databases::postgresql_settings::table_settings' :
32-
manage_reports_autovacuum_cost_delay => $pe_databases::postgresql_settings::manage_reports_autovacuum_cost_delay,
33-
factsets_autovacuum_vacuum_scale_factor => $pe_databases::postgresql_settings::factsets_autovacuum_vacuum_scale_factor,
34-
reports_autovacuum_vacuum_scale_factor => $pe_databases::postgresql_settings::reports_autovacuum_vacuum_scale_factor,
35-
require => Class['pe_databases::postgresql_settings'],
30+
if $facts.dig('pe_databases', 'have_systemd') {
31+
if $manage_database_maintenance and (versioncmp('2019.0.2', $facts['pe_server_version']) <= 0) {
32+
class {'pe_databases::pg_repack':
33+
disable_maintenance => lookup('pe_databases::maintenance::disable_maintenance', {'default_value' => false}),
34+
}
35+
if $manage_table_settings {
36+
# This is to provide for situations, like PE XL,
37+
# where the pe-puppetdb database does not exist on the PostgreSQL system being tuned.
38+
# In PE XL, the Master and Replica run PostgreSQL for all databases *except* for pe-puppetdb.
39+
include pe_databases::postgresql_settings::table_settings
40+
}
41+
42+
if $manage_database_backups {
43+
include pe_databases::backup
44+
}
45+
}
46+
else {
47+
notify { 'pe_databases_version_warn':
48+
message => 'This module only supports PE 2019.0.2 and later',
49+
loglevel => warning,
50+
}
3651
}
37-
} elsif $manage_table_settings {
38-
# This is to provide for situations, like PE XL,
39-
# where the pe-puppetdb database does not exist on the PostgreSQL system being tuned.
40-
# In PE XL, the Master and Replica run PostgreSQL for all databases *except* for pe-puppetdb.
41-
include pe_databases::postgresql_settings::table_settings
4252
}
43-
44-
if $manage_database_backups {
45-
include pe_databases::backup
53+
else {
54+
notify { 'pe_databases_systemd_warn':
55+
message => 'This module only works with systemd as the provider',
56+
loglevel => warning,
57+
}
4658
}
4759
}

manifests/maintenance.pp

Lines changed: 0 additions & 31 deletions
This file was deleted.

manifests/maintenance/pg_repack.pp

Lines changed: 0 additions & 94 deletions
This file was deleted.

manifests/maintenance/vacuum_full.pp

Lines changed: 0 additions & 68 deletions
This file was deleted.

0 commit comments

Comments
 (0)