You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by gr...@apache.org on 2020/03/25 04:35:59 UTC
[mesos] branch master updated: Added resource limits to v0 endpoint
results.
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 <gr...@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"
+ "}"
"}]"
"}");