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' req.headers['Host'] = host_header if host_header 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 endpoint = Gem::Version.new(redfish_version) <= Gem::Version.new('1.17.0') ? '/redfish/v1/Sessions' : '/redfish/v1/SessionService/Sessions' debug "Using endpoint #{endpoint} for Redfish version #{redfish_version}", 1 return endpoint end rescue JSON::ParserError => e debug "Error parsing Redfish version: #{e.message}", 1, :red rescue => e debug "Error determining Redfish version: #{e.message}", 1, :red end end rescue => e debug "Error checking Redfish version: #{e.message}", 1, :red end # Default to /redfish/v1/Sessions if we can't determine version default_endpoint = '/redfish/v1/Sessions' debug "Defaulting to endpoint #{default_endpoint}", 1, :light_yellow default_endpoint end