Scheduling tasks
In this recipe, we will ask Mesos to run a task.
How to do it...
First of all, we need to know what task we want to schedule. To allow communication with the framework, we will prepare the HTTP API.
To handle HTTP requests, we need to implement the HTTP handler and bind it to some ports.
Let's declare the following variables in the main()
function:
listen := ":9090" webuiURL := fmt.Sprintf("http://%s%s", hostname, listen)
Let's also declare one global variable:
var taskID uint64
Tasks can be launched only when offers are available. To communicate with the offer handler, we will use a channel. If you are not familiar with Golang channels, they're similar to a message queue or pipe. Basically, you write at one end and read at another. Let's declare it globally:
var commandChan = make(chan string, 100)
Extend the FrameworkInfo
definition with the just-created web UI URL:
frameworkInfo = FrameworkInfo{ User: &user, Name: &name, Hostname: &hostname, ...