In this recipe, we will ask Mesos to shut down a task.
Killing tasks is similar to launching tasks with one difference: tasks can be killed at any time.
Let's add support for the delete
method in the web
function:
case "DELETE": id := r.Form["id"][0] err := kill(id) if err != nil { fmt.Fprint(w, err) } else { fmt.Print(w, "KILLED") }
We need to implement the kill
function. It'll be similar to acknowledge because it will only prepare and send a message to Mesos. To kill tasks, we need to know the task's ID. We will get it from the user and agent ID on which the task is launched. We need to modify our framework to keep track of the launched tasks. We will keep that in the global map, where task ID will be the key
and task
last update will be the value:
var tasksState = make(map[string]*TaskStatus)
This map will be updated every time we get an update. So in the hadleUpdate()
function, we need to add the following:
tasksState...