Skip to content

Commit

Permalink
Fixes #28697: Add Postgres upgrade to Foreman scenario
Browse files Browse the repository at this point in the history
  • Loading branch information
ehelms committed Jan 14, 2020
1 parent a42e6b2 commit 0015374
Show file tree
Hide file tree
Showing 8 changed files with 42 additions and 39 deletions.
10 changes: 10 additions & 0 deletions config/foreman.hiera/family/RedHat-7.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,14 @@ mongodb::server::logpath: false
mongodb::server::config_template: 'mongodb/mongodb.conf.2.6.erb'
mongodb::server::manage_pidfile: false
mongodb::server::pidfilepath: '/var/opt/rh/rh-mongodb34/run/mongodb/mongod.pid'

redis::globals::scl: rh-redis5

postgresql::globals::version: '10'
postgresql::globals::client_package_name: rh-postgresql10-postgresql-syspaths
postgresql::globals::server_package_name: rh-postgresql10-postgresql-server-syspaths
postgresql::globals::contrib_package_name: rh-postgresql10-postgresql-contrib-syspaths
postgresql::globals::service_name: postgresql
postgresql::globals::datadir: /var/opt/rh/rh-postgresql10/lib/pgsql/data
postgresql::globals::confdir: /var/opt/rh/rh-postgresql10/lib/pgsql/data
postgresql::globals::bindir: /usr/bin

This file was deleted.

9 changes: 0 additions & 9 deletions config/foreman.hiera/scenario/katello/family/RedHat-7.yaml

This file was deleted.

12 changes: 12 additions & 0 deletions hooks/boot/01-kafo-hook-extensions.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,18 @@ def local_postgresql?
param_value('foreman', 'db_manage') || param_value('katello', 'candlepin_manage_db')
end

def needs_postgresql_scl_upgrade?
!File.exist?('/var/opt/rh/rh-postgresql10/lib/pgsql/data')
end

def foreman_server?
module_enabled?('foreman')
end

def el7?
facts[:os][:release][:major] == '7' && facts[:os][:family] == 'RedHat'
end

def log_and_say(level, message, do_say = true, do_log = true)
style = case level
when :error
Expand Down
15 changes: 15 additions & 0 deletions hooks/pre/30-el7_upgrade_postgresql.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
def postgresql_10_upgrade
execute('foreman-maintain service start --only=postgresql')
(name, owner, enconding, collate, ctype, privileges) = %x{runuser postgres -c 'psql -lt | grep -E "^\s+postgres"'}.chomp.split('|').map(&:strip)
execute('foreman-maintain service stop')
ensure_package('rh-postgresql10-postgresql-server', 'installed')
execute(%Q{scl enable rh-postgresql10 "PGSETUP_INITDB_OPTIONS='--lc-collate=#{collate} --lc-ctype=#{ctype} --locale=#{collate}' postgresql-setup --upgrade"})
ensure_package('postgresql-server', 'absent')
ensure_package('postgresql', 'absent')
execute('rm -f /etc/systemd/system/postgresql.service')
ensure_package('rh-postgresql10-syspaths', 'installed')
end

if local_postgresql? && el7? && foreman_server? && needs_postgresql_scl_upgrade?
postgresql_10_upgrade
end
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Working around https://tickets.puppetlabs.com/browse/PUP-2169
if local_postgresql? && facts[:os][:release][:major] == '7' && !app_value(:upgrade)
if local_postgresql? && el7?
ensure_package('rh-postgresql10-postgresql-server', 'installed')
end
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ def check_postgresql_storage
new_postgres_dir = '/var/opt/rh/rh-postgresql10/lib/pgsql'

begin
postgres_size = `du -b -s #{current_postgres_dir}`.split[0].to_i
postgres_size = `du --bytes --summarize #{current_postgres_dir}`.split[0].to_i

if available_space(new_postgres_dir) < postgres_size
fail_and_exit "The postgres upgrade requires at least #{(postgres_size / 1024) / 1024} MB of storage."
fail_and_exit "The PostgreSQL upgrade requires at least #{(postgres_size / 1024) / 1024} MB of storage to be available at #{new_postgres_dir}."
end
rescue StandardError
fail_and_exit 'Failed to verify available disk space'
Expand All @@ -23,6 +23,6 @@ def available_space(directory = nil)
mountpoint[:available_bytes]
end

if app_value(:upgrade)
check_postgresql_storage if local_postgresql?
if local_postgresql? && el7? && foreman_server? && needs_postgresql_scl_upgrade?
check_postgresql_storage
end
16 changes: 0 additions & 16 deletions katello/hooks/pre/30-upgrade.rb
Original file line number Diff line number Diff line change
Expand Up @@ -29,18 +29,6 @@ def migrate_candlepin
execute("/usr/share/candlepin/cpdb --update --database '#{db_uri}' --user '#{db_user}' --password '#{db_password}'")
end

def postgresql_10_upgrade
start_postgresql
(name, owner, enconding, collate, ctype, privileges) = %x{runuser postgres -c 'psql -lt | grep -E "^\s+postgres"'}.chomp.split('|').map(&:strip)
stop_services
ensure_package('rh-postgresql10-postgresql-server', 'installed')
execute(%Q{scl enable rh-postgresql10 "PGSETUP_INITDB_OPTIONS='--lc-collate=#{collate} --lc-ctype=#{ctype} --locale=#{collate}' postgresql-setup --upgrade"})
ensure_package('postgresql-server', 'absent')
ensure_package('postgresql', 'absent')
execute('rm -f /etc/systemd/system/postgresql.service')
ensure_package('rh-postgresql10-syspaths', 'installed')
end

def upgrade_step(step, options = {})
noop = app_value(:noop) ? ' (noop)' : ''
long_running = options[:long_running] ? ' (this may take a while) ' : ''
Expand Down Expand Up @@ -87,9 +75,5 @@ def step_path(step)
upgrade_step :migrate_candlepin, :run_always => true
end

if local_postgresql? && facts[:os][:release][:major] == '7'
upgrade_step :postgresql_10_upgrade
end

log_and_say :info, 'Upgrade Step: Running installer...'
end

0 comments on commit 0015374

Please sign in to comment.