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"
+                "}"
             "}]"
         "}");