Get desktop application:
View/edit binary Protocol Buffers messages
Driver service defines RPCs used to communicate with a nomad runtime driver. Some rpcs may not be implemented by the driver based on it's capabilities.
TaskConfigSchema returns the schema for parsing the driver configuration of a task.
(message has no fields)
Spec is the configuration schema for the job driver config block
Capabilities returns a set of features which the driver implements. Some RPCs are not possible to implement on some runtimes, this allows the driver to indicate if it doesn't support these RPCs and features.
(message has no fields)
Capabilities provides a way for the driver to denote if it implements non-core RPCs. Some Driver service RPCs expose additional information or functionality outside of the core task management functions. These RPCs are only implemented if the driver sets the corresponding capability.
Fingerprint starts a stream which emits information about the driver including whether the driver healthy and able to function in the existing environment. The driver should immediately stream a FingerprintResponse when the RPC is initially called, then send any additional responses if there is a change in the driver's state.
(message has no fields)
Attributes are key/value pairs that annotate the nomad client and can be used in scheduling constraints and affinities.
Health is used to determine the state of the health the driver is in. Health can be one of the following states: * UNDETECTED: driver dependencies are not met and the driver can not start * UNHEALTHY: driver dependencies are met but the driver is unable to perform operations due to some other problem * HEALTHY: driver is able to perform all operations
HealthDescription is a human readable message describing the current state of driver health
RecoverTask is used when a task has been started but the driver may not know about it. Such is the case if the driver restarts or is upgraded.
TaskId is the ID of the target task
Handle is the TaskHandle returned from StartTask
(message has no fields)
StartTask starts and tracks the task on the implemented runtime
Task configuration to launch
Result is set depending on the type of error that occurred while starting a task: * SUCCESS: No error occurred, handle is set * RETRY: An error occurred, but is recoverable and the RPC should be retried * FATAL: A fatal error occurred and is not likely to succeed if retried If Result is not successful, the DriverErrorMsg will be set.
DriverErrorMsg is set if an error occurred
Handle is opaque to the client, but must be stored in order to recover the task.
NetworkOverride is set if the driver sets network settings and the service ip/port needs to be set differently.
WaitTask blocks until the given task exits, returning the result of the task. It may be called after the task has exited, but before the task is destroyed.
TaskId is the ID of the target task
Result is the exit status of the task
Err is set if any driver error occurred while waiting for the task
StopTask stops a given task by sending the desired signal to the process. If the task does not exit on its own within the given timeout, it will be forcefully killed.
TaskId is the ID of the target task
Timeout defines the amount of time to wait before forcefully killing the task. For example, on Unix clients, this means sending a SIGKILL to the process.
Signal can be set to override the Task's configured shutdown signal
(message has no fields)
DestroyTask removes the task from the driver's internal state and cleans up any additional resources created by the driver. It cannot be called on a running task, unless force is set to true.
TaskId is the ID of the target task
Force destroys the task even if it is still in a running state
(message has no fields)
InspectTask returns detailed information for the given task
TaskId is the ID of the target task
Task details
Driver details for task
NetworkOverride info if set
TaskStats collects and returns runtime metrics for the given task
TaskId is the ID of the target task
CollectionInterval is the interval at which to stream stats to the caller
Stats for the task
TaskEvents starts a streaming RPC where all task events emitted by the driver are streamed to the caller.
(message has no fields)
TaskId is the id of the task for the event
AllocId of the task for the event
TaskName is the name of the task for the event
Timestamp when the event occurred
Message is the body of the event
Annotations allows for additional key/value data to be sent along with the event
SignalTask sends a signal to the task
TaskId is the ID of the target task
Signal is the operating system signal to send to the task. Ex: SIGHUP
(message has no fields)
ExecTask executes a command inside the tasks execution context
TaskId is the ID of the target task
Command is the command to execute in the task environment
Timeout is the amount of time to wait for the command to stop. Defaults to 0 (run forever)
Stdout from the exec
Stderr from the exec
Result from the exec
ExecTaskStreaming executes a command inside the tasks execution context and streams back results buf:lint:ignore RPC_REQUEST_RESPONSE_UNIQUE
CreateNetwork is implemented when the driver needs to create the network namespace instead of allowing the Nomad client to do.
AllocID of the allocation the network is associated with
Hostname of the network namespace
created indicates that the network namespace is newly created as a result of this request. if false, the NetworkIsolationSpec value returned is an existing spec.
DestroyNetwork destroys a previously created network. This rpc is only implemented if the driver needs to manage network namespace creation.
AllocID of the allocation the network is associated with
(message has no fields)
Used in:
Used in:
Used in:
Used in:
MeasuredFields indicates which fields were actually sampled
Used in:
Used in:
Used in:
,TaskPath is the file path within the task to mount the device to
HostPath is the path on the host to the source device
CgroupPermissions defines the Cgroup permissions of the device. One or more of the following options can be set: * r - allows the task to read from the specified device. * w - allows the task to write to the specified device. * m - allows the task to create device files that do not yet exist. Example: "rw"
Used in:
SendSignals indicates that the driver can send process signals (ex. SIGUSR1) to the task.
Exec indicates that the driver supports executing arbitrary commands in the task's execution environment.
FsIsolation indicates what kind of filesystem isolation a driver supports.
MountConfigs indicates whether the driver supports mount configurations.
disable_log_collection indicates whether the driver has the capability of disabling log collection
dynamic_workload_users indicates the task is capable of using UID/GID assigned from the Nomad client as user credentials for the task.
Used in:
Used in:
treated as ANY_MOUNTS for backwards compatibility
Used in:
,Used as request type in: Driver.ExecTaskStreaming, executor.proto.Executor.ExecStreaming
Used in:
Used in:
Used as response type in: Driver.ExecTaskStreaming, executor.proto.Executor.ExecStreaming
ExitResult contains information about the exit status of a task
Used in:
, , ,ExitCode returned from the task on exit
Signal is set if a signal was sent to the task
OomKilled is true if the task exited as a result of the OOM Killer
Used in:
Used in:
Used in:
CPU CFS (Completely Fair Scheduler) period. Default: 0 (not specified)
CPU CFS (Completely Fair Scheduler) quota. Default: 0 (not specified)
CPU shares (relative weight vs. other containers). Default: 0 (not specified)
Memory limit in bytes. Default: 0 (not specified)
OOMScoreAdj adjusts the oom-killer score. Default: 0 (not specified)
CpusetCpus constrains the allowed set of logical CPUs. Default: "" (not specified) This field exists to support drivers which can't set a cgroup path.
CpusetCgroup is the path to the cpuset cgroup managed by the client
PercentTicks is a compatibility option for docker and should not be used buf:lint:ignore FIELD_LOWER_SNAKE_CASE
Used in:
MeasuredFields indicates which fields were actually sampled
Used in:
Used in:
,TaskPath is the file path within the task directory to mount to
HostPath is the file path on the host to mount from
Readonly if set true, mounts the path in readonly mode
Propagation mode for the mount. Not exactly the same as the unix mount propagation flags. See callsite usage for details.
Used in:
, , ,Used in:
,NetworkOverride contains network settings which the driver may override for the task, such as when the driver is setting up the task's network.
Used in:
,PortMap can be set to replace ports with driver-specific mappings
Addr is the IP address for the task created by the driver
AutoAdvertise indicates whether the driver thinks services that choose to auto_advertise_addresses should use this IP instead of the host's.
Used in:
Used in:
Used in:
Used in:
, ,AllocatedResources are the resources set for the task
LinuxResources are the computed values to set for specific Linux features
Ports are the allocated port mappings for the allocation. A task may use these to manually configure port mapping if shared network namespaces aren't being used.
Used in:
Used in:
,Id of the task, recommended to the globally unique, must be unique to the driver.
Name of the task
MsgpackDriverConfig is the encoded driver configuation of the task
Env is the a set of key/value pairs to be set as environment variables
DeviceEnv is the set of environment variables that are defined by device plugins. This allows the driver to differentiate environment variables set by the device plugins and those by the user. When populating the task's environment env should be used.
Resources defines the resources to isolate
Mounts is a list of targets to bind mount into the task directory
Devices is a list of system devices to mount into the task's execution environment.
User defines the operating system user the tasks should run as
AllocDir is the directory on the host where the allocation directory exists.
StdoutPath is the path to the file to open and write task stdout to
StderrPath is the path to the file to open and write task stderr to
TaskGroupName is the name of the task group which this task is a member of
JobName is the name of the job of which this task is part of
AllocId is the ID of the associated allocation
NetworkIsolationSpec specifies the configuration for the network namespace to use for the task. *Only supported on Linux
DNSConfig is the configuration for task DNS resolvers and other options
JobId is the ID of the job of which this task is part of
Namespace is the namespace of the job of which this task is part of
NodeName is the name of the node where the associated allocation is running
NodeId is the ID of the node where the associated allocation is running
ParentJobID is the parent id for dispatch and periodic jobs
Used in:
Attributes is a set of string/string key value pairs specific to the implementing driver
TaskHandle is created when starting a task and is used to recover task
Used in:
,Version is used by the driver to version the DriverState schema. Version 0 is reserved by Nomad and should not be used.
Config is the TaskConfig for the task
State is the state of the task's execution
DriverState is the encoded state for the specific driver
Used in:
CPU usage stats
Memory usage stats
Used in:
,Used in:
,Id of the task
Timestamp for which the stats were collected
AggResourceUsage is the aggreate usage of all processes
ResourceUsageByPid breaks the usage stats by process
TaskStatus includes information of a specific task
Used in:
State is the state of the task's execution
StartedAt is the timestamp when the task was started
CompletedAt is the timestamp when the task exited. If the task is still running, CompletedAt will not be set
Result is set when CompletedAt is set.