func (tl *TeamMaster) findServers(dc *resource.DataCenter, req *resource.AllocationRequest) (ret []resource.Allocation) {
	// sort racks by unallocated resources
	var racks []*resource.Rack
	for _, rack := range dc.Racks() {
		racks = append(racks, rack)
	}
	sort.Sort(ByAvailableResources(racks))

	requests := make([]*resource.ComputeRequest, 0, len(req.Requests))
	for _, request := range req.Requests {
		requests = append(requests, &request)
	}
	sort.Sort(ByRequestedResources(requests))

	for _, rack := range racks {
		allocated, requests := tl.allocateServersOnRack(dc, rack, requests)
		ret = append(ret, allocated...)
		if len(requests) == 0 {
			break
		}
	}
	return
}