aboutsummaryrefslogtreecommitdiff
path: root/weed/pb/worker.proto
diff options
context:
space:
mode:
Diffstat (limited to 'weed/pb/worker.proto')
-rw-r--r--weed/pb/worker.proto142
1 files changed, 142 insertions, 0 deletions
diff --git a/weed/pb/worker.proto b/weed/pb/worker.proto
new file mode 100644
index 000000000..d96fce7d0
--- /dev/null
+++ b/weed/pb/worker.proto
@@ -0,0 +1,142 @@
+syntax = "proto3";
+
+package worker_pb;
+
+option go_package = "github.com/seaweedfs/seaweedfs/weed/pb/worker_pb";
+
+// WorkerService provides bidirectional communication between admin and worker
+service WorkerService {
+ // WorkerStream maintains a bidirectional stream for worker communication
+ rpc WorkerStream(stream WorkerMessage) returns (stream AdminMessage);
+}
+
+// WorkerMessage represents messages from worker to admin
+message WorkerMessage {
+ string worker_id = 1;
+ int64 timestamp = 2;
+
+ oneof message {
+ WorkerRegistration registration = 3;
+ WorkerHeartbeat heartbeat = 4;
+ TaskRequest task_request = 5;
+ TaskUpdate task_update = 6;
+ TaskComplete task_complete = 7;
+ WorkerShutdown shutdown = 8;
+ }
+}
+
+// AdminMessage represents messages from admin to worker
+message AdminMessage {
+ string admin_id = 1;
+ int64 timestamp = 2;
+
+ oneof message {
+ RegistrationResponse registration_response = 3;
+ HeartbeatResponse heartbeat_response = 4;
+ TaskAssignment task_assignment = 5;
+ TaskCancellation task_cancellation = 6;
+ AdminShutdown admin_shutdown = 7;
+ }
+}
+
+// WorkerRegistration message when worker connects
+message WorkerRegistration {
+ string worker_id = 1;
+ string address = 2;
+ repeated string capabilities = 3;
+ int32 max_concurrent = 4;
+ map<string, string> metadata = 5;
+}
+
+// RegistrationResponse confirms worker registration
+message RegistrationResponse {
+ bool success = 1;
+ string message = 2;
+ string assigned_worker_id = 3;
+}
+
+// WorkerHeartbeat sent periodically by worker
+message WorkerHeartbeat {
+ string worker_id = 1;
+ string status = 2;
+ int32 current_load = 3;
+ int32 max_concurrent = 4;
+ repeated string current_task_ids = 5;
+ int32 tasks_completed = 6;
+ int32 tasks_failed = 7;
+ int64 uptime_seconds = 8;
+}
+
+// HeartbeatResponse acknowledges heartbeat
+message HeartbeatResponse {
+ bool success = 1;
+ string message = 2;
+}
+
+// TaskRequest from worker asking for new tasks
+message TaskRequest {
+ string worker_id = 1;
+ repeated string capabilities = 2;
+ int32 available_slots = 3;
+}
+
+// TaskAssignment from admin to worker
+message TaskAssignment {
+ string task_id = 1;
+ string task_type = 2;
+ TaskParams params = 3;
+ int32 priority = 4;
+ int64 created_time = 5;
+ map<string, string> metadata = 6;
+}
+
+// TaskParams contains task-specific parameters
+message TaskParams {
+ uint32 volume_id = 1;
+ string server = 2;
+ string collection = 3;
+ string data_center = 4;
+ string rack = 5;
+ repeated string replicas = 6;
+ map<string, string> parameters = 7;
+}
+
+// TaskUpdate reports task progress
+message TaskUpdate {
+ string task_id = 1;
+ string worker_id = 2;
+ string status = 3;
+ float progress = 4;
+ string message = 5;
+ map<string, string> metadata = 6;
+}
+
+// TaskComplete reports task completion
+message TaskComplete {
+ string task_id = 1;
+ string worker_id = 2;
+ bool success = 3;
+ string error_message = 4;
+ int64 completion_time = 5;
+ map<string, string> result_metadata = 6;
+}
+
+// TaskCancellation from admin to cancel a task
+message TaskCancellation {
+ string task_id = 1;
+ string reason = 2;
+ bool force = 3;
+}
+
+// WorkerShutdown notifies admin that worker is shutting down
+message WorkerShutdown {
+ string worker_id = 1;
+ string reason = 2;
+ repeated string pending_task_ids = 3;
+}
+
+// AdminShutdown notifies worker that admin is shutting down
+message AdminShutdown {
+ string reason = 1;
+ int32 graceful_shutdown_seconds = 2;
+} \ No newline at end of file