This is an automated email from the ASF dual-hosted git repository. grag pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mesos.git
The following commit(s) were added to refs/heads/master by this push: new 77f5165 Added resource limits to v0 endpoint results. 77f5165 is described below commit 77f5165fd2f942a89063803a7be5465d35774b10 Author: Greg Mann <g...@mesosphere.io> AuthorDate: Tue Mar 24 21:13:44 2020 -0700 Added resource limits to v0 endpoint results. Review: https://reviews.apache.org/r/72262/ --- src/common/http.cpp | 31 +++++++++++++++++++++++++++++++ src/common/http.hpp | 1 + src/tests/common/http_tests.cpp | 7 +++++++ src/tests/master_tests.cpp | 14 ++++++++++++-- 4 files changed, 51 insertions(+), 2 deletions(-) diff --git a/src/common/http.cpp b/src/common/http.cpp index 3dd77dc..093d837 100644 --- a/src/common/http.cpp +++ b/src/common/http.cpp @@ -633,6 +633,10 @@ JSON::Object model(const Task& task) object.values["state"] = TaskState_Name(task.state()); object.values["resources"] = model(task.resources()); + if (!task.limits().empty()) { + object.values["limits"] = model(task.limits()); + } + if (task.has_user()) { object.values["user"] = task.user(); } @@ -785,6 +789,18 @@ JSON::Object model(const FileInfo& fileInfo) return file; } + +JSON::Object model(const google::protobuf::Map<string, Value_Scalar>& map) +{ + JSON::Object result, scalar; + + foreach (auto item, map) { + result.values[item.first] = item.second.value(); + } + + return result; +} + } // namespace internal { @@ -1082,6 +1098,17 @@ void json( } +// Used to include resource limits in JSON output. +void json( + JSON::ObjectWriter* writer, + const google::protobuf::Map<string, Value_Scalar>& map) +{ + foreach (auto item, map) { + writer->field(item.first, item.second.value()); + } +} + + void json(JSON::ObjectWriter* writer, const Task& task) { writer->field("id", task.task_id().value()); @@ -1092,6 +1119,10 @@ void json(JSON::ObjectWriter* writer, const Task& task) writer->field("state", TaskState_Name(task.state())); writer->field("resources", task.resources()); + if (!task.limits().empty()) { + writer->field("limits", task.limits()); + } + // Tasks are not allowed to mix resources allocated to // different roles, see MESOS-6636. writer->field("role", task.resources().begin()->allocation_info().role()); diff --git a/src/common/http.hpp b/src/common/http.hpp index 02633e1..9d5b8ed 100644 --- a/src/common/http.hpp +++ b/src/common/http.hpp @@ -211,6 +211,7 @@ JSON::Object model(const ExecutorInfo& executorInfo); JSON::Array model(const Labels& labels); JSON::Object model(const Task& task); JSON::Object model(const FileInfo& fileInfo); +JSON::Object model(const google::protobuf::Map<std::string, Value_Scalar>& map); void json(JSON::ObjectWriter* writer, const Task& task); diff --git a/src/tests/common/http_tests.cpp b/src/tests/common/http_tests.cpp index 5f36527..12dcf67 100644 --- a/src/tests/common/http_tests.cpp +++ b/src/tests/common/http_tests.cpp @@ -91,6 +91,8 @@ TEST(HTTPTest, ModelTask) taskInfo.mutable_command()->set_value("echo hello"); taskInfo.mutable_command()->set_user("user1"); taskInfo.mutable_discovery()->CopyFrom(discovery); + (*taskInfo.mutable_limits())["cpus"].set_value(1.0); + (*taskInfo.mutable_limits())["mem"].set_value(32); Task task = createTask(taskInfo, state, frameworkId); task.add_statuses()->CopyFrom(statuses[0]); @@ -110,6 +112,11 @@ TEST(HTTPTest, ModelTask) " \"gpus\":0," " \"mem\":0" " }," + " \"limits\":" + " {" + " \"cpus\": 1.0," + " \"mem\": 32" + " }," " \"slave_id\":\"s\"," " \"state\":\"TASK_RUNNING\"," " \"statuses\":" diff --git a/src/tests/master_tests.cpp b/src/tests/master_tests.cpp index 617abfa..8cc8d20 100644 --- a/src/tests/master_tests.cpp +++ b/src/tests/master_tests.cpp @@ -4357,6 +4357,8 @@ TEST_F(MasterTest, TasksEndpoint) task1.mutable_slave_id()->MergeFrom(offer->slave_id()); task1.mutable_resources()->MergeFrom( Resources::parse("cpus:0.1;mem:12").get()); + (*task1.mutable_limits())["cpus"].set_value(0.5); + (*task1.mutable_limits())["mem"].set_value(64); task1.mutable_executor()->MergeFrom(DEFAULT_EXECUTOR_INFO); TaskInfo task2; @@ -4418,7 +4420,11 @@ TEST_F(MasterTest, TasksEndpoint) "\"framework_id\":\"" + frameworkId->value() + "\"," "\"id\":\"1\"," "\"name\":\"test1\"," - "\"state\":\"TASK_RUNNING\"" + "\"state\":\"TASK_RUNNING\"," + "\"limits\":{" + " \"cpus\":0.5," + " \"mem\":64" + "}" "},{" "\"executor_id\":\"default\"," "\"framework_id\":\"" + frameworkId->value() + "\"," @@ -4442,7 +4448,11 @@ TEST_F(MasterTest, TasksEndpoint) "\"framework_id\":\"" + frameworkId->value() + "\"," "\"id\":\"1\"," "\"name\":\"test1\"," - "\"state\":\"TASK_RUNNING\"" + "\"state\":\"TASK_RUNNING\"," + "\"limits\":{" + " \"cpus\":0.5," + " \"mem\":64" + "}" "}]" "}");