MCPcopy Create free account
hub / github.com/apache/mesos / stateSummary

Method stateSummary

src/master/readonly_handler.cpp:945–1100  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

943
944
945pair<Response, Option<Master::ReadOnlyHandler::PostProcessing>>
946 Master::ReadOnlyHandler::stateSummary(
947 ContentType outputContentType,
948 const hashmap<std::string, std::string>& query,
949 const process::Owned<ObjectApprovers>& approvers) const
950{
951 CHECK_EQ(outputContentType, ContentType::JSON);
952
953 const Master* master = this->master;
954 auto stateSummary = [master, &approvers](JSON::ObjectWriter* writer) {
955 writer->field("hostname", master->info().hostname());
956
957 if (master->flags.cluster.isSome()) {
958 writer->field("cluster", master->flags.cluster.get());
959 }
960
961 // We use the tasks in the 'Frameworks' struct to compute summaries
962 // for this endpoint. This is done 1) for consistency between the
963 // 'slaves' and 'frameworks' subsections below 2) because we want to
964 // provide summary information for frameworks that are currently
965 // registered 3) the frameworks keep a circular buffer of completed
966 // tasks that we can use to keep a limited view on the history of
967 // recent completed / failed tasks.
968
969 // Generate mappings from 'slave' to 'framework' and reverse.
970 SlaveFrameworkMapping slaveFrameworkMapping(
971 master->frameworks.registered);
972
973 // Generate 'TaskState' summaries for all framework and slave ids.
974 TaskStateSummaries taskStateSummaries(
975 master->frameworks.registered);
976
977 // Model all of the slaves.
978 writer->field(
979 "slaves",
980 [master,
981 &slaveFrameworkMapping,
982 &taskStateSummaries,
983 &approvers](JSON::ArrayWriter* writer) {
984 foreachvalue (Slave* slave, master->slaves.registered) {
985 writer->element(
986 [&slave,
987 &master,
988 &slaveFrameworkMapping,
989 &taskStateSummaries,
990 &approvers](JSON::ObjectWriter* writer) {
991 SlaveWriter slaveWriter(
992 *slave,
993 master->slaves.draining.get(slave->id),
994 master->slaves.deactivated.contains(slave->id),
995 approvers);
996 slaveWriter(writer);
997
998 // Add the 'TaskState' summary for this slave.
999 const TaskStateSummary& summary =
1000 taskStateSummaries.slave(slave->id);
1001
1002 // Certain per-agent status totals will always be zero

Callers

nothing calls this directly

Calls 11

OKClass · 0.85
jsonifyFunction · 0.85
NoneClass · 0.85
fieldMethod · 0.80
infoMethod · 0.80
elementMethod · 0.80
foreachvalueFunction · 0.70
isSomeMethod · 0.45
getMethod · 0.45
containsMethod · 0.45
frameworksMethod · 0.45

Tested by

no test coverage detected