Repository: mesos Updated Branches: refs/heads/master f62530487 -> bdf2ea144
Added reservations support to master's state.json. Review: https://reviews.apache.org/r/35717 Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/bdf2ea14 Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/bdf2ea14 Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/bdf2ea14 Branch: refs/heads/master Commit: bdf2ea1448990f0717f43c27d5b0d0348f15332d Parents: f625304 Author: haosdent huang <[email protected]> Authored: Thu Jun 25 18:05:53 2015 -0700 Committer: Adam B <[email protected]> Committed: Thu Jun 25 18:05:53 2015 -0700 ---------------------------------------------------------------------- src/common/http.cpp | 12 ++++++++++++ src/common/http.hpp | 2 ++ src/master/http.cpp | 5 ++++- src/tests/common/http_tests.cpp | 36 ++++++++++++++++++++++++++++++++++++ 4 files changed, 54 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/bdf2ea14/src/common/http.cpp ---------------------------------------------------------------------- diff --git a/src/common/http.cpp b/src/common/http.cpp index d667cc1..1585999 100644 --- a/src/common/http.cpp +++ b/src/common/http.cpp @@ -80,6 +80,18 @@ JSON::Object model(const Resources& resources) } +JSON::Object model(const hashmap<string, Resources>& resourcesMap) +{ + JSON::Object object; + + foreachpair (const string& key, const Resources& resources, resourcesMap) { + object.values[key] = model(resources); + } + + return object; +} + + JSON::Object model(const Attributes& attributes) { JSON::Object object; http://git-wip-us.apache.org/repos/asf/mesos/blob/bdf2ea14/src/common/http.hpp ---------------------------------------------------------------------- diff --git a/src/common/http.hpp b/src/common/http.hpp index 6f100f7..c400848 100644 --- a/src/common/http.hpp +++ b/src/common/http.hpp @@ -23,6 +23,7 @@ #include <mesos/mesos.hpp> +#include <stout/hashmap.hpp> #include <stout/json.hpp> namespace mesos { @@ -36,6 +37,7 @@ class Task; JSON::Object model(const Resources& resources); +JSON::Object model(const hashmap<std::string, Resources>& resourcesMap); JSON::Object model(const Attributes& attributes); JSON::Object model(const CommandInfo& command); JSON::Object model(const ExecutorInfo& executorInfo); http://git-wip-us.apache.org/repos/asf/mesos/blob/bdf2ea14/src/master/http.cpp ---------------------------------------------------------------------- diff --git a/src/master/http.cpp b/src/master/http.cpp index b893013..3503833 100644 --- a/src/master/http.cpp +++ b/src/master/http.cpp @@ -231,9 +231,12 @@ JSON::Object summarize(const Slave& slave) object.values["reregistered_time"] = slave.reregisteredTime.get().secs(); } - object.values["resources"] = model(slave.info.resources()); + const Resources& totalResources = slave.totalResources; + object.values["resources"] = model(totalResources); object.values["used_resources"] = model(Resources::sum(slave.usedResources)); object.values["offered_resources"] = model(slave.offeredResources); + object.values["reserved_resources"] = model(totalResources.reserved()); + object.values["unreserved_resources"] = model(totalResources.unreserved()); object.values["attributes"] = model(slave.info.attributes()); object.values["active"] = slave.active; http://git-wip-us.apache.org/repos/asf/mesos/blob/bdf2ea14/src/tests/common/http_tests.cpp ---------------------------------------------------------------------- diff --git a/src/tests/common/http_tests.cpp b/src/tests/common/http_tests.cpp index 97a0eba..40872eb 100644 --- a/src/tests/common/http_tests.cpp +++ b/src/tests/common/http_tests.cpp @@ -148,3 +148,39 @@ TEST(HTTP, ModelResources) ASSERT_SOME(expected); EXPECT_EQ(expected.get(), object); } + + +// This test verifies that ResourcesMap model are divided by keys. +TEST(HTTP, ModelResourcesMap) +{ + Resources fooResources = Resources::parse( + "cpus(foo):1;ports(foo):[1-10]").get(); + Resources barResources = Resources::parse( + "mem(bar):512;disk(bar):1024").get(); + + hashmap<std::string, Resources> resourcesMap; + resourcesMap["foo"] = fooResources; + resourcesMap["bar"] = barResources; + + JSON::Value object = model(resourcesMap); + + Try<JSON::Value> expected = JSON::parse( + "{" + " \"foo\":" + " {" + " \"cpus\":1," + " \"disk\":0," + " \"mem\":0," + " \"ports\":\"[1-10]\"" + " }," + " \"bar\":" + " {" + " \"cpus\":0," + " \"mem\":512," + " \"disk\":1024" + " }" + "}"); + + ASSERT_SOME(expected); + EXPECT_EQ(expected.get(), object); +}
