module IDRAC::Debuggable

def debug(message, level = 0, color = :light_cyan)

Debug output helper - only outputs if verbosity level is high enough
def debug(message, level = 0, color = :light_cyan)
  return unless respond_to?(:verbosity) && verbosity >= level
  color_method = color.is_a?(Symbol) && String.method_defined?(color) ? color : :to_s
  puts message.send(color_method)
  
  # For highest verbosity, also print stack trace
  if respond_to?(:verbosity) && verbosity >= 3 && caller.length > 1
    puts "  Called from:".light_yellow
    caller[1..3].each do |call|
      puts "    #{call}".light_yellow
    end
  end
end