func (s *StackDeployScheduler) ResourceOffers(driver scheduler.SchedulerDriver, offers []*mesos.Offer) { Logger.Debug("[ResourceOffers] %s", pretty.Offers(offers)) for _, offer := range offers { declineReason := s.acceptOffer(driver, offer) if declineReason != "" { driver.DeclineOffer(offer.GetId(), &mesos.Filters{RefuseSeconds: proto.Float64(10)}) Logger.Debug("Declined offer %s: %s", pretty.Offer(offer), declineReason) } } }
func (s *StackDeployScheduler) acceptOffer(driver scheduler.SchedulerDriver, offer *mesos.Offer) string { declineReasons := make([]string, 0) for name, runner := range MesosTaskRunners { declineReason, err := runner.ResourceOffer(driver, offer) if err != nil { Logger.Warn("Error during processing resource offer %s by Mesos Task Runner '%s': %s", pretty.Offer(offer), name, err) continue } if declineReason != "" { declineReasons = append(declineReasons, declineReason) } } return strings.Join(declineReasons, ", ") }