| 344 | |
| 345 | |
| 346 | int main(int argc, char** argv) |
| 347 | { |
| 348 | Flags flags; |
| 349 | Try<flags::Warnings> load = flags.load("MESOS_EXAMPLE_", argc, argv); |
| 350 | |
| 351 | if (flags.help) { |
| 352 | std::cout << flags.usage() << std::endl; |
| 353 | return EXIT_SUCCESS; |
| 354 | } |
| 355 | |
| 356 | if (load.isError()) { |
| 357 | std::cerr << flags.usage(load.error()) << std::endl; |
| 358 | return EXIT_FAILURE; |
| 359 | } |
| 360 | |
| 361 | internal::logging::initialize(argv[0], false); |
| 362 | |
| 363 | // Log any flag warnings. |
| 364 | foreach (const flags::Warning& warning, load->warnings) { |
| 365 | LOG(WARNING) << warning.message; |
| 366 | } |
| 367 | |
| 368 | if (flags.role == "*") { |
| 369 | EXIT(EXIT_FAILURE) << flags.usage( |
| 370 | "Role is incorrect; the default '*' role cannot be used"); |
| 371 | } |
| 372 | |
| 373 | FrameworkInfo framework; |
| 374 | framework.set_user(""); // Mesos'll fill in the current user. |
| 375 | framework.set_principal(flags.principal); |
| 376 | framework.set_name(FRAMEWORK_NAME); |
| 377 | framework.set_checkpoint(flags.checkpoint); |
| 378 | framework.add_roles(flags.role); |
| 379 | framework.add_capabilities()->set_type( |
| 380 | FrameworkInfo::Capability::MULTI_ROLE); |
| 381 | framework.add_capabilities()->set_type( |
| 382 | FrameworkInfo::Capability::RESERVATION_REFINEMENT); |
| 383 | |
| 384 | DynamicReservationScheduler scheduler( |
| 385 | flags.command, |
| 386 | flags.role, |
| 387 | flags.principal); |
| 388 | |
| 389 | if (flags.master == "local") { |
| 390 | // Configure master. |
| 391 | os::setenv("MESOS_ROLES", flags.role); |
| 392 | os::setenv("MESOS_AUTHENTICATE_FRAMEWORKS", stringify(flags.authenticate)); |
| 393 | |
| 394 | ACLs acls; |
| 395 | ACL::RegisterFramework* acl = acls.add_register_frameworks(); |
| 396 | acl->mutable_principals()->set_type(ACL::Entity::ANY); |
| 397 | acl->mutable_roles()->add_values(flags.role); |
| 398 | os::setenv("MESOS_ACLS", stringify(JSON::protobuf(acls))); |
| 399 | } |
| 400 | |
| 401 | MesosSchedulerDriver* driver; |
| 402 | |
| 403 | if (flags.authenticate) { |
nothing calls this directly
no test coverage detected