Added /flags endpoints on the master and agent. Review: https://reviews.apache.org/r/37023
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/d756ff70 Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/d756ff70 Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/d756ff70 Branch: refs/heads/master Commit: d756ff708b00df2512e3c89a228a824768369cf8 Parents: ffbc7d9 Author: haosdent huang <[email protected]> Authored: Tue Oct 13 14:23:49 2015 -0700 Committer: Benjamin Mahler <[email protected]> Committed: Tue Oct 13 14:26:34 2015 -0700 ---------------------------------------------------------------------- src/master/http.cpp | 25 +++++++++++++++++++++++++ src/master/master.cpp | 6 ++++++ src/master/master.hpp | 5 +++++ src/slave/http.cpp | 25 +++++++++++++++++++++++++ src/slave/slave.cpp | 7 +++++++ src/slave/slave.hpp | 5 +++++ 6 files changed, 73 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/d756ff70/src/master/http.cpp ---------------------------------------------------------------------- diff --git a/src/master/http.cpp b/src/master/http.cpp index f68f3eb..19dedcf 100644 --- a/src/master/http.cpp +++ b/src/master/http.cpp @@ -523,6 +523,31 @@ Future<Response> Master::Http::scheduler(const Request& request) const } +string Master::Http::FLAGS_HELP() +{ + return HELP(TLDR("Information about master flags.")); +} + + +Future<Response> Master::Http::flags(const Request& request) const +{ + JSON::Object object; + + { + JSON::Object flags; + foreachpair (const string& name, const flags::Flag& flag, master->flags) { + Option<string> value = flag.stringify(master->flags); + if (value.isSome()) { + flags.values[name] = value.get(); + } + } + object.values["flags"] = std::move(flags); + } + + return OK(object, request.url.query.get("jsonp")); +} + + string Master::Http::HEALTH_HELP() { return HELP( http://git-wip-us.apache.org/repos/asf/mesos/blob/d756ff70/src/master/master.cpp ---------------------------------------------------------------------- diff --git a/src/master/master.cpp b/src/master/master.cpp index 2da7807..ba12a83 100644 --- a/src/master/master.cpp +++ b/src/master/master.cpp @@ -762,6 +762,12 @@ void Master::initialize() Http::log(request); return http.scheduler(request); }); + route("/flags", + Http::FLAGS_HELP(), + [http](const process::http::Request& request) { + Http::log(request); + return http.flags(request); + }); route("/health", Http::HEALTH_HELP(), [http](const process::http::Request& request) { http://git-wip-us.apache.org/repos/asf/mesos/blob/d756ff70/src/master/master.hpp ---------------------------------------------------------------------- diff --git a/src/master/master.hpp b/src/master/master.hpp index 3b1bc16..e7b16fd 100644 --- a/src/master/master.hpp +++ b/src/master/master.hpp @@ -851,6 +851,10 @@ private: process::Future<process::http::Response> scheduler( const process::http::Request& request) const; + // /master/flags + process::Future<process::http::Response> flags( + const process::http::Request& request) const; + // /master/health process::Future<process::http::Response> health( const process::http::Request& request) const; @@ -912,6 +916,7 @@ private: const process::http::Request& request) const; static std::string SCHEDULER_HELP(); + static std::string FLAGS_HELP(); static std::string HEALTH_HELP(); static std::string OBSERVE_HELP(); static std::string REDIRECT_HELP(); http://git-wip-us.apache.org/repos/asf/mesos/blob/d756ff70/src/slave/http.cpp ---------------------------------------------------------------------- diff --git a/src/slave/http.cpp b/src/slave/http.cpp index ed369da..5002db1 100644 --- a/src/slave/http.cpp +++ b/src/slave/http.cpp @@ -321,6 +321,31 @@ Future<Response> Slave::Http::executor(const Request& request) const } +string Slave::Http::FLAGS_HELP() +{ + return HELP(TLDR("Information about slave flags.")); +} + + +Future<Response> Slave::Http::flags(const Request& request) const +{ + JSON::Object object; + + { + JSON::Object flags; + foreachpair (const string& name, const flags::Flag& flag, slave->flags) { + Option<string> value = flag.stringify(slave->flags); + if (value.isSome()) { + flags.values[name] = value.get(); + } + } + object.values["flags"] = std::move(flags); + } + + return OK(object, request.url.query.get("jsonp")); +} + + string Slave::Http::HEALTH_HELP() { return HELP( http://git-wip-us.apache.org/repos/asf/mesos/blob/d756ff70/src/slave/slave.cpp ---------------------------------------------------------------------- diff --git a/src/slave/slave.cpp b/src/slave/slave.cpp index 9949b0f..6526976 100644 --- a/src/slave/slave.cpp +++ b/src/slave/slave.cpp @@ -114,6 +114,7 @@ namespace slave { using namespace state; + Slave::Slave(const slave::Flags& _flags, MasterDetector* _detector, Containerizer* _containerizer, @@ -535,6 +536,12 @@ void Slave::initialize() Http::log(request); return http.state(request); }); + route("/flags", + Http::FLAGS_HELP(), + [http](const process::http::Request& request) { + Http::log(request); + return http.flags(request); + }); route("/health", Http::HEALTH_HELP(), [http](const process::http::Request& request) { http://git-wip-us.apache.org/repos/asf/mesos/blob/d756ff70/src/slave/slave.hpp ---------------------------------------------------------------------- diff --git a/src/slave/slave.hpp b/src/slave/slave.hpp index aeccc08..04a8646 100644 --- a/src/slave/slave.hpp +++ b/src/slave/slave.hpp @@ -407,6 +407,10 @@ private: process::Future<process::http::Response> executor( const process::http::Request& request) const; + // /slave/flags + process::Future<process::http::Response> flags( + const process::http::Request& request) const; + // /slave/health process::Future<process::http::Response> health( const process::http::Request& request) const; @@ -416,6 +420,7 @@ private: const process::http::Request& request) const; static std::string EXECUTOR_HELP(); + static std::string FLAGS_HELP(); static std::string HEALTH_HELP(); static std::string STATE_HELP();
