# File lib/openshift-origin-common/models/cartridge.rb, line 64
    def from_descriptor(spec_hash={})
      self.name = spec_hash["Name"]
      self.version = spec_hash["Version"] || "0.0"
      self.architecture = spec_hash["Architecture"] || "noarch"
      self.display_name = spec_hash["Display-Name"] || "#{self.name}-#{self.version}-#{self.architecture}"
      self.license = spec_hash["License"] || "unknown"
      self.license_url = spec_hash["License-Url"] || ""
      self.vendor = spec_hash["Vendor"] || "unknown"
      self.description = spec_hash["Description"] || ""
      self.provides_feature = spec_hash["Provides"] || []
      self.requires_feature = spec_hash["Requires"] || []
      self.conflicts_feature = spec_hash["Conflicts"] || []
      self.requires = spec_hash["Native-Requires"] || []
      self.categories = spec_hash["Categories"] || ["cartridge"]
      self.website = spec_hash["Website"] || ""
      self.suggests_feature = spec_hash["Suggests"] || []
      self.help_topics = spec_hash["Help-Topics"] || {}
      self.cart_data_def = spec_hash["Cart-Data"] || {}
      
      self.provides_feature = [self.provides_feature] if self.provides_feature.class == String
      self.requires_feature = [self.requires_feature] if self.requires_feature.class == String
      self.conflicts_feature = [self.conflicts_feature] if self.conflicts_feature.class == String
      self.requires = [self.requires] if self.requires.class == String

      if spec_hash.has_key?("Profiles")
        spec_hash["Profiles"].each do |pname, p|
          profile = Profile.new.from_descriptor(p)
          profile.name = pname
          add_profile(profile)
        end
      else
        ["Name", "Version", "Architecture", "DisplayName", "License",
           "Provides", "Requires", "Conflicts", "Native-Requires"].each do |k|
          spec_hash.delete(k)
        end
        p = Profile.new.from_descriptor(spec_hash)
        p.name = "default"
        p.generated = true
        add_profile(p)
      end
      self.default_profile = spec_hash["Default-Profile"] || self.profiles.first.name
      self
    end