Protocol Documentation¶
Table of Contents¶
-
- AccessRights
- AccessRightsRule
- AddedWorkload
- AddedWorkload.DependenciesEntry
- AgentHello
- CompleteState
- Cronjob
- DeletedWorkload
- DeletedWorkload.DependenciesEntry
- ExecutionRequest
- Goodbye
- Interval
- RequestCompleteState
- State
- State.ConfigsEntry
- State.CronjobsEntry
- State.WorkloadsEntry
- StateChangeRequest
- Tag
- UpdateStateRequest
- UpdateWorkload
- UpdateWorkloadState
- Workload
- Workload.DependenciesEntry
- ExpectedState
- PatchOperation
- CliConnection
ankaios.proto¶
The Ankaios communication protocol is used in the communcation between the following components:
-
Ankaios Agent and Ankaios Server,
-
Ankaios CLI and Ankaios Server,
-
Workload and Ankaios Server through the control interface.
The protocol consists of the following top-level message types:
-
StateChangeRequest: agent/cli -> server
-
ExecutionRequest: server -> agent/cli
AccessRights¶
A message containing lists of access rules that are allowed or denied.
| Field | Type | Label | Description |
|---|---|---|---|
| allow | AccessRightsRule | repeated | A list of access rules that are allowed. |
| deny | AccessRightsRule | repeated | A list of access rules that are denied. |
AccessRightsRule¶
A message describing an access rule for the given patch operation for given object fields and values.
| Field | Type | Label | Description |
|---|---|---|---|
| operation | PatchOperation | The patch operation of interrest. | |
| updateMask | string | repeated | A List of field names. |
| value | string | repeated | A list of accepted values. |
AddedWorkload¶
A message containing information about a workload to be added to the Ankaios cluster.
| Field | Type | Label | Description |
|---|---|---|---|
| name | string | The name of the workload. | |
| runtime | string | The name of the runtime, e.g., podman. | |
| dependencies | AddedWorkload.DependenciesEntry | repeated | A list of dependencies to other workloads with their corresponding, expected states. Can be used to enable a synchronized start of a workload. |
| restart | bool | A flag indicating to restart the workload in case of an intentional or an unintentional stop of the workload. | |
| updateStrategy | UpdateStrategy | An enum to specify the update strategy. | |
| accessRights | AccessRights | Lists of authorizations of the workload. | |
| tags | Tag | repeated | A list of tags. |
| runtimeConfig | string | The configuration information specific to the runtime. |
AddedWorkload.DependenciesEntry¶
| Field | Type | Label | Description |
|---|---|---|---|
| key | string | ||
| value | ExpectedState |
AgentHello¶
A message to the Ankaios server to register a new agent.
| Field | Type | Label | Description |
|---|---|---|---|
| agentName | string | A unique agent name. |
CompleteState¶
A message containing the complete state of the Ankaios system. This is a response to the RequestCompletestate message.
| Field | Type | Label | Description |
|---|---|---|---|
| requestId | string | The request id corresponding to a sent RequestCompletestate message. | |
| startupState | State | The State information at the startup of the Ankaios System. | |
| currentState | State | The current state information. | |
| workloadStates | WorkloadState | repeated | The current states of the workloads. |
Cronjob¶
A message containing the cron job information.
| Field | Type | Label | Description |
|---|---|---|---|
| workload | string | The name of the workload. | |
| interval | Interval | The interval of the cron job. |
DeletedWorkload¶
A message containing information about a workload to be deleted from the Anakaios system.
| Field | Type | Label | Description |
|---|---|---|---|
| name | string | The name of the workload. | |
| dependencies | DeletedWorkload.DependenciesEntry | repeated | A list of dependencies to other workloads with their corresponding, expected states. Can be used to enable a synchronized stop of a workload. |
DeletedWorkload.DependenciesEntry¶
| Field | Type | Label | Description |
|---|---|---|---|
| key | string | ||
| value | ExpectedState |
ExecutionRequest¶
Messages to the Ankaios server.
| Field | Type | Label | Description |
|---|---|---|---|
| updateWorkload | UpdateWorkload | A message containing lists of workloads to be added or deleted. | |
| updateWorkloadState | UpdateWorkloadState | A message containing list of workload execution states. | |
| completeState | CompleteState | A message containing the complete state (startup state, current state, workload states) of the Anakios system. |
Goodbye¶
A message to the Ankaios server to signalize a client (agent or cli) is shutting down.
Interval¶
A message containing the interval information for the cron job.
| Field | Type | Label | Description |
|---|---|---|---|
| hours | uint32 | The number of hours. | |
| minutes | uint32 | The number of minutes. | |
| seconds | uint32 | The number of seconds. |
RequestCompleteState¶
A message containing a request for the complete/partial state of the Ankaios system. This is usually answered with a CompleteState message.
| Field | Type | Label | Description |
|---|---|---|---|
| requestId | string | A request id. This can be any string literal. | |
| fieldMask | string | repeated | A list of symbolic field paths within the State message structure e.g. 'currentState.workloads.nginx'. |
State¶
A message containing the state information.
| Field | Type | Label | Description |
|---|---|---|---|
| workloads | State.WorkloadsEntry | repeated | A mapping from workload names to workload configurations. |
| configs | State.ConfigsEntry | repeated | A key value storage for reusable configuration items. |
| cronjobs | State.CronjobsEntry | repeated | A mapping from workload names to cron job configurations. |
State.ConfigsEntry¶
| Field | Type | Label | Description |
|---|---|---|---|
| key | string | ||
| value | string |
State.CronjobsEntry¶
| Field | Type | Label | Description |
|---|---|---|---|
| key | string | ||
| value | Cronjob |
State.WorkloadsEntry¶
| Field | Type | Label | Description |
|---|---|---|---|
| key | string | ||
| value | Workload |
StateChangeRequest¶
Messages to the Ankaios server.
| Field | Type | Label | Description |
|---|---|---|---|
| agentHello | AgentHello | This message is for internal usage only! | |
| updateWorkloadState | UpdateWorkloadState | A message to Ankaios server to update the execution state of a workload. | |
| updateState | UpdateStateRequest | A message to Ankaios server to update the State of one or more agent(s). | |
| requestCompleteState | RequestCompleteState | A message to Ankaios server to request the complete state by the given request id and the optional field mask. | |
| goodbye | Goodbye |
Tag¶
A message to store a tag.
| Field | Type | Label | Description |
|---|---|---|---|
| key | string | The key of the tag. | |
| value | string | The value of the tag. |
UpdateStateRequest¶
A message containing a request to update the state of the Ankaios system. The new state is provided as state object. To specify which part(s) of the new state object should be updated a list of update mask (same as field mask) paths needs to be provided.
| Field | Type | Label | Description |
|---|---|---|---|
| newState | CompleteState | The new state of the Ankaios system. | |
| updateMask | string | repeated | A list of symbolic field paths within the state message structure e.g. 'currentState.workloads.nginx' to specify what to be updated. |
UpdateWorkload¶
A message providing information about the workloads to be added and/or deleted.
| Field | Type | Label | Description |
|---|---|---|---|
| addedWorkloads | AddedWorkload | repeated | A list of messages containing information about a workload to be added by an Ankaios agent. |
| deletedWorkloads | DeletedWorkload | repeated | A list of messages containing information about a workload to be deleted by an Ankaios agent. |
UpdateWorkloadState¶
A message containing the list the workload states.
| Field | Type | Label | Description |
|---|---|---|---|
| workloadStates | WorkloadState | repeated | A list of workload states. |
Workload¶
A message containing the configuration of a workload.
| Field | Type | Label | Description |
|---|---|---|---|
| agent | string | The name of the owning Agent. | |
| restart | bool | A flag indicating to restart the workload in case of an intentional or an unintentional stop of the workload. | |
| dependencies | Workload.DependenciesEntry | repeated | A map of workload names and expected states to enable a synchronized start of the workload. |
| updateStrategy | UpdateStrategy | An enum to specify the update strategy. | |
| tags | Tag | repeated | A list of tag names. |
| accessRights | AccessRights | Lists of authorizations of the workload. | |
| runtime | string | The name of the runtime e.g. podman. | |
| runtimeConfig | string | The configuration information specific to the runtime. |
Workload.DependenciesEntry¶
| Field | Type | Label | Description |
|---|---|---|---|
| key | string | ||
| value | ExpectedState |
WorkloadState¶
A message containing the information about the workload state.
| Field | Type | Label | Description |
|---|---|---|---|
| workloadName | string | The name of the workload. | |
| agentName | string | The name of the owning Agent. | |
| executionState | ExecutionState | The workload execution state. |
ExecutionState¶
An enum type describing the workload execution state.
| Name | Number | Description |
|---|---|---|
| EXEC_PENDING | 0 | The workload is pending. |
| EXEC_RUNNING | 1 | The workload is running. |
| EXEC_SUCCEEDED | 2 | The workload has run successfully and is stopped. |
| EXEC_FAILED | 3 | The workload has failed. |
| EXEC_UNKNOWN | 4 | The workload is in unknown state. This is the case if the owning agent is disconnected from the Ankaios server. |
| EXEC_REMOVED | 5 | The workload has been deleted. |
ExpectedState¶
An enum type describing the expected workload state. Used for dependency management.
| Name | Number | Description |
|---|---|---|
| STOPPED | 0 | The workload is stopped. |
| RUNNING | 1 | The workload is running. |
PatchOperation¶
An enum type for specifing the patch operation.
| Name | Number | Description |
|---|---|---|
| REPLACE | 0 | The replace operation. |
| ADD | 1 | The add operation. |
| REMOVE | 2 | the remove operation. |
UpdateStrategy¶
An enum type for specifing the update strategy.
| Name | Number | Description |
|---|---|---|
| UNSPECIFIED | 0 | The update order is irrelevant. |
| AT_LEAST_ONCE | 1 | At least one instance shall be running - start the new before stopping the old one. |
| AT_MOST_ONCE | 2 | At most one instance shall be running - stop the old before starting the new one. |
AgentConnection¶
| Method Name | Request Type | Response Type | Description |
|---|---|---|---|
| ConnectAgent | StateChangeRequest stream | ExecutionRequest stream |
CliConnection¶
| Method Name | Request Type | Response Type | Description |
|---|---|---|---|
| ConnectCli | StateChangeRequest stream | ExecutionRequest stream |