# File lib/openshift-origin-controller/app/models/application.rb, line 96
  def add_to_requires_feature(feature)
    prof = @profile_name_map[@default_profile]
    if self.scalable
      # add to the proxy component
      comp_name = "proxy" if comp_name.nil?
      prof = @profile_name_map[@default_profile]
      cinst = ComponentInstance::find_component_in_cart(prof, self, comp_name, self.get_name_prefix)
      raise OpenShift::NodeException.new("Cannot find component '#{comp_name}' in app #{self.name}.", 135, result_io) if cinst.nil?
      comp,profile,cart = cinst.get_component_definition(self)
      raise OpenShift::UserException.new("#{feature} already embedded in '#{@name}'", 136) if comp.depends.include? feature
      fcart = self.framework
      conn = OpenShift::Connection.new("#{feature}-web-#{fcart}")
      conn.components = ["proxy/#{feature}", "web/#{fcart}"]
      prof.add_connection(conn)
      conn = OpenShift::Connection.new("#{feature}-proxy-#{fcart}")
      conn.components = ["proxy/#{feature}", "proxy/#{fcart}"]
      prof.add_connection(conn)

      #  FIXME: Booya - hacks galore -- fix this to be more generic when
      #         scalable apps allow more components in SCALABLE_EMBEDDED_CARTS
      if feature == "jenkins-client-1.4"
        conn = OpenShift::Connection.new("#{feature}-proxy-haproxy-1.4")
        conn.components = ["proxy/#{feature}", "proxy/haproxy-1.4"]
        prof.add_connection(conn)
      end

      comp.depends << feature
    else
      self.requires_feature.each { |cart|
        conn = OpenShift::Connection.new("#{feature}-#{cart}")
        conn.components = [cart, feature]
        prof.add_connection(conn)
      }
      self.requires_feature << feature
    end
  end