// StatusUpdate is called when a status update message is sent to the scheduler. func (k *KubernetesScheduler) StatusUpdate(driver mesos.SchedulerDriver, taskStatus *mesos.TaskStatus) { log.Infof("Received status update %v\n", taskStatus) k.Lock() defer k.Unlock() switch taskStatus.GetState() { case mesos.TaskState_TASK_STAGING: k.handleTaskStaging(taskStatus) case mesos.TaskState_TASK_STARTING: k.handleTaskStarting(taskStatus) case mesos.TaskState_TASK_RUNNING: k.handleTaskRunning(taskStatus) case mesos.TaskState_TASK_FINISHED: k.handleTaskFinished(taskStatus) case mesos.TaskState_TASK_FAILED: k.handleTaskFailed(taskStatus) case mesos.TaskState_TASK_KILLED: k.handleTaskKilled(taskStatus) case mesos.TaskState_TASK_LOST: k.handleTaskLost(taskStatus) } }