module IDRAC::SessionUtils
def delete_all_sessions_with_basic_auth
def delete_all_sessions_with_basic_auth debug = ->(msg, level=1, color=:light_cyan) { verbosity = respond_to?(:verbosity) ? verbosity : 0 return unless verbosity >= level msg = msg.send(color) if color && msg.respond_to?(color) puts msg } debug.call "Attempting to delete all sessions using Basic Authentication...", 1 # First, get the list of sessions sessions_url = session&.determine_session_endpoint || '/redfish/v1/Sessions' begin # Get the list of sessions response = authenticated_request(:get, sessions_url) if response.status != 200 debug.call "Failed to get sessions list: #{response.status} - #{response.body}", 1, :red return false end # Parse the response to get session IDs begin sessions_data = JSON.parse(response.body) if sessions_data['Members'] && sessions_data['Members'].any? debug.call "Found #{sessions_data['Members'].count} active sessions", 1, :light_yellow # Delete each session success = true sessions_data['Members'].each do |session| session_url = session['@odata.id'] # Skip if no URL next unless session_url # Delete the session delete_response = authenticated_request(:delete, session_url) if delete_response.status == 200 || delete_response.status == 204 debug.call "Successfully deleted session: #{session_url}", 1, :green else debug.call "Failed to delete session #{session_url}: #{delete_response.status}", 1, :red success = false end # Small delay between deletions sleep(1) end return success else debug.call "No active sessions found", 1, :light_yellow return true end rescue JSON::ParserError => e debug.call "Error parsing sessions response: #{e.message}", 1, :red return false end rescue => e debug.call "Error during session deletion with Basic Auth: #{e.message}", 1, :red return false end end
def force_clear_sessions
def force_clear_sessions debug = ->(msg, level=1, color=:light_cyan) { verbosity = respond_to?(:verbosity) ? verbosity : 0 return unless verbosity >= level msg = msg.send(color) if color && msg.respond_to?(color) puts msg } debug.call "Attempting to force clear all sessions...", 1 if delete_all_sessions_with_basic_auth debug.call "Successfully cleared sessions using Basic Auth", 1, :green true else debug.call "Failed to clear sessions using Basic Auth", 1, :red false end end