You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by bm...@apache.org on 2015/10/13 23:32:31 UTC

[1/2] mesos git commit: Remove static non-POD help strings in the master and agent.

Repository: mesos
Updated Branches:
  refs/heads/master e930a9785 -> d756ff708


Remove static non-POD help strings in the master and agent.


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

Branch: refs/heads/master
Commit: ffbc7d96f8c3a62cc4bdca59bb7ece08c8abc9de
Parents: e930a97
Author: Benjamin Mahler <be...@gmail.com>
Authored: Tue Oct 13 14:17:55 2015 -0700
Committer: Benjamin Mahler <be...@gmail.com>
Committed: Tue Oct 13 14:17:55 2015 -0700

----------------------------------------------------------------------
 src/master/http.cpp   | 81 ++++++++++++++++++++++++++++++++++++----------
 src/master/master.cpp | 38 +++++++++++-----------
 src/master/master.hpp | 32 +++++++++---------
 src/slave/http.cpp    | 13 ++++++--
 src/slave/slave.cpp   |  8 ++---
 src/slave/slave.hpp   |  6 ++--
 6 files changed, 116 insertions(+), 62 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/ffbc7d96/src/master/http.cpp
----------------------------------------------------------------------
diff --git a/src/master/http.cpp b/src/master/http.cpp
index 76954ac..f68f3eb 100644
--- a/src/master/http.cpp
+++ b/src/master/http.cpp
@@ -346,11 +346,14 @@ void Master::Http::log(const Request& request)
 
 // TODO(ijimenez): Add some information or pointers to help
 // users understand the HTTP Event/Call API.
-const string Master::Http::SCHEDULER_HELP = HELP(
+string Master::Http::SCHEDULER_HELP()
+{
+  return HELP(
     TLDR(
         "Endpoint for schedulers to make Calls against the master."),
     DESCRIPTION(
         "Returns 202 Accepted iff the request is accepted."));
+}
 
 
 Future<Response> Master::Http::scheduler(const Request& request) const
@@ -520,12 +523,15 @@ Future<Response> Master::Http::scheduler(const Request& request) const
 }
 
 
-const string Master::Http::HEALTH_HELP = HELP(
+string Master::Http::HEALTH_HELP()
+{
+  return HELP(
     TLDR(
         "Health check of the Master."),
     DESCRIPTION(
         "Returns 200 OK iff the Master is healthy.",
         "Delayed responses are also indicative of poor health."));
+}
 
 
 Future<Response> Master::Http::health(const Request& request) const
@@ -537,7 +543,9 @@ const static string HOSTS_KEY = "hosts";
 const static string LEVEL_KEY = "level";
 const static string MONITOR_KEY = "monitor";
 
-const string Master::Http::OBSERVE_HELP = HELP(
+string Master::Http::OBSERVE_HELP()
+{
+  return HELP(
     TLDR(
         "Observe a monitor health state for host(s)."),
     DESCRIPTION(
@@ -548,7 +556,7 @@ const string Master::Http::OBSERVE_HELP = HELP(
         "1. " + MONITOR_KEY + " - name of the monitor that is being reported",
         "2. " + HOSTS_KEY + " - comma separated list of hosts",
         "3. " + LEVEL_KEY + " - OK for healthy, anything else for unhealthy"));
-
+}
 
 Try<string> getFormValue(
     const string& key,
@@ -627,7 +635,9 @@ Future<Response> Master::Http::observe(const Request& request) const
 }
 
 
-const string Master::Http::REDIRECT_HELP = HELP(
+string Master::Http::REDIRECT_HELP()
+{
+  return HELP(
     TLDR(
         "Redirects to the leading Master."),
     DESCRIPTION(
@@ -641,6 +651,7 @@ const string Master::Http::REDIRECT_HELP = HELP(
         "2. This is broken currently \"on the cloud\" (e.g. EC2) as",
         "this will attempt to redirect to the private IP address, unless",
         "advertise_ip points to an externally accessible IP"));
+}
 
 
 Future<Response> Master::Http::redirect(const Request& request) const
@@ -671,13 +682,16 @@ Future<Response> Master::Http::redirect(const Request& request) const
 }
 
 
-const string Master::Http::RESERVE_HELP = HELP(
+string Master::Http::RESERVE_HELP()
+{
+  return HELP(
     TLDR(
         "Reserve resources dynamically on a specific slave."),
     DESCRIPTION(
         "Returns 200 OK if resource reservation was successful.",
         "Please provide \"slaveId\" and \"resources\" values designating ",
         "the resources to be reserved."));
+}
 
 
 Future<Response> Master::Http::reserve(const Request& request) const
@@ -756,12 +770,15 @@ Future<Response> Master::Http::reserve(const Request& request) const
 }
 
 
-const string Master::Http::SLAVES_HELP = HELP(
+string Master::Http::SLAVES_HELP()
+{
+  return HELP(
     TLDR(
         "Information about registered slaves."),
     DESCRIPTION(
         "This endpoint shows information about the slaves registered in",
         "this master formatted as a JSON object."));
+}
 
 
 Future<Response> Master::Http::slaves(const Request& request) const
@@ -784,12 +801,15 @@ Future<Response> Master::Http::slaves(const Request& request) const
 }
 
 
-const string Master::Http::STATE_HELP = HELP(
+string Master::Http::STATE_HELP()
+{
+  return HELP(
     TLDR(
         "Information about state of master."),
     DESCRIPTION(
         "This endpoint shows information about the frameworks, tasks,",
         "executors and slaves running in the cluster as a JSON object."));
+}
 
 
 Future<Response> Master::Http::state(const Request& request) const
@@ -1076,12 +1096,15 @@ private:
 };
 
 
-const string Master::Http::STATESUMMARY_HELP = HELP(
+string Master::Http::STATESUMMARY_HELP()
+{
+  return HELP(
     TLDR(
         "Summary of state of all tasks and registered frameworks in cluster."),
     DESCRIPTION(
         "This endpoint gives a summary of the state of all tasks and",
         "registered frameworks in the cluster as a JSON object."));
+}
 
 
 Future<Response> Master::Http::stateSummary(const Request& request) const
@@ -1192,12 +1215,15 @@ Future<Response> Master::Http::stateSummary(const Request& request) const
 }
 
 
-const string Master::Http::ROLES_HELP = HELP(
+string Master::Http::ROLES_HELP()
+{
+  return HELP(
     TLDR(
         "Information about roles that the master is configured with."),
     DESCRIPTION(
         "This endpoint gives information about the roles that are assigned",
         "to frameworks and resources as a JSON object."));
+}
 
 
 Future<Response> Master::Http::roles(const Request& request) const
@@ -1218,7 +1244,9 @@ Future<Response> Master::Http::roles(const Request& request) const
 }
 
 
-const string Master::Http::TEARDOWN_HELP = HELP(
+string Master::Http::TEARDOWN_HELP()
+{
+  return HELP(
     TLDR(
         "Tears down a running framework by shutting down all tasks/executors "
         "and removing the framework."),
@@ -1226,6 +1254,7 @@ const string Master::Http::TEARDOWN_HELP = HELP(
         "Please provide a \"frameworkId\" value designating the running "
         "framework to tear down.",
         "Returns 200 OK if the framework was correctly teared down."));
+}
 
 
 Future<Response> Master::Http::teardown(const Request& request) const
@@ -1312,7 +1341,9 @@ Future<Response> Master::Http::_teardown(
 }
 
 
-const string Master::Http::TASKS_HELP = HELP(
+string Master::Http::TASKS_HELP()
+{
+  return HELP(
     TLDR(
       "Lists tasks from all active frameworks."),
     DESCRIPTION(
@@ -1326,6 +1357,7 @@ const string Master::Http::TASKS_HELP = HELP(
       ">        order=(asc|desc)     Ascending or descending sort order "
       "(default is descending)."
       ""));
+}
 
 
 struct TaskComparator
@@ -1433,13 +1465,16 @@ Future<Response> Master::Http::tasks(const Request& request) const
 
 
 // /master/maintenance/schedule endpoint help.
-const string Master::Http::MAINTENANCE_SCHEDULE_HELP = HELP(
+string Master::Http::MAINTENANCE_SCHEDULE_HELP()
+{
+  return HELP(
     TLDR(
         "Returns or updates the cluster's maintenance schedule."),
     DESCRIPTION(
         "GET: Returns the current maintenance schedule as JSON.",
         "POST: Validates the request body as JSON",
         "  and updates the maintenance schedule."));
+}
 
 
 // /master/maintenance/schedule endpoint handler.
@@ -1548,13 +1583,16 @@ Future<Response> Master::Http::maintenanceSchedule(const Request& request) const
 
 
 // /master/machine/down endpoint help.
-const string Master::Http::MACHINE_DOWN_HELP = HELP(
+string Master::Http::MACHINE_DOWN_HELP()
+{
+  return HELP(
     TLDR(
         "Brings a set of machines down."),
     DESCRIPTION(
         "POST: Validates the request body as JSON and transitions",
         "  the list of machines into DOWN mode.  Currently, only",
         "  machines in DRAINING mode are allowed to be brought down."));
+}
 
 
 // /master/machine/down endpoint handler.
@@ -1647,13 +1685,16 @@ Future<Response> Master::Http::machineDown(const Request& request) const
 
 
 // /master/maintenance/start endpoint help.
-const string Master::Http::MACHINE_UP_HELP = HELP(
+string Master::Http::MACHINE_UP_HELP()
+{
+  return HELP(
     TLDR(
         "Brings a set of machines back up."),
     DESCRIPTION(
         "POST: Validates the request body as JSON and transitions",
         "  the list of machines into UP mode.  This also removes",
         "  the list of machines from the maintenance schedule."));
+}
 
 
 // /master/machine/up endpoint handler.
@@ -1745,7 +1786,9 @@ Future<Response> Master::Http::machineUp(const Request& request) const
 
 
 // /master/maintenance/status endpoint help.
-const string Master::Http::MAINTENANCE_STATUS_HELP = HELP(
+string Master::Http::MAINTENANCE_STATUS_HELP()
+{
+  return HELP(
     TLDR(
         "Retrieves the maintenance status of the cluster."),
     DESCRIPTION(
@@ -1754,6 +1797,7 @@ const string Master::Http::MAINTENANCE_STATUS_HELP = HELP(
         "to inverse offers.  NOTE: Inverse offer responses are cleared if",
         "the master fails over.  However, new inverse offers will be sent",
         "once the master recovers."));
+}
 
 
 // /master/maintenance/status endpoint handler.
@@ -1817,13 +1861,16 @@ Future<Response> Master::Http::maintenanceStatus(const Request& request) const
 }
 
 
-const string Master::Http::UNRESERVE_HELP = HELP(
+string Master::Http::UNRESERVE_HELP()
+{
+  return HELP(
     TLDR(
         "Unreserve resources dynamically on a specific slave."),
     DESCRIPTION(
         "Returns 200 OK if resource unreservation was successful.",
         "Please provide \"slaveId\" and \"resources\" values designating ",
         "the resources to be unreserved."));
+}
 
 
 Future<Response> Master::Http::unreserve(const Request& request) const

http://git-wip-us.apache.org/repos/asf/mesos/blob/ffbc7d96/src/master/master.cpp
----------------------------------------------------------------------
diff --git a/src/master/master.cpp b/src/master/master.cpp
index 6bee4f3..2da7807 100644
--- a/src/master/master.cpp
+++ b/src/master/master.cpp
@@ -757,29 +757,29 @@ void Master::initialize()
   Http http = Http(this);
 
   route("/api/v1/scheduler",
-        Http::SCHEDULER_HELP,
+        Http::SCHEDULER_HELP(),
         [http](const process::http::Request& request) {
           Http::log(request);
           return http.scheduler(request);
         });
   route("/health",
-        Http::HEALTH_HELP,
+        Http::HEALTH_HELP(),
         [http](const process::http::Request& request) {
           return http.health(request);
         });
   route("/observe",
-        Http::OBSERVE_HELP,
+        Http::OBSERVE_HELP(),
         [http](const process::http::Request& request) {
           Http::log(request);
           return http.observe(request);
         });
   route("/redirect",
-        Http::REDIRECT_HELP,
+        Http::REDIRECT_HELP(),
         [http](const process::http::Request& request) {
           return http.redirect(request);
         });
   route("/reserve",
-        Http::RESERVE_HELP,
+        Http::RESERVE_HELP(),
         [http](const process::http::Request& request) {
           Http::log(request);
           return http.reserve(request);
@@ -787,25 +787,25 @@ void Master::initialize()
   // TODO(ijimenez): Remove this endpoint at the end of the
   // deprecation cycle on 0.26.
   route("/roles.json",
-        Http::ROLES_HELP,
+        Http::ROLES_HELP(),
         [http](const process::http::Request& request) {
           Http::log(request);
           return http.roles(request);
         });
   route("/roles",
-        Http::ROLES_HELP,
+        Http::ROLES_HELP(),
         [http](const process::http::Request& request) {
           Http::log(request);
           return http.roles(request);
         });
   route("/teardown",
-        Http::TEARDOWN_HELP,
+        Http::TEARDOWN_HELP(),
         [http](const process::http::Request& request) {
           Http::log(request);
           return http.teardown(request);
         });
   route("/slaves",
-        Http::SLAVES_HELP,
+        Http::SLAVES_HELP(),
         [http](const process::http::Request& request) {
           Http::log(request);
           return http.slaves(request);
@@ -813,19 +813,19 @@ void Master::initialize()
   // TODO(ijimenez): Remove this endpoint at the end of the
   // deprecation cycle on 0.26.
   route("/state.json",
-        Http::STATE_HELP,
+        Http::STATE_HELP(),
         [http](const process::http::Request& request) {
           Http::log(request);
           return http.state(request);
         });
   route("/state",
-        Http::STATE_HELP,
+        Http::STATE_HELP(),
         [http](const process::http::Request& request) {
           Http::log(request);
           return http.state(request);
         });
   route("/state-summary",
-        Http::STATESUMMARY_HELP,
+        Http::STATESUMMARY_HELP(),
         [http](const process::http::Request& request) {
           Http::log(request);
           return http.stateSummary(request);
@@ -833,43 +833,43 @@ void Master::initialize()
   // TODO(ijimenez): Remove this endpoint at the end of the
   // deprecation cycle.
   route("/tasks.json",
-        Http::TASKS_HELP,
+        Http::TASKS_HELP(),
         [http](const process::http::Request& request) {
           Http::log(request);
           return http.tasks(request);
         });
   route("/tasks",
-        Http::TASKS_HELP,
+        Http::TASKS_HELP(),
         [http](const process::http::Request& request) {
           Http::log(request);
           return http.tasks(request);
         });
   route("/maintenance/schedule",
-        Http::MAINTENANCE_SCHEDULE_HELP,
+        Http::MAINTENANCE_SCHEDULE_HELP(),
         [http](const process::http::Request& request) {
           Http::log(request);
           return http.maintenanceSchedule(request);
         });
   route("/maintenance/status",
-        Http::MAINTENANCE_STATUS_HELP,
+        Http::MAINTENANCE_STATUS_HELP(),
         [http](const process::http::Request& request) {
           Http::log(request);
           return http.maintenanceStatus(request);
         });
   route("/machine/down",
-        Http::MACHINE_DOWN_HELP,
+        Http::MACHINE_DOWN_HELP(),
         [http](const process::http::Request& request) {
           Http::log(request);
           return http.machineDown(request);
         });
   route("/machine/up",
-        Http::MACHINE_UP_HELP,
+        Http::MACHINE_UP_HELP(),
         [http](const process::http::Request& request) {
           Http::log(request);
           return http.machineUp(request);
         });
   route("/unreserve",
-        Http::UNRESERVE_HELP,
+        Http::UNRESERVE_HELP(),
         [http](const process::http::Request& request) {
           Http::log(request);
           return http.unreserve(request);

http://git-wip-us.apache.org/repos/asf/mesos/blob/ffbc7d96/src/master/master.hpp
----------------------------------------------------------------------
diff --git a/src/master/master.hpp b/src/master/master.hpp
index 9d95751..3b1bc16 100644
--- a/src/master/master.hpp
+++ b/src/master/master.hpp
@@ -911,22 +911,22 @@ private:
     process::Future<process::http::Response> unreserve(
         const process::http::Request& request) const;
 
-    const static std::string SCHEDULER_HELP;
-    const static std::string HEALTH_HELP;
-    const static std::string OBSERVE_HELP;
-    const static std::string REDIRECT_HELP;
-    const static std::string ROLES_HELP;
-    const static std::string TEARDOWN_HELP;
-    const static std::string SLAVES_HELP;
-    const static std::string STATE_HELP;
-    const static std::string STATESUMMARY_HELP;
-    const static std::string TASKS_HELP;
-    const static std::string MAINTENANCE_SCHEDULE_HELP;
-    const static std::string MAINTENANCE_STATUS_HELP;
-    const static std::string MACHINE_DOWN_HELP;
-    const static std::string MACHINE_UP_HELP;
-    const static std::string RESERVE_HELP;
-    const static std::string UNRESERVE_HELP;
+    static std::string SCHEDULER_HELP();
+    static std::string HEALTH_HELP();
+    static std::string OBSERVE_HELP();
+    static std::string REDIRECT_HELP();
+    static std::string ROLES_HELP();
+    static std::string TEARDOWN_HELP();
+    static std::string SLAVES_HELP();
+    static std::string STATE_HELP();
+    static std::string STATESUMMARY_HELP();
+    static std::string TASKS_HELP();
+    static std::string MAINTENANCE_SCHEDULE_HELP();
+    static std::string MAINTENANCE_STATUS_HELP();
+    static std::string MACHINE_DOWN_HELP();
+    static std::string MACHINE_UP_HELP();
+    static std::string RESERVE_HELP();
+    static std::string UNRESERVE_HELP();
 
   private:
     // Helper for doing authentication, returns the credential used if

http://git-wip-us.apache.org/repos/asf/mesos/blob/ffbc7d96/src/slave/http.cpp
----------------------------------------------------------------------
diff --git a/src/slave/http.cpp b/src/slave/http.cpp
index f9cf7bb..ed369da 100644
--- a/src/slave/http.cpp
+++ b/src/slave/http.cpp
@@ -197,7 +197,8 @@ void Slave::Http::log(const Request& request)
 }
 
 
-const string Slave::Http::EXECUTOR_HELP = HELP(
+string Slave::Http::EXECUTOR_HELP() {
+  return HELP(
     TLDR(
         "Endpoint for the Executor HTTP API."),
     DESCRIPTION(
@@ -209,6 +210,7 @@ const string Slave::Http::EXECUTOR_HELP = HELP(
         "incrementally."
         "Returns 202 Accepted for all other Call messages iff the "
         "request is accepted."));
+}
 
 
 Future<Response> Slave::Http::executor(const Request& request) const
@@ -319,12 +321,15 @@ Future<Response> Slave::Http::executor(const Request& request) const
 }
 
 
-const string Slave::Http::HEALTH_HELP = HELP(
+string Slave::Http::HEALTH_HELP()
+{
+  return HELP(
     TLDR(
         "Health check of the Slave."),
     DESCRIPTION(
         "Returns 200 OK iff the Slave is healthy.",
         "Delayed responses are also indicative of poor health."));
+}
 
 
 Future<Response> Slave::Http::health(const Request& request) const
@@ -333,12 +338,14 @@ Future<Response> Slave::Http::health(const Request& request) const
 }
 
 
-const string Slave::Http::STATE_HELP = HELP(
+string Slave::Http::STATE_HELP() {
+  return HELP(
     TLDR(
         "Information about state of the Slave."),
     DESCRIPTION(
         "This endpoint shows information about the frameworks, executors",
         "and the slave's master as a JSON object."));
+}
 
 
 Future<Response> Slave::Http::state(const Request& request) const

http://git-wip-us.apache.org/repos/asf/mesos/blob/ffbc7d96/src/slave/slave.cpp
----------------------------------------------------------------------
diff --git a/src/slave/slave.cpp b/src/slave/slave.cpp
index cb2d715..9949b0f 100644
--- a/src/slave/slave.cpp
+++ b/src/slave/slave.cpp
@@ -515,7 +515,7 @@ void Slave::initialize()
   Http http = Http(this);
 
   route("/api/v1/executor",
-        Http::EXECUTOR_HELP,
+        Http::EXECUTOR_HELP(),
         [http](const process::http::Request& request) {
           Http::log(request);
           return http.executor(request);
@@ -524,19 +524,19 @@ void Slave::initialize()
   // TODO(ijimenez): Remove this endpoint at the end of the
   // deprecation cycle on 0.26.
   route("/state.json",
-        Http::STATE_HELP,
+        Http::STATE_HELP(),
         [http](const process::http::Request& request) {
           Http::log(request);
           return http.state(request);
         });
   route("/state",
-        Http::STATE_HELP,
+        Http::STATE_HELP(),
         [http](const process::http::Request& request) {
           Http::log(request);
           return http.state(request);
         });
   route("/health",
-        Http::HEALTH_HELP,
+        Http::HEALTH_HELP(),
         [http](const process::http::Request& request) {
           return http.health(request);
         });

http://git-wip-us.apache.org/repos/asf/mesos/blob/ffbc7d96/src/slave/slave.hpp
----------------------------------------------------------------------
diff --git a/src/slave/slave.hpp b/src/slave/slave.hpp
index d6e417b..aeccc08 100644
--- a/src/slave/slave.hpp
+++ b/src/slave/slave.hpp
@@ -415,9 +415,9 @@ private:
     process::Future<process::http::Response> state(
         const process::http::Request& request) const;
 
-    static const std::string EXECUTOR_HELP;
-    static const std::string HEALTH_HELP;
-    static const std::string STATE_HELP;
+    static std::string EXECUTOR_HELP();
+    static std::string HEALTH_HELP();
+    static std::string STATE_HELP();
 
   private:
     Slave* slave;


[2/2] mesos git commit: Added /flags endpoints on the master and agent.

Posted by bm...@apache.org.
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 <ha...@gmail.com>
Authored: Tue Oct 13 14:23:49 2015 -0700
Committer: Benjamin Mahler <be...@gmail.com>
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();