diff --git a/hooks/boot/06-postgresql-upgrade-extensions.rb b/hooks/boot/06-postgresql-upgrade-extensions.rb index bbc3d5d8..0960d483 100644 --- a/hooks/boot/06-postgresql-upgrade-extensions.rb +++ b/hooks/boot/06-postgresql-upgrade-extensions.rb @@ -2,11 +2,15 @@ module PostgresqlUpgradeHookContextExtension def needs_postgresql_upgrade?(new_version) - File.read('/var/lib/pgsql/data/PG_VERSION').chomp.to_i < new_version.to_i + current_version.to_i < new_version.to_i rescue Errno::ENOENT false end + def current_version + File.read('/var/lib/pgsql/data/PG_VERSION').chomp + end + def os_needs_postgresql_upgrade? el8? && needs_postgresql_upgrade?(13) end @@ -14,6 +18,7 @@ def os_needs_postgresql_upgrade? def postgresql_upgrade(new_version) logger.notice("Performing upgrade of PostgreSQL to #{new_version}") + execute!("dnf module switch-to postgresql:#{current_version} -y", false, true) start_services(['postgresql']) postgres_list = `runuser -l postgres -c 'psql --list --tuples-only --csv'` postgres_databases = CSV.parse(postgres_list) diff --git a/spec/postgresql_upgrade_hook_context_extension_spec.rb b/spec/postgresql_upgrade_hook_context_extension_spec.rb index 1facfeb0..0dec7fb7 100644 --- a/spec/postgresql_upgrade_hook_context_extension_spec.rb +++ b/spec/postgresql_upgrade_hook_context_extension_spec.rb @@ -31,6 +31,7 @@ subject { context.postgresql_upgrade(13) } before do + allow(File).to receive(:read).with('/var/lib/pgsql/data/PG_VERSION').and_return('12') allow(context).to receive(:logger).and_return(logger) allow(context).to receive(:'execute!') allow(context).to receive(:ensure_packages)