Repository: mesos
Updated Branches:
  refs/heads/1.1.x eeaeb7089 -> e69f819fc


Show the leading master's information in `/master/state` endpoint.

Review: https://reviews.apache.org/r/53193/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/0d747295
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/0d747295
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/0d747295

Branch: refs/heads/1.1.x
Commit: 0d747295cbcb897f245ef209a7760f0fad558a35
Parents: eeaeb70
Author: haosdent huang <haosd...@gmail.com>
Authored: Thu Oct 27 10:22:09 2016 -0700
Committer: Vinod Kone <vinodk...@gmail.com>
Committed: Thu Oct 27 13:30:26 2016 -0700

----------------------------------------------------------------------
 src/master/http.cpp        | 16 ++++++++++++++++
 src/tests/master_tests.cpp |  9 ++++++++-
 2 files changed, 24 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/0d747295/src/master/http.cpp
----------------------------------------------------------------------
diff --git a/src/master/http.cpp b/src/master/http.cpp
index bb9c873..2496c74 100644
--- a/src/master/http.cpp
+++ b/src/master/http.cpp
@@ -143,6 +143,15 @@ static void json(JSON::ObjectWriter* writer, const Offer& 
offer)
   writer->field("resources", Resources(offer.resources()));
 }
 
+
+static void json(JSON::ObjectWriter* writer, const MasterInfo& info)
+{
+  writer->field("id", info.id());
+  writer->field("pid", info.pid());
+  writer->field("port", info.port());
+  writer->field("hostname", info.hostname());
+}
+
 namespace internal {
 namespace master {
 
@@ -2606,10 +2615,17 @@ Future<Response> Master::Http::state(
         writer->field("activated_slaves", master->_slaves_active());
         writer->field("deactivated_slaves", master->_slaves_inactive());
 
+        // TODO(haosdent): Deprecated this in favor of `leader_info` below.
         if (master->leader.isSome()) {
           writer->field("leader", master->leader.get().pid());
         }
 
+        if (master->leader.isSome()) {
+          writer->field("leader_info", [this](JSON::ObjectWriter* writer) {
+            json(writer, master->leader.get());
+          });
+        }
+
         if (approveViewFlags(flagsApprover)) {
           if (master->flags.cluster.isSome()) {
             writer->field("cluster", master->flags.cluster.get());

http://git-wip-us.apache.org/repos/asf/mesos/blob/0d747295/src/tests/master_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/master_tests.cpp b/src/tests/master_tests.cpp
index 93a45c8..ac8cce3 100644
--- a/src/tests/master_tests.cpp
+++ b/src/tests/master_tests.cpp
@@ -3244,12 +3244,19 @@ TEST_F(MasterTest, StateEndpoint)
   EXPECT_EQ(stringify(master.get()->pid), state.values["pid"]);
   EXPECT_EQ(flags.hostname.get(), state.values["hostname"]);
 
+  JSON::Object leader = state.values["leader_info"].as<JSON::Object>();
+
+  EXPECT_EQ(flags.hostname.get(), leader.values["hostname"]);
+  EXPECT_EQ(
+      master.get()->pid.address.port,
+      leader.values["port"].as<JSON::Number>().as<int>());
+
   EXPECT_EQ(0, state.values["activated_slaves"]);
   EXPECT_EQ(0, state.values["deactivated_slaves"]);
 
   EXPECT_EQ(flags.cluster.get(), state.values["cluster"]);
 
-  // TODO(bmahler): Test "leader", "log_dir", "external_log_file".
+  // TODO(bmahler): Test "log_dir", "external_log_file".
 
   // TODO(bmahler): Ensure this contains all the flags.
   ASSERT_TRUE(state.values["flags"].is<JSON::Object>());

Reply via email to