From 0015374a8da630665d9c78a86766174bbbe25917 Mon Sep 17 00:00:00 2001 From: "Eric D. Helms" Date: Wed, 8 Jan 2020 14:20:33 -0500 Subject: [PATCH] Fixes #28697: Add Postgres upgrade to Foreman scenario --- config/foreman.hiera/family/RedHat-7.yaml | 10 ++++++++++ .../foreman-proxy-content/family/RedHat-7.yaml | 9 --------- .../scenario/katello/family/RedHat-7.yaml | 9 --------- hooks/boot/01-kafo-hook-extensions.rb | 12 ++++++++++++ hooks/pre/30-el7_upgrade_postgresql.rb | 15 +++++++++++++++ .../pre/31-el7_install_postgresql.rb | 2 +- .../pre_validations/30-el7_upgrade_postgresql.rb | 8 ++++---- katello/hooks/pre/30-upgrade.rb | 16 ---------------- 8 files changed, 42 insertions(+), 39 deletions(-) delete mode 100644 config/foreman.hiera/scenario/foreman-proxy-content/family/RedHat-7.yaml delete mode 100644 config/foreman.hiera/scenario/katello/family/RedHat-7.yaml create mode 100644 hooks/pre/30-el7_upgrade_postgresql.rb rename katello/hooks/pre/29-install_postgresql.rb => hooks/pre/31-el7_install_postgresql.rb (61%) rename katello/hooks/pre_validations/32-upgrade.rb => hooks/pre_validations/30-el7_upgrade_postgresql.rb (65%) diff --git a/config/foreman.hiera/family/RedHat-7.yaml b/config/foreman.hiera/family/RedHat-7.yaml index 6fda065a8..671edbd6b 100644 --- a/config/foreman.hiera/family/RedHat-7.yaml +++ b/config/foreman.hiera/family/RedHat-7.yaml @@ -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 diff --git a/config/foreman.hiera/scenario/foreman-proxy-content/family/RedHat-7.yaml b/config/foreman.hiera/scenario/foreman-proxy-content/family/RedHat-7.yaml deleted file mode 100644 index f3a624449..000000000 --- a/config/foreman.hiera/scenario/foreman-proxy-content/family/RedHat-7.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -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 diff --git a/config/foreman.hiera/scenario/katello/family/RedHat-7.yaml b/config/foreman.hiera/scenario/katello/family/RedHat-7.yaml deleted file mode 100644 index f3a624449..000000000 --- a/config/foreman.hiera/scenario/katello/family/RedHat-7.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -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 diff --git a/hooks/boot/01-kafo-hook-extensions.rb b/hooks/boot/01-kafo-hook-extensions.rb index 495fccdb1..99b05c5a2 100644 --- a/hooks/boot/01-kafo-hook-extensions.rb +++ b/hooks/boot/01-kafo-hook-extensions.rb @@ -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 diff --git a/hooks/pre/30-el7_upgrade_postgresql.rb b/hooks/pre/30-el7_upgrade_postgresql.rb new file mode 100644 index 000000000..8c9e2fa29 --- /dev/null +++ b/hooks/pre/30-el7_upgrade_postgresql.rb @@ -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 diff --git a/katello/hooks/pre/29-install_postgresql.rb b/hooks/pre/31-el7_install_postgresql.rb similarity index 61% rename from katello/hooks/pre/29-install_postgresql.rb rename to hooks/pre/31-el7_install_postgresql.rb index b68c51bda..12fcbfa5e 100644 --- a/katello/hooks/pre/29-install_postgresql.rb +++ b/hooks/pre/31-el7_install_postgresql.rb @@ -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 diff --git a/katello/hooks/pre_validations/32-upgrade.rb b/hooks/pre_validations/30-el7_upgrade_postgresql.rb similarity index 65% rename from katello/hooks/pre_validations/32-upgrade.rb rename to hooks/pre_validations/30-el7_upgrade_postgresql.rb index 5b2db2d45..9994c8e95 100644 --- a/katello/hooks/pre_validations/32-upgrade.rb +++ b/hooks/pre_validations/30-el7_upgrade_postgresql.rb @@ -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' @@ -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 diff --git a/katello/hooks/pre/30-upgrade.rb b/katello/hooks/pre/30-upgrade.rb index c13eff594..fb4cb041f 100644 --- a/katello/hooks/pre/30-upgrade.rb +++ b/katello/hooks/pre/30-upgrade.rb @@ -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) ' : '' @@ -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