You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by qi...@apache.org on 2016/11/22 01:40:46 UTC
[2/2] mesos git commit: Added '--task' into mesos-execute.
Added '--task' into mesos-execute.
Review: https://reviews.apache.org/r/53645/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/77da99a9
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/77da99a9
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/77da99a9
Branch: refs/heads/master
Commit: 77da99a9ca2d7bd5ba61c276290c1cb60bb55445
Parents: bf52cc1
Author: Qian Zhang <zh...@gmail.com>
Authored: Tue Nov 22 09:32:21 2016 +0800
Committer: Qian Zhang <zh...@gmail.com>
Committed: Tue Nov 22 09:32:21 2016 +0800
----------------------------------------------------------------------
src/cli/execute.cpp | 78 +++++++++++++++++++++++++++++++++++++++---------
1 file changed, 64 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/77da99a9/src/cli/execute.cpp
----------------------------------------------------------------------
diff --git a/src/cli/execute.cpp b/src/cli/execute.cpp
index dac895c..ddf7eca 100644
--- a/src/cli/execute.cpp
+++ b/src/cli/execute.cpp
@@ -97,6 +97,43 @@ public:
"master",
"Mesos master (e.g., IP:PORT).");
+ add(&Flags::task,
+ "task",
+ "The value could be a JSON-formatted string of `TaskInfo` or a\n"
+ "file path containing the JSON-formatted `TaskInfo`. Path must\n"
+ "be of the form `file:///path/to/file` or `/path/to/file`."
+ "\n"
+ "See the `TaskInfo` message in `mesos.proto` for the expected\n"
+ "format. NOTE: `agent_id` need not to be set.\n"
+ "\n"
+ "Example:\n"
+ "{\n"
+ " \"name\": \"Name of the task\",\n"
+ " \"task_id\": {\"value\" : \"Id of the task\"},\n"
+ " \"agent_id\": {\"value\" : \"\"},\n"
+ " \"resources\": [\n"
+ " {\n"
+ " \"name\": \"cpus\",\n"
+ " \"type\": \"SCALAR\",\n"
+ " \"scalar\": {\n"
+ " \"value\": 0.1\n"
+ " },\n"
+ " \"role\": \"*\"\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"mem\",\n"
+ " \"type\": \"SCALAR\",\n"
+ " \"scalar\": {\n"
+ " \"value\": 32\n"
+ " },\n"
+ " \"role\": \"*\"\n"
+ " }\n"
+ " ],\n"
+ " \"command\": {\n"
+ " \"value\": \"sleep 1000\"\n"
+ " }\n"
+ "}");
+
add(&Flags::task_group,
"task_group",
"The value could be a JSON-formatted string of `TaskGroupInfo` or a\n"
@@ -305,6 +342,7 @@ public:
string master;
Option<string> name;
+ Option<TaskInfo> task;
Option<TaskGroupInfo> task_group;
bool shell;
Option<string> command;
@@ -828,21 +866,12 @@ int main(int argc, char** argv)
LOG(WARNING) << warning.message;
}
- if (flags.task_group.isSome() &&
- (flags.name.isSome() ||
- flags.command.isSome() ||
- flags.environment.isSome() ||
- flags.appc_image.isSome() ||
- flags.docker_image.isSome() ||
- flags.volumes.isSome())) {
+ if (flags.task.isSome() && flags.task_group.isSome()) {
cerr << flags.usage(
"Either task or task group should be set but not both. Provide"
- " either '--name, --command, --env, --appc_image, --docker_image,"
- " --volumes' OR '--task_group'") << endl;
+ " either '--task' OR '--task_group'") << endl;
return EXIT_FAILURE;
- }
-
- if (flags.task_group.isNone()) {
+ } else if (flags.task.isNone() && flags.task_group.isNone()) {
if (flags.name.isNone()) {
cerr << flags.usage("Missing required option --name") << endl;
return EXIT_FAILURE;
@@ -852,6 +881,27 @@ int main(int argc, char** argv)
cerr << flags.usage("Missing required option --command") << endl;
return EXIT_FAILURE;
}
+ } else {
+ // Either --task or --task_group is set.
+ if (flags.name.isSome() ||
+ flags.command.isSome() ||
+ flags.environment.isSome() ||
+ flags.appc_image.isSome() ||
+ flags.docker_image.isSome() ||
+ flags.volumes.isSome()) {
+ cerr << flags.usage(
+ "'--name, --command, --env, --appc_image, --docker_image,"
+ " --volumes' can only be set when both '--task' and"
+ " '--task_group' are not set") << endl;
+ return EXIT_FAILURE;
+ }
+
+ if (flags.task.isSome() && flags.networks.isSome()) {
+ cerr << flags.usage(
+ "'--networks' can only be set when"
+ " '--task' is not set") << endl;
+ return EXIT_FAILURE;
+ }
}
if (flags.content_type == "json" ||
@@ -1022,9 +1072,9 @@ int main(int argc, char** argv)
}
}
- Option<TaskInfo> taskInfo = None();
+ Option<TaskInfo> taskInfo = flags.task;
- if (flags.task_group.isNone()) {
+ if (flags.task.isNone() && flags.task_group.isNone()) {
TaskInfo task;
task.set_name(flags.name.get());
task.mutable_task_id()->set_value(flags.name.get());