| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| import "mesos/mesos.proto"; |
| |
| package mesos.internal; |
| |
| // TODO(benh): Provide comments for each of these messages. Also, |
| // consider splitting these messages into different "packages" which |
| // represent which messages get handled by which components (e.g., the |
| // "mesos.internal.executor" package includes messages that the |
| // executor handles). |
| |
| |
| // TODO(benh): It would be great if this could just be a |
| // TaskInfo wherever it gets used! However, doing so would |
| // require adding the framework_id field, the executor_id field, and |
| // the state field into TaskInfo though (or send them another |
| // way). Also, one performance reason why we don't do that now is |
| // because storing whatever data is coupled with a TaskInfo |
| // could be large and unnecessary. |
| // TODO(bmahler): Add executor_uuid here, and send it to the master. This will |
| // allow us to expose executor work directories for tasks in the webui when |
| // looking from the master level. Currently only the slave knows which run the |
| // task belongs to. |
| message Task { |
| required string name = 1; |
| required TaskID task_id = 2; |
| required FrameworkID framework_id = 3; |
| optional ExecutorID executor_id = 4; |
| required SlaveID slave_id = 5; |
| required TaskState state = 6; |
| repeated Resource resources = 7; |
| repeated TaskStatus statuses = 8; |
| } |
| |
| // Describes a role, which are used to group frameworks for allocation |
| // decisions, depending on the allocation policy being used. |
| // The weight field can be used to indicate forms of priority. |
| message RoleInfo { |
| required string name = 1; |
| optional double weight = 2 [default = 1]; |
| } |
| |
| |
| message StatusUpdate { |
| required FrameworkID framework_id = 1; |
| optional ExecutorID executor_id = 2; |
| optional SlaveID slave_id = 3; |
| required TaskStatus status = 4; |
| required double timestamp = 5; |
| required bytes uuid = 6; |
| } |
| |
| |
| // This message encapsulates how we checkpoint a status update to disk. |
| // NOTE: If type == UPDATE, the 'update' field is required. |
| // NOTE: If type == ACK, the 'uuid' field is required. |
| message StatusUpdateRecord { |
| enum Type { |
| UPDATE = 0; |
| ACK = 1; |
| } |
| required Type type = 1; |
| optional StatusUpdate update = 2; |
| optional bytes uuid = 3; |
| } |
| |
| |
| message SubmitSchedulerRequest |
| { |
| required string name = 1; |
| } |
| |
| |
| message SubmitSchedulerResponse |
| { |
| required bool okay = 1; |
| } |
| |
| |
| message ExecutorToFrameworkMessage { |
| required SlaveID slave_id = 1; |
| required FrameworkID framework_id = 2; |
| required ExecutorID executor_id = 3; |
| required bytes data = 4; |
| } |
| |
| |
| message FrameworkToExecutorMessage { |
| required SlaveID slave_id = 1; |
| required FrameworkID framework_id = 2; |
| required ExecutorID executor_id = 3; |
| required bytes data = 4; |
| } |
| |
| |
| message RegisterFrameworkMessage { |
| required FrameworkInfo framework = 1; |
| } |
| |
| |
| message ReregisterFrameworkMessage { |
| required FrameworkInfo framework = 2; |
| required bool failover = 3; |
| } |
| |
| |
| message FrameworkRegisteredMessage { |
| required FrameworkID framework_id = 1; |
| required MasterInfo master_info = 2; |
| } |
| |
| message FrameworkReregisteredMessage { |
| required FrameworkID framework_id = 1; |
| required MasterInfo master_info = 2; |
| } |
| |
| message UnregisterFrameworkMessage { |
| required FrameworkID framework_id = 1; |
| } |
| |
| |
| message DeactivateFrameworkMessage { |
| required FrameworkID framework_id = 1; |
| } |
| |
| |
| message ResourceRequestMessage { |
| required FrameworkID framework_id = 1; |
| repeated Request requests = 2; |
| } |
| |
| |
| message ResourceOffersMessage { |
| repeated Offer offers = 1; |
| repeated string pids = 2; |
| } |
| |
| |
| message LaunchTasksMessage { |
| required FrameworkID framework_id = 1; |
| repeated TaskInfo tasks = 3; |
| required Filters filters = 5; |
| repeated OfferID offer_ids = 6; |
| } |
| |
| |
| message RescindResourceOfferMessage { |
| required OfferID offer_id = 1; |
| } |
| |
| |
| message ReviveOffersMessage { |
| required FrameworkID framework_id = 1; |
| } |
| |
| |
| message RunTaskMessage { |
| required FrameworkID framework_id = 1; |
| required FrameworkInfo framework = 2; |
| required string pid = 3; |
| required TaskInfo task = 4; |
| } |
| |
| |
| message KillTaskMessage { |
| // TODO(bmahler): Include the SlaveID here to improve the Master's |
| // ability to respond for non-activated slaves. |
| required FrameworkID framework_id = 1; |
| required TaskID task_id = 2; |
| } |
| |
| |
| // NOTE: If 'pid' is present, scheduler driver sends an |
| // acknowledgement to the pid. |
| message StatusUpdateMessage { |
| required StatusUpdate update = 1; |
| optional string pid = 2; |
| } |
| |
| |
| message StatusUpdateAcknowledgementMessage { |
| required SlaveID slave_id = 1; |
| required FrameworkID framework_id = 2; |
| required TaskID task_id = 3; |
| required bytes uuid = 4; |
| } |
| |
| |
| message LostSlaveMessage { |
| required SlaveID slave_id = 1; |
| } |
| |
| |
| // Allows the framework to query the status for non-terminal tasks. |
| // This causes the master to send back the latest task status for |
| // each task in 'statuses', if possible. Tasks that are no longer |
| // known will result in a TASK_LOST update. If statuses is empty, |
| // then the master will send the latest status for each task |
| // currently known. |
| message ReconcileTasksMessage { |
| required FrameworkID framework_id = 1; |
| repeated TaskStatus statuses = 2; // Should be non-terminal only. |
| } |
| |
| |
| message FrameworkErrorMessage { |
| required string message = 2; |
| } |
| |
| |
| message RegisterSlaveMessage { |
| required SlaveInfo slave = 1; |
| } |
| |
| |
| message ReregisterSlaveMessage { |
| // TODO(bmahler): Deprecate and remove the explicit slave_id as |
| // SlaveInfo already includes this information. |
| required SlaveID slave_id = 1; |
| required SlaveInfo slave = 2; |
| repeated ExecutorInfo executor_infos = 4; |
| repeated Task tasks = 3; |
| repeated Archive.Framework completed_frameworks = 5; |
| } |
| |
| |
| message SlaveRegisteredMessage { |
| required SlaveID slave_id = 1; |
| } |
| |
| |
| message SlaveReregisteredMessage { |
| required SlaveID slave_id = 1; |
| } |
| |
| |
| message UnregisterSlaveMessage { |
| required SlaveID slave_id = 1; |
| } |
| |
| |
| message HeartbeatMessage { |
| required SlaveID slave_id = 1; |
| } |
| |
| |
| // Tells a slave to shut down all executors of the given framework. |
| message ShutdownFrameworkMessage { |
| required FrameworkID framework_id = 1; |
| } |
| |
| |
| // Tells the executor to initiate a shut down by invoking |
| // Executor::shutdown. |
| message ShutdownExecutorMessage {} |
| |
| |
| message UpdateFrameworkMessage { |
| required FrameworkID framework_id = 1; |
| required string pid = 2; |
| } |
| |
| |
| message RegisterExecutorMessage { |
| required FrameworkID framework_id = 1; |
| required ExecutorID executor_id = 2; |
| } |
| |
| |
| message ExecutorRegisteredMessage { |
| required ExecutorInfo executor_info = 2; |
| required FrameworkID framework_id = 3; |
| required FrameworkInfo framework_info = 4; |
| required SlaveID slave_id = 5; |
| required SlaveInfo slave_info = 6; |
| } |
| |
| |
| message ExecutorReregisteredMessage { |
| required SlaveID slave_id = 1; |
| required SlaveInfo slave_info = 2; |
| } |
| |
| |
| message ExitedExecutorMessage { |
| required SlaveID slave_id = 1; |
| required FrameworkID framework_id = 2; |
| required ExecutorID executor_id = 3; |
| required int32 status = 4; |
| } |
| |
| |
| message ReconnectExecutorMessage { |
| required SlaveID slave_id = 1; |
| } |
| |
| |
| message ReregisterExecutorMessage { |
| required ExecutorID executor_id = 1; |
| required FrameworkID framework_id = 2; |
| repeated TaskInfo tasks = 3; |
| repeated StatusUpdate updates = 4; |
| } |
| |
| |
| message RegisterProjdMessage { |
| required string project = 1; |
| } |
| |
| |
| message ProjdReadyMessage { |
| required string project = 1; |
| } |
| |
| |
| message ProjdUpdateResourcesMessage { |
| optional Parameters parameters = 1; |
| } |
| |
| |
| message FrameworkExpiredMessage { |
| required FrameworkID framework_id = 1; |
| } |
| |
| |
| message ShutdownMessage { |
| optional string message = 1; |
| } |
| |
| |
| message AuthenticateMessage { |
| required string pid = 1; // PID that needs to be authenticated. |
| } |
| |
| |
| message AuthenticationMechanismsMessage { |
| repeated string mechanisms = 1; // List of available SASL mechanisms. |
| } |
| |
| |
| message AuthenticationStartMessage { |
| required string mechanism = 1; |
| optional string data = 2; |
| } |
| |
| |
| message AuthenticationStepMessage { |
| required bytes data = 1; |
| } |
| |
| |
| message AuthenticationCompletedMessage {} |
| |
| |
| message AuthenticationFailedMessage {} |
| |
| |
| message AuthenticationErrorMessage { |
| optional string error = 1; |
| } |
| |
| |
| // TODO(adam-mesos): Move this to an 'archive' package. |
| /** |
| * Describes Completed Frameworks, etc. for archival. |
| */ |
| message Archive { |
| message Framework { |
| required FrameworkInfo framework_info = 1; |
| optional string pid = 2; |
| repeated Task tasks = 3; |
| } |
| repeated Framework frameworks = 1; |
| } |
| |
| // Message describing task current health status that is sent by |
| // the task health checker to the command executor. |
| // The command executor reports the task status back to the |
| // on each receive. If the health checker configured faiure |
| // condition meets, then kill_task flag will be set to true which |
| // the executor on message receive will kill the task. |
| message TaskHealthStatus { |
| required TaskID task_id = 1; |
| |
| required bool healthy = 2; |
| |
| // Flag to initiate task kill. |
| optional bool kill_task = 3 [default = false]; |
| |
| // Number of consecutive counts in current status. |
| // This will not be populated if task is healthy. |
| optional int32 consecutive_failures = 4; |
| } |