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