| 791 | |
| 792 | |
| 793 | pair<Response, Option<Master::ReadOnlyHandler::PostProcessing>> |
| 794 | Master::ReadOnlyHandler::state( |
| 795 | ContentType outputContentType, |
| 796 | const hashmap<std::string, std::string>& query, |
| 797 | const process::Owned<ObjectApprovers>& approvers) const |
| 798 | { |
| 799 | CHECK_EQ(outputContentType, ContentType::JSON); |
| 800 | |
| 801 | const Master* master = this->master; |
| 802 | auto calculateState = [master, &approvers](JSON::ObjectWriter* writer) { |
| 803 | writer->field("version", MESOS_VERSION); |
| 804 | |
| 805 | if (build::GIT_SHA.isSome()) { |
| 806 | writer->field("git_sha", build::GIT_SHA.get()); |
| 807 | } |
| 808 | |
| 809 | if (build::GIT_BRANCH.isSome()) { |
| 810 | writer->field("git_branch", build::GIT_BRANCH.get()); |
| 811 | } |
| 812 | |
| 813 | if (build::GIT_TAG.isSome()) { |
| 814 | writer->field("git_tag", build::GIT_TAG.get()); |
| 815 | } |
| 816 | |
| 817 | writer->field("build_date", build::DATE); |
| 818 | writer->field("build_time", build::TIME); |
| 819 | writer->field("build_user", build::USER); |
| 820 | writer->field("start_time", master->startTime.secs()); |
| 821 | |
| 822 | if (master->electedTime.isSome()) { |
| 823 | writer->field("elected_time", master->electedTime->secs()); |
| 824 | } |
| 825 | |
| 826 | writer->field("id", master->info().id()); |
| 827 | writer->field("pid", string(master->self())); |
| 828 | writer->field("hostname", master->info().hostname()); |
| 829 | writer->field("capabilities", master->info().capabilities()); |
| 830 | writer->field("activated_slaves", master->_const_slaves_active()); |
| 831 | writer->field("deactivated_slaves", master->_const_slaves_inactive()); |
| 832 | writer->field("unreachable_slaves", master->_const_slaves_unreachable()); |
| 833 | |
| 834 | if (master->info().has_domain()) { |
| 835 | writer->field("domain", master->info().domain()); |
| 836 | } |
| 837 | |
| 838 | // TODO(haosdent): Deprecated this in favor of `leader_info` below. |
| 839 | if (master->leader.isSome()) { |
| 840 | writer->field("leader", master->leader->pid()); |
| 841 | } |
| 842 | |
| 843 | if (master->leader.isSome()) { |
| 844 | writer->field("leader_info", [master](JSON::ObjectWriter* writer) { |
| 845 | json(writer, master->leader.get()); |
| 846 | }); |
| 847 | } |
| 848 | |
| 849 | if (approvers->approved<VIEW_FLAGS>()) { |
| 850 | if (master->flags.cluster.isSome()) { |
no test coverage detected