void sendStatusUpdate(const TaskStatus& status) { StatusUpdateMessage message; StatusUpdate* update = message.mutable_update(); update->mutable_framework_id()->MergeFrom(frameworkId); update->mutable_executor_id()->MergeFrom(executorId); update->mutable_slave_id()->MergeFrom(slaveId); update->mutable_status()->MergeFrom(status); update->set_timestamp(Clock::now().secs()); update->mutable_status()->set_timestamp(update->timestamp()); message.set_pid(self()); // We overwrite the UUID for this status update, however with // the HTTP API, the executor will have to generate a UUID // (which needs to be validated to be RFC-4122 compliant). UUID uuid = UUID::random(); update->set_uuid(uuid.toBytes()); update->mutable_status()->set_uuid(uuid.toBytes()); // We overwrite the SlaveID for this status update, however with // the HTTP API, this can be overwritten by the slave instead. update->mutable_status()->mutable_slave_id()->CopyFrom(slaveId); VLOG(1) << "Executor sending status update " << *update; // Capture the status update. updates[uuid] = *update; send(slave, message); }
void update(const TaskInfo& task, const TaskState& state) { UUID uuid = UUID::random(); TaskStatus status; status.mutable_task_id()->CopyFrom(task.task_id()); status.mutable_executor_id()->CopyFrom(executorId); status.set_state(state); status.set_source(TaskStatus::SOURCE_EXECUTOR); status.set_timestamp(process::Clock::now().secs()); status.set_uuid(uuid.toBytes()); Call call; call.mutable_framework_id()->CopyFrom(frameworkId); call.mutable_executor_id()->CopyFrom(executorId); call.set_type(Call::UPDATE); call.mutable_update()->mutable_status()->CopyFrom(status); // Capture the status update. updates[uuid] = call.update(); mesos->send(call); }