func createTaskInfo(task types.EremeticTask, offer *mesos.Offer) (types.EremeticTask, *mesos.TaskInfo) { task.FrameworkId = *offer.FrameworkId.Value task.SlaveId = *offer.SlaveId.Value task.Hostname = *offer.Hostname var environment []*mesos.Environment_Variable for k, v := range task.Environment { environment = append(environment, &mesos.Environment_Variable{ Name: proto.String(k), Value: proto.String(v), }) } environment = append(environment, &mesos.Environment_Variable{ Name: proto.String("MESOS_TASK_ID"), Value: proto.String(task.ID), }) var volumes []*mesos.Volume for _, v := range task.Volumes { volumes = append(volumes, &mesos.Volume{ Mode: mesos.Volume_RW.Enum(), ContainerPath: proto.String(v.ContainerPath), HostPath: proto.String(v.HostPath), }) } var uris []*mesos.CommandInfo_URI for _, v := range task.URIs { uris = append(uris, &mesos.CommandInfo_URI{ Value: proto.String(v), Extract: proto.Bool(isArchive(v)), }) } return task, &mesos.TaskInfo{ TaskId: &mesos.TaskID{ Value: proto.String(task.ID), }, SlaveId: offer.SlaveId, Name: proto.String(task.Name), Command: &mesos.CommandInfo{ Value: proto.String(task.Command), User: proto.String(task.User), Environment: &mesos.Environment{ Variables: environment, }, Uris: uris, }, Container: &mesos.ContainerInfo{ Type: mesos.ContainerInfo_DOCKER.Enum(), Docker: &mesos.ContainerInfo_DockerInfo{ Image: proto.String(task.Image), }, Volumes: volumes, }, Resources: []*mesos.Resource{ mesosutil.NewScalarResource("cpus", task.TaskCPUs), mesosutil.NewScalarResource("mem", task.TaskMem), }, } }