module IDRAC::VirtualMedia
def virtual_media
def virtual_media response = authenticated_request(:get, "/redfish/v1/Managers/iDRAC.Embedded.1/VirtualMedia?$expand=*($levels=1)") if response.status == 200 begin data = JSON.parse(response.body) media = data["Members"].map do |m| # Check if media is inserted based on multiple indicators is_inserted = m["Inserted"] || (!m["Image"].nil? && !m["Image"].empty?) || (m["ConnectedVia"] && m["ConnectedVia"] != "NotConnected") || (m["ImageName"] && !m["ImageName"].empty?) # Indicate which field is used for this iDRAC version and print it puts "ImageName is used for this iDRAC version".yellow if m["ImageName"] puts "Image is used for this iDRAC version".yellow if m["Image"] puts "ConnectedVia is used for this iDRAC version".yellow if m["ConnectedVia"] puts "Inserted is used for this iDRAC version".yellow if m["Inserted"] if is_inserted puts "#{m["Name"]} #{m["ConnectedVia"]} #{m["Image"] || m["ImageName"]}".green else puts "#{m["Name"]} #{m["ConnectedVia"]}".yellow end action_path = m.dig("Actions", "#VirtualMedia.InsertMedia", "target") { device: m["Id"], inserted: is_inserted, image: m["Image"] || m["ImageName"] || m["ConnectedVia"], action_path: action_path } end return media rescue JSON::ParserError raise Error, "Failed to parse virtual media response: #{response.body}" end else raise Error, "Failed to get virtual media. Status code: #{response.status}" end end