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.GetRacks() { racks = append(racks, rack) } sort.Sort(ByAvailableResources(racks)) requests := make([]*resource.ComputeRequest, 0, len(req.Requests)) for i := range req.Requests { requests = append(requests, &req.Requests[i]) } 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 }