Get desktop application:
View/edit binary Protocol Buffers messages
Represents an "action" performed on the log. Each action has an associated position in the log. In addition, each action (i.e., position) will have been "promised" to a specific proposer (implicitly or explicitly) and may have been "performed" from a specific proposer. An action may also be "learned" to have reached consensus. There are three types of possible actions that can be performed on the log: nop (no action), append, and truncate.
Used in: , ,
Set iff performed is set.
Used in: ,
Used in: ,
(message has no fields)
Used in: ,
All positions before and exclusive of 'to'.
Used in: ,
* Describes Completed Frameworks, etc. for archival.
Used in: ,
* Describes an attribute that can be set on a machine. For now, attributes and resources share the same "value" type, but this may change in the future and attributes may only be string based.
Used in: ,
PID that needs to be authenticated.
(message has no fields)
(message has no fields)
List of available SASL mechanisms.
* Describes a command, executed via: '/bin/sh -c value'. Any URIs specified are fetched before executing the command. If the executable field for an uri is set, executable file permission is set on the downloaded file. Otherwise, if the downloaded file has a recognized archive extension (currently [compressed] tar and zip) it is extracted into the executor's working directory. In addition, any environment variables are set before executing the command (so they can be used to "parameterize" your command).
Used in: ,
Used in:
* A slave generated ID to distinguish a container. The ID must be unique between any active or completed containers on the slave. In particular, containers for different runs of the same (framework, executor) pair must be unique.
* Credential used for authentication. NOTE: The 'principal' is used for authenticating the framework with the master. This is different from 'FrameworkInfo.user' which is used to determine the user under which the framework's executors/tasks are run.
* Describes a collection of environment variables. This is used with CommandInfo in order to set environment variables before running a command.
Used in:
Used in:
* A framework generated ID to distinguish an executor. Only one executor with the same ID can be active on the same slave at a time.
Used in: , , , , , , , , ,
* Describes information about an executor. The 'data' field can be used to pass arbitrary bytes to an executor.
Used in: , ,
TODO(benh): Make this required.
Source is an identifier style string used by frameworks to track the source of an executor. This is useful when it's possible for different executor ids to be related semantically. NOTE: Source is exposed alongside the resource usage of the executor via JSON on the slave. This allows users to import usage information into a time series database for monitoring.
* Describes possible filters that can be applied to unused resources (see SchedulerDriver::launchTasks) to influence the allocator.
Used in:
Time to consider unused resources refused. Note that all unused resources will be considered refused and use the default value (below) regardless of whether Filters was passed to SchedulerDriver::launchTasks. You MUST pass Filters with this field set to change this behavior (i.e., get another offer which includes unused resources sooner or later than the default).
* A unique ID assigned to a framework. A framework can reuse this ID in order to do failover (see MesosSchedulerDriver).
Used in: , , , , , , , , , , , , , , , , , , , , , , , , ,
* Describes a framework. If the user field is set to an empty string Mesos will automagically set it to the current user. Note that the ID is only available after a framework has registered, however, it is included here in order to facilitate scheduler failover (i.e., if it is set then the MesosSchedulerDriver expects the scheduler is performing failover). The amount of time that the master will wait for the scheduler to failover before removing the framework is specified by failover_timeout. If checkpoint is set, framework pid, executor pids and status updates are checkpointed to disk by the slaves. Checkpointing allows a restarted slave to reconnect with old executors and recover status updates, at the cost of disk I/O. The role field is used to group frameworks for allocation decisions, depending on the allocation policy being used. If the hostname field is set to an empty string Mesos will automagically set it to the current hostname.
Used in: , , , ,
TODO(bmahler): Include the SlaveID here to improve the Master's ability to respond for non-activated slaves.
Deprecated.
Represents a "learned" event, that is, when a particular action has been agreed upon (reached consensus).
* Describes a master. This will probably have more fields in the future which might be used, for example, to link a framework webui to a master webui.
Used in: ,
The metadata of a replica. It has to be persisted on the disk. We store the current status of the replica as well as the implicit promise that a replica has made. This message is intended to replace the old Promise message to support catch-up.
Used in:
Used in: ,
Normal voting member in Paxos group.
In the process of catching up.
The log has been initialized.
The log is empty and is not initialized.
* Describes some resources available on a slave. An offer only contains resources from a single slave.
Used in:
* A unique ID assigned to an offer.
Used in: , ,
* A generic (key, value) pair used in various places for parameters.
Used in:
* Collection of Parameter.
Used in:
Represents a "promise" that a replica has made. A promise is *implicitly* valid for _all_ future actions that get performed on the replicated log (provided the action comes from the same proposer), until a new promise is made to a proposer with a higher proposal number. Each replica writes every promise it makes as a log record so that it can recover this information after a failure. TODO(benh): Does the promise actually need to be written to stable storage? Can we get away with looking at the last written action and using it's promised value? In this case, what happens if we make a promise but don't receive an action from that coordinator?
Used in:
Represents a "promise" request from a proposer with the specified 'proposal' to a replica. If the proposer is a coordinator, most such requests will occur after a coordinator has failed and a new coordinator is elected. In such a case, the position that the coordinator is asking the replica to promise is implicitly *all* positions that the replica has made no promises (thus the position field is not be used). In other instances, however, a proposer might be explicitly trying to request that a replica promise a specific position in the log (such as when trying to fill holes discovered during a client read), and then the 'position' field will be present.
Represents a "promise" response from a replica back to a proposer. A replica represents a NACK (because it has promised a proposer with a higher proposal number) by setting the okay field to false. The 'proposal' is either the aforementioned higher proposal number when the response is a NACK, or the corresponding request's proposal number if it is an ACK. The replica either sends back the highest position it has recorded in the log (using the 'position' field) or the specific action (if any) it has at the position requested in PromiseRequest (using the 'action' field).
Represents a log record written to the local filesystem by a replica. A log record may store a promise (DEPRECATED), an action or metadata (defined above).
DEPRECATED!
Used in:
DEPRECATED!
Represents a recover request. A recover request is used to initiate the recovery (by broadcasting it).
(message has no fields)
When a replica receives a RecoverRequest, it will reply with its current status, and the begin and the end of its current log.
* Describes a request for resources that can be used by a framework to proactively influence the allocator. If 'slave_id' is provided then this request is assumed to only apply to resources on that slave.
Used in:
TODO(bmahler): Deprecate and remove the explicit slave_id as SlaveInfo already includes this information.
* Describes a resource on a machine. A resource can take on one of three types: scalar (double), a list of finite and discrete ranges (e.g., [1-10, 20-30]), or a set of items. A resource is described using the standard protocol buffer "union" trick. TODO(benh): Add better support for "expected" resources (e.g., cpus, memory, disk, network).
Used in: , , , , ,
A snapshot of resource usage statistics.
Used in:
Snapshot time, in seconds since the Epoch.
CPU Usage Information: Total CPU time spent in user mode, and kernel mode.
Number of CPUs allocated.
cpu.stat on process throttling (for contention issues).
Memory Usage Information:
Resident Set Size.
Amount of memory resources allocated.
Broken out memory usage information (files, anonymous, and mmaped files)
* Describes a snapshot of the resource usage for an executor. TODO(bmahler): Note that we want to be sending this information to the master, and subsequently to the relevant scheduler. So this proto is designed to be easy for the scheduler to use, this is why we provide the slave id, executor info / task info.
If present, this executor was
explicitly specified.
If present, the task did not have an executor.
If missing, the isolation module cannot provide resource usage.
Describes a role, which are used to group frameworks for allocation decisions, depending on the allocation policy being used. The weight field can be used to indicate forms of priority.
Tells the executor to initiate a shut down by invoking Executor::shutdown.
(message has no fields)
Tells a slave to shut down all executors of the given framework.
(message has no fields)
* A unique ID assigned to a slave. Currently, a slave gets a new ID whenever it (re)registers with Mesos. Framework writers shouldn't assume any binding between a slave ID and and a hostname.
Used in: , , , , , , , , , , , , , , , , , , , ,
* Describes a slave. Note that the 'id' field is only available after a slave is registered with the master, and is made available here to facilitate re-registration. If checkpoint is set, the slave is checkpointing its own information and potentially frameworks' information (if a framework has checkpointing enabled).
Used in: , , ,
Deprecated!
* Status is used to indicate the state of the scheduler and executor driver after function calls.
Used in: , ,
NOTE: If 'pid' is present, scheduler driver sends an acknowledgement to the pid.
This message encapsulates how we checkpoint a status update to disk. NOTE: If type == UPDATE, the 'update' field is required. NOTE: If type == ACK, the 'uuid' field is required.
Used in:
TODO(benh): It would be great if this could just be a TaskInfo wherever it gets used! However, doing so would require adding the framework_id field, the executor_id field, and the state field into TaskInfo though (or send them another way). Also, one performance reason why we don't do that now is because storing whatever data is coupled with a TaskInfo could be large and unnecessary. TODO(bmahler): Add executor_uuid here, and send it to the master. This will allow us to expose executor work directories for tasks in the webui when looking from the master level. Currently only the slave knows which run the task belongs to.
Used in: ,
* A framework generated ID to distinguish a task. The ID must remain unique while the task is active. However, a framework can reuse an ID _only_ if a previous task with the same ID has reached a terminal state (e.g., TASK_FINISHED, TASK_LOST, TASK_KILLED, etc.).
Used in: , , , , ,
* Describes a task. Passed from the scheduler all the way to an executor (see SchedulerDriver::launchTasks and Executor::launchTask). Either ExecutorInfo or CommandInfo should be set. A different executor can be used to launch this task, and subsequent tasks meant for the same executor can reuse the same ExecutorInfo struct.
Used in: , ,
* Describes possible task states. IMPORTANT: Mesos assumes tasks that enter terminal states (see below) imply the task is no longer running and thus clean up any thing associated with the task (ultimately offering any resources being consumed by that task to another task).
Used in: ,
Initial state. Framework status updates should not use.
TERMINAL.
TERMINAL.
TERMINAL.
TERMINAL.
* Describes the current status of a task.
Used in: , ,
Possible message explaining state.
* Describes an Attribute or Resource "value". A value is described using the standard protocol buffer "union" trick.
Used in:
Used in: , ,
Used in: , ,
Used in: , ,
Used in: ,
Used in: , ,
Represents a write request for a specific type of action. Note that we deliberately do not include the entire Action as it contains fields that are not relevant to a write request (e.g., promised, performed) and rather than ignore them we exclude them for safety.
Represents a write response corresponding to a write request. A replica represents a NACK (because it has promised a proposer with a higher proposal number) by setting the okay field to false. If the proposer is a coordinator, then it has been demoted. The 'position' should always correspond to the position set in the request. The 'proposal' is either the same proposal number set in the request in the case of an ACK, or the higher proposal number this position has been promised to in the case of a NACK.