Define archive control v1 protocol
This commit is contained in:
@@ -0,0 +1,130 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package archive_control.v1;
|
||||
|
||||
import "archive_control/v1/common.proto";
|
||||
import "archive_control/v1/inventory.proto";
|
||||
import "archive_control/v1/job.proto";
|
||||
import "archive_control/v1/resource.proto";
|
||||
import "archive_control/v1/route.proto";
|
||||
import "google/protobuf/timestamp.proto";
|
||||
|
||||
message AssignJobCommand {
|
||||
JobDefinition job = 1;
|
||||
uint64 expected_job_revision = 2;
|
||||
uint64 expected_last_event_sequence = 3;
|
||||
}
|
||||
|
||||
message ExecuteStepCommand {
|
||||
string job_id = 1;
|
||||
uint64 expected_job_revision = 2;
|
||||
JobStepKind step = 3;
|
||||
uint32 attempt = 4;
|
||||
uint64 expected_last_event_sequence = 5;
|
||||
}
|
||||
|
||||
message CancelJobCommand {
|
||||
string job_id = 1;
|
||||
uint64 expected_job_revision = 2;
|
||||
string reason = 3;
|
||||
uint64 expected_last_event_sequence = 4;
|
||||
}
|
||||
|
||||
message EnsureRouteCommand {
|
||||
EnsureRouteSpec route = 1;
|
||||
}
|
||||
|
||||
message RequestJobSnapshotCommand {
|
||||
repeated string job_ids = 1;
|
||||
}
|
||||
|
||||
message Command {
|
||||
string command_id = 1;
|
||||
google.protobuf.Timestamp created_at = 2;
|
||||
oneof payload {
|
||||
AssignJobCommand assign_job = 10;
|
||||
ExecuteStepCommand execute_step = 11;
|
||||
CancelJobCommand cancel_job = 12;
|
||||
EnsureRouteCommand ensure_route = 13;
|
||||
InventoryQuery inventory_query = 14;
|
||||
RequestJobSnapshotCommand request_job_snapshot = 15;
|
||||
}
|
||||
}
|
||||
|
||||
enum CommandAckStatus {
|
||||
COMMAND_ACK_STATUS_UNSPECIFIED = 0;
|
||||
COMMAND_ACK_STATUS_ACCEPTED = 1;
|
||||
COMMAND_ACK_STATUS_DUPLICATE = 2;
|
||||
COMMAND_ACK_STATUS_REJECTED = 3;
|
||||
}
|
||||
|
||||
// CommandAck confirms durable acceptance/rejection, not completion. Completion
|
||||
// is reported by JobEvent, InventoryChunk, RouteUpdate, or JobSnapshot.
|
||||
message CommandAck {
|
||||
string command_id = 1;
|
||||
CommandAckStatus status = 2;
|
||||
Error error = 3;
|
||||
}
|
||||
|
||||
enum JobEventType {
|
||||
JOB_EVENT_TYPE_UNSPECIFIED = 0;
|
||||
JOB_EVENT_TYPE_ASSIGNED = 1;
|
||||
JOB_EVENT_TYPE_STEP_STARTED = 2;
|
||||
JOB_EVENT_TYPE_PROGRESS = 3;
|
||||
JOB_EVENT_TYPE_WAITING = 4;
|
||||
JOB_EVENT_TYPE_STALLED = 5;
|
||||
JOB_EVENT_TYPE_STEP_SUCCEEDED = 6;
|
||||
JOB_EVENT_TYPE_COMMITTED = 7;
|
||||
JOB_EVENT_TYPE_CANCELLING = 8;
|
||||
JOB_EVENT_TYPE_ROLLBACK_STARTED = 9;
|
||||
JOB_EVENT_TYPE_ROLLBACK_SUCCEEDED = 10;
|
||||
JOB_EVENT_TYPE_CLEANUP_REQUIRED = 11;
|
||||
JOB_EVENT_TYPE_SUCCEEDED = 12;
|
||||
JOB_EVENT_TYPE_FAILED = 13;
|
||||
JOB_EVENT_TYPE_CANCELLED = 14;
|
||||
}
|
||||
|
||||
message JobEvent {
|
||||
string event_id = 1;
|
||||
string job_id = 2;
|
||||
uint64 sequence = 3;
|
||||
uint64 job_revision = 4;
|
||||
JobEventType type = 5;
|
||||
JobState state = 6;
|
||||
bool committed = 7;
|
||||
JobProgress progress = 8;
|
||||
Error error = 9;
|
||||
ResourceStateFingerprint observed_resource = 10;
|
||||
Placement observed_placement = 11;
|
||||
google.protobuf.Timestamp occurred_at = 12;
|
||||
}
|
||||
|
||||
message JobSnapshot {
|
||||
JobRecord job = 1;
|
||||
uint64 last_event_sequence = 2;
|
||||
repeated string in_flight_command_ids = 3;
|
||||
}
|
||||
|
||||
message ClientStateSnapshot {
|
||||
string snapshot_id = 1;
|
||||
repeated JobSnapshot active_jobs = 2;
|
||||
repeated LocalRoute routes = 3;
|
||||
repeated ServiceHealth services = 4;
|
||||
google.protobuf.Timestamp observed_at = 5;
|
||||
}
|
||||
|
||||
message RouteUpdate {
|
||||
string command_id = 1;
|
||||
LocalRoute route = 2;
|
||||
RouteVerification verification = 3;
|
||||
Error error = 4;
|
||||
string update_id = 5;
|
||||
// Monotonic for this command_id; duplicate sequences must have identical
|
||||
// content and gaps are reconciled through ClientStateSnapshot.
|
||||
uint64 sequence = 6;
|
||||
}
|
||||
|
||||
message ProtocolError {
|
||||
Error error = 1;
|
||||
string offending_message_id = 2;
|
||||
}
|
||||
Reference in New Issue
Block a user