Skip to content

Commit

Permalink
Fixes #37717 - Update evr extension ownership to foreman
Browse files Browse the repository at this point in the history
  • Loading branch information
sjha4 committed Nov 21, 2024
1 parent 349e482 commit 685a7d0
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 0 deletions.
1 change: 1 addition & 0 deletions hooks/boot/01-kafo-hook-extensions.rb
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ def execute!(command, do_say = true, do_log = true, extra_env = {})
log_and_say(:error, "#{command} failed! Check the output for error!", do_say, do_log)
exit 1
end
stdout_stderr
end

def execute_as!(user, command, do_say = true, do_log = true, extra_env = {})
Expand Down
26 changes: 26 additions & 0 deletions hooks/pre/35-change-evr-extension-ownership.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# In Katello 4.15, the 'evr' extension is removed from PostgreSQL and integrated into the Katello database via a migration.
# This hook ensures the 'evr' extension's ownership is transferred to the 'foreman' user so migrations can act on it.

if local_postgresql? && execute("rpm -q postgresql-evr", false, false)
is_postgresql_active = execute_command("systemctl is-active postgresql", false, true)&.first&.strip == "active"

# Ensure the PostgreSQL service is running
unless is_postgresql_active
logger.debug("Starting postgresql service")
start_services(['postgresql']) unless app_value(:noop)
end

# Update the ownership of the evr extension
logger.debug("Updating ownership of the evr extension if it is enabled")
database = param_value('foreman', 'db_database') || 'foreman'
username = param_value('foreman', 'db_username') || 'foreman'
sql = "psql -d '#{database}' -c \\\"UPDATE pg_extension SET extowner = (SELECT oid FROM pg_authid WHERE rolname='#{username}') WHERE extname='evr';\\\""
logger.debug("Executing: #{sql}")
execute_as!('postgres', sql, false, true) unless app_value(:noop)

# Stop the PostgreSQL service if it was not running
unless is_postgresql_active
logger.debug("Stopping postgresql service")
stop_services(['postgresql']) unless app_value(:noop)
end
end

0 comments on commit 685a7d0

Please sign in to comment.