# File lib/openshift-origin-msg-broker-mcollective/lib/openshift/mcollective_application_container_proxy.rb, line 28
      def self.find_available_impl(node_profile=nil, district_uuid=nil)
        district = nil
        require_specific_district = !district_uuid.nil?
        if Rails.configuration.msg_broker[:districts][:enabled] && (!district_uuid || district_uuid == 'NONE')
          district = District.find_available(node_profile)
          if district
            district_uuid = district.uuid
            Rails.logger.debug "DEBUG: find_available_impl: district_uuid: #{district_uuid}"
          elsif Rails.configuration.msg_broker[:districts][:require_for_app_create]
            raise OpenShift::NodeException.new("No district nodes available.", 140)
          end
        end
        current_server, current_capacity, preferred_district = rpc_find_available(node_profile, district_uuid, require_specific_district)
        if !current_server
          current_server, current_capacity, preferred_district = rpc_find_available(node_profile, district_uuid, require_specific_district, true)
        end
        district = preferred_district if preferred_district
        Rails.logger.debug "CURRENT SERVER: #{current_server}"
        raise OpenShift::NodeException.new("No nodes available.", 140) unless current_server
        Rails.logger.debug "DEBUG: find_available_impl: current_server: #{current_server}: #{current_capacity}"

        MCollectiveApplicationContainerProxy.new(current_server, district)
      end