class IDRAC::Session
def delete_all_sessions_with_basic_auth
def delete_all_sessions_with_basic_auth debug "Attempting to delete all sessions using Basic Authentication...", 1 # First, get the list of sessions sessions_url = determine_session_endpoint begin # Get the list of sessions response = request_with_basic_auth(:get, sessions_url, nil, 'application/json') if response.status != 200 debug "Failed to get sessions list: #{response.status} - #{response.body}", 1, :red # If we received HTML error, assume we can't get sessions and try direct session deletion if response.headers['content-type']&.include?('text/html') || response.body.to_s.include?('DOCTYPE html') debug "Received HTML error response, trying direct session deletion", 1, :light_yellow return try_delete_latest_sessions end 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 "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 = request_with_basic_auth(:delete, session_url, nil, 'application/json') if delete_response.status == 200 || delete_response.status == 204 debug "Successfully deleted session: #{session_url}", 1, :green else debug "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 "No active sessions found", 1, :light_yellow return true end rescue JSON::ParserError => e debug "Error parsing sessions response: #{e.message}", 1, :red debug "Trying direct session deletion", 1, :light_yellow return try_delete_latest_sessions end rescue => e debug "Error during session deletion with Basic Auth: #{e.message}", 1, :red debug "Trying direct session deletion", 1, :light_yellow return try_delete_latest_sessions end end