Exposed the executor's type in the endpoints. Review: https://reviews.apache.org/r/52520/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/88cd1df7 Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/88cd1df7 Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/88cd1df7 Branch: refs/heads/master Commit: 88cd1df7af6904e2a34ece1f10bee59915d68f67 Parents: d2da824 Author: haosdent huang <haosd...@gmail.com> Authored: Fri Oct 14 11:59:39 2016 -0700 Committer: Vinod Kone <vinodk...@gmail.com> Committed: Fri Oct 14 11:59:39 2016 -0700 ---------------------------------------------------------------------- src/common/http.cpp | 4 ++++ src/slave/http.cpp | 4 ++++ src/tests/default_executor_tests.cpp | 23 +++++++++++++++++++++++ 3 files changed, 31 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/88cd1df7/src/common/http.cpp ---------------------------------------------------------------------- diff --git a/src/common/http.cpp b/src/common/http.cpp index 538330a..fb8454a 100644 --- a/src/common/http.cpp +++ b/src/common/http.cpp @@ -530,6 +530,10 @@ void json(JSON::ObjectWriter* writer, const ExecutorInfo& executorInfo) if (executorInfo.has_labels()) { writer->field("labels", executorInfo.labels()); } + + if (executorInfo.has_type()) { + writer->field("type", ExecutorInfo::Type_Name(executorInfo.type())); + } } http://git-wip-us.apache.org/repos/asf/mesos/blob/88cd1df7/src/slave/http.cpp ---------------------------------------------------------------------- diff --git a/src/slave/http.cpp b/src/slave/http.cpp index a1fbb7a..a32aca4 100644 --- a/src/slave/http.cpp +++ b/src/slave/http.cpp @@ -153,6 +153,10 @@ struct ExecutorWriter writer->field("labels", executor_->info.labels()); } + if (executor_->info.has_type()) { + writer->field("type", ExecutorInfo::Type_Name(executor_->info.type())); + } + writer->field("tasks", [this](JSON::ArrayWriter* writer) { foreach (Task* task, executor_->launchedTasks.values()) { if (!approveViewTask(taskApprover_, *task, framework_->info)) { http://git-wip-us.apache.org/repos/asf/mesos/blob/88cd1df7/src/tests/default_executor_tests.cpp ---------------------------------------------------------------------- diff --git a/src/tests/default_executor_tests.cpp b/src/tests/default_executor_tests.cpp index dc002c6..92e6b9f 100644 --- a/src/tests/default_executor_tests.cpp +++ b/src/tests/default_executor_tests.cpp @@ -25,6 +25,7 @@ #include <mesos/v1/executor.hpp> #include <mesos/v1/scheduler.hpp> +#include <process/http.hpp> #include <process/owned.hpp> #include <stout/hashset.hpp> @@ -40,6 +41,9 @@ using mesos::v1::scheduler::Mesos; using process::Future; using process::Owned; +using process::http::OK; +using process::http::Response; + using std::pair; using std::set; using std::string; @@ -181,6 +185,25 @@ TEST_P(DefaultExecutorTest, ROOT_TaskRunning) executorInfo.executor_id()), "tasks", taskInfo.task_id().value()))); + + // Verify that the executor's type is exposed in the agent's state + // endpoint. + Future<Response> response = process::http::get( + slave.get()->pid, + "state", + None(), + createBasicAuthHeaders(DEFAULT_CREDENTIAL)); + + AWAIT_EXPECT_RESPONSE_STATUS_EQ(OK().status, response); + AWAIT_EXPECT_RESPONSE_HEADER_EQ(APPLICATION_JSON, "Content-Type", response); + + Try<JSON::Object> parse = JSON::parse<JSON::Object>(response.get().body); + ASSERT_SOME(parse); + JSON::Object state = parse.get(); + + EXPECT_SOME_EQ( + JSON::String(ExecutorInfo::Type_Name(executorInfo.type())), + state.find<JSON::String>("frameworks[0].executors[0].type")); }