module IDRAC::VirtualMedia

def virtual_media

Get current virtual media status
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