| 516 | |
| 517 | |
| 518 | int main(int argc, char** argv) |
| 519 | { |
| 520 | Flags flags; |
| 521 | Try<flags::Warnings> load = flags.load("MESOS_EXAMPLE_", argc, argv); |
| 522 | |
| 523 | if (flags.help) { |
| 524 | std::cout << flags.usage() << std::endl; |
| 525 | return EXIT_SUCCESS; |
| 526 | } |
| 527 | |
| 528 | if (load.isError()) { |
| 529 | std::cerr << flags.usage(load.error()) << std::endl; |
| 530 | return EXIT_FAILURE; |
| 531 | } |
| 532 | |
| 533 | logging::initialize(argv[0], true, flags); // Catch signals. |
| 534 | |
| 535 | // Log any flag warnings (after logging is initialized). |
| 536 | foreach (const flags::Warning& warning, load->warnings) { |
| 537 | LOG(WARNING) << warning.message; |
| 538 | } |
| 539 | |
| 540 | if (flags.role == "*") { |
| 541 | EXIT(EXIT_FAILURE) |
| 542 | << "Role is incorrect; the default '*' role cannot be used"; |
| 543 | } |
| 544 | |
| 545 | FrameworkInfo framework; |
| 546 | framework.set_user(""); // Have Mesos fill in the current user. |
| 547 | framework.set_principal(flags.principal); |
| 548 | framework.set_name(FRAMEWORK_NAME); |
| 549 | framework.add_capabilities()->set_type( |
| 550 | FrameworkInfo::Capability::MULTI_ROLE); |
| 551 | framework.set_checkpoint(flags.checkpoint); |
| 552 | framework.add_roles(flags.role); |
| 553 | framework.add_capabilities()->set_type( |
| 554 | FrameworkInfo::Capability::SHARED_RESOURCES); |
| 555 | framework.add_capabilities()->set_type( |
| 556 | FrameworkInfo::Capability::RESERVATION_REFINEMENT); |
| 557 | |
| 558 | if (flags.master == "local") { |
| 559 | // Configure master. |
| 560 | os::setenv("MESOS_ROLES", flags.role); |
| 561 | os::setenv("MESOS_AUTHENTICATE_FRAMEWORKS", stringify(flags.authenticate)); |
| 562 | |
| 563 | ACLs acls; |
| 564 | ACL::RegisterFramework* acl = acls.add_register_frameworks(); |
| 565 | acl->mutable_principals()->set_type(ACL::Entity::ANY); |
| 566 | acl->mutable_roles()->add_values(flags.role); |
| 567 | os::setenv("MESOS_ACLS", stringify(JSON::protobuf(acls))); |
| 568 | |
| 569 | // Configure agent. |
| 570 | os::setenv("MESOS_DEFAULT_ROLE", flags.role); |
| 571 | } |
| 572 | |
| 573 | MesosSchedulerDriver* driver; |
| 574 | |
| 575 | PersistentVolumeScheduler scheduler( |
nothing calls this directly
no test coverage detected