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

Method frameworks

src/master/readonly_handler.cpp:629–690  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

627
628
629pair<Response, Option<Master::ReadOnlyHandler::PostProcessing>>
630 Master::ReadOnlyHandler::frameworks(
631 ContentType outputContentType,
632 const hashmap<std::string, std::string>& query,
633 const process::Owned<ObjectApprovers>& approvers) const
634{
635 CHECK_EQ(outputContentType, ContentType::JSON);
636
637 IDAcceptor<FrameworkID> selectFrameworkId(
638 query.get("framework_id"));
639
640 // This lambda is consumed before the outer lambda
641 // returns, hence capture by reference is fine here.
642 const Master* master = this->master;
643 auto frameworks = [master, &approvers, &selectFrameworkId](
644 JSON::ObjectWriter* writer) {
645 // Model all of the frameworks.
646 writer->field(
647 "frameworks",
648 [master, &approvers, &selectFrameworkId](
649 JSON::ArrayWriter* writer) {
650 foreachvalue (
651 Framework* framework, master->frameworks.registered) {
652 // Skip unauthorized frameworks or frameworks
653 // without a matching ID.
654 if (!selectFrameworkId.accept(framework->id()) ||
655 !approvers->approved<VIEW_FRAMEWORK>(framework->info)) {
656 continue;
657 }
658
659 writer->element(FullFrameworkWriter(approvers, framework));
660 }
661 });
662
663 // Model all of the completed frameworks.
664 writer->field(
665 "completed_frameworks",
666 [master, &approvers, &selectFrameworkId](
667 JSON::ArrayWriter* writer) {
668 foreachvalue (const Owned<Framework>& framework,
669 master->frameworks.completed) {
670 // Skip unauthorized frameworks or frameworks
671 // without a matching ID.
672 if (!selectFrameworkId.accept(framework->id()) ||
673 !approvers->approved<VIEW_FRAMEWORK>(framework->info)) {
674 continue;
675 }
676
677 writer->element(
678 FullFrameworkWriter(approvers, framework.get()));
679 }
680 });
681
682 // Unregistered frameworks are no longer possible. We emit an
683 // empty array for the sake of backward compatibility.
684 writer->field("unregistered_frameworks", [](JSON::ArrayWriter*) {});
685 };
686

Callers 1

stateSummaryMethod · 0.45

Calls 10

FullFrameworkWriterClass · 0.85
OKClass · 0.85
jsonifyFunction · 0.85
NoneClass · 0.85
fieldMethod · 0.80
elementMethod · 0.80
foreachvalueFunction · 0.70
getMethod · 0.45
acceptMethod · 0.45
idMethod · 0.45

Tested by

no test coverage detected