class IDRAC::Session
def determine_session_endpoint
def determine_session_endpoint begin debug "Checking Redfish version to determine session endpoint...", 1 response = connection.get('/redfish/v1') do |req| req.headers['Accept'] = 'application/json' end if response.status == 200 begin data = JSON.parse(response.body) redfish_version = data['RedfishVersion'] if redfish_version debug "Detected Redfish version: #{redfish_version}", 1 # For version 1.17.0 and below, use the /redfish/v1/Sessions endpoint # For newer versions, use /redfish/v1/SessionService/Sessions if Gem::Version.new(redfish_version) <= Gem::Version.new('1.17.0') endpoint = '/redfish/v1/Sessions' debug "Using endpoint #{endpoint} for Redfish version #{redfish_version}", 1 return endpoint else endpoint = '/redfish/v1/SessionService/Sessions' debug "Using endpoint #{endpoint} for Redfish version #{redfish_version}", 1 return endpoint end end rescue JSON::ParserError => e debug "Error parsing Redfish version: #{e.message}", 0, :red debug e.backtrace.join("\n"), 3 if e.backtrace && @verbosity >= 3 rescue => e debug "Error determining Redfish version: #{e.message}", 0, :red debug e.backtrace.join("\n"), 3 if e.backtrace && @verbosity >= 3 end end rescue => e debug "Error checking Redfish version: #{e.message}", 0, :red debug e.backtrace.join("\n"), 3 if e.backtrace && @verbosity >= 3 end # Default to /redfish/v1/Sessions if we can't determine version default_endpoint = '/redfish/v1/Sessions' debug "Defaulting to endpoint #{default_endpoint}", 0, :light_yellow default_endpoint end