Beispiel #1
0
// LaunchTask with specific offer and resources
func (core *Core) LaunchTask(task *registry.Task, offer *mesosproto.Offer, offers []*mesosproto.Offer) error {
	core.generateResource(task)
	resources := resource.BuildResources(task)

	log.Infof("Launch task %v, on node %v", task.ID, offer.GetHostname())
	taskInfo := &mesosproto.TaskInfo{}
	var err error
	if task.Type == registry.TaskTypeTest {
		taskInfo, err = core.CreateSingleTaskInfo(offer, resources, task)
		log.Debug(taskInfo)
	} else if task.Type == registry.TaskTypeBuild {
		taskInfo, err = core.CreateBuildImageTaskInfo(offer, resources, task)
	} else {
		return errors.New("Unknown task type received.")
	}

	if err != nil {
		return err
	}

	for _, value := range offers {
		if offer.GetSlaveId() == value.GetSlaveId() {
			if err := core.AcceptOffer(value, resources, taskInfo); err != nil {
				return err
			}
			core.deleteOffer(value)
			task.State = "TASK_STAGING"
		}
	}
	return nil
}