func matchTaskAuction(offerAggregates [][]*mesos.Offer, taskAuction *auctiontypes.TaskAuction) (int, []*mesos.Offer) { taskAuction.Attempts++ for i, offers := range offerAggregates { if getOffersMem(offers) > float64(taskAuction.MemoryMB) && getOffersCpu(offers) > taskCpuAllocation && getOffersDisk(offers) > float64(taskAuction.DiskMB) { taskAuction.Winner = offers[0].SlaveId.GetValue() taskAuction.WaitDuration = time.Now().Sub(taskAuction.QueueTime) offers[0].Resources = append(offers[0].Resources, util.NewScalarResource("mem", float64(-taskAuction.MemoryMB)), util.NewScalarResource("cpu", -taskCpuAllocation), util.NewScalarResource("disk", float64(-taskAuction.DiskMB))) return i, offers } } taskAuction.PlacementError = rep.ErrorInsufficientResources.Error() return -1, nil }