microvmexec.services.api.v1alpha1
Table of Contents
services/microvmexec/v1alpha1/microvmexec.proto
ExecCommandRequest
ExecCommandRequest is one message in the client->server stream. The first message on a stream must carry start; all following messages carry stdin (only meaningful if start.has_stdin was set) or stdin_eof.
| Field | Type | Label | Description |
|---|---|---|---|
| start | ExecStart | ||
| stdin | bytes | ||
| stdin_eof | bool |
ExecCommandResponse
ExecCommandResponse is one message in the server->client stream. Only exit_code terminates the stream; error may be sent (typically followed by exit_code) without ending the exchange.
| Field | Type | Label | Description |
|---|---|---|---|
| stdout | bytes | ||
| stderr | bytes | ||
| exit_code | int32 | ||
| error | string |
ExecStart
ExecStart describes the microvm to target and the command to run, mirroring the guest-agent’s own exec request fields.
| Field | Type | Label | Description |
|---|---|---|---|
| uid | string | uid is the microvm identifier, as used by MicroVM.GetMicroVM/DeleteMicroVM. | |
| cmd | string | ||
| args | string | repeated | |
| cwd | string | cwd is the working directory; empty means the guest-agent’s cwd. | |
| env | ExecStart.EnvEntry | repeated | env entries are added to (and override) the guest-agent’s environment. |
| shell | bool | shell runs “sh -c <cmd + args joined>” instead of a direct exec. | |
| user | string | user, if set, runs the command as that guest system user. | |
| timeout_seconds | int32 | timeout_seconds bounds the run; 0 means unbounded. | |
| has_stdin | bool | has_stdin tells the server to expect streamed stdin messages. |
ExecStart.EnvEntry
| Field | Type | Label | Description |
|---|---|---|---|
| key | string | ||
| value | string |
MicroVMExec
MicroVMExec runs commands inside a microvm’s guest-agent over vsock, streaming stdin in and stdout/stderr/exit back out. It requires the target microvm to have been created with AllowGuestAgent set, to be in the created state, and for the server to have been started with exec enabled.
| Method Name | Request Type | Response Type | Description |
|---|---|---|---|
| ExecCommand | ExecCommandRequest stream | ExecCommandResponse stream |
Scalar Value Types
| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby |
|---|---|---|---|---|---|---|---|---|
| double | double | double | float | float64 | double | float | Float | |
| float | float | float | float | float32 | float | float | Float | |
| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) |
| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum |
| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) |
| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) |
| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) |
| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum |
| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) |
| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum |
| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) |
| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum |
| bool | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | |
| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) |
| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) |