class IDRAC::Session
def handle_max_sessions_and_retry(url, payload)
def handle_max_sessions_and_retry(url, payload) return false unless @sessions_maxed debug "Maximum sessions reached, attempting to clear sessions", 1 if force_clear_sessions debug "Successfully cleared sessions, trying to create a new session", 1, :green # Give the iDRAC a moment to process the session deletions sleep(3) # Try one more time after clearing with form-urlencoded begin response = connection.post(url) do |req| req.headers['Authorization'] = "Basic #{Base64.strict_encode64("#{username}:#{password}")}" req.headers['Content-Type'] = 'application/x-www-form-urlencoded' req.headers['Host'] = host_header if host_header req.body = "UserName=#{URI.encode_www_form_component(username)}&Password=#{URI.encode_www_form_component(password)}" end if process_session_response(response) debug "Redfish session created successfully after clearing sessions", 1, :green return true else debug "Failed to create Redfish session after clearing sessions: #{response.status} - #{response.body}", 1, :red # If still failing, try direct mode debug "Falling back to direct mode", 1, :light_yellow @direct_mode = true return false end rescue => e debug "Error during session creation after clearing: #{e.class.name}: #{e.message}", 1, :red debug "Falling back to direct mode", 1, :light_yellow @direct_mode = true return false end else debug "Failed to clear sessions, switching to direct mode", 1, :light_yellow @direct_mode = true return false end end