# File lib/openshift-origin-node/model/node.rb, line 25
    def self.get_cartridge_list(list_descriptors = false, porcelain = false, oo_debug = false)
      carts = []

      cartridge_path = OpenShift::Config.new.get("CARTRIDGE_BASE_PATH")
      Dir.foreach(cartridge_path) do |cart_dir|
        next if [".", "..", "embedded", "abstract", "abstract-httpd", "abstract-jboss"].include? cart_dir
        path = File.join(cartridge_path, cart_dir, "info", "manifest.yml")
        begin
          print "Loading #{cart_dir}..." if oo_debug
          carts.push OpenShift::Cartridge.new.from_descriptor(YAML.load(File.open(path)))
          print "OK\n" if oo_debug
        rescue Exception => e
          print "ERROR\n" if oo_debug
          print "#{e.message}\n#{e.backtrace.inspect}\n" unless porcelain
        end
      end

      print "\n\n\n" if oo_debug

      output = ""
      if porcelain
        if list_descriptors
          output << "CLIENT_RESULT: "
          output << carts.map{|c| c.to_descriptor.to_yaml}.to_json
        else
          output << "CLIENT_RESULT: "
          output << carts.map{|c| c.name}.to_json
        end
      else
        if list_descriptors
          carts.each do |c|
            output << "Cartridge name: #{c.name}\n\nDescriptor:\n #{c.to_descriptor.inspect}\n\n\n"
          end
        else
          output << "Cartridges:\n"
          carts.each do |c|
            output << "\t#{c.name}\n"
          end
        end
      end
      output
    end