func (sched *ExampleScheduler) StatusUpdate(driver sched.SchedulerDriver, status *mesos.TaskStatus) { log.Infoln("Status update: task", status.TaskId.GetValue(), " is in state ", status.State.Enum().String()) //if RunContainer finished, add if status.State.Enum().String() == "TASK_FINISHED" { labels := status.GetLabels() taskType, err := shared.GetValueFromLabels(labels, shared.Tags.TASK_TYPE) if err != nil { log.Infof("ERROR: Malformed task info, discarding task with status: %v", status) return } acceptedHost, err := shared.GetValueFromLabels(labels, shared.Tags.ACCEPTED_HOST) if err != nil { log.Infof("ERROR: Malformed task info, discarding task with status: %v", status) return } containerName, err := shared.GetValueFromLabels(labels, shared.Tags.CONTAINER_NAME) if err != nil { log.Infof("ERROR: Malformed task info, discarding task with status: %v", status) return } switch taskType { case shared.TaskTypes.RUN_CONTAINER: sched.ContainerSlaveMap[containerName] = acceptedHost break case shared.TaskTypes.CHECKPOINT_CONTAINER: delete(sched.ContainerSlaveMap, containerName) break case shared.TaskTypes.RESTORE_CONTAINER: sched.ContainerSlaveMap[containerName] = acceptedHost break } } }